Фазоимпульсное управление силовым симистором.

Многие конструкции подразумевают управление мощной нагрузкой. В статье, к примеру,  микроконтроллер управлял нагревом паяльника. Но там паяльник запитывается постоянным током, и, поэтому вся регулировка сводится к формированию Ш?М-а на силовом транзисторе. Если же нужно регулировать мощную нагрузку в цепи переменного тока, то реализация сего выйдет немного посложней. Вот эту проблему мы сейчас и рассмотрим. Пару слов теории… Управлять отдаваемой в нагрузку мощностью можно просто регулируя количество периодов/полупериодов сетевого тока через эту нагрузку. Можно просто включать/выключать ток через нагрузку с определённым соотношением, что по сути тот же метод, что и указанный выше. Эти методы регулировки подойдут для сильно инерционных нагрузок (ТЭНы, нагреватели и пр.). Для регулировки, допустим, яркости свечения лампы накаливания такие методы не подойдут по причине заметного и утомительного для глаз мерцания. Поэтому для построения диммеров (устройств регулировки яркости) применяют фазоимпульсный метод управления. Суть его проста. Рассматриваем положительную волну синусоиды. В определённый момент времени tз, который отсчитывается от перехода синусоиды через «ноль» t01,  на симистор подаётся открывающий импульс. Симистор остаётся открытым и пропускает в нагрузку ток до момента следующего перехода сетевой синусоиды через «ноль» t10. Очевидно, что чем ближе tз  к t01, и, соответственно дальше от t10, тем большая часть полуволны тока будет отдана в нагрузку.  ?, наоборот, чем дальше от t01 и ближе к t10, чем меньше тока пройдёт через нагрузку. Для отрицательной полуволны синусоиды всё то же самое, только t01 и t10 меняются местами (отсчёт ведётся от t10) . Для определения моментов перехода сетевой синусоиды через «ноль» , т.е. для определения моментов времени t01 и t10, служит устройство называемое детектором нуля или Zero Cross по буржуйски.
?з микроконтроллерного конструктора я возьму блок с  ATmega8A и периферийный блочок с установленным на нём симистором, схемой детектора нуля и соответствующим обвесом. Нагрузкой послужит обычная лампа накаливания 40 Вт.

Основным критерием проектирования узлов я считаю простоту — это определяет надёжность и повторяемость. Не забудем также и о безопасности — для этого я сделал опторазвязку, чтобы не было гальванической связи микроконтроллера с сетью. Слева по схеме — детектор нуля, цепь Zero Cross. Конструктивно она представляет собой параметрический стабилизатор (R1,VD1) который «обрезает» положительную полуволну синусоиды на уровне напряжения стабилизации стабилитрона, в нашем случае около 6,8 В. Резистор R2 ограничивает ток светодиода оптопары U1. Контакт 4 SV1 (коллектор транзистора той же оптопары ) подключается к выводу микроконтроллера, который определён входом с pull-up резистором — т.е. питает этот транзистор. Контакт 3 Sv1 (эмиттер транзистора) подключается к минусу питания, т.е. к «земле». В момент нарастающего фронта импульса Zero Cross t01 зажигающийся светодиод открывает транзистор оптопары, и вход микроконтроллера оказывается подключенным к «земле» через этот транзистор. Соответственно при ниспадающем фронте Zero Cross t10 светодиод гаснет, транзистор закрывается, и вход микроконтроллера «подтягивается» к напряжению питания pull-up резистором. Конечно, фронты Zero Cross немного не совпадают с истинным переходом через ноль сетевого напряжения. Но эта погрешность не критична — единицы микросекунд. Справа по схеме — цепь управления силовым симистором через оптосимистор, взята из даташита и особенностей не имеет.
Соединяем всё проводами, т.е. подготавливаем макет устройства. Не забудем о развязывающем трансформаторе (на время опытов), а то можно осциллограф сжечь)))
Устанавливать мощность отдаваемую в нагрузку симистором,  можно дистанционно, используя любой имеющийся интерфейс, или с помощью органов ручного управления: — энкодера (пример его подключения в этом посте); — переменного резистора, включив его потенциометром, и заведя сигнал с ползунка на какой-либо вход АЦП; — двух кнопок, что проще всего. ?менно под вариант с кнопками я написал код. Как и обычно, исходник подробно прокомментирован, поэтому тратить Ваше внимание на его разбор я не буду. Ну и для понятности приведу осциллограммы работы узлов диммера.
Жёлтая осциллограмма — это Zero Cross. Ниспадающий фронт t01, а нарастающий t10. Синяя осциллограмма — открывающие импульсы симистора Triac Control в момент времени .

На этой осциллограмме показан ток через нагрузку при условиях показанных осциллограммой выше, т.е. t01 — tз = 2,5 мс.

Здесь уже t01 — tз = 7,5 мс.

??, соответственно ток через нагрузку такой.

Область применения устройств, собранных на основе показанной схемы большая. Приведу лишь некоторые примеры: -диммеры (устройства регулировки яркости освещения); устройства плавного (мягкого) включения; — электронагревательные приборы (плиты, утюги, нагреватели и пр.) Можно регулировать также индуктивную нагрузку, но тогда в цепь симистора обязательно нужно добавлять снабберную цепь (в даташитах на симисторы есть необходимая информация) во избежание пробоя симистора.
В архиве исходник и плата узла симистора.

Запись опубликована в рубрике Микроконтроллерный конструктор с метками , . Добавьте в закладки постоянную ссылку.

104 комментария на «Фазоимпульсное управление силовым симистором.»

  1. ?ВЦ говорит:

    DDRx.1 = 0;
    PORTx.1 = 1;

    плюс внешнюю подтяжку 4,7 ставил — не помогло

  2. s_black говорит:

    Если 4,7 Ома, то вывод к земле не «придавится». )))
    А нет ли альтернативной функции у используемого вывода (АЦП,JTAG, пр.)? Может быть она программно не отключена?

  3. ?ВЦ говорит:

    4,7K
    INT1 на mega328 32-х пиновый
    программно ничего не надо отключать вроде.

  4. ?ВЦ говорит:

    я не понимаю, это что, только у меня такая проблема?

  5. ?ВЦ говорит:

    ДакладАю! С заменой 4n35 появился теплый ламповый сигнал! Без дребезга и прочих забабонов! Удивительно, но видать может быть и так.

  6. s_black говорит:

    Поздравляю от души. Видите сами, как важно проверять комплектующие перед установкой! Удачи, коллега!

  7. Вадим говорит:

    Здравствуйте! Повторил алгоритм. Держу кнопочку…. яркость нарастает, но примерно в середине монотонность нарушается, максимум мощности на 2-3 сек, затем спад, снова равномерно. С чем это может быть связано? Дело не линейности выхода от угла открытия — я это понимаю, а именно в нарушении монотонности.

  8. s_black говорит:

    Тяжело что-то конкретное сказать, так навскидку… Не буду оригинальничать — проверьте ещё раз монтаж, исправность элементов и пр.

  9. Уведомление: Управление мощной нагрузкой переменного тока « wiki

  10. Виктор говорит:

    Простите, а как же схема? Кто куда подключать? ?ли может в протеусе там что???

  11. s_black говорит:

    Простите, не понял вопроса… Как это — что и куда подключать?

  12. Виктор говорит:

    Просто я хотел бы посмотреть в эмуляторе, типа Протеуса, как оно работает…

  13. s_black говорит:

    Я с Протеусом не дружу и не работаю. А осциллограммы «живой» работы представлены в статье.

  14. vlasimir говорит:

    В комментариях к коду есть одна небольшая неточность: Вы регистру сравнения OCR1A присваиваете значение переменной brightness, т.е., увеличивая переменную, увеличиваете и OCR1A, которая, в свою очередь, при режиме CTC, увеличивает задержку отпирания симистора, та самая t01-t3. Таким образом, при увеличении brightness свечение лампы будет уменьшаться… ?ли я не прав? В принципе, код вполне работоспособный. При повторе с вариантом для кнопок, возможно, даже ни кто и не заметит, он при желании вникнуть может ввести в ступор.
    Еще для сети 220 В я бы рекомендовал для более стабильного регулирования ставить снабберные цепи для симисторов, как это указано в даташите.

  15. s_black говорит:

    Вы совершенно правы, коллега. Переменную логичнее было бы назвать по-другому. По поводу снабберных цепей — я их всегда использую в работающих конструкциях. В статье же ставилась цель пояснить природу и способ управления яркостью.

  16. Cергей говорит:

    А если перепутать «ноль» с фазой( не так подать 220В ? Что будет ?

  17. vlasimir говорит:

    Ничего страшного, без разницы.

  18. s_black говорит:

    Опередили с ответом ….

  19. ?горь говорит:

    Здравствуйте.
    А можно увидеть полную схему подключения контроллера блок с ATmega8A?

  20. Вадим говорит:

    Добрый день. Не выходит получить от 220В красивые импульсы для схемы Zero-crossing. Прикладываю схему и полученную в точке 1 осциллограмму. Не подскажите,ч то я делаю не так? Спасибо.
    https://pp.vk.me/c629201/v629201642/2dfb1/5by3CIeM0CM.jpg
    https://pp.vk.me/c629201/v629201014/2ec5d/a8YYNHfkKpw.jpg

  21. s_black говорит:

    Ток стабилизации кс407е в два раза отличается от 2с168а. Поставьте вместо 43 к резистор на 15-18 к.

  22. s_black говорит:

    Да и ограничительный резистор на оптопару уменьшите в два раза, т.к. у меня на выходе параметрического стабилизатора 6,8 а у Вас 3,6 В. Удачи!

  23. Вадим говорит:

    Спасибо большое за ответы!
    Я сделал немного проще — купил стабилитрон 2с168. Но, в итоге получил такую осциллограмму:
    https://pp.vk.me/c629201/v629201472/31f84/8vLQ9AIQlZ8.jpg

  24. s_black говорит:

    Ну… Даже не знаю, что сказать. На коллекторе транзистора оптопары точно лог. 1 присутствует? Проверьте в отсутствие сети. Если всё в порядке, то стандартный набор: монтаж, исправность РЭ, правильность прошивки и пр.

  25. Вадим говорит:

    У меня стабилитрон не в стекле, как у вас. Есть вариант, что купил не с той буквой.

  26. s_black говорит:

    Может это и не стабилитрон у Вас?

  27. Вадим говорит:

    Воистину радиотехника — наука о контактах (с)
    Всё переподключил, получил такие импульсы:
    https://pp.vk.me/c629201/v629201472/320b8/h-GTK_ZiWXI.jpg
    Стабилитроны:
    https://pp.vk.me/c629201/v629201472/320a8/96aUZMtcU0Q.jpg

  28. s_black говорит:

    Вот и ладушки )))

  29. Виктор говорит:

    Мужики!! А какая частота контроллера??

  30. s_black говорит:

    В исходниках в мэйкфайле смотрите.

  31. Виктор говорит:

    А чем его смотреть то??

  32. Виктор говорит:

    Вроде нашел 1 мГц ))

  33. Евгений говорит:

    Здравствуйте! Почему при увеличения шага регулировки яркости v_change_brightness у меня начинается моргание лампы при достижении крайних положений яркости.
    С уважением,
    Евгений, ?ркутск.

  34. s_black говорит:

    Скорее всего это происходит в этом блоке операторов:
    brightness -= v_change_brightness;//уменьшаем яркость заданным шагом
    if(brightness <= BR_lo) brightness = BR_lo;//не выходя за пределы
    Значение перепрыгивает через 0 влево, и условие (<= ) не выполняется.

  35. Евгений говорит:

    Благодарю за быстрый ответ!
    Да, я думал об этом, но:
    1)значение мин.яркости BR_lo у нас равно 400, а шаг регулирования изначально равен 10, и я увеличил его до 100, т.е. через ноль за один шаг он не перевалит, а каждый шаг у нас проверка условия «не выходя за пределы».
    2)это происходит не только при минимальном, но и при максимальном значении яркости.
    Что происходит, совсем не могу понять…
    П.с. Очень интересный сайт придумали, спасибо!

    С уважением,
    Евгений, ?ркутск.

  36. Евгений говорит:

    А вообще хочу ввести в схему третью кнопку «ВКЛ/ВЫКЛ», при нажатии на которую свет будет плавно выключаться и включаться, причём включаться именно до той яркости, на которой был выключен. Для этого же нужно вводить ещё одно прерывание?

    С уважением,
    Евгений, ?ркутск.

  37. s_black говорит:

    Чтобы не гадать на кофейной гуще, просимулируйте в Атмел Студио, следя за переменными и регистрами — так будет быстрее.
    Добавить такую кнопку можно без всяких прерываний.
    Удачи!

  38. Максим говорит:

    помогите плиз! куда коды кнопок ик пульта тыкнуть чтоб управлять удаленно

  39. ?горь говорит:

    Собрал. Сильно греется R1 (43кОм который).
    Какой R1 должен быть мощности?
    Я поставил 0.6 Вт (какой был) греется очень сильно, но все работает.

  40. s_black говорит:

    У меня установлен 2 Вт.

  41. Дима говорит:

    Здравствуйте, подскажите пожалуйста как вы рассчитывали параметрический стабилизатор, я хотел поставить MOC8030 в место PC2501, у него диод 3В и 60мА.
    Самое интересное что я уже использовал вашу схему для управления оборотами нагнетающего вентилятора в твердотопливном котле и как то пересчитывал возможно не правильно, но все работает и по сей день, только посмотреть что я там поставил нет возможности. ? возможно ли использовать в этом месте схему бестрансформаторного БП с гасящим конденсатором?

  42. Віктор С говорит:

    Привіт. А двохканальний регулятор можна зробити? Якщо так, то що потрібно змінити? Дякую.

  43. s_black говорит:

    Не впевнений, що я Вас вірно зрозумiв… Що Ви маєте на увазі «двоканальній»?

  44. uzer говорит:

    Подскажите, в какой программе файлы из архива открывать ?

  45. s_black говорит:

    Архив сначала нужно распаковать любым архиватором. А потом из папки уже открывать файлы в среде разработки.?ли если хотите просто текст посмотреть то можно в любом текстовом редакторе.

  46. uzer говорит:

    пробовал в FLProg, не определяет данный формат, а Circuit Simulator, почему то, не дает открыть, пишет обратиться к администратору, пробовал давал разрешение через свойства по советам из гугла, не помогает.

  47. s_black говорит:

    Повторяю: для начала распакуйте архив, а потом хоть любым текстовым редактором. Посмотрел сейчас что такое FLProg, довожу вам, что мои разработки к ардуине не имеют никакого отношения.

  48. I говорит:

    Что нужно подправить, чтобы запустить на Attiny2313A ?

  49. s_black говорит:

    Нужно создать проект под 2313 и по образу и подобию переписать исходник.

  50. I говорит:

    Можно ли как-нибудь с Вами связаться по Вайберу например. Сгорел МК(просто не запускается) в вытяжке по непонятной причине. Стоял там ST62T60C. Писать код под ST62T60C не представляется возможным по двум причинам.
    1) В TL866a нету поддержки этого МК(MCU).
    2) Никогда, пока что, не писал код под ST.

    Но, так как ST62T60C и Attiny2313A PDIP20 и некоторые ноги совпадают по назначению, то есть меньшее количество дорожек резать на плате придётся, поэтому выбрал Аттини2313А и уже купил 2шт .
    Хочу этот код приспособить под Attiny2313A, так как МК Attiny2313A очень схож с Атмега8А и менять код особо не нужно. Я уже перерисовал плату вытяжки https://i.piccy.info/i9/11125d7c8f6617cb7432110e351f0d2d/1581174333/105242/1361373/FaberVityazhka_01.jpg
    На ST62T60C чтобы избавиться от дребезга контактов использовался АЦП чтобы измерять напряжение на делителях-резисторах и таким образом определялась какая кнопка нажата.
    Я почти Ваш код адаптировал под Attiny2313A, но запутался в таймерах могли бы помочь довести код до ума и если не сложно помочь настроить АЦП как было сделано на ST62T60C? Взамен могу помочь Вам с сайтом или форумом довести до ума или с другим проектом. Есть цифровой осциллограф, смогу выложить картинки Осциллограмм после того как заработает вытяжка.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.