Доброй ночи, уважаемые коты. Такой вопрос. Вышел из строя регулятор оборотов гравировальной машины. После изучения схемы, так как китайцы затерли название контроллера, определил, что это скорее всего ATtiny2313. Решил методом реверс-инжиниринга восстановить этот регулятор. В принципе программа не сложная. Разобрался с работой ЖК индикатора. Индикация и управление кнопками работает. Но проблема. Подключил нагрузку, а симистор не открывается. Есть подозрение, что выбрал неправильный режим работы симистора. Так как рисовал схему по существующей плате. А управление симистором делал отрицательным импульсом. Вот схема а вот программа Спойлер
void LCD_update(void) { output_change = 0; // state_counter генерирует сигналы 2 выходов COM через PORTD, // каждый имеет состояния HIGH и LOW. switch (state_counter) { case 0: //вывод десятков: PORTD &= ~((1 << COM1) | (1 << COM2)); //вывод в режиме Hi-Z DDRD &= ~((1 << COM1) | (1 << COM2)); //порт D пин 0 работает как ВХОД segs_out = LCD_out[0]; PORTB = segs_out; //выводим в порт символ DDRD |= (1 << COM1); //порт D пин 0 работает на ВЫХОД DDRD &= ~(1 << COM2); break; case 1: PORTD |= (1 << COM1); //
PORTB = segs_out ^ 0xFF;// инверсия выходов сегментов break; case 2: //вывод единиц PORTD &= ~((1 << COM1) | (1 << COM2)); //вывод в режиме Hi-Z DDRD &= ~((1 << COM1) | (1 << COM2)); //порт D пин 0 работает как ВХОД segs_out = LCD_out[1]; PORTB = segs_out; DDRD |= (1 << COM2); //порт D пин 0 работает на ВЫХОД DDRD &= ~(1 << COM1); break; case 3: PORTD |= (1 << COM2); // PORTB = segs_out ^ 0xFF; // инверсия выходов сегментов break; default: DDRB = 0x00; DDRD &= ~((1 << COM1) | (1 << COM2)); // COM1-COM2 отключены (входы) } }
//********************* Обработчик прерывания по переполнению Timer 0 *************** ISR(TIMER0_OVF_vect) { // Перезагрузка значения для Timer 0 // Период Timer0 = 0.125 МГц = 8 МГц / 64. // 2 мс = 8 мкс * 250 // 5 = 255-250 TCNT0 = 5; state_counter++; output_change = 1; // Это флаг для цикла main if (state_counter > 3) state_counter = 0;
BtnExe(); }
//********************* Обработчик внешнего прерывания 0 ***************************** ISR (INT0_vect) //По переднему/заднему фронтам импульса ZERO-CROSS { OCR1A = 10000 - speed; //Регистру сравнения присваиваем значение скорости TCCR1B |= _BV(WGM12) | _BV(CS10); //Запускаем таймер 1 в режиме СТС с периодом счёта 1 мкс }
//********************* Обработчик прерывания по сравнению Timer 1 ******************* ISR (TIMER1_COMPA_vect) //прерывание для формирования открывающего импульса симистора { PORTD &= ~_BV(control_triac); //Передний фронт отпирающего импульса симистора _delay_us (t_pulse_triac); //Длительность отпирающего импульса PORTD |= _BV(control_triac); //Задний фронт отпирающего импульса симистора TCCR1B = TCNT1 = 0; //остановка и обнуление таймера 0 }
int main (void) { // Вызов функции инициализации (описание см. ниже): initialization(); BtnInit(); speed = SP_lo; //скорость на середину диапазона // Разрешить все прерывания: sei(); while(1) { uint8_t button = BtnGet(); //читаем значение кнопок
Да симистор исправный, есть приборчик MG328 - многофункциональный тестер, к нему симистор подключил. Показывает что это симистор. Почитал мануалы по симисторам. Написано, триак может управляться как положительным, так и отрицательным током между затвором и T1. Только я не могу понять какой у меня ток между управляющим электродом и Т1. По схеме Т1 подключен к "-" микроконтроллера. Тогда логично будет давать положительный импульс на управляющий электрод. Не понятно в каком сейчас квадранте и в каком должно быть?
Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04 Сообщений: 2708 Откуда: г. Чайковский
Рейтинг сообщения:0 Медали: 1
Не думаю что будет какая-то разница, будет ли на выходе 5 В или 0 В на фоне 300В. Со схемой не ошиблись? Порт имеет пару защитных диодов и думаю именно они дают ограничение напряжение на порте пит+0,5В.
_________________ Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.
Что стабилизатор +5 неправильный, что управление симистором... Это схема "регулятор Насти"... Симистор открывается нулём (30 мкс для экономии энергии питания, хотя в режиме 100% 0 постоянный и тоже хватает) относительно +5... (в стиралках - нулём от +12 и никто "квадранты" не применяет...) ==== Вариантов управления 2 : минусовым током относительно Т1 или током от Т2 (как с опто).
Да, схема один в один. Вроде нашел ошибку. Спасибо Enman за схему. Резисторы только те, которые на схеме. Индикатор же ЖК. Вечером приеду с работы, перепаяю и проверю. Вот брошу исходную схему, по которой делался реверс-инжиниринг Я вывод Т1 симистора подключил к "минусу" блока питания, а не к "плюсу". Поэтому скорее всего симистор и не открывался. Нужно одну дорожку перерезать и подпаять на другой вывод конденсатора блока питания. Еще такой вопрос немного не по теме. ЖК индикатор, используемый в регуляторе, не имеет маркировки. Есть такой апноут AVR340: прямое управление сегментами ЖКИ с помощью портов GPIO Я по аналогии с этим апноутом сделал 2 мс период отображения каждого сегмента. Но при работе заметно мерцание сегментов соседних разрядов. то есть допустим вывожу число 12. На первом разряде четко видно цифру 1 и мерцают сегменты от разряда 2. Сначала частота была 500 Гц, мерцание было сильное. Сейчас сделал частоту 30 Гц, мерцание заметно, но уменьшилось. Может кто знает, с какой частотой нужно выводить символы на индикатор. Получается такая ситуация, что не успевают тухнуть сегменты соседнего разряда за период обновления. А так как используется таймер/счетчик 0, то не получается получить частоту при 8 МГц меньше 30 Гц. Без использования бита CKDIV8.
Про частоты не скажу, но ЖКИ надо питать напряжением с постоянной сменой полярности во время индикации : разряд(сегмент) погашен - синфазное изменение напряжения на сегментах, разряд отображает - противофазное изменение напряжения на включённых сегментах....
Так и есть, я выше код показал. правда пока с частотой не разобрался. Отключил вывод симистора Т1 от "минуса" и подключил к +5В. Что-то даже индикация перестала работать. Может нужно еще что-то переподключить. Непонятка с этим симистором.
А питание +5 не пропало ?... (минус 5 повисло в воздухе) В исходной схеме было правильно, а желание улучшить - и в результате "как всегда"....) (Так что питание таки было неправильным, просто по другой причине. ) Или перейти на опторазвязку, там заморочек меньше, и схема целее в случае чего...
Выше в теме показывал фото устройства. Я бы с удовольствием добавил опторазвязку. Но места не хватает и так дополнительно поставил LM7805 и конденсатор на выходе. Устройство будет стоять в корпусе гравировальной машины и контакта не будет с токоведущими частями. Тем более в исходной схеме опторазвязки не было. Просто был немного замудренный стабилизатор напряжения, потому и неправильно подключил симистор. Вот исходная схема устройства, восстановленная по плате а вот то что я хочу изменить.
так тоже неправильно...в таком варианте надо транзистор ставить в цепь УЭ... Исходная схема рабочая, что заставляет вас её как-то изменять с внесением ошибок ?...
В исходной схеме стабилизатор был сделан правильно. Но силовой электрод Т1 симистора был подключен к "минусу" стабилизатора. Поэтому при подаче отрицательного импульса на управляющий электрод симистор не открывался.После просмотра старой платы регулятора оборотов, было замечено, что при изменении стабилизатора напряжения я допустил ошибку. В ней после гасящего конденсатора подключение было к "минусу" стабилизатора. А "плюс" стабилизатора был подключен к силовому электроду Т1 симистора.
_________________ (Аль Котоне,кот ещё тот,Cattus Sapiens) Усы и хвост - мои документы. Кот - авторитет! Скажет "Мяу!" - не поспоришь. (скажи мне "мяу" и я скажу кто ты)
Добрый день. Уже мозг взрывается от этой схемы управления симистором. Подключил по этой схеме Подал питание. Подключил в нагрузку лампочку 40 Вт. Лампочка не светится. Показания на ЖК индикаторе отображаются, кнопками регулируется ШИМ. Осциллографом не проверял, так как боязно на 220 садится. Понимаю, что с бестрансформаторным блоком питания и микроконтроллером все норм, есть проблема в управлении симистором. Тут возникает "умная" мысль программно установить на управляющем электроде низкий уровень сигнала. Задумано и делаем. В прерывании где создается импульс управления симистором комментируется пара строчек, чтобы на управляющем электроде был постоянно низкий уровень. При включении в сеть происходит фейерверк. Отключаем питание и смотрим, что же дымилось. Отгорел один вывод на гасящем конденсаторе 0,68 мк 400В. и дорожка, которая идет к минусу блока питания. Подключаем контроллер к программатору, контроллер живой. Возникает вопрос. почему произошел фейерверк? Вот нашел еще пару схем подключения симистора к контроллеру без опторазвязки. Не могу понять, отличаются ли они от моей схемы. Я в PICax не разбираюсь, потому не понятно каким напряжением открывается симистор в этих схемах. И что в моей схеме не правильно? Заранее благодарен за помощь
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения