Светильник на адресных светодиодах ws2128b своими руками

Обновлено: 08.07.2024

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

Благодаря этому, передавать информацию о цвете, мы можем всего по одному проводу. Информация передается пакетами по 24 бита, где в каждых из 8 бит закодирован свой цвет: зеленый, красный и синий.

Более того, светодиоды могут соединятся последовательно и всё равно управляться одним проводом идущим от управляющего устройства.

Что мы и наблюдаем в случае светодиодной матрицы.

Тогда следующие 24 бита передаются по цепочке следующему светодиоду, пин Din которого подключен к пину Dout предыдущего. И так далее, по цепочке.

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

Так выглядит адресный светодиод под микроскопом при увеличении примерно в 100 раз :

А вот так выглядит его контроллер, при увеличении примерно в 500 раз:

Распиновка светодиода WS2812B

Перейдем к схеме светодиода.

Пин 1 , обозначенный на схеме как Vdd – служит для подключения питания от 3.5 до 5.3 В. Т.е. сюда мы будем подавать питание 5 В.

Пин 3 , обозначенный как Vss для подключения земли или минуса источника питания.

Пин 4 ( Din ) – служит для получения цифрового сигнала от управляющего устройства. Т.е. подключать мы его будем к любому цифровому пину микроконтроллера.

А пин 2 ( Dout )– служит для последовательного подключения еще одного такого же светодиода.

Определить где какой пин находится помогает выемка треугольной формы в одном из углов светодиода, сделанная возле 3 пина.

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

Подключение адресного светодиода WS2812B к Ардуино

Подключаем адресный светодиод к Ардуино согласно схеме.

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

Так же, при подключении нескольких светодиодов для них нужно предусмотреть отдельный источник питания!

Скетч для управления адресным светодиодом WS2812B

Теперь перейдем к скетчу. Я буду использовать библиотеку FastLED. Подробно о библиотеке FastL ED я рассказывал в статье о светодиодной матрице. Ссылка на скетч в конце статьи.

В коде скетча можно задействовать каждый из встроенных светодиодов: красный, зеленый и синий, либо их сочетание.

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

Адресная светодиодная лента на Arduino – отличное решение для создания SMART освещения в любом помещении либо создания цветомузыки ∕ эффекта декоративной подсветки. LED-ленты давно перестали быть роскошью в интерьерах, на сегодняшний момент этот сегмент рынка технологий активно развивается. И это совсем не удивительно, ведь такие модули экономны в потреблении энергии, безопасны, при этом достаточно надежны (не пожароопасные, тк. не нагреваются), да и стоят просто копейки.

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

Важно! Для 5 и 12-вольтовых лент следует использовать блоки питания. Если источник ниже 5V, возможны перепады яркости свечения.

Вернемся к схеме. Для реализации выше обозначенного проекта понадобятся библиотеки. Тут выбор также есть: FastLED (поддержка всех Ардуино-платформ) или Adafruit NeoPixel (меньшее потребление памяти и др.ресурсов).

Напишем скетч с применением 1-ого софта:

Цветомузыка на Ардуино

Адресные светодиоды и светодиодные ленты - как устроены и работают, подключение и управление

Начнем с того, что в обычной светодиодной ленте, независимо от того одноцветная она или RGB, все светодиоды ленты питаются и светятся одновременно, поскольку все они получают питание параллельно от одного источника, драйвера, который работает по своему алгоритму, реализуемому непосредственно внутри драйвера, и просто подает питание сразу на всю ленту, по сути - на все параллельно подключенные к нему светодиоды.

Устройство светодиодной ленты

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

Адресные светодиоды и светодиодные ленты

В отличие от светодиодной RGB-ленты, в которой все светодиоды одинаково реагируют на сигнал с RGB-контроллера, в адресной LED-ленте каждый светодиод получает индивидуальную команду управления

Светодиодная лента WS2811

Возле каждого светодиода на адресной ленте установлен свой микрочип. Сегодня очень распространены адресные ленты с ШИМ-чипами WS2811.

Корпуса микрочипов DIP-8 либо SOP-8. Каждый чип имеет три выхода — каждый на свой цвет, вход передачи данных, выход передачи данных, вывод питания, вход установки режима и общий вывод.

Светодиодная лента WS2811

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

Адресная светодиодная лента

WS2812B – более компактная модификация чипа, предназначенная для монтажа внутри корпуса светодиода SMD 5050. Так вся сборка имеет всего 4 выхода: питание, общий вывод, вход передачи данных и выход передачи данных.

Умный светодиод

Светодиоды WS2812B

Светодиоды WS2812B имеют встроенную интегральную схему (интегральную схему, микросхему) в направлении светодиода

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

ШИМ-сигнал управления подается со специального запрограммированного контроллера на вход ленты, и передается последовательно на вход одного чипа (digital input - DI), выходит из него (digital output - DO), затем проходит через второй чип, и т. д. Управление легко осуществить при помощи программы на ардуино.

Для взаимодействия с адресными лентами подходят библиотеки ардуино FastLED и Adafruit NeoPixel. Внутри библиотек содержатся полноценные скетчи, приняв которые за основу легко освоить самостоятельное создание новых световых эффектов. В заголовке скетча необходимо правильно указать количество светодиодов ленты и номер порта передачи данных.

Каждый RGB-светодиод на самом деле имеет в себе три светодиода (красный, зеленый и синий), поэтому для управления одним сегментом (один сегмент — это RGB-светодиод с чипом) требуется 3 байта информации, один байт — один цвет.

Каждый байт может принимать одно из 255 значений, поэтому в принципе каждый RGB-светодиод способен дать свет одним из 255 3 = 16581375 оттенков. Количество байт в одной команде равно таким образом 3 умножить на количество последовательных рабочих сегментов в ленте.

Управление светодиодной лентой

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

На данном занятии мы попробуем поработать со светодиодами RGB, в которые встроен чип для управления их свечением.

Таким светодиодом является WS2712B от компании WORLDSEMI.

Чтобы понять, что из себя представляет данный светодиод, посмотрим его предшественника — WS2811. Это была просто микросхема, к которой подключался RGB-светодиод. Делалось это, например, вот таким образом


Это светодиодная гирлянда, в каждом фонарике которой находится RGB-светодиод, подключенный к микросхеме WS2811, расположенной на небольшой плате.

Давайте посмотрим назначение выводов микросхемы WS2811


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

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


Аналогичным образом устроен и наш светодиод, рассматриваемый в данном занятии, — WS2712B. Только в нём уже светящийся элемент сразу подсоединён к чипу. Наружу выведены ножки питания, общей шины, а также цифровой вход и выход


Вот назначение его ножек вместе с размерами


Ко мне в руки чудесным образом попала вот такая ленточка, выполненная на данных умных светодиодах (нажмите на картинку для увеличения изображения)


Подобных лент существует огромное множество. Они различаются по цвету, плотности светодиодов (количеству светодиодов на 1 метре ленты), а также по степени защиты. Данная лента чёрного цвета, плотность — 144 светодиода на метр, а защита — самая малая. Обычная бумажная лента с посаженными на неё и соединёнными светодиодами. Я брал именно такую в целях экспериментов и не планировал её использование в местах, не защищённых от атмосферных воздействий. К тому же за защиту надо платить и с более высокой степенью защиты ленты стоят дороже. Длина моей ленты всего 1 метр, поэтому, соответственно, и светодиодов на ней всего 144. Вот с этими 144 светодиодами мы и будем работать.

Также мы видим, что из обоих концов данной ленты выведены по 5 проводов


Назначение каждого провода.

Красный провод в колодке — питание, белый в колодке — общий, зелёный в колодке — сигнальный.

Красный отдельный — высокотоковое питание, чёрный — высокотоковый общий провод.

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

Вот так вот выглядят вблизи светодиоды на моей ленте


Кроме светодиодных лент на светодиодах WS2812B существуют также матрицы. Они бывают разной размерности — 8х8, 32х32 и т.д. Также можно приобрести такие светодиоды по отдельности. Это требуется обычно либо для сборки каких-то своих схем, либо для того, чтобы заменить светодиод, вышедший из строя. Определить такой светодиод не сложно, так как все исправные светодиоды, расположенные по ленте либо матрице до него, будут исправно работать, а данный светодиод светиться не будет и также не будут светиться светодиоды, расположенные после него.

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

А протокол у данного управляющего сигнала, оказывается не такой уж и сложный.

Сначала мы передаём 24 бита цветов, предназначенных для самого первого светодиода. Биты передаются в следующей последовательности: сначала зелёный, потом красный, потом синий


Как-то непривычно (не R+G+B), но ничего страшного, справимся.

Теперь посмотрим, как передаётся каждый бит. Под каждый бит отводится определённое время — 1,25 микросекунды.

Если мы передаём ноль, то сначала мы устанавливаем высокий уровень сигнала, держим его в таком состоянии 0,35 микросекунды (допускается отклонение 150 наносекунд или 0,15 микросекунды). По прошествии данного времени мы устанавливаем на ножке низкий уровень и держим его до передачи следующего бита 0,9 микросекунды (допускается такое же отклонение — 150 наносекунд)


Единица передаётся наоборот. Мы также устанавливаем высокий уровень, ждём 0,9 микросекунды (отклонение то же), затем опускаем уровень, ждём 0,35 микросекунды (отклонение такое же — 150 наносекунд)


Таким образом, если мы передали этим способом 24 бита и на этом не остановились и начали передавать ещё 24 бита, то первые 24 бита переместятся к следующему светодиоду, а новые 24 бита будут загружаться в буфер первого. И так будет до тех пор, пока мы после передачи последних 24 бит не подождём определённое время. А определённое время это — 50 микросекунд и более. Вот тогда уже принятые 24 бита первый светодиод никому не передаст и все светодиоды засветятся тем цветом, который они приняли последний. И если мы начнём что-то передавать дальше — то это будет уже порция для следующей фазы свечения светодиодов.

И, так как время передачи одного бита у нас постоянное, то несложно посчитать скорость передачи данных. Она получится равной 800 килобит в секунду. Также несложно подсчитать, что для передачи 24 бит, необходимых и достаточных для информации, требуемой для одного светодиода, потребуется 30 микросекунд. Соответственно, для всех 144 светодиодов потребуется 4,32 милисекунд. Вполне неплохая скорость.

Теперь немного об электрических параметрах данных светодиодов.

Питается светодиод от 3,5 до 5,3 вольт.

Потребление тока при полном свечении светодиода белым светом (все 24 бита в единицах) мы также можем посчитать. При данном цвете заявлена потребляющая мощность — 0,3 ватта. Поэтому, если мы будем питать ленту напряжением 5 вольт, то это будет 60 милиампер. А если мы зажжём все наши 144 светодиода полностью белым цветом на всю яркость (единицы во всех битах во всех светодиодах), то мы получим потребление тока всей нашей лентой целых 8,64 ампера. Чтобы нам не получить такой огромный ток, то мы не будем наши светодиоды никогда зажигать таким полным светом, а будем зажигать их определёнными цветами, и то не более половины их свечения, поэтому мы вполне обойдёмся 3-амперным DC-DC преобразователем который мы подключим к силовым проводам ленты


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

То есть, мы будем стараться, чтобы при нашем тестировании светодиоды горели максимум в 1/6 часть максимального их свечения. Например, чтобы светодиод засветился зелёным цветом, то мы интенсивность RGB зададим как 0,128,0. А если нам надо включить оранжевый цвет, а это одновременно и красный и жёлтый, то мы уже включим 64,0,64. То есть суммарное число у нас не будет превышать 128, а это и будет 1/6 часть свечения, поэтому суммарный ток потребления ленты у нас не превысит 1,5 ампера. Поэтому можно ничего не бояться. И даже при таком свечении при такой плотности светодиодов на ленте она будет светиться очень ярко.

Микроконтроллер мы будем использовать народный — STM32F103C8T6, расположенный на очень дешёвой отладочной плате. Программатор мы будем использовать тоже дешёвый, поэтому материально мы насчёт контроллера ленты почти не пострадаем. Управляться будет лента от одной ножки при помощи PWM, включенном в настройках определённого таймера. Также будет использован DMA для ускорения процесса. Заодно и поучимся пользоваться DMA в PWM. Вот так выглядит наша плата, подключенная к ленте (нажмите на картинку для увеличения изображения)


Отладочная плата будет питаться от программатора ST-Link, поэтому к ленточке мы от неё ведём только общий и сигнальный провод. От какой именно ножки мы его ведём, мы увидим, когда будем настраивать таймер.

В следующей части нашего урока мы создадим проект, изучим работу таймера в режиме PWM с использованием DMA и попробуем зажечь определённые светодиоды различными цветами.

Отладочную плату STM32F103C8T6 можно приобрести здесь STM32F103C8T6

Программатор недорогой можно купить здесь ST-Link V2

Ленты светодиодные WS2812B разные можно приобрести здесь WS2812B

Читайте также: