Ёлка со встроенной светодиодной гирляндой своими руками. DIY набор Елочка Colorful Led Как сделать елку из светодиодов


Под Новый год хочется украсить свой дом оригинально: чтобы не как у соседей, и разумеется, не так, «как в прошлый раз». С помощью предлагаемых в продаже светодиодных гирлянд можно создать интересные композиции, но цена вопроса перечеркивает смелые дизайнерские решения. Да и выглядят типовые китайские LED украшения одинаково, и как правило – безлико.

Разумное решение – создать гирлянду своими руками

  • Во-первых – это будет на 100% оригинальный продукт.
  • Во-вторых – конфигурация украшения будет именно такой, как вам нужно.
  • В-третьих – это реальная экономия денег.
  • И наконец, можно смело сказать членам семьи, и особенно детям: «Папа может!»
Наибольшую сложность представляет собой освещение новогодней елки. Собственно, есть всего два варианта: намотать стандартную гирлянду по спирали, либо попробовать расположить ее вертикально, в виде пирамиды. Выбираем второй вариант, тем более, что линии можно изготовить необходимого размера: по высоте елки.
Концепция следующая: от вершины к нижним веткам натягиваются провода, светодиоды располагаются с одинаковым интервалом, как бы создавая ярусы.

Свет должен быть динамичным: потребуется управляющий контроллер. Простые светодиоды светят красиво, но точечные огоньки не создают объема. Значит нужны плафоны на каждый LED элемент.
Расчет гирлянды начинается от блока питания. Вариант сугубо индивидуальный: я использовал ненужный БП от ноутбука. Предполагаемое количество светодиодов - не более 100 штук, при использовании стандартных LED 5 мм, суммарный ток потребления (20 mA * 100) равен 2 А при максимальной яркости. Для последовательного соединения 6 диодов (падение напряжения на каждом порядка 3 вольт), напряжение блока питания 18-20 вольт.
Общий расчет питания гирлянды:
Собираем 5 линий. Каждая «нитка» состоит из 18 светодиодов по 6 шт. на канал (вариант RGB). 18*5 = 90 шт., общий ток 1,8 А. Таким образом, блок питания для ноутбука с параметрами: 19 вольт, 4 ампера, подходит. При этом обеспечивается двукратный резерв по мощности.

Подбор необходимых материалов:

1. Светодиоды. Я заказал на красных, зеленых и синих LED элементов типа «соломенная шляпа», угол рассеивания 120 градусов.
2. . На этом элементе остановимся подробнее. Если не хочется тратить время на изготовление собственной схемы (вариантов множество, самый дешевый из них – на Arduino), можно взять готовый контроллер для RGB ленты. Все схемы работают по одинаковому принципу: 3 управляемых канала, задается очередность включения, и яркость света. Собственно, трех цветность тут условная, вы можете подключить 3 канала одинаковых светодиодов, и наслаждаться световыми эффектами.
Для питания 19-вольтовых каналов, я выбрал контроллер с универсальным напряжением 12-24 вольта. Управляющая схема питается от любого напряжения в этом диапазоне, на выходе мы получаем вольтаж .
Обязательное условие (для моей схемы) – наличие дистанционного пульта управления режимами.
3. Вместо жгута проводов я выбрал (3 канала + 1 общий).
4. разных цветов.


Для удобства монтажа я использовал 4 pin разъемы типа dupon (шаг 2,54 мм). Соответствующий набор давно приобретен у тех же китайцев, отличное подспорье для различных электронных поделок.


Поскольку я запланировал упрятать светодиоды в плафоны – на Aliexpress была куплена . Посадочный диаметр 5 мм.

Расчет схемы подключения

Светодиоды, даже при последовательном соединении (в моем случае 6 диодов), подключаются через токогасящий резистор. Параметры LED элементов на упаковке:


Расчет резистора выполняется по формуле, или на LED калькуляторе. Я воспользовался онлайн сервисом:
  • Для канала RED (падение напряжения 1,8-2,0 В) сопротивление 420 Ом.
  • Для каналов GREEN и BLUE (падение напряжения 3,0-3,2 В) сопротивление 82 Ом (зеленый) и 75 Ом (синий). Зеленый LED элемент светит ярче, поэтому резистор с более высоким номиналом, для уравнивания общей картинки.
Блок схема (вместе с принципиальной) на иллюстрации:


Я купил контроллер для RGB светодиодов с общим анодом. То есть на каждый канал подается минус, а на общий провод – плюс.

Собираем гирлянду

Можно использовать скрученные провода, как на заводских гирляндах. Мне больше понравилась конструкция на шлейфе.


Делаем укрепленную ножку для каждого LED элемента. Для этого понадобятся зубочистки и термоусадка.


Собираем, греем феном.


Получается вот такая конструкция:


Есть смысл сразу подготовить и проверить все 90 светодиодов.


Затем размечаем шлейф, определяя места установки диодов через равное расстояние. Я сделал аккуратные надрезы вдоль шлейфа на проводах нужного цвета, разрезал и залудил места монтажа.


После сборки каждый светодиод выглядит так:


Получилось аккуратно и надежно.
Паять удобно на приспособлении с лупой, которое именуется «третья рука».


Далее соединяем питающий провод (общий «+») с каналами, через резисторы.


Изолируем детали термоусадкой.


И соединяем с «плюсом».


Эту петлю укрываем термоусадкой большого диаметра.
На противоположный конец монтируем разъемы.

Затем надеваем на светодиоды плафоны-снежинки.


Занятие непростое (все-таки 90 штук!), но увлекательное.


Снова проверяем. Эффект потрясающий.


Замечание: Работающие светодиоды плохо получаются на фотографиях, поэтому изображение существенно хуже оригинала.
Остается смонтировать гирлянду на елку – и позвать детвору: полюбоваться на папину работу.


Итог:
Суммарные финансовые затраты на гирлянду – не более 1000 рублей. Основная расходная часть – готовый контроллер. Блок питания условно бесплатный. Диоды и провода – сущие копейки. Дополнительные затраты: 300 рублей на плафоны-снежинки. Опция не обязательная, но существенно повышает привлекательность гирлянды.
Затраченного времени (4 полных выходных) совершенно не жаль: работать было интересно, и результат того стоит.

Этот instructable показывает как надо обращаться со светодиодами, чтобы сделать из них какую-либо светящуюся цепь, рассказывает об общих правилах применения светодиодов на примере изготовления светящейся Рождественской светодиодной ёлки . Зная и используя принципы изложенные здесь, вы без труда повторите другие конструкции с использованием светодиодов, такие как и

, раздел сайта, где представлены ВСЕ самодельные ёлки и ВСЕ варианты из чего можно сделать ёлку.

Шаг 1. Детали

Эта светодиодная ёлка сделана из 17 красных, зеленых и желтых светодиодов – из самых дешевых, которые были в наличии в магазине электроники, (не знаю, кто изготовитель).
Их спецификация: (одинаковая для всех цветов)
прямое падение напряжения = 2,0 В
Макс непрерывный ток = 15 мА
Если вы можете, попытайтесь подобрать светодиоды, которые имеют те же характеристики - это облегчит создание дерева.

Блок питания от старого принтера обнаружился на улице - никакого источника питания постоянного тока больше не надо. В данном случае я имею напряжение 30 В, с током до 400 мА. Достаточная мощность для 300 светодиодов, но это излишне.

Шаг 2. Дизайн электрической схемы

Есть три возможности при проектировании схемы светодиодной ёлки, в зависимости от количества светодиодов, их прямого падения напряжения и напряжения питания.

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

В этом случае, вы должны включить резистор для ограничения величины тока до безопасного уровня. Для расчета общего сопротивления необходимо:
R = (Vs - Vf * N) / Is
Vs: - Напряжение питания
Vf: - Падение напряжения на 1 светодиод.
N: - Количество светодиодов
Is: - Безопасный ток для светодиодов.

Мой первоначальный дизайн был похож на схему А: R1 и R2 каждый по половине R_общего (для симметрии), резисторы добавлены для получения общего сопротивления.

2. На светодиодах падает точно такое же напряжение, что выдает блок питания. Отлично! Резисторы не нужны, просто подключите все индикаторы последовательно к провода клемм питания.
Будьте осторожны, если вы рассчитали неправильно, светодиоды сгорят.

3. На светодиодах падает больше, чем напряжение питания. Плохие новости - вы не можете подключить последовательно соединенные светодиоды. Однако, Вы можете разделить светодиоды в параллельные цепочки. Если вы посмотрите на схему B, вы можете видеть, что есть два пути для прохождения тока от Vcc (+) к GND (-). Путь по левой цепи имеет только 2 светодиода, поэтому она нуждается в токоограничительном резисторе, чтобы сохранить текущий ток на безопасном уровне (Сценарий 1). Путь по правой цепи имеет 15 светодиодов, падение напряжения каждого светодиода 2,0 В и блок питания 30В, это дает мне именно нужное падение напряжения, когда можно обойтись без резистора (Сценарий 2).

Если у вас есть известное напряжение питания и необходимое количество светодиодов с известным падением напряжения на каждом, можно прикинуть, какие сценарии у вас возможны, и разработать свою светодиодную ёлку!

Шаг 3. Дизайн эстетический

Пришло время художественных навыков!
При разработке дизайна дерева помните:
1. Должна быть определена электрическая цепь (см. предыдущий шаг), которая и определит ваши дальнейшие шаги.
2. Старайтесь не делать расстояние между соседними светодиодами больше чем два раза длина выводов светодиода, или вы должны будете использовать дополнительный провод.
Если вы посмотрите на дизайн B, можно увидеть, что есть два пути, по которому течет ток: выводы на нижних зеленых светодиодах подключаются к источнику питания и ток идет по ним вокруг всего контура дерева. Другой путь - два самых нижних зеленых светодиода подключены через резистор, и создают вторую параллельную цепь.

Шаг 4. Используйте кондуктор!

Этот проект не использует печатную плату, и любой, кто пытался паять компоненты вместе, знает, как это трудно! Дерево представляет еще более сложный вариант, так как провода и компоненты следует разместить эстетично - вы хотите, чтобы провода были прямыми, а дерево симметричным.
Чтобы преодолеть это, я использовал кондуктор - распечатайте свой план расположения или нарисуйте его от руки, и приклейте на кусочек дерева, по крайней мере, 5 мм (1/4 inch) толщиной. Если у вас есть гладкое дерево, как фанера или MDF, можно просто рисовать прямо на него.
Найти сверло такого же размера, как ваш светодиод (3 мм или 5 мм, как правило), и просверлить небольшие отверстия под каждый светодиод. В идеале каждый светодиод должен плотно прилегать в отверстии, без шевеления.

Шаг 5. Пайка светодиодов

На данном этапе необходимо выяснить, в каком направлении протекает ток по вашему дереву (по часовой стрелке или против часовой стрелки). От этого будет зависеть расположение контактов питания, и каким образом вы хотите, чтобы было ориентировано дерево (лицом вперед).
Разберитесь с этим – иначе или ёлочка не будет гореть, или будет развернута задом наперед.

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

Осторожно согните выводы светодиодов по направлению к прилегающим светодиодам, и обрежьте излишки, так чтобы оставить только ~ 1 см перекрытия. Совместите их внимательно, и спаяйте вместе.

ПРЕДУПРЕЖДЕНИЕ:
Светодиоды чувствительны к температуре – если вы перегреете выводы - они сгорают.
Пайку производите так далеко от светодиодов, как только сможете.
Попробуйте расплавить припой и положить его на соединение, а не нагревайте провода, пока припой плавится на них.
Если у вас не получилась пайка в первые ~ 10 секунд, подождите, пока светодиоды остынут и повторите попытку. Если вы паяете два длинных провода вместе, риск небольшой, но если светодиоды очень близко друг к другу (например, желтые светодиоды в моей конструкции), то вы должны быть намного более осторожными.

Шаг 6. Почти готово...

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

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

Вставьте дерево ногами в отверстия, или согните ноги под углом 90 градусов, и припаяйте к клеммам БП.

Теперь, когда ёлка прочно закреплена, вы можете исправить любые деформации, которые произошли, осторожно изгибая конструкцию. Убедитесь, что провода не касаются друг друга прежде, чем вы подключите питание.

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

Шаг 7. Светодиодная ёлка г отова!

Ура! Новогодняя светодиодная ёлка , которая не занимают кучу места, когда не используется, готова!

Возможно один из немногих DIY-наборов для пайки, а результате которого получается полезный продукт (наборы для сборки полноценных приборов в учет не берем), который после сборки не отправится лежать в темном углу, а будет использоваться по назначению, особенно, если к сборке подключить ребенка.
В обзоре описание DIY 3D-елки и инструкция по сборке.

После сборки конструктора должна получиться 3D-ёлка, мигающая светодиодами 3 цветов, которая может работать как от 3 батареек AA, так и питаться от USB.

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

В составе набора для пайки 3D-елки:

3 платы (основание CTR-30C и 2 части «ствола дерева» CTR-30A и CTR-30B)
Светодиоды (12 зеленых, 12 желтых, 13 красных)
6 конденсаторов на 47uF 16V
6 транзисторов S9014
7 резисторов 10 KOm
2 резистора 330 Om
2 резистора 1 KOm
2 резистора 2 KOm
1 кнопка
1 разъем для питания (длина 1 м)
1 шнур питания USB
2 болта и 2 гайки
Бокс для 3*AA батареек

Вот что было в комплекте.

Основные детали крупным планом. На платах логотип EQKIT.


Платы с обратной стороны:


Покрупнее:

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

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

Контактные площадки на платах пролужены отлично. При пайке даже не пришлось пользоваться флюсом, хватило того, что содержался в припое. Половину елки спаял примитивным китайским , правда с отдельно купленными для него. Собственно для теста новых жал это и затеял, оказалось «негодный» китайский паяльник вполне годен для таких несложных работ, т.к. родные жала даже не хотели брать припой. Другую половину паял уже паяльником на станции с жалами T12. Сейчас не смог определить, где и чем паялось, т.е. собрать данный конструктор можно с помощью любого инструмента, лишь бы руки были на правильном месте:)

Резисторы проверил мультиметром на соответствие маркировке и для удобства подписал. Возможно кому-то пригодится.

Сначала припаял все резисторы на платы A и B. С резисторами на 10K все понятно, они подписаны на плате. Остальные номиналы нужно разместить на следующих местах:
Плата CTR-30A
R1, R3, R5, R7 - 10K
R2 - 2K
R4 - 1K
R6 - 330

Плата CTR-30B
R1, R3, R5 - 10K
R2 - на фото - 330
R4 - на фото - 2K
R6 - на фото - 1K

Получилось следующее. Можно увидеть, где должны быть какие резисторы.

Далее нужно припаять транзисторы и конденсаторы. На плате конденсаторы подписаны как 22uF, в комплекте идут на 47uF, почему-то тут китайцы не сэкономили. Ножки у конденсаторов и резисторов загибаем на 90 градусов, чтобы они после пайки лежали горизонтально на плате, а не торчали в разные стороны на готовом изделии. Минусовой контакт электролитических конденсаторов (C1, C2, C3) обозначен на плате заштрихованной областью, а на самом конденсаторе светлой полоской. Ориентация транзисторов (Q1, Q2, Q3) также указана на плате полукругом, соответственно контур корпуса транзистора должен совпадать при установке (до сгибания ножек) с рисунком на плате. В данном случае у меня получилось, что все транзисторы лежат «лицом вниз», причем ориентированны в обратную сторону от полукруга на плате.
Впаяны все резисторы, транзисторы и конденсаторы.

Далее впаиваем светодиоды. Светодиоды имеют полярность, на плате все обозначено. Все светодиоды ориентированы одинаково, поэтому достаточно запомнить, как впаивать один, остальные аналогично. Для тех, кто не в курсе, в данном случае светодиод коротким выводом (катодом, «-») запаиваем ближе к вершине, соответственно длинным выводом (анодом, «+») к низу дерева. При финальной сборке дерева нужно будет припаять последний красный светодиод на вершине, там уже обозначена полярность, длинным выводом светодиод припаиваем к «+».

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

Распределение светодиодов по цветам следующее:
Плата A:
D1-D6 - красный,
D7-D12 - желтый,
D13-D18 - зеленый.
Плата B:
D1-D6 - зеленый,
D7-D12 - красный,
D13-D18 – желтый,

Все детали на основных платах впаяны.


Еще фото под другим углом.

Рекомендую протестировать платы до сборки, подав на них напряжение 4.5-5V. Каждая плата может работать независимо, т. е. в принципе можно получить две 2D-елки. Если ёлки работают по отдельности, можно приступать к дальнейшей сборке.

Думаю дальше процесс сборки описывать смысла нет, т.к. все очевидно. Платы A и B закрепляются между собой припоем. Главное не перепутать полярность, при установке елки на плату C (полярность везде подписана, перепутать нужно постараться).
Держатель для батареек имеет довольно длинный провод, который тут не нужен, его лучше обрезать до нужной длины. На всякий случай напомню, что красный провод нужно припаять к выводу «+», черный к «-» (подписаны BAT 4.5V).

Припаиваем кнопку включение, разъем для питания через USB, прикручиваем холдер для батареек - все конструктор готов.


Для более надежного крепления разъема питания DC 5V в комплекте нет металлической скобы, хотя отверстия для нее предусмотрены. Вместо нее можно использовать остаток ножки от резистора или конденсатора, что я и сделал.

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

Елка вполне нормально работает и от аккумуляторов Ni-MH 1.2V, протестировал на . Но при работе от USB (5V) все же свет поярче. Пытался измерить потребляемую мощность при подключении через USB, показывает 0.00A, при этом ёлка вовсю мигает и работает как надо, следовательно потребляемый ток очень мал, ниже минимального порога срабатывания тестера, поэтому батареек должно хватить очень надолго.

3D-ёлка в сборе:

Включаем питание - светодиоды светятся и плавно перемигиваются, радуя глаз.

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

Кто видел эту елку и знает, что такое паяльник, тоже захотели ее собрать. Видимо что-то в ней есть… Покупал еще летом, поэтому успел собрать к Новому году. Зато сейчас цены на подобные наборы снизились.

Всем доброго времени суток! До Нового Года ещё есть время, решил сделать Ёлочку. Как говорится, я её слепил из того что было!

А было именно:

  • Медная трубка высотой 30 см диаметром 5-7 мм (можно и железную),
  • Медная проволока диаметром 1-1,5 мм не помню сколько метров, изолента мягкая «Япония»(На самом деле «Made in China») думаю подойдет и скотч узкий,
  • Термоусадка диаметром 4 мм,
  • Медный провод (я использовал витые пары из UTP кабеля),
  • Светодиоды 3мм (количество в зависимости от количества веток на будущей ёлке) зеленые и красные которые имелись в наличии, которые были когда-то заказаны с китайского интернет магазина,
  • Резисторы (номинал и количество зависит от метода подключения и напряжения питания, я выпаял резисторы из старых схем телефонов,телевизоров,магнитофонов),
  • Плоскогубцы,
  • Ножницы, либо кусачки для откусывания проволоки,
  • Пряжа «Травка» зеленого цвета была куплена в отделе «Пряжа»,
  • Блок питания (использовал старую зарядку от телефона)
  • Номиналы резисторов, количество и схему подключения можно рассчитать на сайте: http://www.casemods.ru/services/raschet_rezistora.html
  • Расчет мультивибратора делал в программе «Symmetrical multivibrator»

Приступим!

Отмеряем проволоку на верхние ветви, делаем припуск на крепление ветки к стволу, складываем пополам и скручиваем между собой половинки. Таким образом получаем заготовку ветки:

Количество веток в первом ряду зависит от вашей фантазии, Я сделал 4. Далее крепим ветки к стволу при помощи изоленты.

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

Если вы не хотите делать гирлянду, то можно сразу обматывать ветки и ствол пряжей «Травка». Но я сделал гирлянду, а точнее даже две раздельные. Одна гирлянда из красных светодиодов а вторая из зеленых.

Паял светодиоды последовательно по 2 штуки, резистор 120 ом 0,04 ватта. Напряжение питания 6 вольт. На каждый кончик ветки по одному светодиоду. Кончик ветки вставлял между ножками светодиода. Проволока из которой сделаны ветки в лаковой изоляции.После пайки надевалась термоусадка.

Перед обмоткой веток проверил всю конструкцию на работоспособность (как видно на фото это уже вторая елка, а на видео в конце статьи третья).

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

Сбоку подставки просверлено отверстие под провод питания.

В подставку вставлен мультивибратор, рассчитан в программе «»Symmetrical multivibrator»» и спаяный по этой схеме:

Всё подключено по схеме. После установки мультивибратора в подставке, крепим дно подставки (крагис) мебельным степлером. Ёлка готова! По желанию можно имитировать снег на ветвях гуашью.

Видео самодельной ёлки:

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

Просмотренные в Интернете видео с поделками на "умных" светодиодах WS2812B сразу породили множество идей их применения. В конце ноября мне наконец-то пришла долгожданная, заказанная на eBay лента из 200 диодов. Доставка бесплатна, стоимость одного диода - около шести рублей. И так как до Нового года оставался всего месяц, я решил совместить приятное с полезным - и с подключением диодов разобраться, и к празднику подготовиться.

WS2812B - трехцветный светодиод с интегрированным драйвером и схемой, реализующей протокол управления. Имеет 4 вывода, как и "обычный" RGB-диод, однако их назначение отличается: два вывода отведены под питание схемы, один вывод под вход данных, и один - под выход (диоды можно соединять последовательно). Нет необходимости придумывать сложные алгоритмы для регулировки яркости и цвета каждого диода - разработчику достаточно передать в цепочку диодов последовательность байт и выдержать необходимые временные интервалы - после чего цепочка будет гореть заданным цветом либо до подачи другой последовательности, либо до отключения питания. При этом расходуется всего один вывод МК или ПЛИС!

В даташите на диоды (прикреплен в конце статьи) подробно расписаны все характеристики, здесь же приведу наиболее важные параметры:

  • размер одного диода 5х5 мм, корпус - для поверхностного монтажа;
  • напряжение питания - 3,5...5,3В;
  • максимальное количество диодов в одной цепочке - 1024, при частоте обновления 30 кадров в секунду. Стоит заметить, что подключить такое число диодов возможно при идеальном следовании таймингам протокола, что бывает проблематично;
  • светодиоды реализуют RGB-модель: каждый цвет кодируется одним байтом - теоретически возможно получить более 16 млн цветов. Однако на глаз разница между даже не столь близкими цветами незаметна.

Схема подключения диодов выглядит следующим образом:

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

  1. Передать 8 бит G7..G0 для установки зеленого цвета первого диода;
  2. Передать биты R7..R0 для установки красного цвета;
  3. Передать биты B7..B0 для установки синего цвета;
  4. Повторить пункты 1-3 для второго, третьего и др. диодов. То есть, после инициализации первого диода, данные начинают проходить через него на следующий диод;
  5. Установить на входе логический "0" как минимум на 50 мкс, после чего все инициализированные диоды примут заданный цвет.

Передача единиц и нулей осуществляется не непосредственно, но выдержкой определенных временных интервалов; суммарное время передачи одного бита - 1,25 мкс, настройки одного светодиода - 30 мкс. На практике требуется соблюсти лишь длительность высокого уровня, длительность низкого может выходить из пределов в большую сторону.

Далее я подробно прокомментирую программу, которая инициализирует диоды, отвечает за управление и смену эффектов. Программа написана на языке ассемблера, проект в среде ATmelStudio 6.2 прикреплен в конце статьи. Будет рассмотрена только логика загрузки и переключения эффектов; очевидные вещи, вроде инициализации стека и настройки прерываний и портов, опущены. Также подразумевается, что цепочка диодов подключена к порту PD7 контроллера, рабочая частота - 8 МГц.

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

  • частотой кадров;
  • временем работы;
  • "интеллектуальностью". "Умным" называется эффект, который проще запрограммировать (например, плавные переливы цветов, одинаковые для многих эффектов); "глупый" же эффект описывается покадрово, массивом.

Перед объяснением логики работы следует пояснить, для чего нужны следующие регистры и константы:

Def temp = r16 ;для всего, своего рода регистр-помойка.def counter = r17 ;регистр-счетчик светодиодов.def curFn = r18 ;счетчик кадров, прошедших с момента начала текущего эффекта.def curEf = r19 ;7..4 - число эффектов всего, 3..0 - номер текущего.equ LED_COUNT = 17 ;константа-общее число светодиодов.equ BUFFER_SIZE = LED_COUNT*12+1 ;размер буфера (будет пояснено позднее) .equ XTAL = 8000000 ;тактовая частота.equ DIV = 256 ;значение предделителя таймера.equ TPS = XTAL / DIV ;число тиков таймера за секунду.equ END = 0xFE ;маркер конца

Учитывая приведенные выше характеристики эффекта, он выглядит примерно следующим образом:

EffectName: .db high(TPS/15),low(TPS/15), 15*16,1 .db 7,7,9,7,7,9,7,7,9,7,7,9 .db 7,7,9,7,7,9,7,7,9,7,7,9 .db 7,7,9,7,7,9,7,7,9,7,7,9 .db 7,7,9,7,7,9,7,7,9,7,7,9 .db 7,7,9,END

В первой строке находятся 4 байта характеристик:

  • два байта настройки прерывания таймера, определяющие частоты смены кадров. В данном случае частота - 15 кадров/сек;
  • байт длительности эффекта (в кадрах). Данный эффект продлится 16 секунд;
  • байт "умности" эффекта. Так как данный эффект (перелив) проще запрограммировать, байт равен единице.
  • 51 байт цветовых характеристик каждого диода (в случае покадрового описания их было бы на порядок больше);
  • маркер конца массива.

Под хранение буфера и некоторых констант в ОЗУ выделено следующее количество места:

Dseg BytesBuffer: .byte BUFFER_SIZE ;массив байт, который будет загружаться в диоды (пояснено ниже) ColorsTable: .byte LED_COUNT*3+1 ;3 - число цветоканалов(R,G,B), 1 байт под маркер конца MaxFrame: .byte 1 ;число кадров, которое необходимо проиграть, для конкретного эффекта CurEffectAddr: .byte 2 ;хранит в себе адрес текущего эффекта.equ CEA_H = CurEffectAddr + 1 .equ CEA_L = CurEffectAddr + 0

Хочется подробнее пояснить "программируемость" эффектов. Дело в том, что в массиве должны быть перечислены интенсивности каждого цвета (от 0 до 16). В свою очередь, данные значения умножаются на значения следующий регистров (заодно приведены константы-помощники в реализации перелива):

Def R = r20 ;динамическая интенсивность красного.def G = r21 ;зеленого.def B = r22 ;и синего.def F = r23 ;флаг для автомата переключения состояний;флаги состояний.equ G_HIGH = 1 .equ R_DOWN = 2 .equ B_HIGH = 3 .equ G_DOWN = 4 .equ R_HIGH = 5 .equ B_DOWN = 6 .equ MAX_FLAG = 7

Произведение констант из массива и соответствующих регистров формируют таблицу цветов (ColorsTable) для каждого из диодов. В случае, если эффект программируется, значения регистров R,G,B можно динамически менять. Описание всех кадров такого эффекта нецелесообразно (требует слишком много памяти контроллера).

В случае, если эффект не программируемый, все кадры перечислены в массиве, а интенсивности вместо значений регистров умножаются на 15.

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

ColorToBytes: ldi temp,0x88 sbrc R0,7 ;используется регистр R0 как стандартный аргумент команды lpm subi temp,-(1<<6) ;сложения в AVR нет, поэтому так извращенно sbrc R0,6 subi temp,-(1<<2) st Y+,temp ldi temp,0x88 sbrc R0,5 subi temp,-(1<<6) sbrc R0,4 subi temp,-(1<<2) st Y+,temp ldi temp,0x88 sbrc R0,3 subi temp,-(1<<6) sbrc R0,2 subi temp,-(1<<2) st Y+,temp ldi temp,0x88 sbrc R0,1 subi temp,-(1<<6) sbrc R0,0 subi temp,-(1<<2) st Y+,temp ret

То есть, данная функция преобразует один байт в четыре, которые будут загружаться в диоды.

LoadData: cli ;цикл загрузки битов в диоды. Очень быстрый, и дабы тут ничего не сломалось, на всякий случай запрещаю прер-ия. LoadData2: ld temp,Y+ cpi temp,END breq FromBegin ;все диоды инициализированы, прыгаем в бесконечный цикл Out1: out PortD,temp lsl temp nop out PortD,temp lsl temp nop out PortD,temp lsl temp nop out PortD,temp lsl temp nop out PortD,temp lsl temp nop out PortD,temp lsl temp nop cbi PortD,7 rjmp PC+1 ;выполняется 2 такта, но занимает 2 байта, в отличие от 2*nop, которые выполняются столько же, rjmp PC+1 ;но занимает 4 байта rjmp PC+1 rjmp PC+1 rjmp PC+1 rjmp PC+1 rjmp LoadData2 FromBegin: sei cbi PortD,7 Loop: ;пока что цикл абсолютно пуст, то есть можно разместить еще какие-либо действия/обработчики rjmp Loop

Откуда взялась волшебная константа 0х88? Нужная длительность низких и высоких уровней формируется путем выдерживания определенного значения на выходе порта. Команды lsl - nop - out выполняются за три такта, то есть за 375 нс, что укладывается в допустимую погрешность. Таким образом, передача нуля сводится к загрузке последовательности 1000, а единицы - 1100. То есть, в одном байте передаются два бита, а в двенадцати байтах - настройки одного диода (24 бита = 3 байта G,R,B), что сразу делает понятной данную строку:

Equ BUFFER_SIZE = LED_COUNT*12+1 ;размер буфера (будет пояснено позднее)

Именно поэтому в начале байт равен 0x88, функция ColorToBytes попросту выставляет единицы на позициях 6 и 2, если это необходимо, и загружает байт в выходной буфер.

В упомянутом выше прерывании таймера реализовано следующее:

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

    Также в конце статьи прикреплен шаблон проекта, незначительная правка которого позволит очень быстро работать с WS2812B.

    Осталось продемонстрировать готовое устройство на "умных" светодиодах - новогоднюю елку. Схема елки достаточно проста и приведена ниже:

    Основной компонент схемы - микроконтроллер ATmega8A в TQFP-корпусе. Также я оставил две кнопки для будущей доработки елки. Остальные компоненты почти полностью представлены резисторами и конденсаторами типоразмера 0805. Питается елка от 5 Вольт через разъем micro-USB, что позволяет разместить елку где угодно при подключении к внешнему ЗУ типа PowerBank. Файл с ПП елки находится в архиве (плата двусторонняя).

    Фото вырезанной на ЧПУ-станке платы (одна сторона):

    Впервые в жизни попробовал вырезать плату из тонкого (0.3мм) текстолита, так как планировал закрепить елку на листе бумаги формата А3. Для больших плат механическая прочность такого текстолита низка; советую брать текстолит от 1 мм толщиной. На фото даже видно просвечивающие дорожки другой стороны!

    Пайка и прошивка схемы трудностей вызвать не должны, все необходимые файлы прикреплены в конце статьи. Фото елки в работе (эффект северного сияния, фрагменты гирлянд):

    Небольшое видео работы (пример эффекта перелива):

    В конце статьи прикреплен архив, где находятся:

    • исходный проект новогодней елки в AtmelStudio 6.2;
    • шаблон проекта в этой же среде;
    • файл печатной платы елки;
    • файл схемы елки;
    • прошивка елки;
    • FUSE-биты контроллера;
    • схема подключения диодов;
    • даташит на WS2812B.

    Список радиоэлементов

    Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
    U1 МК AVR 8-бит

    ATmega8A-AU

    1 TQFP32 В блокнот
    D1-D17 Светодиод WS2812B 17 В блокнот
    C1 Конденсатор 47 мкФ 1 TANT_A В блокнот
    C2 Конденсатор 100 нФ 1 0805