Адресуемая светодиодная RGB лента и LED драйвер WS2811

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

А что, если хочется большего? что если нужно управлять каждым диодом в отдельности? Можно поставить МК, но не каждый микроконтроллер в одиночку потянет множество трехцветных диодов, можно попробовать поставить к каждому. Для таких целей есть специальные светодиодные драйверы, некоторые из которых снабжены возможностью управляться с одной общей, или последовательно проходящей через драйверы, шиной. Где-то пошли дальше, и такой драйвер встроили прямо в RGB светодиод, которому нужен минимум внешней обвязки. Далее последовательно соединённые такие диоды разместили на светодиодной ленте – и в итоге мы получили адресуемую светодиодную ленту.

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

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

Как не трудно догадаться, в статье речь пойдёт о светодиодном RGB драйвере – WS2811, которые соединяются последовательно и управляются по однопроводной линии данных. И адресуемой светодиодной ленте на совмещенных RGB диодов с такими драйверами.

RGB светодиоды со встроенными WS2811

RGB светодиоды со встроенными WS2811

Как видно на фотографии – такая светодиодная лента состоит из множества последовательно соединённых RGB светодиодов со встроенными драйверами WS2811 (маленькая чёрная точка по середине). Из обвязки такая микросхема, при питании от 5В, требует всего один конденсатор в 0.1мкФ по входу питания, ещё рекомендуется 33Омный резистор на линии данных, который, видимо, производитель упустил.

Схема подключения светодиодов к ws2811 (из datasheet)

Схема подключения светодиодов к ws2811 (из datasheet)

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

Формат сообщения

Каждый пакет состоит из 24 бит – по 8 бит на каждый канал, в итоге имеем по 255 градаций каждого цвета или 16 миллионов цветов. Каждый бит содержит положительный и отрицательный полупериод, кодирование ноля или единицы осуществляется длительностью полупериодов.

Кодирование 1,0 и RES

Для работы с адресуемой светодиодной лентой был собран контроллер на базе микроконтроллера PIC16F688 и преобразователя USB интерфейса cp2102 на специально ранее заготовленной универсальной заготовке платы (заказанной на itead studio), поэтому печатку приводить не буду.

Схема

Схема

Такая светодиодная лента очень прожорлива, её метр с 60 светодиодами на максимуме кушает более 2-х ампер, так что понадобиться хороший и мощный источник питания. Можно ей дать и меньший ток, но тогда она будет гореть с преобладанием красных оттенков.

Управляющий контроллер

Управляющий контроллер

Прошивка писалась на скорую руку. Был реализован следующий алгоритм работы: сначала в микроконтроллер с компьютера скидывается вся посылка и только после этого она её отображает. Из-за малого количества RAM памяти слабого микроконтроллера получилось реализовать буфер только на 60 адресуемых светодиодов с драйверами WS2811. Из-за средней скорости UART в 38400 скорость обновления всей ленты составляет примерно 50 мс, т.е. максимальная допустимая частота обновления вышла в 20 кадров/секунду. Чего для демонстрации возможности ленты мне хватило. Генерацией всех эффектов занимается специальная программа на ПК, которая то же писалась на скорую руку.

Окно программы

Управляющий контроллер

Формат отправляемых команд контроллеру:
Отправка производиться по UART на скорости 38400 8N1.

  • Первый байт – пробел (32 ASCII int код)
  • Второй байт – длина передаваемой посылки (количество светодиодов), от 0 до 60 (передаётся байтом)
  • Далее по 3 байта, в порядке GRB (зеленый, красный, синий), передаются величины ШИМ для каждого светодиода начиная с противоположного конца ленты.

Контроллер отвечает на начала обмена по UART ASCII символом !, по успешному завершению отправки пакета ASCII символом b .

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

Видео работы ленты

Скачать файлы проекта

Скачать программу управления

Дополнение от 1.09.2015

Для удобства проверки конструкции добавляю в статью прошивку с автономным плавным последовательным псевдо-случайным переливанием (до 60 светодиодов). Если одного данного эффекта достаточно, то можно упростить схему убрав из неё cp2102.

Скачать автономную прошивку (последовательное переливание)

Скачать исходник автономной прошивки (последовательное переливание)

31 комментарий на « Адресуемая светодиодная RGB лента и LED драйвер WS2811»

  1. сергей пишет 25.04.2014 в 22:44 #

    возможно ли появление статей о написании программ для пк? вроде той что представлена в данной статье

  2. Alex_EXE пишет 26.04.2014 в 00:02 #

    Уже спрашивали — нет. При желании, базовых знаниях программирования и хорошей книжки за какое-то время можно обучиться писать подобные простые прикладные программы самому. С микроконтроллерами же всё намного разнообразнее, точнее со все возможной ихней периферией.

  3. Сергей пишет 26.04.2014 в 00:50 #

    какую книгу посоветуете

  4. Alex_EXE пишет 27.04.2014 в 22:59 #

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

  5. Евгений пишет 02.08.2014 в 05:02 #

    Можете предоставить исходный код программы управления?

  6. Alex_EXE пишет 09.08.2014 в 04:56 #

  7. Саша пишет 11.09.2014 в 15:43 #

    Выложи пожалуйста печатку..

  8. Артур пишет 03.12.2014 в 01:18 #

    Подскажите пожалуйста кто в Москве оптом продает такие ленты и драйвера?? Заранее спасибо.

  9. Alex_EXE пишет 09.12.2014 в 05:27 #

    На счёт опта не подскажу, а вот на Митинском радиорынке их много где видел, по-моему они и оптом доставить смогут.

  10. bb пишет 15.01.2015 в 02:44 #

    Можно ли их нескольких паралельных лент сделать подобие матрицы?

  11. Alex_EXE пишет 16.01.2015 в 11:43 #

    Можно и некоторые так даже делают.

  12. Владимир пишет 09.08.2015 в 22:12 #

    PIC16F688 какой прогой прошивал?

  13. Alex_EXE пишет 18.08.2015 в 07:34 #

    Программатор PicKit2 и программа из комплекта поставки с одноимённым названием PICkit2 Programmer v2.5

  14. Владимир пишет 19.08.2015 в 22:30 #

    Преобразователь на cp2102 принципиально? или можна другой?

  15. Alex_EXE пишет 20.08.2015 в 02:49 #

    Любой UART. Хоть ftd232, хоть pl2303, max232, bluetooth, wifi…

  16. Владимир пишет 20.08.2015 в 21:15 #

    Еще вопрос, лента как я понял из-за того что много (кушает) запитана от отдельного источника питания а PIC и UART от USB +5v?

  17. Alex_EXE пишет 21.08.2015 в 13:07 #

    На видео и в идеале да. Но при желание маленький отрезок ленты можно запитать и от того же USB.
    Сейчас этот отрезок ленты у меня включается от USB зарядки без ПК.

  18. Владимир пишет 25.08.2015 в 19:51 #

    Собрал схему, по ошибке поставил кварц на 24 и схема не заработала, неужели это кварц виновник торжества?

  19. Alex_EXE пишет 25.08.2015 в 21:20 #

    Всё может быть.
    Во-первых: МК рассчитан на тактовую частоту до 20МГц.
    Во-вторых: интерфейс у данной ленты однопроводный, значит кодирование данных жёстко привязано к таймингам.

  20. Владимир пишет 30.08.2015 в 23:42 #

    Мужики, у кого заработала лента?

  21. Alex_EXE пишет 02.09.2015 в 00:35 #

    Для удобства проверки ленты без ПК добавил тестовую прошивку, для тестовой работы cp2102 можно не устанавливать.

  22. Владимир пишет 02.09.2015 в 10:18 #

    Добрый день, данное устройство запустилось с пол оборота, но запустилось не сразу а после перебора платы вдоль и в поперек и это не самое главное, причина была не в прошивке, не в ошибке в схеме а причина в RGB ленте. Дело в том что с одной стороны в ленте три контакта (+5,END, DIN) с другой стороны (+5,END,DO), ленту мне дали уже с припаяными проводами к контактам (+5,END,DO), как только сигнал подал на DIN так лента ожила. Ребят, при повторе данной конструкции внимательно смотрите на стороны ленты дабы не допустить мои ошибки. Автору безусловно респект и уважуха, вопрос уже задавался но я спрошу еще раз а вдруг повезет: Alex_EXE а нет ли случайно у Вас в планах или времени расширить диапазон эффектов в программе управления???

  23. Alex_EXE пишет 02.09.2015 в 23:04 #

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

  24. Владимир пишет 03.09.2015 в 12:37 #

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

  25. даниил пишет 22.09.2015 в 19:14 #

    Доброго времени суток.Искал софт для установки последовательности включения лент и их управления под музыкальное сопровождение забрел на ваш сайт …проэкты пишете интересные- сам люблю скоротать вечерок с паяльником на пару…но не могу найти прогу ,чтоб и простая и то что надо было…в данном быстром наброске ,-как вы выражаетесь, как раз есть та основа ,но жаль что тока кусок…т.к там сначала надо будет вывести управление на dmx512 а конечки с дешиков уже по вашему алгоритму …вопрос весьма прост)) — планировали ли вы развивать данную ветку за любой ответ заранее благодарю))
    #P.S..сам тока начинаю осваивать С++ и софт пока для меня темный лес ,а например FreeStyler512 напичкан финтифлюхами по самое..до седой бороды осваивать придется..

  26. Alex_EXE пишет 23.09.2015 в 17:09 #

    Данный проект был текстовым, на него основе я познакомился с этой лентой. Но данные наработки мне пока-что не пригодились. Так что данный проект ближайщее время развивать не буду.
    Еще, если интересно, могу посоветовать посмотреть проект на основе самодельного rgb контроллера. Отмечу, что тот проект имеет более широкий функционал, в него заложена возможность работы не с одним rgb контроллером, а с несколькими на rs485 шине. Но тот проект тоже сейчас заморожен.

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

  27. даниил пишет 23.09.2015 в 23:34 #

    уважуха друг )))как говорится рыбак рыбака видит издалека))действительно ковыряясь в технологиях программирования и специфики конкретных устройств под конкретную задачу будешь называть вещи своими именами ?а не коммерческими как например DMX512 от дяди максимки…суть и направление понял если дело наберет оборот отпишусь в личку…удачи в делах..

  28. Валерий пишет 29.09.2015 в 02:47 #

    Доброго времени суток подскажите профану такому как я будет ли работать ргб лента 5050 5 м в моём мерсе борт.сеть 24в без драйвера?и можно ли установить эту ленту напрямую к аккумулятору или же надо в цепь врезать предохранитель?Спасибо!

  29. Михаил пишет 29.01.2016 в 03:32 #

    Alex !
    Выложите пожалуйста исходниктестовой прошивки. Спасибо.

  30. Alex_EXE пишет 09.02.2016 в 16:09 #

    Добавил. эффект писал на скорую руку.

  31. Alex_EXE пишет 30.09.2016 в 17:58 #

Комментарии RSS

Оставьте отзыв