Новогодняя гирлянда на ATtiny13

Представляю вашему вниманию свой вариант блока управления четырёхцветной ёлочной гирляндой на микроконтроллере ATtiny13. Сразу оговорюсь, что, скорее всего, будет дешевле и проще купить новую гирлянду и не заморачиваться. Но если хочется самому поковыряться, или новый год уже на носу, а Вам срочно нужно починить неисправную гирлянду подручными средствами — эта статья может быть полезной…
Так как китайские платы управления гирляндами со временем иногда начинают жить своей жизнью, у меня возникла мысль сделать свою плату управления на микроконтроллере Attiny13, но при этом уместить её в родной корпус гирлянды.

Классическая схема китайских гирлянд, как правило, управляется контроллером QD0056C (или подобным) и выглядит всегда плюс-минус одинаково, примерно так:

QD0056C
Схема китайской гирлянды на QD0056C

Мой вариант схемы на Attiny13 выглядит так:

tiny13-lights-circuit
Схема управления гирляндой на ATtiny13

ВНИМАНИЕ! Схема не имеет никакой гальванической развязки от питающей сети 220В! (Впрочем, как и родные китайские схемы.)
Как видно, схема осталась практически та же самая, что и в оригинале, только адаптирована для ATtiny13 часть схемы, отвечающая за определение перехода через ноль (см. Application Note AVR182: Zero Cross Detector), а так же балластный резистор в цепи питания я поставил на 150кОм, двухваттный. Ток потребления схемы я не замерял, но с этим сопротивлением обеспечивается ток порядка 14мА — схема при этом нормально работает, резистор греется не сильно. Для лучшего охлаждения я ещё по бокам корпуса насверлил отверстий. Почти всю обвязку (тиристоры, диоды, конденсаторы…) можно взять с родной китайской платы, если, конечно, они исправны.
В схеме используется вывод МК PB5 (Reset), что требует программирования соответствующего FUSE-бита: RSTDISBL = 0. Будьте внимательны: после программирования данного FUSE-бита больше не будет возможности перепрошить МК ISP программатором! Поэтому, рекомендую сначала опробовать, как прошивка работает во всех режимах и, при необходимости, поиграться с включением/выключением фильтра помех для детектора нуля (см. ниже).

По этой схеме я собрал две имеющиеся у меня гирлянды: одну — на тиристорах PCR406, вторую — на MCR100-6.
В исходнике прошивки есть опция препроцессора, включающая (1) или выключающая (0) фильтр помех для детектора нуля:

#define FILTER_ENABLED 1

В моём случае — с одними тиристорами лучше заработал вариант со включенным фильтром, с другими — с отключенным (под словом «лучше» я тут имею ввиду более стабильную работу схемы во всех режимах, без ложных помаргиваний).

Так же, в исходнике доступна ещё одна опция для препроцессора, включающая (1) или отключающая (0) «режим ШИМ». По умолчанию он отключен:

define PWM_ENABLED 0

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

Всего в прошивке предусмотрено шесть режимов:

  1. «мерцание»;
  2. «волна»;
  3. «раскачивание»;
  4. «шаги»;
  5. «каскад»;
  6. «постоянное свечение».

Вместить больше режимов в 1кБ памяти Attiny13  у меня не получилось, впрочем, как по мне — больше их и не нужно. А если желаете больше — можно попробовать оптимизировать код или взять МК с бОльшим размером ПЗУ (например ATtiny25/45/85).

Например вот тут человек на основе моего кода сделал и выложил свою версию прошивки с разными полезными фишками — стоит обратить внимание!

А вот так мои платы выглядят в собранном виде:

tiny13-lights-pcb-1
Плата управления гирляндой на ATtiny13 — сторона элементов
tiny13-lights-pcb-2
Плата управления гирляндой на ATtiny13 — сторона проводников

Скачать архив с проектом (схема и плата в DipTrace, исходный код прошивки): tiny13-lights.zip

Оставить комментарий