Например TDA7294

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

Теги статьи: WS2811WS2812BATtiny85Ёлочная звездаДобавить тег

Два варианта ёлочной звезды на светодиодах

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

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

Disclaimer 2: Это продолжение моей статьи про переделку ёлочной гирлянды.

 

Предыстория

Давным-давно, в далёком 1989-м году мои родители купили не только гирлянду, но и ёлочное навершие "Звезда":

Фотографий начинки у меня, к сожалению, не сохранилось. Внутри звезды были распаяны навесным монтажом малогабаритные лампы накаливания: 5 в лучах и 2 по центру. Подключалась звезда в сеть 220В через блок питания с симметричным мультивибратором, который включал поочерёдно то лучи, то центр.

Основной периодически возникающей проблемой были перегорающие лампочки. Со временем добавилась ещё одна - электролитические конденсаторы высохли, и мультивибратор перестал адекватно выполнять свою функцию. Когда же мне надоело смотреть на переставшую мигать звезду, то решил вместо ремонта звезду немного осовременить. В планах были:

  • замена лампочек на светодиоды;
  • разнообразие режимов работы.

 

Вариант 1: Звезда на обычных светодиодах

Дело было ещё до переделки гирлянды, и об индивидуально адресуемых светодиодах тогда не знал. Недолго думая решил пойти по самому простому (на мой взгляд) пути: мигание светодиодами при помощи микроконтроллера. А чтобы можно было переключаться между режимами работы добавил кнопку.

Для управления светодиодами взял "народную" ATTiny2313A. Чтобы максимально упростить себе задачу, все светодиоды подключил через резисторы на выводы одного порта, а кнопку - ко входу прерывания.

Опробовал схему с тестовой прошивкой на макетке. Яркость светодиодов получилась чуть выше, чем у лампочек, при этом максимальный ток через МК получился всего 50 мА.

Теперь можно было подумать над полной схемой. Для питания звезды задействовал её родной трансформатор. Микроконтроллеру для работы необходимо постоянное напряжение 5 вольт, а значит кроме диодного моста и сглаживающего конденсатора понадобился линейный стабилизатор 7805 с обвязкой. Родная проводка от блока питания до звезды, состоящая из 3-х проводов, позволит без лишних телодвижений разместить кнопку управления в самом блоке. В звезде дополнительно надо подключить электролитический конденсатор для стабильной работы микроконтроллера.

Дело было незадолго до нового года, поэтому на скорую руку нарисовал всю разводку лаковым маркером на фольгированном текстолите и протравил. Светодиоды на плате распределил так, чтобы она не отличалась от исходного устройства: 0-й по центру, остальные - в лучах по часовой стрелке начиная с верхнего луча.

И вот, уже в процессе лужения обнаружил, что чего-то плате звезды не хватает.

А не хватает очень нужной вещи: минусовой линии питания на МК. Забыл нарисовать...

Ладно, не переделывать же - припаяю перемычку.

Чтобы звезда светилась как раньше, светодиоды припаял с обеих сторон платы, при этом у резисторов вывод на светодиоды является перемычкой между сторонами. Для удобства припаял панельку под микроконтроллер и винтовой клеммник (с шагом 3,81 мм) для провода. Конденсатор впаял между ними в лежачем положении, чтобы он не упирался в корпус звезды. Получилось как-то так:

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

В плате блока питания ничего необычного, кроме разъёма, облегчающего задачу водружения звезды на верхушку ёлки. Для 7805 радиатор не понадобится, т.к. ток небольшой.

Звезда в полностью собранном виде:

И всё-таки схема нуждалась в доработке, поэтому окончательный её вариант должен был выглядеть вот так:

Что было доработано:

  • Добавлена обвязка вывода сброса микроконтроллера для большей стабильности работы, т.к. внутренняя подтяжка довольно таки слабая штука.
  • По этим же причинам добавлен резистор подтяжки для кнопки, и перенесён конденсатор антидребезга из блока питания поближе к выводу микроконтроллера.
  • При установке микроконтроллера в панель есть вероятность вставить его наоборот. В результате при подаче питания сработает защитный диод микроконтроллера, и выход линейного стабилизатора окажется короткозамкнутым. Кто кого пересилит, я проверять не пробовал. Для предупреждения последствий подобной ситуации предусмотрен самовосстанавливающийся предохранитель на 100 мА. Обычный плавкий предохранитель на таком напряжении бесполезен: он будет пропускать больший ток, светиться, но не сгорит.

Примерно вот так будут выглядеть доработанные платы звезды и блока питания для выводных и для smd-1206 компонентов (разметка плат в DipTrace во вложениях под статьёй).

Микроконтроллер сам по себе работать не будет - ему нужна прошивка. Прошивка для звезды выглядит как сильно пожирневший "Hello, world", и написана для работы на частоте 8 МГц, т.е. можно использовать внутренний тактовый генератор, установленный fuse-битами по умолчанию. Собственно, почти все fuse-биты стандартные, кроме brown-out detection level:

Прошивка использует для своей работы EEPROM, но записывать в неё ничего обязательного не требуется. Есть в этой памяти одна ячейка с адресом 0x801, которую можно менять по своему желанию. В этой ячейке хранится время для автоматического переключения между эффектами. Диапазон допустимых значений от 5(0x05) до 250(0xFA) минут. Если выставить значение ячейки 255 или меньше 5, то программа микроконтроллера автоматически изменит его на значение по-умолчанию, т.е. на 10(0x0A) минут. Автопереключение возможно совсем выключить выставив значение ячейки от 251(0xFB) до 254(0xFE).

Правильно собранная схема после прошивки микроконтроллера в настройке не нуждается и сразу готова к работе.

При включении звезды сначала кратковременно зажигаются и гаснут все светодиоды, после чего запускается последний сохранённый эффект. Если звезда была включена первый раз после прошивки, то запустится 1-й эффект.

Всего программ-эффектов в прошивке 19. Их можно последовательно переключать вручную, нажимая на кнопку. Кроме ручного переключения, в прошивке предусмотрено ещё и автоматическое. Оно срабатывает с определённой периодичностью, и переключает на случайно выбранный эффект. Результат изменения эффекта сохраняется в EEPROM. Но при ручном переключении сохранение происходит через 5 минут после изменения, чтобы не тратить в пустую ограниченный ресурс постоянной памяти.

Краткая видеодемонстрация эффектов:

Несмотря на то, что звезда работала как задумывалось, мне хотелось большего. А после знакомства с индивидуально адресуемыми светодиодами и построения гирлянды, это "большее" стало принимать чёткие очертания.

 

Вариант 2: Звезда на "умных" светодиодах WS

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

Теперь осталось выбрать на каких именно строить схему - WS2811 или WS2812B? Решено было опробовать в деле оба типа.

WS2812B - это чип со светодиодами трёх цветов в одном корпусе, но... У меня звезда красная, соответственно и задействован будет только красный кристалл, а синий и зелёный включать нет смысла. Как результат: две трети передаваемых на светодиоды данных будут балластом с нулями.

Схема подключения простейшая. Нужны лишь светодиоды, да керамические конденсаторы на 100 нанофарад. Так выглядит схема каждой из двух сторон платы, которые работают параллельно друг другу.

Дополнительно мне понадобились всё тот же разъём и пара резисторов нулевого сопротивления для перемычек.

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

После запайки всех деталей подключил плату на проверку и выяснил, что у меня один светодиод "потерял" зелёный кристалл, а ещё один благополучно помер. С помощью сплва Розе и такой-то матери заменил нерабочий светодиод, и подключил снова на проверку. Теперь всё работает как надо. Жаль только что плата греется - значит надо будет ограничить яркость. Да и полная яркость для звезды была чрезмерной по личным ощущеням.

Как чуть позже оказалось, это были не все проблемы... Через некоторое время один из светодиодов, прогревшись, завис. В результате одна сторона звезды работает нормально, а на другой - только половина. Ограничение яркости помогло, но рано или поздно он всё равно зависал. Вот уж не знаю, они такие нежные в пайке или попались с браком.

WS2811 - это микросхема, в дополнение к которой нужны отдельные светодиоды. Каждая такая микросхема управляет тремя обычными светодиодами по-отдельности и не имеет чётко привязанных цветов. Значит все они могут быть нужного мне красного цвета. Но есть и минус: деталей на плате будет существенно больше. Зато балласта в передаваемых данных будет меньше, и можно будет яркость ограничить аппаратно, что было сделано при помощи резисторов на 200 Ом. Схема для каждой стороны платы:

В таком виде первая микросхема управляет одним единственным светодиодом в центре, а остальные - светодиодами в каждом из лучей.

Вот так у меня получились платы с обоими типами светодиодов (типоразмер пассивных SMD-компонентов - 1206):

Блок управления на базе микроконтроллера ATTiny85, точно такой же как у гирлянды. Принцип работы тот же самый, только прошивка другая. Точнее прошивки, т.к. для каждого типа светодиодов своя прошивка.

Номинал предохранителя FU2 - 0.5 А, т.к. все 32 светодиода (по 16 на сторону) при одновременном включении и ограничении максимальной яркости будут потреблять около 350 мА.

Fuse-биты такие же, как для гирлянды. Установить или нет Fuse-бит EESAVE для защиты EEPROM от стирания решайте сами, т.к. в EEPROM записывать ничего обязательного не требуется. При этом прошивка использует эту память для хранения рабочих данных, часть из которых можно менять, но об этом чуть позже.

Правильно собранная схема после прошивки микроконтроллера в настройке не нуждается и сразу готова к работе.

При включение звезда кратковременно включит и погасит все светодиоды, а потом запустит последний сохранённый эффект или, при запуске после прошивки, эффект по-умолчанию. Всего же в текущей прошивке 28 программ-эффектов.

Аналогично предыдущему варианту звезды есть ручное последовательное переключение эффектов нажатием на кнопку SB2. Есть и автоматическое переключение по времени на случайный эффект. Стандартное время смены эффектов - 5 минут. Автопереключение можно отключить тумблером SA1, как в гирлянде.

Ещё одна функция, перекочевавшая из прошивки гирлянды, - буфер использованных эффектов - уменьшает вероятность слишком частого повтора эффектов. Объём буфера - половина числа активных эффектов, но не более 10. Данные в буфере обнуляются при выключении или перезагрузке.

Кроме того, добавил новую функцию, которая ранее не реализовывалась в моих переделках. Она позволяет исключать непонравившиеся эффекты прямо во время работы устройства. Работает исключение просто: если во время работы эффекта нажать и удерживать кнопку ручного переключения SB2 в течение 5 секунд, то этот эффект попадёт в список исключения. Это будет видно по изменению работы светодиодов (будут по очереди включатся на концах средних лучей), а после отпускания кнопки звезда переключится на следующий эффект. Исключённый эффект неактивен и для автоматического переключения, и для ручного. Список исключения эффектов не ограничен, но все эффекты исключить не получится - хотя бы один должен быть активным. Вернуть эффекты из списка исключения без перепрошивки можно только полной очисткой списка. Для этого нужно включить или перезагрузить блок управления с нажатой кнопкой SB2. При этом сначала включаться все светодиоды, а потом останутся светиться все светодиоды средних лучей и центра, образуя подобие улыбки. После отпускания кнопки гирлянда продолжит работу в обычном режиме.

Теперь немного информации об хранящихся в EEPROM данных:

  • Первые три байта нулевой строки EEPROM (0x2000-0x2002) - это версия прошивки. Эти ячейки менять бесполезно, т.к. содержимое в них носит чисто информативный характер. Если в этих ячейках будет записана некорректная информация, то программа автоматически исправит их при включении.

 

  • В ячейке 0x2003 записан тип светодиодов, для которого написана прошивка, 0x11 или 0x12. Эта ячейка так же для информирования.

 

  • Если в ячейке 0x2004 находится 0x10, то в памяти микроконтроллера записана прошивка с программно пониженной яркостью светодиодов. И эта ячейка тоже для информирования.

 

  • В ячейке 0x2005 находится время для автопереключения эффектов в виде количества 20-секундных интервалов, как в гирлянде. По-умолчанию это 15(0x0F) интервалов, т.е. 5 минут. При прошивке его можно изменить в пределах от 3-х(0x03) до 180-ти(0xB4) интервалов, т.е. от 1 минуты до 1 часа. Если записать иное значение, то программа исправит его на стандартное.

 

  • В ячейки 0x2006-0x2009 записываются флаги активных эффектов для функционирования списка исключения. Их тоже можно изменить по своему усмотрению. Для исключения эффектов необходимо обнулить соответствующий бит в соответствующей ячейке (в ячейке 0x2006 флаги эффектов 0-7, в ячейке 0x2007 флаги эффектов 8-15, и т.д.). Но если обнулить флаги всех программ, то микроконтроллер исправит эту ошибку.

 

  • Значение ячейки 0x200E обнуляется если закончится ресурс EEPROM, который не бесконечен. Изменять эту ячейку настоятельно не рекомендуется, т.к. при её обнулении программа прекратит сохранять рабочие данные в EEPROM.
  • В ячейке 0x200F отображается номер используемого блока памяти для рабочих данных. Изменение этой ячейки тоже нежелательно.

 

  • Оставшаяся память (0x2010-0x21FF) разбита на блоки, в которых хранятся вспомогательные данные для работы звезды: номер текущей программы, первичное значение для ГПСЧ и количество записей в блок памяти.

 

Итоги

Итак, всё задуманное получилось.

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

Напоследок ещё одно видео, в котором будет описание обоих вариантов, и демонстрация (с 14:23) всех эффектов варианта звезды на "умных" светодиодах:


Файлы:
Звезда на 2313: Исходники в CV AVR.
Звезда на 2313: Разметка плат в DipTrace.
Звезда на WS LEDs: Исходники в CV AVR.
Звезда на WS LEDs: Разметка плат в DipTrace.
Звезда на 2313: Прошивка.
Звезда на WS LEDs: Прошивка для WS2811.
Звезда на WS LEDs: Прошивка для WS2812B.


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




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

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

19 5 6

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