Упрощённый автомат ёлочных ретро-гирлянд



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

Собственно, речь пойдёт о старом-новом переключателе ёлочных ретро-гирлянд [1], созданном 2 года назад для новогодней иллюминации старыми гирляндами на лампах накаливания. С тех пор он внутренне изменился настолько, что на его плате трудно отыскать живого места, с одной стороны. С другой, с приобретением "новых" гирлянд [2], оказавшихся на сетевое напряжение 127В, встал вопрос об их включении в схему ёлочной светотехники, пока безраздельно контролировавшейся уже описанным здесь устройством [3].

Однако, эти устройства [1, 3] рассчитаны на 230В сетевого напряжения и, хотя эксперименты показали, что оба могут работать от трансформатора на 110В, но в одном случае это нештатный режим, не гарантирующий устойчивой работы подключенных к нему гирлянд, а в другом - весь автомат на 8 гирлянд хоть и работает, но становится на 110В, что тоже неприемлемо, т.к. остальные гирлянды рассчитаны на 220В. Возникла необходимость сконструировать если не универсальный, то хотя бы специализированный автомат ёлочных гирлянд, способный устойчиво работать от 110В переменного напряжения.

Эксперименты в области управления силовыми ключами (симисторами) явили новую эффективную схему, которая упрощает рабочий цикл устройства. Эта схема и была адаптирована к питанию от 110В. Также из состава бестрансформаторного блока питания был исключён балластный резистор, а номинал гасящего конденсатора экспериментальным путём увеличен до 1,5мкФ, что обеспечило такое же напряжения птитания (5,1В) на рабочем токе, как и при использовании конденсатора на 0,68мкФ при питании от сети 230В.

Принцип управления взят из статьи [4], где предлагается способ управления симисторами в 3-х квадрантах. Из схемы был исключён ключ на NPN-транзисторе, т.к. использованные в данном решении симисторы с током управления 10мА вполне могут подключаться напрямую к микроконтроллеру, не перегружая его. Номиналы токоорганичивающих резисторов по отношению к приведённому там примеру с симистором с Igt=35mA были увеличены в 3 раза, а конденсатора, установленного в разрыв цепи, наоборот, снижен в 3 раза до 1мкФ. Диод Шоттки "на землю" был исключён, т.к. с ним схема работала неустойчиво. Потребление схемы при питании от 110В составило 54мА. В соответствии с [5], также была упрощена цепь детектора перехода сетевого напряжения через ноль, теперь там просто составной резистор 2x510кОм.
В результате, получилась такая схема

Ток, потребляемый схемой (измеренный между C2 и D2) - 12мА. На напряжении 220В схема с гасящим конденсатором C1 на 1,5мкФ схема пока не тестировалась, ток стабилизации не оценивался. А при выходе стабилитрона из строя может выйти из строя и сам МК. На напряжение 220В следует брать плёночный гасящий конденсатор ёмкостью 0,68-1мкФ, рассчитанный на напряжение не менее 400В, лучше 630В. Номинал предохранителя - 0,15А. Общий предохранитель (т.е. включая нагрузку) находится на корпусе в отдельном держателе, его максимальный номинал 6А.

Собранное устройство без крышки со светодиодом:

Устройство всё так же оснащено одной управляющей кнопкой (вторая - сброс МК, традиционно) и двухцветным индикаторным сетодиодом. Зелёное свечение свидетельствует о том, что МК работает, устройство находится в рабочем цикле. Первое нажатие кнопки управления останавливает рабочую программу, все каналы остаются с яркостями на момент нажатия кнопки. LED мигает жёлтым. последующим нажатием включаются все каналы, LED постоянно горит жёлтым. Третье нажатие возобноаляет рабочий цикл с момента останова, LED снова постоянно горит зелёным.

Нажатие кнопки дольше 2 и менее 4с. переключает программу управления, если в EEPROM МК их сохранено больше одной. Нажатие кнопки дольше 4с фиксирует выбранную программу как программу при включении устройства. LED при этом при отпускании кнопки кратковременно меняет цвет на жёлтый, что свидетельствует об успешной фиксации изменений.

Описание программы переключений в EEPROM прежнее, оно приведено в [1]. Там же приведено демо-видео работы устройства, здесь всё также осталось прежним. Как и число каналов - 4. Больше на ёлке редко бывает нужно, если не рассматривать сложных светотехнических схем.

Номиналы резисторов управления светодиодом подбираются к выбранному светодиоду. У моего оказалось, что при питании +5В для зелёного канала нужен R680-750Ом, тогда как для жёлтого - ок. 1,5кОм. R7 1кОм является дополнительным для жёлтого канала.

Предусмотренные схемой Г-образные LC-фильтры необязательны, всё работает и без них. Они были предусмотрены на случай возможных взаимных помех, создаваемых симисторами. Если эти фильтры использоваться не будут, вместо индуктивности ставится перемычка, а соответствующий конденсатор не ставится. Симисторы должны быть с током управления не более 10мА. В данном случае использованы широко распространённые BT139-800E. Номинал резисторов R8-R11 в этом случае - 470-510Ом, для симисторов с током управления 5мА - 1кОм, как указано на схеме. Также были успешно использованы симисторы BTA12-600TW и протестирован BT136-600D с током управления 5мА.

Схема содержит минимум деталей. SMD-компоненты калибров 0603 (резисторы управления светодиодом) и конденсатор "обвязки" МК и 0805 - цепей управления симисторами. Выводные компоненты - 1/8Вт, кроме R2 0,5Вт. Сглаживающий конденсаор - не менее 470мкФ 10В, лучше 680-1000мкФ.

Диод D1 может быть просто выпрямительным 1N4007, 1N4148, но с ними напряжени питания снизится до 4,8-4,9В. Для меньшего падения напряжения лучше взять диод Шоттки, например, SR1100, что в сочетании со стабилитроном на 5,6В даст 5,1-5,3В напряжения питания с учётом допуска напряжения стабилизации.
Схема без гальванической развязки, везде присутствует сетевое напряжение, что необходимо учитывать при отладке и пользовании. Также ни в коем случае не подключать программатор при включенном в сеть приборе!

Данное решение работает как временное, которое будет заменено устройством с гальванической развязкой, рассчитанным на сетевое напряжение 110-230В с контролем сетевого напряжения и блокировкой включения нагрузки при его превышении свыше 127В. Также будет реализована связь с основным прибором управления светом для реализации единой схемы переключений. Это необходимо для лучшего восприятия ёлочного освещения, чтобы более яркие гирлянды не "забивали" менее яркие, такие, как ЕГ-24-220 (МЭЛЗ), а также для создания единой согласованной схемы световых эффектов.

Таким образом, предложенный вариант управления ёлочным освещением реализует следующие задачи:

  • Обеспечивает динамику освещения путём переключения ёлочных гирлянд
  • Позволяет реализовать произвольные программы переключений
  • Позволяет работать на напряжении 110В, что важно для старых гирлянд, рассчитанных на сетевое напряжение 127В
  • Путём плавного управления мощностью исключает скачки тока в моменты их включения
  • Экономит ресурс гирлянд.

И вместе с тем, является достаточно простым по устройству и компактным.

Ограничения:

  • Устройство пригодно только для гирлянд с лампами накаливания
  • Ограничение по мощности - 200Вт на канал
  • Помехи. Фазовые регуляторы из-за тиристоров и симисторов при работе создают наводки на сеть, однако, помех работе другим устройствам при его работе отмечено не было.

 

Программа переключений в EEPROM

Первый байт - номер программы, хранимой в EEPROM. Если там 0 или значение, превышающее количество хранимых программ, включается режим демо (на видео). Второй байт - значение скорости по умолчанию. Должно быть в диапазоне [0-6]. Программа начинается с третьего байта.
В начале работы микропрограммой производится сканирование EEPROM на наличие программ, подсчитывается их количество и определяются адреса начала, после чего запускается выполнение программы по умолчанию, которое происходит циклически.

Значения:

  • от 0 до 179 - время (задержка) в секундах;
  • от 180 до 189 - номер канала, 0-9, соотв. (к-во каналов ограничено в программе. В данном случае, 4-мя;
  • 190-196 - скорость, [0-6] (0 соответствует максимально быстрому переключению, 6 - наиболее замедленному);
  • 200-251 - уровень яркости, 0-51 (0-max., 51-min.);
  • 255 - разделитель: 1 значение (байт) - между программами, более 1 - окончание блока программ.

Структура

Блок данных выглядит как перечисление номеров каналов, за которым следует задаваемый им уровень яркости и/или значеине скорости. Данное значение (яркости или скорости) будет применено к этим каналам.
Далее может следовать другая группа, соотв., значения яркости или скорости для неё будут применены только к ней, но не к предыдущим номерам каналов. Для изменения яркости в составе группы, значения яркости
следует задавать в начале блока. В конце блока задаётся время (интервал) в сек., что служит для интерпретатора сигналом применить полученные значения.

Запись программы

Для записи данных в eeprom используется свободно распространяемая утилита avrdude, которая позволяет заносить данные в EEPROM МК в интерактивном режиме
На примере широко распространённого программатора USBASP просмотр данных в EEPROM выглядит так:

Здесь du[mp] ee[prom] - интерактивная команда вывода значений, хранимых в памяти eeprom МК. Вывод по умолчанию начинается с адреса 00, значения выводятся в 16-ричном представлении. Заносить значения можно и в обычном десятичном. Крайний левый столбец - 16-ричные адреса начал соответствующих строк.

Собственно программы начинаеся с 4го байта (16-ричное значение b4, в этом примере): первый - номер программы по умолчанию, второй - значение скорости для всех каналов по умолчанию, 3й зарезервирован.
Последовательность переключений идёт с начала данного программного блока или начинается с номера канала, который идёт вслед за интервалом времени ожидания в секундах после предыдущего блока переключений, которое может составлять до 179с.

Покажем одновременное переключение 3-х гирлянд на примере. С 12го байта здесь выключается один канал и зажигаются 2.
Канал 1 (код 180, т.е., 0xB4) со скоростью 5 (195, или 0xC3) и канал 2 (код 181, 0xB5) с его действующим значением скорости принимают уровень яркости 51 (код 251 (0xFB), т.е., гаснут). Канал 3 (т.е, 182, или, 0xB6) также с действующим значением скорости принимает уровень яркости 0 (200, или 0xc8), т.е, зажигается. Далее обязательно следует значение паузы до следующего переключения. В нашем примере оно равно 10с (0x0A). Этим блок программы заканчивается, поэтому, ставим байт-разделитель 0xff.
В интерактивном режиме avrdude это запишется как

wr ee 12 180 195 181 251 182 200 10 0xff

Это должно выглядеть так:

команда du ee показала, что в eeprom с 12 байта записаны нули. Далее подаётся вышеуказанная команда и результат её работы проверяется командой du ee 0 50 (после первой подачи этой команды начальный и конечный адреса необходимы, т.к. программа переставляет внутренний указатель и по умолчанию будут отображены следующие 64 значения). Здесь мы видим, что результат совпал с тем, что и был представлен в предыдущем примере.

При разработке последовательности переключений надо учитывать, что они циклические. Т.е., после 1го цикла при возврате к его началу будут гореть каналы, которые были оставлены со своими уровнями яркости в его конце.
Если длина программы переключений изменилась, то придётся переписывать и то, что должно идти после изменений. Эти значения мохно заносить в 16-ричном виде с префиксом 0x.
Корректно созданную программу желательно сохранить, для чего применяется команда:

avrdude -p t2313 -c usbasp -U eeprom:r:Prog.eep:i

где Prog.eep - имя создаваемого файла, :i - формат Intel HEX.

Проект в формате KiCAD, фотошаблон и прошивки для МК AVR Attiny2313A - https://disk.yandex.ru/d/7O0uSC3wdTlyhw. Фьюзы МК H:9b, L:e4. В макете платы остались диоды MBR0540 в цепях управления нагрузкой, их можно просто не устанавливать. Прошивать следует как флэш-память МК, так и EEPROM (файл .eep), в котором две программы переключений, на 4 и на 3 канала. при создании собственных программ переключений следует учитывать, что проверок данных на корректность в "прошивке" не предусмотрено.

Ссылки:

  1. Исходная версия автомата переключений ёлочных гирлянд https://cxem.net/mc/mc477.php
  2. Гирлянда ЕГ-23-127. Обзор
  3. Фазовый регулятор для ёлочных ретро-гирлянд
  4. http://www.st.com/resource/en/application_note/cd00003866-triac-control-with-a-microcontroller-powered-from-a-positive-supply-stmicroelectronics.pdf
  5. https://onlinedocs.microchip.com/pr/GUID-6AC9F79C-CD9D-4DEE-B7A9-57FB68C0D274-en-US-2/index.html
Автор: O18t, опубликовано: 28.12.23
(1)

Комментарии

Пара вопросов возникла:

  • а как создаются и записываются в EEPROM программы? Можно ли это как-то делать с самого устройства?
  • зачем такой мощный общий предохранитель? От 6А может сгореть не только сарай, но и хата, в то время как 4 даже самые мощные ламповые гирлянды никак не будут потреблять больше ~1,5А (в реальности намного меньше).

Создаются вручную, записываются программатором, так же, как и прошивка flash. Пока иного не предусмотрено, т.к. опыт подсказывает, что даже с китайскими гирляндами с фиксированным набором программ выбор останавливается, как правило, на чём-то одном. При наличии желания и потребности можно сделать и это, но не на устройстве с однокнопочным интерфейсом.
Да, максимальный ток гирлянды видел около 220мА. На МН13,5 - 135мА. 4 канала так не натянуть даже на 1А. Общий предохранитель 6А это максимум, т.к. разъёмы и кабель C7/C8 рассчитаны на 6А. В общем - любой желаемый номинал в меньшую сторону.

(1)

O18t писал(а):

Создаются вручную, записываются программатором, так же, как и прошивка flash.

Тогда наверно инструкцию бы какую-то неплохо бы, как и в каком формате это делается. Если конечно устройство предлагается для повторения.

отчасти есть в источнике по первой ссылке, но наверное перенесу её сюда.

(1)

Добавил.

(1)