OSBoy notes.

Записки обо всём...

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

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

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

схема управления гирляндой на QD0056C
схема управления гирляндой на QD0056C

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

схема управления гирляндой на ATtiny13
схема управления гирляндой на 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).

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

плата управления гирляндой на ATtiny13 сторона 1
плата управления гирляндой на ATtiny13 сторона 1
плата управления гирляндой на ATtiny13 сторона 2
плата управления гирляндой на ATtiny13 сторона 2

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

Теги : attiny13, AVR, микроконтроллеры, гирлянда

Комментариев: 3

Ivanoff-IV
#Ответить
Попробовал повторить схему - прошивка в тини не лезет :(
Переписал прошивку в КвАВР утрамбовал - влезла... дальше как в тумане :)
htt ps: // radiokot .r u/forum/viewtopic.php?f=25&t=186053
куча эффектов (дописать ещё можно - там 15% флеша свободно ещё), смена направления, переключение режимов с кнопки или по таймеру, ресет отключать не надо (фьюзы стандартные).
OSBoy
#Ответить
А изначально чем компилировали? У меня АВР студией 4 с оптимизацией -Os всё нормально влезает.
А так интересно, для себя тоже кое-что полезное почерпну.
Ivanoff-IV
#Ответить
да в ней-же, специально поставил для сборки этого проекта... может где-то, что-то не настроил? оптимизация вроде так-же — на размер по максимуму...

Добавить комментарий

Отменить