![]() |
![]() |
||||||||||||
Два варианта ёлочной звезды на светодиодах
Автор: Ramm-SD Disclaimer 1: Я всё ещё в курсе что новогодние праздники уже закончились. Disclaimer 2: Это продолжение моей статьи про переделку ёлочной гирлянды.
Предыстория Давным-давно, в далёком 1989-м году мои родители купили не только гирлянду, но и ёлочное навершие "Звезда": Фотографий начинки у меня, к сожалению, не сохранилось. Внутри звезды были распаяны навесным монтажом малогабаритные лампы накаливания: 5 в лучах и 2 по центру. Подключалась звезда в сеть 220В через блок питания с симметричным мультивибратором, который включал поочерёдно то лучи, то центр. Основной периодически возникающей проблемой были перегорающие лампочки. Со временем добавилась ещё одна - электролитические конденсаторы высохли, и мультивибратор перестал адекватно выполнять свою функцию. Когда же мне надоело смотреть на переставшую мигать звезду, то решил вместо ремонта звезду немного осовременить. В планах были:
Вариант 1: Звезда на обычных светодиодах Дело было ещё до переделки гирлянды, и об индивидуально адресуемых светодиодах тогда не знал. Недолго думая решил пойти по самому простому (на мой взгляд) пути: мигание светодиодами при помощи микроконтроллера. А чтобы можно было переключаться между режимами работы добавил кнопку. Для управления светодиодами взял "народную" ATTiny2313A. Чтобы максимально упростить себе задачу, все светодиоды подключил через резисторы на выводы одного порта, а кнопку - ко входу прерывания. Опробовал схему с тестовой прошивкой на макетке. Яркость светодиодов получилась чуть выше, чем у лампочек, при этом максимальный ток через МК получился всего 50 мА. Теперь можно было подумать над полной схемой. Для питания звезды задействовал её родной трансформатор. Микроконтроллеру для работы необходимо постоянное напряжение 5 вольт, а значит кроме диодного моста и сглаживающего конденсатора понадобился линейный стабилизатор 7805 с обвязкой. Родная проводка от блока питания до звезды, состоящая из 3-х проводов, позволит без лишних телодвижений разместить кнопку управления в самом блоке. В звезде дополнительно надо подключить электролитический конденсатор для стабильной работы микроконтроллера. Дело было незадолго до нового года, поэтому на скорую руку нарисовал всю разводку лаковым маркером на фольгированном текстолите и протравил. Светодиоды на плате распределил так, чтобы она не отличалась от исходного устройства: 0-й по центру, остальные - в лучах по часовой стрелке начиная с верхнего луча. И вот, уже в процессе лужения обнаружил, что чего-то плате звезды не хватает. А не хватает очень нужной вещи: минусовой линии питания на МК. Забыл нарисовать... Ладно, не переделывать же - припаяю перемычку. Чтобы звезда светилась как раньше, светодиоды припаял с обеих сторон платы, при этом у резисторов вывод на светодиоды является перемычкой между сторонами. Для удобства припаял панельку под микроконтроллер и винтовой клеммник (с шагом 3,81 мм) для провода. Конденсатор впаял между ними в лежачем положении, чтобы он не упирался в корпус звезды. Получилось как-то так: На эти непонятные разводы на плате не обращайте внимания - это я пробовал покрыть её красным цапон-лаком. Но это было бесполезным занятием. Во-первых, цапон-лак был слишком бледным. Во-вторых, плату и так практически не было видно внутри звезды. В плате блока питания ничего необычного, кроме разъёма, облегчающего задачу водружения звезды на верхушку ёлки. Для 7805 радиатор не понадобится, т.к. ток небольшой. Звезда в полностью собранном виде: И всё-таки схема нуждалась в доработке, поэтому окончательный её вариант должен был выглядеть вот так: Что было доработано:
Примерно вот так будут выглядеть доработанные платы звезды и блока питания для выводных и для 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 данных:
Итоги Итак, всё задуманное получилось. Вот только иметь два одинаковых контроллера (для звезды и для гирлянды), выполняющих схожую работу не совсем оптимально. Нужно будет их привести к общему знаменателю, т.е. в один блок управления. Заодно можно будет расширить функционал и сделать его более гибким в настройке. Похоже, будет очередная серия марлезонского балета. Напоследок ещё одно видео, в котором будет описание обоих вариантов, и демонстрация (с 14:23) всех эффектов варианта звезды на "умных" светодиодах:
Файлы: Все вопросы в Форум.
Эти статьи вам тоже могут пригодиться: |
|
||||||||||||
![]() |
![]() |


![]() |
![]() |
|||
|
||||
![]() |
![]() |