Адресная светодиодная лента что это такое
Адресная светодиодная лента и её подключение к Arduino
В отличие от обычной светодиодной RGB-ленты, в которой все светодиоды одинаково реагируют на сигнал с RGB-контроллера, в адресной LED-ленте каждый светодиод получает индивидуальную команду управления. В результате пользователь может максимально точно подбирать оттенок для каждого светодиода, создавать световые эффекты и собирать матрицы с 16 млн цветов. В чём уникальность адресной светодиодной ленты и как научиться ею управлять? Об этом и пойдет речь в данной статье.
Технические характеристики
Адресная светодиодная лента состоит из RGB-светодиодов в SMD корпусе 5050 и микрочипов ШИМ-драйверов. В настоящее время наиболее популярными являются адресные LED-ленты с использованием чипов WS2811 и WS2812B. Модификация WS2811 представляет собой интегральную микросхему (ИМС) в корпусе DIP-8 (9,2х6,4 мм) или SOP-8 (5,1х4,0 мм). Данный 3-канальный драйвер имеет следующую конфигурацию выводов:
В адресной ленте с использованием чипа WS2811 и питанием 5 вольт микросхема драйвера располагается в непосредственной близости перед каждым RGB-светодиодом SMD 5050, рядом с которым также установлены токоограничивающие резисторы и конденсатор, защищающий от помех. Но на сегодняшний момент такие модели устарели и встречаются крайне редко. Сегодня в продаже имеются адресные светодиодные ленты на чипах WS2811 только с питанием от +12 В. В этом случае чип WS2811 управляет не одним светодиодом, а группой из 3 штук. Не успела ИМС WS2811 обрести популярность, как её место заняла более совершенная WS2812B. Данный тип ШИМ-драйвера намного компактнее и размещается непосредственно в корпусе светодиода SMD 5050. Если присмотреться, то под прозрачным люминофором можно увидеть миниатюрный чёрный прямоугольник с отходящими позолоченными проводниками.
Подобная унификация позволила значительно упростить сборку адресных светодиодных лент и модулей, а сам WS2812B имеет лишь 4 вывода:
При выборе адресной светодиодной ленты важным критерием является степень защиты от влаги и пыли. Для использования в уличных условиях подойдут только модели с IP65 и IP67.
Сфера применения
Относительно высокая стоимость светодиодов и лент, собранных на чипах WS2811 и WS2812B, ограничивает их область применения в сравнении с обычными LED-лентами. Главным образом их используют для решения таких задач, с которыми обычной светодиодной ленте не справиться:
Интерес к адресной светодиодной ленте среди радиолюбителей вызван тем, что на её основе можно собрать подсветку, которая будет изменять цвет и яркость по заданному алгоритму.
Как это работает?
Адресная лента WS2812B поделена на сегменты, в каждом из которых расположен светодиод и конденсатор (для повышения помехоустойчивости). Относительно напряжения питания все они между собой подключены параллельно, то есть +5 В будет присутствовать на каждом сегменте. А вот передача данных осуществляется последовательно: от предыдущего сегмента к последующему. Поэтому при выходе из строя одного из светодиодов цепи все следующие сегменты перестанут светиться.
Управление готовыми устройствами и модулями на базе WS2812B производится с помощью специализированного контроллера, внутри которого записана программа. На радиолюбительском уровне управлять работой адресной светодиодной ленты удобней всего через Arduino, используя для этого небольшую программу – скетч.
Схема подключения к Arduino
У каждой адресной ленты есть начало и конец, которые нельзя менять местами во время сборки схемы. Чтобы не запутаться, производители используют условные обозначения, например, стрелки, указывающие направление сигнала. Подключение адресной светодиодной ленты WS2812B к Arduino производится по трём проводам, как показано на рисунке. Контакты питания +5V и GND соединяют с соответствующими выводами на плате Arduino. Если подсоединяемый отрезок насчитывает более 13-ти светодиодов, то необходимо использовать выносной блок питания. При этом общий провод (GND) Arduino и «минус» блока питания должны быть соединены между собой. Контакт DIN (digital input) предназначен для приёма данных от контроллера и электрически соединяется с любым из его цифровых портов. С другой стороны адресной ленты (и каждого сегмента тоже) размещено 3 контакта: +5V, DO (digital output) и GND, к которым можно подключить ещё несколько отрезков разной длины.
Так как каждый элемент WS2812B фактически состоит из 3 светодиодов (синего, красного, зелёного), то для управления его свечением потребуется 3 байта (по одному на каждый цвет). В свою очередь, каждый байт может принимать значение от 0 до 255, в результате чего можно задать более 16,5 млн оттенков. Размер скетча будет равен количеству светодиодных сегментов, умноженному на 3. Передача данных происходит следующим образом:
Для работы с адресными лентами и модулями проще всего использовать библиотеки FastLED и Adafruit NeoPixel. Внутри каждой библиотеки есть готовые скетчи, на основе которых несложно научиться самостоятельно создавать новые световые эффекты. Чтобы скетч заработал с первого раза, необходимо в заголовке правильно указать количество светодиодов в ленте (NUM_LEDS) и номер порта для передачи данных (PIN).
Где можно приобрести?
Адресную светодиодную лентe без труда можно найти в любом специализированном магазине. Из проверенного варианта, отличающегося не высокими ценниками и хорошим качеством продукта, можно посоветовать интернет-магазин www.giant4.ru. Также адресную LED-ленты можно приобрести и на всем известной площадки AliExpress.com.
Чтобы избежать проблем с некачественной продукцией, при покупке товара на AliExpress стоит внимательно изучать товар и отзывы покупателей.
Как работает адресная светодиодная лента?
Наверное этот вопрос «как работает» очень многим покажется глупым. Ответ почти очевиден: адресная светодиодная лента состоит из множества последовательно соединенных «умных светодиодов». Это можно увидеть просто рассматривая устройство ленты. Видны отдельные микросхемы, припаянные к гибкому шлейфу, видны соединения: микросхемы соединены последовательно всего тремя проводами, при этом два из них это питание и земля. Только один провод передает данные о цвете пикселей. Как же это? Что такое «умный светодиод»?
Дальше я расскажу о протоколе передачи данных, используемом в светодиодной ленте на базе WS2812B, и, более того, я почти создам свою «микросхему светодиодной ленты» в микросхеме ПЛИС.
Итак, в ленте используется последовательная передача через один единственный сигнал данных.
Бит ноль передается, как короткий положительный импульс и пауза, которая примерно в два раза шире импульса. Бит единица передается как широкий положительный импульс и короткая пауза:
При отсутствии передачи более 50 микросекунд лента переходит в исходное состояние, готова принимать пиксели начиная с первого.
Каждые 24 бита в последовательности — это 3 байта для трех цветов RGB. Причем на самом деле последовательность будет G-R-B. Старший бит G7 идет первым.
Последовательность из первых 24х бит представляет из себя один пиксель, который получит самый первый светодиод в ленте. Пока первый светодиод не насытится он не передает данные дальше к следующему светодиоду. После того, как первый светодиод получит свою порцию из 24х бит RGB он открывает передачу следующему. Примитивно можно последовательность светодиодов представить, как каскад из кувшинов, последовательно наполняемых водой:
Заполнится первый, потом второй, потом третий и так все по очереди.
Таким образом, я считаю, что с протоколом передачи разобрались.
Можно ли попробовать самому спроектировать такой «умный светодиод»? Практического смысла в этом конечно мало, но для самообразования и расширения кругозора — задача интересная. Попробуем описать логику чипа на языке проектирования аппраратуры Verilog HDL. Конечно, это будет не настоящий дизайн микросхемы, будут ограничения. Одно из самых важных ограничений — мне для моей микросхемы будет нужен внешний тактовый генератор. В настоящем умном светодиоде такой генератор тоже есть, но он встроен уже в чип.
Модуль на Verilog начнем вот так:
Здесь думаю все понятно: тактовая частота clk, входной и выходной сигналы «умного светодиода» in и out, ну и, конечно, выходные сигналы r, g, b через которые я буду управлять реальными внешними светодиодами красным, зеленым и синим.
Входной сигнал я буду захватывать в двухбитный сдвиговый регистр и по текущему состоянию в этих захваченных битах смогу определить начало положительного фронта сигнала in:
Кроме этого, важно определить состояние сброса ленты, когда управляющий контроллер выдерживает паузу перед началом новой передачи:
Дальше, от положительного фронта in_pos_edge нужно выдержать некоторую паузу, чтобы получить момент фиксации нового бита:
Количество уже принятых бит в чипе считаем так:
Здесь вводится еще важный сигнал pass, который как раз и определяет перенаправление входного потока на выход. После принятия 24х бит пикселя сигнал pass устанавливается в единицу:
На выход out мультиплексируются входные данные, когда сигнал pass_final в единице.
Ну и, конечно, нужен сдвиговый регистр, где накапливаются принятые 24 бита пикселя:
По приему всех 24х бит они переписываются в итоговый так же 24х битный регистр.
Теперь остается дело за малым. Нужно реализовать ШИМ (Широтно Импульсную Модуляцию) сигнала для передачи яркости реальным внешним светодиодам согласно принятым байтам RGB:
Остается маленькая деталь — как это все испытать?
Я взял несколько простых плат с ПЛИС MAX II (это платы серии Марсоход) и прошил их все проектом с вот этим Verilog кодом. На платах уже было 8 светодиодов, но они были все желтые. На каждой из плат я заменил 3 светодиода на R, G, B. Платы соединил последовательно и более того подключил их к настоящей светодиодной ленте. Таким образом, я удлинил настоящую ленту своими самодельными светодиодами.
Получилось вот такое соединение:
В реальности это выглядит вот так:
Теперь, подавая на ленту некоторое изображение я вижу, что мои «умные светодиоды» ведут себе точно так же, как и настоящие из ленты:
Получается, что реализованная мною в ПЛИС логика вполне работоспособна! Я смог в первом приближении сделать нечто похожее на реальный чип «умного светодиода».
Вообще, мне нравятся светодиодные ленты. На их основе каждый может изобрести что-то свое: интеллектуальное освещение, экраны, амбилайт эффекты. Однажды я даже реализовал цветомузыку на светодионой ленте под управлением FPGA. Но это уже другая история.
Arduino и адресная светодиодная лента
Описание
Адресная светодиодная лента, в отличие от обычной RGB, позволяет управлять цветом и яркостью каждого своего светодиода. Благодаря этому на ней можно отображать различные интересные эффекты, как статические, так и динамические. Сама по себе лента ничего не может, поэтому генерацией эффектов занимается микроконтроллер (или плата на его основе, например Arduino). Более подробно про виды адресных лент можно прочитать в моей статье.
В наборе GyverKIT есть 1 метр адресной светодиодной ленты WS2812b. При желании ленту можно докупить в том же магазине, где продаётся набор – Giant4.
Подключение
В рассмотренных выше схемах Arduino питается от USB. Для работы от адаптера можно подключить питание с него на пин 5V платы:
При наличии на ленте штекера можно подключать управление и питание следующим образом:
Примечание:
При работе с Wemos есть особенность: у него логический уровень 3.3V, чего не всегда хватает для передачи сигнала на ленту. При возникновении “артефактов” в эффектах можно подключить питание по следующей схеме: питать Wemos через диод (есть в наборе GyverKIT):
Библиотеки
Самой функциональной и известной библиотекой является FastLED, можно установить через диспетчер библиотек по названию FastLED. В библиотеке ОЧЕНЬ много возможностей, см. официальную вики-документацию, а также полный список модулей, классов и функций.
Как работать с FastLED
Коротко рассмотрим как работать с библиотекой FastLED и самые основные инструменты.
Логика работы с адресной лентой сводится к следующему: лента представляется в виде одномерного массива, каждый элемент – светодиод, точнее его цвет. Цвет светодиода кодируется тремя байтами, то есть 256 значений на каждый канал: красный, зелёный, синий. В программе можно производить различные манипуляции с этим массивом, то есть задавать цвета светодиодам при помощи различных инструментов библиотеки. Как только построение “кадра” закончено – массив можно отправить на ленту и светодиоды включатся соответственно заданным цветам.
Для начала обозначим константами длину ленты и пин, к которому она подключена, просто чтобы проще было редактировать программу в дальнейшем:
В блоке setup нам нужно передать в библиотеку информацию о подключенной ленте, а также подключить созданный выше массив. Чтобы программа знала, откуда брать информацию о цветах. По порядку указывается тип ленты, пин, порядок цветов. В круглых скобках – имя нашего массива, а также его размер – длину ленты:
Отлично! Всё настроено и готово к работе.
Общие функции
Помимо задания цветов в массиве, существуют следующие управляющие функции:
Тип данных CRGB
Библиотека организована так, что переменной типа CRGB можно задать значение несколькими способами. Рассмотрим задание цвета первому светодиоду в нашей ленте, то есть элемент массива под номером ноль: leds[0]
Подробнее про цветовые модели RGB и HSV можно почитать вот здесь.
Примеры
Итак, с базовыми понятиями разобрались, переходим к практике. Для начала зальём всю ленту статичной радугой. Для этого покрасим светодиоды в цикле, задав цвет от 0 до 255 от первого до последнего светодиода в ленте. Конструкция i * 255 / LED_NUM позволяет получить значения от 0 до 255 при изменении i от 0 до LED_NUM:
Можно сделать подвижную радугу, это будет уже полноценная анимация. Для этого ленту нужно постоянно обновлять новыми цветами, например 30 раз в секунду. Чтобы плавно менять цвет – добавим к нему счётчик, который будет меняться от 0 до 255 и так по кругу.
Можно сделать один бегающий светодиод: каждый раз очищать ленту и красить светодиод под номером, который задаётся счётчиком. Изменение счётчика закольцевать от 0 до количества светодиодов:
И таких эффектов можно придумать очень много! Займёмся этим уже в блоке проектов
Адресная светодиодная лента, в отличие от обычной, содержит так называемые адресные светодиоды. Это значит, что каждый светодиод хотя и получает питание параллельно от общего источника, включается каждый светодиод по индивидуальной команде, и значит, на каждом светодиоде можно получить собственный уникальный оттенок, один из 255 3 = 16581375 возможных.
В отличие от светодиодной RGB-ленты, в которой все светодиоды одинаково реагируют на сигнал с RGB-контроллера, в адресной LED-ленте каждый светодиод получает индивидуальную команду управления
Каждый светодиод в адресной ленте имеет свой уникальный адрес, по которому драйвер обращается к нему при помощи трехбитной команды. Команды отправляются в линию последовательно, для этого служит третий на ленте провод «DATA INPUT».
Возле каждого светодиода на адресной ленте установлен свой микрочип. Сегодня очень распространены адресные ленты с ШИМ-чипами WS2811.
Корпуса микрочипов DIP-8 либо SOP-8. Каждый чип имеет три выхода — каждый на свой цвет, вход передачи данных, выход передачи данных, вывод питания, вход установки режима и общий вывод.
Есть ленты с питанием чипов 5 вольт, но наиболее часто встречаются ленты с питанием 12 вольт, где один такой чип управляет сразу тремя светодиодами. Чипы на ленте соединены друг с другом последовательно через входы и выходы передачи данных.
WS2812B – более компактная модификация чипа, предназначенная для монтажа внутри корпуса светодиода SMD 5050. Так вся сборка имеет всего 4 выхода: питание, общий вывод, вход передачи данных и выход передачи данных.
Светодиоды WS2812B имеют встроенную интегральную схему (интегральную схему, микросхему) в направлении светодиода
Адресные ленты стоят дороже обычных лент, и применяются обычно там, где простые ленты по какой-то причине не применимы: полноцветные модульные сборки, декоративная подсветка с управлением «soft light», наружная реклама и т. д.
Особенность таких сборок в том, что они способны изменять и цвет и яркость отдельных своих сегментов по более сложному алгоритму, нежели простые LED-ленты, даже если эти LED-ленты оснащены умными драйверами.
Для взаимодействия с адресными лентами подходят библиотеки ардуино FastLED и Adafruit NeoPixel. Внутри библиотек содержатся полноценные скетчи, приняв которые за основу легко освоить самостоятельное создание новых световых эффектов. В заголовке скетча необходимо правильно указать количество светодиодов ленты и номер порта передачи данных.
Каждый RGB-светодиод на самом деле имеет в себе три светодиода (красный, зеленый и синий), поэтому для управления одним сегментом (один сегмент — это RGB-светодиод с чипом) требуется 3 байта информации, один байт — один цвет.
Каждый байт может принимать одно из 255 значений, поэтому в принципе каждый RGB-светодиод способен дать свет одним из 255 3 = 16581375 оттенков. Количество байт в одной команде равно таким образом 3 умножить на количество последовательных рабочих сегментов в ленте.
Посылаемая строка попадает на первый чип, который принимает первые три байта информации, пропуская остальные дальше через выход digital output (DO) – в следующий чип. Выдерживается пауза 50 мкс, означающая что следующий в очереди чип должен принять свои три байта информации. Если пауза будет длиться более 50 мкс, это значит что цикл закончен, и предстоит повторение рабочего цикла.
Светомузыка на адресной светодиодной ленте WS2812B и Arduino:
Адресная светодиодная лента
Поскольку растущий ассортимент адресных светодиодных лент становится все более популярным в индустрии развлечений и архитектурного освещения, мы подумали, что сейчас самое время задать некоторые из ваших наиболее распространенных вопросов нашей команде по исследованиям и разработкам и найти ответы на некоторые вопросы экспертов, чтобы помочь вам утолить жажду информации (особенно если вы только начинаете свои приключения по управлению освещением, в таком случае, добро пожаловать на борт!).
Содержание
Что такое адресная светодиодная лента?
Адресная светодиодная лента – это гибкая печатная плата, которая заполнена разноцветными адресуемыми поверхностными (SMD) светодиодами. Гибкая печатная плата обычно имеет клейкую подложку, что облегчает быструю и простую установку.
В отличие от стандартной ленты RGB, каждый светодиод имеет свою собственную микросхему, которая позволяет управлять им для индивидуальной реакции (например, изменение цвета, выключение и т. Д.). Пиксельная лента все еще может делать все, что может делать стандартная лента RGB… только больше.
Типы адресных светодиодных лент.
Адресная светодиодная лента WS2801.
Серия чипов WS первой будет WS2801. Это интересный в своем роде драйвер-микросхема для RBGW-светодиодов с поддержкой последовательного интерфейса SPI.
С применением отдельного контроллера нет необходимости занимать несколько выходов микроконтроллера, можно ограничиться лишь одним сигнальным выводом. Микроконтроллер подает сигнал на вход «Data» управляющего контроллера светодиода WS2801.
В таком сигнале содержится 24-битная информация о яркости цвета (3 канала по 8 бит на каждый цвет), а также информация для внутреннего сдвигового регистра. Именно сдвиговый регистр позволяет определять, к какому светодиоду информация применяется. Таким образом можно соединять несколько светодиодов последовательно, при этом использовать все так же один вывод микроконтроллера.
У WS2801 было 4 контакта: +5v, GND (минус), DI (Digital input) и CO (тактовая линия). Таких лент сегодня практически уже не найти, на их место пришли WS2811 и WS2812B, более компактные модели с последовательным однолинейным интерфейсом. Теперь за данные отвечает только один контакт, обычно обозначаемый как DI (digital input) и с другой стороны DO (digital output).
Адресная светодиодная лента WS2811 и WS2812.
Основные отличия адресной светодиодной ленты ws2811 от ws2812b:
Практические способы включения адресной светодиодной ленты, правила подключения, частые ошибки.
минимальный ток Драйвера = 20мА*количество_пикселей.
максимальный ток Драйвера = 60мА*количество_пикселей
Варианты управления адресной светодиодной лентой.
Есть несколько способов управлять адресной светодиодной лентой:
На эту тему вы можете почитать нашу специальную статью. В этой статье мы максимально подробно описали принципы управления по протоколу SPI.
На эту тему вы можете почитать нашу специальную статью. В этой статье мы максимально подробно описали принципы управления с помощью UART.
Достоинство первых двух способов – это возможность освободить драйвер от части работы по передаче бит информации о цвете пикселю. Недостатки этих способов – во-первых, ограниченное количество линий управления пикселями, во-вторых, требуется дополнительное разбитие байтов информации о цвете на пачки битов (что частично съедает свободное время контроллера в моменты аппаратной передаче бит).
Адресная светодиодная лента DMX 512.
Особенность адресных светодиодных лент, использующих управление DMX 512 – параллельная подача сигнала управления на все модули, цифровой сигнал с выхода контроллера подается одновременно на все драйверы.
DMX ленты, производятся с записанными при производстве DMX адресами. По умолчанию, адресация пикселей каждой катушки ленты начинается с 1-го драйвера и 1-го адреса и нумеруется по порядку до последнего пикселя. Если в последствии в одну линию соединяется несколько катушек или отрезков, требуется произвести запись DMX адресов заново.
При записи адресов используется DMX кабель, обозначенный ADR (ADI, ADIN). После выполнения записи, при воспроизведении световых программ, вход ADI драйверов не используется. Если Ваш контроллер не имеет встроенного редактора адресов и не имеет выхода для подключения провода ADI, этот провод должен быть соединен с общим проводом GND, что предотвратит воздействие на него внешних помех и наводок.
Стоит сказать, что адресных светодиодных лент DMX 512 – Драйвер WS2821, гораздо больше преимуществ перед SPI.
Но есть и недостатки.
Как рассчитать количество адресов для ленты DMX 512
• 1 пиксель = 3 канала
DMX (RGBW) • 1 пиксель = 4 канала DMX (RGBW)
Имея разную плотность светодиодов на ленте и разную длину, вы можете умножить все это вместе и получить различные результаты.
Например:
• (8PL30) 30 светодиодов RGB / м ленты x 5 метровой катушки = 150 пикселей (150 пикселей х 3) = 450 каналов
• (8PL60) 60 светодиодов RGB / м ленты x 5 метровой бобины = 300 пикселей (300 пикселей х 3) = 900 каналов
• (8PL144) 144 светодиода RGB / м ленты x 2 метра = 288 пикселей (288 пикселей x 3) = 864 канала
• (8PX30) 30 светодиодов RGBW / м ленты 5 м = 150 пикселей (150 пикселей x 4) ) = 600 каналов
• (8PX60) 60 светодиодов RGBW / м лента x 4-метровая катушка = 240 пикселей (240 пикселей x 4) = 960 каналов
Удобно запомнить:
• 170 пикселей RGB = 510 каналов DMX = 1 вселенная DMX
• 128 пикселей RGBW = 512 каналов DMX = 1 вселенная DMX
Почему светодиоды на конце ленты теплого белого света / розового цвета на конце при движении белого цвета?
Это происходит из-за падения напряжения на светодиодной ленте при попытке питания большей длины ленты. В результате падения напряжения пиксели вдоль ленты будут постепенно меняться в цвете, если их приводить в движение белым цветом. Лучше всего определить максимально возможную длину пробега до того, как падение напряжения начнет влиять на их цвет, и вводить мощность через каждые х метров.
Чем больше падение напряжения вдоль ряда белых светодиодов, тем более розового оттенка будут появляться самые дальние от источника питания. Вся длина также будет незначительно уменьшаться по мере снижения напряжения. Большинство лент и точек отображают эти явления очень тонко, в то время как некоторые другие могут быть немного более выраженными. Аналогично, степень, в которой человеческий глаз воспринимает это, будет естественно отличаться от человека к человеку, но большинство людей найдут изменение цвета практически неразличимым.
(ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ: приведенный выше чертеж не предназначен для точной научной диаграммы. Это простое визуальное представление, чтобы дать вам приблизительное представление о том типе эффекта, который вы иногда можете наблюдать, когда происходит различный процент падения напряжения.)
Какой тип поверхности подойдет для установки адресной светодиодной ленты?
Адресная светодиодная лента должна быть установлена на чистой и сухой поверхности. Пожалуйста, очистите поверхность спиртом, используя чистую ткань перед установкой.Поверхность должна быть теплопроводящей и обеспечивать достаточный отвод тепла от ленты. Поверхность не должна быть текстурированной или изготовлена из материала с низкой поверхностной энергией.