В данной статье приводится пример практической реализации алгоритма многоканального фазового регулятора, представленного в статье [1], продолжением которой она и является.
Назначение устройства - переключатель ёлочных гирлянд на лампах накаливания. Надо заметить, что статья планировалась к выходу ещё перед Новым годом, однако, работы над ней удалось завершить только сейчас. Устройство реализовано по упрощённой схеме без гальванической развязки с бестрансформаторным блоком питания и минимумом органов управления по идее [2]. Однако, схему с общим проводом +5В пришлось заменить на "общий" GND так, чтобы МК и 1-й терминал симисторов (AAG) были на одном проводе. По той же причине используется однополупериодное выпрямление.
Преимущества данной реализации:
- новый алгоритм фазового управления;
- простота схемы, минимум деталей;
- плавное управление мощностью нагрузки, особенно на этапе включения, позволяющее продлить ресурс ламп, которые зачастую уже не производятся;
- хранение и редактирование программ переключения каналов в EEPROM без необходимости перекомпиляции кода и прошивки МК;
- запоминание программы по умолчанию, запускаемой при включении устройства.
Недостатки:
- отсутствие гальванической развязки, что, впрочем, на надёжности работы не сказывается. Однако, требует особых мер предосторожности при работе с МК;
- минималистский интерфейс с одной кнопкой, несколько перегруженной функциями;
- ограниченный объём памяти EEPROM данного МК для хранения программ. Но, как правило, выбор останавливается на одной программе, которая в дальнейшем и используется;
- израсходование объёма flash Attiny2313, вследствие чего совершенствование программного кода без урезания функциональных возможностей и/или смены компилятора невозможно;
- низкий КПД бестрансформаторной схемы питания [3], что ограничивает возможности его применения и создаёт ограничения по току.
Заранее нужно оговориться, что приведённая здесь схема устройства заведомо избыточна, т.к. содержит 2 типа снабберов, I и II, из которых реализуется только один. Целью их установки было предотвратить влияние симисторов друг на друга при их параллельной работе (что не удалось, т.к. "помехи" себя никак не проявили, в отличие от схем, где использовались triac driver'ы MOC3052 и КР1182ПМ1Р, [5]). Снабберы можно не ставить вовсе, если при работе нескольких каналов одновременно не возникает самопроизвольных включений-выключений нагрузки. Если LC-фильтр (II) не ставится, вместо L1-4 ставятся перемычки. При установке L1-4 следует учитывать максимальный ток нагрузки, на который они должны быть рассчитаны.
Бестрансформаторный блок питания представлен гасителем напряжения C1R1 и R18+R4 (по 1Вт), рабочий ток которого составляет ~70мА, стабилитроном D2, выпрямительным диодом D1 и сглаживающим конденсатором C4. D2 и D1 подобраны таким образом, чтобы напряжение на выходе составляло 5,2В. В данном случае, D1 - диод Шоттки, из-за меньшего падения напряжения. В общем случае, подойдёт любой выпрямительный диод. Схема обеспечивает ток до 30мА без заметного падения напряжения. При этом, теоретический максимальный ток потребления составляет 4x10мА (управление симисторами) + 7,5А (МК) + ~5мА (LED) = 52,5мА. Однако, благодаря тому, что ток управления симисторами включается на достаточно непродолжительное время, менее миллисекунды за полупериод сетевого напряжения на 1 канал управления, питания в целом достаточно и устройство работает стабильно на разных режимах, в т.ч. благодаря высокой ёмкости сглаживающего конденсатора C4.
Поскольку радиаторы для симисторов не предусмотрены, рассеиваемая мощность симисторов ограничена их корпусами TO220, что примерно соответствует 200Вт нагрузки.
Детектор "нуля" выполнен на резистивном делителе R2+R3, R5, обеспечивающем напряжение ноколо 5В на входе INT0 МК. Детектирование начала полупериода осуществляется по нарастающему фронту, начало второго полупериода отсчитывается по таймеру (10486 тактов счётчика Timer1 для 8МГц тактовой частоты).
Схему можно упростить, если не использовать снабберы. Ток потребления можно снизить, применив симисторы с номинальным током управления 5мА, например, BTA12-600TWRG, которые также не нуждаются в снабберах. При этом, R10-13 можно увеличить до 1кОм, а C1 уменьшить до 680нФ. Предохранитель F1 убрать вообще, оставив общий предохранитель на корпусе (на схеме не показан) или, разведя предохранитель на плате как общий для всей схемы, включая нагрузку. Составной резистор R18+R4 можно заменить одним, учитывая мощность рассеивания. Разъём для программатора тоже можно исключить, если не подразумевается отладка программ в EEPROM.
Готовое устройство:
При реализации был выбран компромиссный вариант: на два канала установлены снабберы типа I, на два других - Г-образные LC-фильтры (II), как в [2].
Индикация режима работы представлена одним двухцветным светодиодом D3, подключенным общим катодом и одним из анодов к МК таким образом, что при выполнении основной программы горит зелёный, свидетельствуя о том, что питание +5В подаётся и МК работает. В режиме "останов" включается жёлтый цвет. Переключением цветов в зависимости от состояния ножки PD5 МК управляет PNP-транзистор Q1, работающий в роли элемента ~НЕ. Выключение светодиода осуществляется переводом PD4 в режим Hi-Z.
Резистор R9 - дополнительный, для выравнивания яркости жёлтого канала LED. R7 и R9 подбираются к выбранному LED.
Переключение режимов работы осуществляется кнопкой Sw2. Различаются 3 типа нажатия:
1. Короткое - первое вызывает останов выполнения программы. При этом, LED мигает жёлтым с частотой 1Гц.
Второе вызывает включение всех каналов с установленными для них ранее скоростями, LED непрерывно горит жёлтым. Наконец, третье вызывает возобновление выполнения программы с того момента, когда оно было остановлено.
2. Длинное, более 2с. По отпускании кнопки, происходит переключение программы на следующую, если их в EEPROM было найдено более одной, или, по достижении последней - переход к первой. Смена программы подтверждается кратковременным, на 1/2с., переходом цвета LED из зелёного в жёлтый.
3. Очень длинное. По достижении нажатия длительностью свыше 4с., LED кратковременно сменит цвет на жёлтый. Это означает, что текущая программа задана по умолчанию. Её номер сохранён в первом байте EEPROM.
Переключение режимов показано в демо-ролике. Если запустить устройство, прошив flash МК, но не прошив EEPROM, также запустится демо-режим.
Структура программы в EEPROM. Алгоритм работы интерпретатора.
Первый байт - номер программы, хранимой в EEPROM. Если там 0 или значение, превышающее количество хранимых программ, включается режим демо (на видео). Второй байт - значение скорости по умолчанию. Должно быть в диапазоне [0-6]. Программа начинается с третьего байта.
В начале работы производится сканирование EEPROM на наличие программ, подсчитывается их количество и определяются адреса начала, после чего запускается выполнение программы по умолчанию, которое происходит циклически.
1. Значения:
- от 0 до 179 - время (задержка) в секундах;
- от 180 до 189 - номер канала, 0-9, соотв. (к-во каналов ограничено в программе. В данном случае, 4-мя;
- 190-196 - скорость, [0-6];
- 200-251 - уровень яркости, 0-51 (0-max., 51-min.);
- 255 - разделитель: 1 значение - между программами, более 1 - окончание блока программ.
2. Структура.
Блок данных выглядит как перечисление номеров каналов, за которым следует задаваемый им уровень яркости и/или скорость. Данное значение (яркости или скорости) будет применено к этим каналам.
Далее может следовать другая группа, соотв., яркость или скорость для неё будут применены только к ней, но не к предыдущим значениям. Для изменения яркости в составе группы, значения яркости
следует задавать в начале блока. В конце блока задаётся время (интервал) в сек., что служит для интерпретатора сигналом применить полученные значения.
Примеры программ приведены в прилагаемых файлах .eep. В программах задействованы три канала из 4-х. На видео показана работа программы с сокращёнными временными интервалами.
Меры предосторожности.
В схеме везде присутствует сетевое напряжение. Разъём для подключения программатора можно использовать ТОЛЬКО при отключении устройства от сети, питание МК осуществляется от программатора.
Особенности и недостатки реализации.
Устройство продемонстрировало надёжную работу в течение почти двух недель с тех пор, как было собрано и запущено. Резисторы гасителя напряжения греют воздух внутри корпуса, но это неизбежно, если не снижать его мощности. Несмотря на принятые меры (позиционирование EEAR в конец EEPROM), отмечены отдельные самопроизвольные изменения байт. Оказалось, что fuses были выставлены без Brown-out Detection, что и было исправлено.
Оказался довольно тяжёл доступ к устройству, подключенному к потребителям, для отладки программ в EEPROM даже при наличии ноутбука. Решением здесь может быть применение дополнительной SPI-eeprom, например, AT25040A, на отдельной плате, подключаемой к разъёму программатора, на который нужно будет вывести ещё 1 канал для линии ChipSelect. Эту плату можно будет снимать и программировать с помощью, например, USBASP посредством утилиты AsProgrammer с прошивкой из его поставки [4]. Кроме того, на этой плате можно будет установить перемычку WriteProtect для защиты от случайных изменений. Однако, для этого потребуется ещё некоторое пространство пусть и для небольшой, но функции чтения данных по SPI через сдвиговый регистр интерфейса USI, т.к. SPI в чистом вмде в Attiny2313 нет. Такой проект (чтения/записи данных в AT25040A по SPI over USI) есть и он опробован, но реализовать это в данном проекте можно будет либо с урезанием функциональных возможностей, либо применением более эффективного компилятора, чем gcc.
1. https://cxem.net/mc/mc476.php
2. https://radiokot.ru/articles/40/
3. https://cxem.net/ckfinder/userfiles/comments/61414_Kondensator_netzteil.pdf
4. https://www.goprawn.com/forum/action-cam-control-software/8588-asprogrammer-with-ch341a-support
5. https://cxem.net/house/1-485.php
Fuses: H:9b, L:e4
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
---|---|---|---|---|---|---|
U1 | МК AVR 8-бит | ATtiny2313-20PU | 1 | Поиск в магазине Отрон | ||
C1 | Конденсатор | 1 мкФ | 1 | 400В, лучше 630В | Поиск в магазине Отрон | |
C2,4 | Конденсатор | 100 нФ | 2 | Поиск в магазине Отрон | ||
C3 | Конденсатор | 1200 мкФ | 1 | Поиск в магазине Отрон | ||
C5 | Конденсатор | 100 нФ | 1 | 0805 | Поиск в магазине Отрон | |
C6-9 | Конденсатор | 10 нФ | 4 | 1кВ | Поиск в магазине Отрон | |
C10-13 | Конденсатор | 33 нФ | 4 | 400В | Поиск в магазине Отрон | |
D1 | Диод | BAT43 | 1 | 1N4148 etc. | Поиск в магазине Отрон | |
D2 | Стабилитрон | BZX55C5v6 | 1 | Поиск в магазине Отрон | ||
D3 | Светодиод | 2-цветный | 1 | общий катод | Поиск в магазине Отрон | |
D4-7 | Симистор | BT139-800E | 4 | или др. с Ig не более 10мА | Поиск в магазине Отрон | |
F1 | Предохранитель | 250В 0.2А | 1 | Поиск в магазине Отрон | ||
L1-4 | Катушка индуктивности | 50мкГн | 4 | Поиск в магазине Отрон | ||
Q1 | Биполярный транзистор | BC558 | 1 | Поиск в магазине Отрон | ||
R1 | Резистор | 470 кОм | 1 | 0,5Вт | Поиск в магазине Отрон | |
R2,3 | Резистор | 510 кОм | 2 | Поиск в магазине Отрон | ||
R4,18 | Резистор | 180 | 2 | 1Вт | Поиск в магазине Отрон | |
R5 | Резистор | 47 кОм | 1 | Поиск в магазине Отрон | ||
R6 | Резистор | 10 кОм | 1 | 0805 | Поиск в магазине Отрон | |
R7 | Резистор | 680 | 1 | 1/6-1/8Вт | Поиск в магазине Отрон | |
R8 | Резистор | 10 кОм | 1 | 1/6-1/8Вт | Поиск в магазине Отрон | |
R9 | Резистор | 1 кОм | 1 | 1/6-1/8Вт | Поиск в магазине Отрон | |
R10-12 | Резистор | 470 | 3 | Поиск в магазине Отрон | ||
R13 | Резистор | 470 | 1 | 0805 | Поиск в магазине Отрон | |
R14-18 | Резистор | 39 | 1 | 0,5Вт | Поиск в магазине Отрон | |
RV1-4 | Варистор | 10D471 | 4 | Поиск в магазине Отрон | ||
SW1,2 | Переключатель | Кнопка угловая | 2 | на плату | Поиск в магазине Отрон | |
J2 | Гнездо | IDC10 | 1 | Поиск в магазине Отрон | ||
J3,4 | клеммник | 1 | на плату | Поиск в магазине Отрон | ||
Скачать список элементов (PDF)
Прикрепленные файлы:
- Triac4_bin.zip (7 Кб)
- Stand_Triac4(1).zip (54 Кб)
- Triac4_KiCAD.zip (278 Кб)
Комментарии (9) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация
[Автор]
Что до делителя к 6 ноге - как-то так, да, но если R5 уменьшить хотя бы до 20к, детектирование перехода через 0 резко ухудшается. А в "исходной" версии, на которую я опирался, там вообще 100К.
[Автор]
Ещё можно добавить, что при отказе стабилитрона со стороны БП - также смерть всей схемы.
[Автор]
Или, надо именно работу Attiny с SPI-eeprom? Далал, работает. Могу дать исходники
[Автор]
Со "внешней" памятью ещё проще, там инкремент идёт автоматически.
Для Вашего случая тоже можно придумать схему, не очень сложную, с использованием, напр., статических переменных.