РадиоКот :: Самодельная ёлочная гирлянда на ATtiny85 и светодиодах WS2812B
Например TDA7294

РадиоКот >Схемы >Светотехника >Бегущие огни и световые эффекты >

Теги статьи: ГирляндаATtiny85WS2812BДобавить тег

Самодельная ёлочная гирлянда на ATtiny85 и светодиодах WS2812B

Автор: Ramm-SD
Опубликовано 28.03.2019
Создано при помощи КотоРед.

Disclaimer: Я в курсе что новогодние праздники уже закончились.

Предыстория

Давным-давно, в далёком 1989-м году мои родители купили вот такую гирлянду:

По сути дела, это были 10 последовательно соединённых лампочек с рассеивателями, подключавшиеся в бытовую сеть 220 вольт. Выглядела она, на мой взгляд, лучше чем современные китайские поделки, но у неё были свои минусы:

  • Сетевое напряжение на ёлке врядли можно назвать безопасным.
  • Без каких-либо дополнительных примочек она могла только непрерывно светить.
  • Устройство в виде единой и неделимой петли, которую вешать без помощника было неудобно.
  • Одна вышедшая из строя лампочка делала нерабочей всю гирлянду, а найти лампу накаливания МН-26 на новый год та ещё задача.

Как раз последнее вывело меня из равновесия и побудило к действию.

Переделка гирлянды

Первым делом надо было определиться с заменой для ламп МН-26. Менять на обычные светодиоды, это всё равно что менять шило на мыло. RGB-светодиоды - тоже шило, только в профиль. Мигающие и переливающиеся светодиоды - такое себе решение.

О, есть же индивидуально адресуемые! В чём их отличие от обычных? Если яркость обычного светодиода управляется приложенным напряжением (сколько на него подаётся, на столько он и светит), то индивидульно адресуемые управляются информацией, передаваемой по однопроводной шине данных. Несмотря на то что они подключаются последовательно по трём проводам, каждым можно управлять независимо от остальных.

Из того что было на тот момент выбор пал на WS2812B. Кстати, вот они крупным планом:

Схема подключения светодиодов:

Теперь можно было приступить к переделке. Хотя нет, каких-то десять светильников в гирлянде - это несерьёзно. Некоторое время активных поисков принесло свои плоды - было найдено ещё две таких же. Одна из них была в нерабочем состоянии, но это вообще никак меня не волновало. Вот теперь точно можно приступать к работе.

Чёрт побери! Они оказывается бывают разных вариантов исполнения! Ну, ладно, перетерпим...

Светильник в разобранном виде (лампочка, контактная пара и светофильтр больше не понадобятся):

Итак, необходимо на месте каждой лампочки разместить светодиод, а также фильтрующий конденсатор - без него светодиод напрочь отказывается работать. Ещё нужно предусмотреть возможность простой замены светодиодов без акробатических трюков с паяльником в стеснённых условиях пластикового патрона. Вооружившись запасом крепких слов и разъёмами PLD-6/PBD-6 сооружаем такую конструкцию (конденсатор спрятан под светодиодом, а средние пины разъёма используются как ключ) в необходимом количестве:

 "Лампочки" сделали, теперь их надо разместить по своим местам в светильниках (макраме, блин):

Провода (какие были) сплёл между собой, чтобы между светильниками не болтались как попало. Расстояние между светильниками оставил как было в исходной гирлянде - 45 см. Как потом оказалось с таким количеством светильников можно было сделать по-короче. Чтобы вешать на ёлку было проще, все светильники разбил на группы по 5 штук. Для соединения групп светильников между собой использовал разъёмы MiniJack (те самые аудио 3,5-мм). В конце гирлянды предусмотрел разъём для дополнительного питания, чтобы просадка напряжения по длине гирлянды не была слишком чувствительной.

Если вглядеться в итоговую фотографию гирлянды, то можно разглядеть 30 светильников, 14 метров общей длины и 1,5 килограмма живого веса (бедная ёлка).

Источник питания

В этой части всё намного проще: нам нужен стабилизированный источник питания с напряжением 5 вольт достаточной мощности. Кушать светодиоды очень даже любят, по разным данным до 60 мА на максимальной яркости. На деле же - как повезёт, мои потребляли максимум 50 мА. Максимальный общий ток получился - 1,5 А.

Как раз для этой цели у меня был припасён китайский сетевой БП на 5В/2А. Амперы в нём оказались тоже китайские. Два ампера он не держал совсем - уходил в защиту, а при полутора - напряжение на выходе просаживалось почти до 4-х вольт.

Тут следует отметить, что светодиоды WS2812B при пониженном напряжении остаются работоспособны, но слабее светят и уходят в желтизну (синему кристаллу нужно напряжение выше, чем зелёному и красному).

Блок управления

Как уже было написано выше, кроме питания светодиодам необходимо передавать информацию по шине данных. Сердцем блока управления стал микроконтроллер ATtiny85, нужна именно полная, а не урезанная (с заниженой частотой) версия.

Питается блок управления также напряжением 5 В через предохранитель FU1 и фильтрующие конденсаторы C2 и C3. Микроконтроллер тактируется от внешнего кварца на 20 МГц. Кнопки и переключатель подключаются к пинам по стандартной схеме с подтягивающим резистором и конденсатором для "антидребезга". Данные для работы светодиодов передаются с пина PB1 через токоограничивающий резистор. Зелёный индикаторный светодиод показывает наличие питания, а жёлтый - положение переключателя SA1. Светодиоды питаются через предохранитель FU2 и фильтрующие конденсаторы C1 и C9.

Рекомендации по сборке блока управления:

  • Микроконтроллер желательно использовть в корпусе DIP-8 и установить его в DIP-панель, так будет меньше геморроя с перепрошивкой.
  • Предохранители необходимо только самовосстанавливающиеся, т.к. обычные плавкие на таком напряжении бесполезны.
  • Предохранитель FU2 можно не ставить если в источнике питания есть защита от КЗ.
  • А вот предохранитель FU1 обязателен, т.к. он защищает микроконтроллер от переполюсовки при подключении питания или неправильной установке. При этом в микроконтроллере срабатывает защитный диод, ток через него получается около 2-3 ампер, и сколько он так продержится даже не представляю. Предохранитель же, срабатывая, ограничивает ток до несущественного значения, а зелёный индикаторный светодиод отказывается светить, сигнализируя о неисправности.
  • Кнопку сброса (SB1) ставить не обязательно. Она нужна чисто для удобства, чтобы не дергать вилку из розетки. Обвязка кнопки (R2 и C4) нужна в любом случае.
  • Блок управления может работать без кнопки выбора программ (SB2). При этом нельзя будет вручную переключать программы и изменять количество светодиодов в гирлянде без перепрошивки. Обвязка кнопки (R5 и C8) также нужна в любом случае.
  • Блок управления может работать и без переключателя SA1. При этом также нельзя будет изменять количество светодиодов в гирлянде без перепрошивки. Кроме этого с такой обвязкой будет недоступно автопереключение программ (можно будет переключать только кнопкой SB2), для его включения нужно поменять местами резистор R3 и конденсатор C7.

Блок управления изначально планировал собрать вместе с источником питания в Gainta'вском корпусе G445, поэтому готовая плата имеет такую форму. Для подключения гирлянды к блоку управления использовал разъёмы MiniFit: MF2x2MR и MF2x1MR на плату, MF2x2F и MF2x1F на провод. Первая версия платы блока управления:

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

Прошивка микроконтроллера

В принципе, если собрана полная схема, то можно просто прошить микроконтроллер и ничего дополнительно не настраивать. Не забыв при этом про установку Fuse-битов (на скриншоте инверсные Fuse-биты из PonyProg'а):

А можно поковырятся в настройках в EEPROM:

  • Если по какой-то причине решите собрать схему без кнопки выбора программ (SB2) или совсем без элементов управления, то нужно будет сообщить об этом микроконтроллеру записав 0 (0x00) в ячейку 0x2000 EEPROM. Иначе можно получиться диалог слепого с глухим ;)

  • При прошивке можно сразу записать в ячейку 0x2001 EEPROM необходимое кол-во светодиодов в гирлянде (допустимое кол-во светодиодов от 5(0x05) до 60(0x3C)). Можно забить на это дело (микроконтроллер сам при первом пуске запишет туда 10(0x0A) - кол-во по-умолчанию), а потом изменить уже при работе гирлянды.

  • В прошивке кроме ручного переключения программ гирлянды предусмотрено ещё и автоматическое, которое работает по установленному таймеру. Время записывается в ячейку 0x2002 EEPROM в виде кол-ва 20-секундных интервалов. Допустимые значения: от 3(0x03) до 240(0xF0) интервалов, т.е. от 1 до 80 минут. Если ничего не записывать, то микроконтроллер сам при первом пуске установит время по-умолчанию - 15(0x0F) интервалов, т.е. 5 минут. Время таймера возможно изменить только при прошивке.

Это все настройки, которые можно произвести при прошивке. Остальные ячейки EEPROM изменять не рекомендуется.

Примечание: при первом запуске микроконтроллер запишет в EEPROM версию прошивки.

Управление гирляндой

Гирлянда может находится в одном из 3-х режимов работы:

1. Нормальная работа: Гирлянда работает в автоматическом режиме, не требующем дополнительного вмешательства. Если включен таймер для автопереключения, то после истечения установленного времени блок управления сменит программу на другую в случайном порядке и перезапустит таймер. Таймер можно включить или выключить переключателем SA1, если горит жёлтый светодиод - таймер выключен. Дополнительно можно сменить программу нажав на кнопку SB2, при этом блок управления изменит программу на следующую по списку и сбросит таймер. Любое изменение программы записывается в EEPROM.

2. Режим тестирования: При первом запуске гирлянды режим тестирования. Нажатием на кнопку SB2 сначала по очереди проверяются все три цвета светодиодов (зелёный, красный и синий), а потом проверяется максимальная нагрузка на источник питания (все светодиоды горят белым цветом). После чего запускается нормальная работа гирлянды.

3. Режим настройки: В этом режиме можно изменить кол-во светодиодов, используемых гирляндой. Для входа в режим нужно включить или перезагрузить блок управления с нажатой кнопкой SB2. После отпускания кнопки запустится режим настройки, и записанное кол-во светодиодов включится жёлтым цветом. Теперь если при включённом жёлтом светодиоде нажать кнопку SB2 кол-во светодиодов можно будет уменьшить (отсекаемые будут светиться красным), а при выключенном - увеличить (добавляемые будут светиться зелёным). Сохранение выбранного кол-ва светодиодов происходит при каждом переключении SA1. Чтобы выйти из режима настройки нужно перезагрузить блок управления, после чего запустится режим тестирования.

Итоги

  • Избавился практически от всех минусов исходной гирлянды.
  • Теперь гирлянда имеет 25 программ (эффектов) в 4-х вариациях.
  • Прошивка, в текущем её виде, предназначена для работы только со светодиодами WS2812B. В обозримом будущем планируется вариант для WS2811.

Актуальный на момент публикации файл прошивки прикреплен внизу статьи.

Все необходимые файлы (в том числе файл прошивки) находятся по адресу https://yadi.sk/d/Xog9zcG4T6jxng.

Напоследок дополню статью небольшим видео, включающем демонстрацию программ (эффектов).

Примечание: На момент записи видео были готовы только 24 программы.


Файлы:
Файл прошивки


Все вопросы в Форум.




Как вам эта статья?

Заработало ли это устройство у вас?

7 0 0
1 0 0

Эти статьи вам тоже могут пригодиться: