• Объявления

    • admin

      Просьба всем принять участие!   24.11.2017

      На форуме разыгрывается спектроанализатор Arinst SSA-TG LC (цена 18500 руб). Просьба всем перейти по ссылке ниже и принять участие!

s-e-r-s

Members
  • Публикации

    38
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

О s-e-r-s

  • Звание
    Новенький

Электроника

  • Стаж в электронике
    10-20 лет
  1. Спасибо! Так мне гораздо понятнее. Это да, но в наружном блоке реализован плавный пуск компрессора, и есть куча датчиков, включая и токовый, которые могут аварийно остановить работу при перегрузках или выходе параметров за пределы норм. После этого случая пришлось установить реле напряжения с задержкой включения 5 минут. Но сравнительно недавно выезжали на диагностику такого же аппарата с таким-же дефектом. Как выяснилось, и причина неисправности оказалась точно такой же )
  2. Всем привет! Столкнулись с такой ситуацией: установили тепловой насос с инверторным компрессором. Были неполадки с питающей сетью, несколько раз за минуту могло появиться и пропасть питающее напряжение (220 В 50 Гц). После таких "морганий" перестал работать наружный блок. Разобрали - оказались пробиты силовые транзисторы, т.е. инвертор, который управляет компрессором, не выдержал частых включений-отключений. Может кто-нибудь объяснить физику процесса (интересует, почему при таких вкл/выкл выходят из строя силовые элементы)? Схемы электронной части, к сожалению, нет.
  3. Символьный Lcd В Atmel Studio

    Сигналы EN и RS - вверху, через #define, а D4-D7 удобнее, IMHO (с точки зрения написания кода ), подключить к пинам порта, идущим подряд Вот изменения с подключением к младшим пинам порта, порт можно изменить на любой /***Функция записи команды в ЖКИ***/ void lcd_com(unsigned char p) // 'p' байт команды { PORTC &= ~(1 << RS); // RS = 0 (запись команд) PORTC |= (1 << EN); // EN = 1 (начало записи команды в LCD) //PORTD &= 0x0F; PORTD |= (p & 0xF0); // старший ниббл, подключение к старшим разрядам порта D PORTD &= 0xF0; PORTD |= (p >> 4); // старший ниббл, подключение к младшим разрядам порта D _delay_ms(10); PORTC &= ~(1 << EN); // EN = 0 (конец записи команды в LCD) _delay_ms(10); PORTC |= (1 << EN); // EN = 1 (начало записи команды в LCD) //PORTD &= 0x0F; PORTD |= (p << 4); // младший ниббл, подключение к старшим разрядам порта D PORTD &= 0xF0; PORTD |= (p & 0x0F); // младший ниббл, подключение к младшим разрядам порта D _delay_ms(10); PORTC &= ~(1 << EN); // EN = 0 (конец записи команды в LCD) _delay_ms(10); } /***Функция записи данных в ЖКИ***/ void lcd_dat(unsigned char p) // 'p' байт данных { PORTC |= (1 << RS)|(1 << EN); // RS = 1 (запись данных), EN - 1 (начало записи команды в LCD) //PORTD &= 0x0F; PORTD |= (p & 0xF0); // старший ниббл, подключение к старшим разрядам порта D PORTD &= 0xF0; PORTD |= (p >> 4); // старший ниббл, подключение к младшим разрядам порта D _delay_ms(10); PORTC &= ~(1 << EN); // EN = 0 (конец записи команды в LCD) _delay_ms(10); PORTC |= (1 << EN); // EN = 1 (начало записи команды в LCD) //PORTD &= 0x0F; PORTD |= (p << 4); // младший ниббл, подключение к старшим разрядам порта D PORTD &= 0xF0; PORTD |= (p & 0x0F); // младший ниббл, подключение к младшим разрядам порта D _delay_ms(10); PORTC &= ~(1 << EN); // EN = 0 (конец записи команды в LCD) _delay_ms(10);
  4. Символьный Lcd В Atmel Studio

    Вот часть кода, которую я использую для работы с LCD в AtmelStudio. Четырехбитный режим, D4-D7 LCD подключены к порту D PD4-PD7 соответственно. Имеются некоторые комментарии; думаю, разобраться труда не составит. /*определяем пины для управления LCD*/ #define RS PC1 #define EN PC0 /***Функция записи команды в ЖКИ***/ void lcd_com(unsigned char p) // 'p' байт команды { PORTC &= ~(1 << RS); // RS = 0 (запись команд) PORTC |= (1 << EN); // EN = 1 (начало записи команды в LCD) PORTD &= 0x0F; PORTD |= (p & 0xF0); // старший ниббл _delay_ms(1); PORTC &= ~(1 << EN); // EN = 0 (конец записи команды в LCD) _delay_ms(1); PORTC |= (1 << EN); // EN = 1 (начало записи команды в LCD) PORTD &= 0x0F; PORTD |= (p << 4); // младший ниббл _delay_ms(1); PORTC &= ~(1 << EN); // EN = 0 (конец записи команды в LCD) _delay_ms(1); } /***Функция записи данных в ЖКИ***/ void lcd_dat(unsigned char p) // 'p' байт данных { PORTC |= (1 << RS)|(1 << EN); // RS = 1 (запись данных), EN - 1 (начало записи команды в LCD) PORTD &= 0x0F; PORTD |= (p & 0xF0); // старший ниббл _delay_us(150); PORTC &= ~(1 << EN); // EN = 0 (конец записи команды в LCD) _delay_us(150); PORTC |= (1 << EN); // EN = 1 (начало записи команды в LCD) PORTD &= 0x0F; PORTD |= (p << 4); // младший ниббл _delay_us(150); PORTC &= ~(1 << EN); // EN = 0 (конец записи команды в LCD) _delay_us(150); } /***Функция инициализации ЖКИ***/ void lcd_init(void) { lcd_com(0x33); //режим 8 бит, мигающий курсор _delay_ms(15); lcd_com(0x33); //режим 8 бит, мигающий курсор _delay_ms(10); lcd_com(0x32); //режим 4 бит, мигающий курсор _delay_ms(5); lcd_com(0x28); // шина 4 бит, LCD - 2 строки _delay_ms(5); lcd_com(0x08); // полное выключение дисплея _delay_ms(5); lcd_com(0x01); // очистка дисплея _delay_ms(10); lcd_com(0x06); // сдвиг курсора вправо lcd_com(0x0D); // включение дисплея, мигающий курсор } void go_to(char pos, char line) //переход курсора на строку line и позицию pos (X и Y) { char line1, addr; if (line==1) { line1=0x80; } else { line1=0xC0; } addr=(line1+pos-1); lcd_com(addr); } //Программа вывода строки на ЖКИ, начиная с координат X и Y void lcd_string( char x, char y, const char *str ) { go_to(x,y); while( *str ) //цикл пока указатель существует lcd_dat( *str++ ); //выводить строку } P.S. Возможно, придется подобрать (чуть увеличить) задержки, но у меня этот код отлично работает
  5. ГОГА рижский Спасибо, попробую и такое решение.
  6. Да, он еще измеряет температуру, и в зависимости от нее меняет заполнение ШИМ. А насчет BUK - если не использовать входы питания защиты и флага защиты, то он обычный полевик, только с небольшой входной емкостью и сравнительно низким быстродействием (время открытия ). Будет время - поиграюсь с параметрами МК, может получится добиться нормальных фронтов в десятки наносекунд.
  7. Да, уже понял, что придется собирать драйвер, если не разберусь с фронтами и не найду другого полевика.
  8. OK, сейчас исправлюсь. Думал, словами (ну, то есть текстом) будет достаточно
  9. Так и говорю же - с другим транзистором, заведомо качественным и оригинальным BUK124, проблем никаких, не греется. Захотел заменить на что-нибудь подешевле и легкодоставаемее - и получил то, что есть. Так что, пока не попробую разных транзисторов - тему покидаю.
  10. У меня двигатель довольно мощный. И даже Протеус, без диода рисует на осциллограмме отрицательные выбросы .
  11. не, это не подходит - уже видел такую и кучу подобных. Требуется регулировка от температуры в заданных пределах, на МК с цифровым датчиком - намного проще (ИМХО)
  12. Схема до конца не отлажена, еще не известно, какие будут использоваться транзисторы (вдруг без встроенного диода) - поэтому пока оставлю. После всего - конечно, лишние детали уберу Да IRL2505 уже убрал, буду искать другие
  13. А при чем диод к нагреву?
  14. Убирал, и переносил его на затвор - все равно нагревается
  15. Да мне тоже не очень, но я еще не пробовал сформировать на каком-нибудь другом выходе МК прямоугольные импульсы частотой 100...1000 Гц и посмотреть, что получится. Может, осцилл выделывается (другого нету) Или поиграться с частотой тактирования МК. Сейчас - 8МГц внутренний генератор.