Несмотря на то, что фазовые регуляторы применяются давно и широко, а на просторах Интернета можно найти массу реализаций, иногда возникает потребность в создании решения под собственные нужды на основе принципа фазового регулирования. В данной статье предложен алгоритм многоканального фазового регулятора и приведён простой пример его использования.
Принцип фазового регулирования подробно изложен в различных источниках, например, в [1], где предложена схема одноканального диммера и для ламп накаливания сетевого напряжения. В программном коде учтена нелинейность зависимости их видимой яркости от уровня питающего напряжения. В предлагаемом решении за основу взята идея реализации [1] и приведённые константы задержек включения, но, число управляющих каналов ограничено не одним, а определяется количеством доступных выводов МК, его производительностью и потребностью в них. Данное решение может применяться для создания как многоканальных диммеров, так и автоматов световых эффектов для ламп накаливания. Решение протестировано с использованием 8-ми каналов при изменении яркости одновременно четырьмя из них. Исходный код для МК ATtiny2313 прилагается.
Схема стенда
Пояснения к исходному коду
Регулирование осуществляется установкой уровня яркости канала lvl[i], 0 соответствует минимальной яркости, 51 — максимальной. Текущий уровень яркости канала curr_lvl[i] будет изменяться с заданной скоростью speed[i], стремясь достичь заданного уровня lvl[i].
Алгоритм оптимизирован по времени расчётов моментов включения каналов: каналы с максимальной яркостью выделены в переменную max_lvl, являющуюся частью общей битовой маски, применяемой к выходному регистру, а с мин. яркостью — не включаются вовсе. Таким образом, расчёт момента включения производится только для каналов с промежуточной яркостью, что позволяет существенно экономить время расчёта и увеличить количество каналов.
МК определяет возрастающий фронт сигнала с детектора нуля (резистивный делитель R2, R3). Второй полупериод отсчитывается по таймеру. Обработчик прерывания int0 инкрементирует счётчики полупериодов и msec20 – счётчик 20мс-интервалов (для управления скоростью изменения яркости каналов), обнуляет счётчик таймера 1. Поскольку основной рабочий цикл осуществляется в обработчике прерывания TIMER1_COMPA_vect, в регистре сравнения OCR1A устанавливается минимальная задержка MIN_Delay и на этом обработчик завершается.
Отсчёт периода времени внутри полупериода сетевого напряжения (т.е., между прерываниями int0) ведётся по счётчику Timer1, работающему на частоте 1МГц (1/8 частоты МК). Для достижения большей производительности тактовая частота может быть увеличена вдвое установкой кварцевого резонатора на 16МГц. Однако, значения задержек угла отпирания (intensity[]) и сопутствующие им константы должны быть соответственно увеличены в 2 раза.
Рабочий цикл обработчика TIMER1_COMPA_vect состоит из 4-х фаз:
- включение каналов, которые необходимо включить, в начале первого полупериода;
- выключение (т.е., снятие управляющего напряжения для триаков, которые ещё будут оставаться открытыми до перехода напряжения через 0);
- включение каналов в начале второго полупериода;
- выключение во втором полупериоде и по его окончании – расчёт значений задержек угла отпирания на следующий период.
Каждой фазе соответствует значение переменной phase: 1) 0; 2) 2; 3) 1; 4) 3 (младший бит – полупериод, 0 – I, 1- II, первый бит: 0 – вкл., 1 – выкл. канала).
Включение (п.1 и 3) осуществляется столько раз, сколько на данный момент времени оказалось включаемых каналов (chnl) с различными значениями яркости. Выключение управляющего сигнала (п.2 и 4, соотв.) производится по мере применения к управляющему регистру каждой последующей битовой маски mask_b[] включаемых каналов, а по завершении серии включений– один раз по истечении минимально необходимой задержки включения (TRIAC_Delay) для канала(ов) с минимальным значением яркости (и, соотв., с максимальной задержкой включения). После чего, выполняется расчёт значений уровней яркости curr_lvl[], соответствующих им битовых масок max_lvl, mask_b[] и очереди значений задержек (фазовых углов) queue[], представляющих собой указатели на соответствующие curr_lvl[].
При расчёте max_lvl и mask_b[] формируется очередь каналов с промежуточными яркостями, вместе с ними формируется маска каналов с максимальной яркостью (max_lvl). Далее, выстраивается очередь указателей на значения яркости в порядке их убывания (т.е., по возрастанию фазовых углов — задержек включения). Так же строятся соотв. им значения битовых масок включаемых каналов, номер канала в которой определяется по разности указателей относительно начального элемента массива. Наконец, на 3-м этапе происходит объединение каналов с совпадающими яркостями, т.к. они включаются одновременно.
Стенд
Демонстрационный стенд представляет собой беспаечную макетную плату, к которой подведено напряжение 12В от трансформатора. Питание схемы осуществляется от преобразователя на LM78L05, а на лампы и тиристоры подаётся выпрямленное напряжение от второго диодного моста. Питание стенда осуществляется от силового трансформатора с выходным напряжением 11-12В. Можно любой подходящий на иное напряжение, но желательно не менее указанного. Лампы накаливания — любые подходящие по напряжению трансформатора и его мощности.
На стенде показан эффект «бегущих огней» с задержкой гашения, играющий роль нагрузочного тестирования, когда 4 канала одновременно имеют несовпадающие (и ненулевые) значения яркости. Значение скорости отработки эффекта считывается из второго байта памяти eeprom функцией непосредственного чтения EEPROM_read() из даташита на МК. Значение должно быть в пределах 1-6, иначе, оно остаётся заданным по умолчанию.
Примечание 1. В упрощённой схеме стенда применены тиристоры с малым током управления, при одновременной работе которых отмечен тот же эффект, что и в [2] — нежелательные "мерцания" ламп при одновременной работе нескольких (более 2х) каналов. Полностью избавиться от этого можно указанным там способом: применением специализированных симмисторов или установкой снабберов [3].
Длительности задержек учитывают также задержку включения оптопар [4] для управления симмисторами.
При реализации схем с гальванической развязкой потребуется соответствующий детектор нуля. Так, была опробована и хорошо показала себя достаточно простая схема [5], в которой оптопара 4N35 была заменена на PC817, а Q1 на BC857. Поскольку в этой схеме каждый переход напряжения через 0 отмечается прямоугольным импульсом, обработчик int0 меняет свой вид, а расчёт задержек для регистра сравнения OCR1A несколько упрощается, что предусмотрено соответствующими директивами препроцессора.
Примечание 2. При использовании детектора нуля, как на представленном стенде, компиляция проекта производится с опцией –D DETECT50HZ. Если такое определение отсутствует, подразумевается, что будет использован детектор каждого перехода напряжения через 0, как в [5].
Фьюзы H:99, L:E4.
- https://radiokot.ru/articles/40/
- https://cxem.net/house/1-485.php
- https://www.onsemi.com/pub/Collateral/AN-3008.pdf.pdf
- https://static.chipdip.ru/lib/158/DOC000158143.pdf
- http://forum.easyelectronics.ru/download/file.php?id=28088
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
---|---|---|---|---|---|---|
VD1-VD4 | Тиристор | BT169D | 4 | MCR100-6 и др. | Поиск в магазине Отрон | |
U2 | МК AVR 8-бит | ATtiny2313A | 1 | Поиск в магазине Отрон | ||
HL1-HL4 | Лампа миниатюрная | 14В 50мА | 1 | Поиск в магазине Отрон | ||
U1 | Линейный регулятор | LM78L05 | 1 | Поиск в магазине Отрон | ||
D1,2 | Диодный мост | DB107 | 2 | Или аналогичный | Поиск в магазине Отрон | |
С1 | Электролитический конденсатор | 470 мкФ | 1 | Поиск в магазине Отрон | ||
C3 | Конденсатор | 10 нФ | 1 | Поиск в магазине Отрон | ||
C2, C4 | Конденсатор | 100 нФ | 2 | Поиск в магазине Отрон | ||
C5 | Электролитический конденсатор | 10 мкФ | 1 | Поиск в магазине Отрон | ||
R1, R3 | Резистор | 10 кОм | 2 | Поиск в магазине Отрон | ||
R2 | Резистор | 20 кОм | 1 | Поиск в магазине Отрон | ||
R4-7 | Резистор | 1 кОм | 4 | Поиск в магазине Отрон | ||
12V AC | Трансформатор | ТП-121-4 | 1 | Или аналогичный | Поиск в магазине Отрон | |
Скачать список элементов (PDF)
Прикрепленные файлы:
- Stand_Triac4.zip (274 Кб)
Комментарии (7) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация
[Автор]
Реализация с гальванической развязкой, например, здесь (хотя, с т.зрения схемотехники ничего нового нет), https://yadi.sk/d/-4XRYmGKwFnw0A?w=1
[Автор]
12В - это чисто для стенда, для макетки, чтобы показать на простейшей схеме.
Где применить? Ну так Новый год скоро. Например, в автоматах для переключения ретро-гирлянд на лампах накаливания.
[Автор]