Контроллер для светодиодов WS2812

WS2812 — это RGB светодиод в корпусе 5050 со встроенным ШИМ-контроллером. Принцип работы такого светодиода прост: на вход Din поступает 24 бита информации о состоянии уровня цвета каждого светодиода в корпусе, после чего последующая информация передается через выход Dout на следующий светодиод. 

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

Согласно спецификации, электрические параметры светодиода следующие:

Цвет Длинна волны (нм) Интенсивность (мКд) Ток (мА) Напряжение (В)
Красный 620 — 630 550 — 700 20 1,8 — 2,2
Зеленый 515 — 530 1100 — 1400 20 3 — 3,2
Синий 465 — 475 200 — 400 20 3,2 — 3,4

Протокол общения со светодиодом достаточно прост: передача логического «0» и логической «1» происходит посредством изменения длительности положительного импульса так, как показано на рисунке.

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

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

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

Плату необходимо изготовить на листе одностороннего фольгированного стеклотекстолита размером 26 х 38 мм. Типичная ширина дорожек равна 0,6 мм, максимальная 0,8 мм.

Компоненты размещаются в соответствии с принципиальной схемой так, как показано на рисунке ниже.

Объемный рендеринг печатной платы выглядит следующим образом:

Немного о компонентах

Разъем J1 — это micro USB, контактные площадки под него можно переделать в соответствии с разъемом, который будет иметься в наличии. Диод D1 необходим для защиты платы от переполюсовки в случае подключения питания напрямую, не через USB. Этот же диод ограничивает максимальный ток нагрузки. Светодиод D2 используется для индикации состояния контроллера в некоторых режимах роботы. Конденсаторы С1 — С3 ставить не обязательно (т.к. на светодиодных лентах с WS2812 обычно устанавливаются конденсаторы рядом с каждым светодиодом), но желательно.

Контроллер имеет три режима работы:

  1. Режим выбора количества светодиодов.
  2. Режим регулирования яркости каждого канала на всех светодиодах одновременно.
  3. Режим эффектов.

Назначение кнопок:

  • S3 и S2 в первом режиме добавляет (+) и уменьшает (-) количество светодиодов соответственно, а во втором режиме увеличивает и уменьшает яркость выбранного канала.
  • S1 во втором режиме осуществляет переход от одного канала к другому, а в третьем режиме переключает эффекты.
  • Одновременное нажатие S1 и S3 осуществляет переход между режимами.

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

Прошивка для микроконтроллера ATtiny85 написана в среде разработки Arduino IDE 1.6 с установленными платами Digispark, для управления светодиодами использовалась библиотека Adafruit NeoPixel. Прошивать микроконтроллер необходимо с помощью SPI программатора. 

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

Печатную плату можно покрыть сверху каким-либо защитным диэлектрическим слоем, например, лаком.

Работа контроллера продемонстрирована на видео. 

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

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
U1 МК AVR 8-бит ATtiny85 1 Корпус SOP-8
R1-R4 Резистор 10 кОм 4 Типоразмер 0805
R5 Резистор 100 Ом 1 Типоразмер 0603
R6 Резистор 500 Ом 1 Типоразмер 0805
S1-S3 Кнопка тактовая 3
D1 Диод М7 1
D2 Светодиод 1 Типоразмер 0805
С1-С3 Конденсатор 104 3 Типоразмер 0603
X1 Вилка штыревая 1
J1 Разъем micro USB 1