Новогодняя гирлянда на ATtiny13
Представляю вашему вниманию свой вариант блока управления китайской четырёхцветной ёлочной гирляндой на микроконтроллере ATtiny13.
Так как китайские платы управления гирляндами со временем иногда начинают жить своей жизнью, у меня возникла мысль сделать свою плату управления на МК Attiny13, но при этом уместить её в родной корпус гирлянды.
Классическая схема китайских гирлянд, как правило, управляется контроллером QD0056C (или подобным) и выглядит всегда плюс-минус одинаково, примерно так:
Мой вариант схемы на 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кБ памяти Attiny13 у меня не получилось, впрочем, как по мне - больше их и не нужно. А если желаете больше - можно попробовать оптимизировать код или взять МК с бОльшим размером ПЗУ (например ATtiny25/45/85).
А вот так мои платы выглядят в собранном виде:
Скачать архив с проектом (схема и плата в DipTrace, исходный код прошивки): tiny13_lights.zip
Комментариев: 3