Как работает адресный светодиод?

Адресные RGB светодиоды WS2812

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

Адресный светодиод ws2812b

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

Адресный светодиод ws2812b

Существует несколько типов адресных светодиодов. Они отличаются размером корпуса и особенностями чипа. В более старых моделях светодиод и микросхема монтировались на печатной плате раздельно. В этом случае применялся обычный RGB светодиод, например, всё тот же 5050.

Как работает адресный светодиод?

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

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

  1. контроллер отправляет 3 байта, кодирующих цвет первого ws2812b;
  2. первый ws2812b в цепочке принимает цветовой код и на его основе генерирует ШИМ сигнал для каждого из RGB светодиодов;
  3. затем первый светодиод соединяет вход с выходом, чтобы данные проходили через него без изменений;
  4. контроллер отправляет 3 байта для следующего светодиода;
  5. данные свободно минуют первый светодиод и поступают на второй
  6. и так далее, пока контроллер не сделает паузу 50 мкс, после которой первый светодиод готов будет вновь принимать новый цвет.

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

Питание адресных светодиодов

Особо следует уделить внимание питанию адресных модулей. Как уже говорилось, внутри такого модуля уживаются вместе три отдельных светодиода, каждый из которых потребляет ток около 15мА. Таким образом, одному модулю WS2812b необходимо 50мА при максимальной яркости всех трёх светодиодов (RGB). Это значит, что для отрезка адресной ленты с 30 светодиодными модулями потребуется ток около 1,5 Ампер! Для понимания масштабов: на контакте +5V Arduino Uno можно получить только 800 мА, на контакте 3V3 у отладочной платы Графит-32/S2/S3 — только 500 мА.

Как же питать сборку адресных светодиодов? Зависит от обстоятельств.

Если мы планируем питать адресные ws2812b напрямую от платы Arduino, следует держать в уме ограничение стабилизатора — 800 мА. Учитывая, что часть этого тока пойдет на питание самого контроллера — 100мА, нам останется около 700 мА. Это всего 14 светодиодов, которые горят одновременно белым цветом с максимальной яркостью. Благо, такое бывает редко. Вполне можно подключить ленту из 144 светодиодов и пускать по ней эффекты в виде волн, где в каждый момент времени будет гореть только небольшая часть светодиодов, и не на полную яркость.

В случае плат Графит, можно рассчитывать на ток 500 мА.

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


Изменено: