Адресуемые светодиоды – Ограничения в использовании умных светодиодов WS2812, WS2801 и подобных в современных проектах декоративной светотехники

RGB-светодиоды: адресуемая светодиодная лента — Arduino+

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

1. Вводная информация о светодиодах

Светодиоды – электронный компонент, способный излучать свет. Сегодня они массово применяются в различной электронной технике: в фонариках, компьютерах, бытовой технике, машинах, телефонах и т.д. Многие проекты с микроконтроллерами так или иначе используют светодиоды.

Основных назначений у них два:

• демонстрация работы оборудования или оповещение о каком-либо событии;
• применение в декоративных целях (подсветка и визуализация).

Внутри светодиод состоит из красного (red), зеленого (green) и синего (blue) кристаллов, собранных в одном корпусе. Отсюда такое название – RGB (рис.1).

2. С помощью микроконтроллеров

С помощью него можно получить множество различных оттенков света. Управление RGB-светодиодом осуществляется с помощью микроконтроллера (MK), например, Arduino (рис.2).

Конечно, можно обойтись простым блоком питания на 5 вольт, резисторами в 100-200 Ом для ограничения тока и тремя переключателями, но тогда управлять свечением и цветом придется вручную. В таком случае добиться желаемого оттенка света не получится (рис.3-4).

Скетч Arduino для управления трехцветным светодиодом написать несложно, можно найти множество примеров в интернете с полным описанием подключения. Мы уже делали такую программу для Wemos — посмотрите здесь, и для Arduino — здесь.

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

3. Контроллер для управление RGB

Для разгрузки выводов МК применяются специальные контроллеры WS2801 (5 вольт) или WS2812B (12 вольт) (рис.5).

С применением отдельного контроллера нет необходимости занимать несколько выходов MK, можно ограничиться лишь одним сигнальным выводом. МК подает сигнал на вход «Data» управляющего контроллера светодиода WS2801.

В таком сигнале содержится 24-битная информация о яркости цвета (3 канала по 8 бит на каждый цвет), а также информация для внутреннего сдвигового регистра. Именно сдвиговый регистр позволяет определять, к какому светодиоду информация адресовывается. Таким образом можно соединять несколько светодиодов последовательно, при этом использовать все так же один вывод микроконтроллера (рис.6).

4. Адресуемый светодиод

Это RGB-светодиод, только с интегрированным контроллером WS2801 непосредственно на кристалле. Корпус светодиода выполнен в виде SMD компонента для поверхностного монтажа. Такой подход позволяет расположить светодиоды максимально близко друг другу, делая свечение более детализированным (рис.7).

В интернет-магазинах можно встретить адресные светодиодные ленты, когда в одном метре умещается до 144 штук (рис.8).

Стоит учесть, что один светодиод потребляет при полной яркости всего 60-70 мА, при подключении ленты, например, на 90 светодиодов, потребуется мощный блок питания с током не менее 5 ампер. Ни в коем случае не питайте светодиодную ленту через контроллер, иначе он перегреется и сгорит от нагрузки. Используйте внешние источники питания (рис.9).

5. Недостаток адресуемых светодиодов

Адресуемая светодиодная лента не может работать при слишком низких температурах: при -15 контроллер начинает подглючивать, на более сильном морозе велик риск его выхода из строя.

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

6. Применение адресуемых светодиодных лент

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

Получается интересное решение, если светодиодную ленту использовать в качестве фоновой подсветки Ambilight для монитора компьютера (рис.10-11).

Если вы будете использовать микроконтроллеры на базе Arduino, вам понадобится библиотека FastLed для упрощения работы со светодиодной лентой (скачать здесь).

arduinoplus.ru

Светодиоды c пиксельной адресацией WS2812B

Когда то давным давно, еще до эпохи РК86 и ZX-Spectrum, делом чести каждого начинающего радиолюбителя был собрать цветомузыку.

На транзисторах, тиристорах и даже тиратронах МТХ90, с лапочками, крашеными цапонлаком и самопальными рассеивателями.

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

Речь пойдет о продукции китайской компании WORLDSEMI CO.,LIMITED — светодиодах с пиксельной адресацией с использованием микросхем WS2811.

Описание WS2811

Микросхема WS2811 представляют собой 3-х канальный контроллер/ШИМ драйвер с управлением по одному проводу.
Выпускаются WS2811 в корпусах DIP-8 и SOP-8
WS2811 подключаются последовательно друг за другом.
К каждой микросхеме подключается три светодиода с питанием от 5В

или три цепочки с питанием от 12В

На вход первой в цепочке микросхемы подается сигнал из прямоугольных импульсов частотой 400 или 800КГц. Импульсы, в зависимости от скважности, кодируют 0 или 1 для одного бита информации. Длинный (50мс) низкий уровень означает RESET или старт новой последовательности. Первая микросхема считывает 24 бита, в которых закодирован RGB сигнал по трем каналам светодиодов. Остальные импульсы пропускает на выходную шину. Следующие 24 бита достаются второй микросхеме и т.д. Всего каскадом может объединяться 1024 микросхем, информация в которых может обновляться 30 раз в секунду.

Подробнее изучить протокол управления микросхемами WS2811 можно изучить в даташите

Микросхемы WS2811 размещали на светодиодных лентах рядом с трехцветными RGB светодиодами. Но прогресс не стоит на месте. И микросхемы стали размещать прямо в корпусе светодиодов 5050. Так появились светодиоды WS2812

WS2812 и WS2812B отличаются количеством ног. У WS2812B их количество сократили с 6-ти до 4-х

Для тех, кто не хочет самостоятельно паять, сделано множество готовых изделий с WS2811/WS12

Я купил светодиоды WS2812B россыпью для самостоятельной пайки на ТАОБАО.
Доставка со всеми процентами Мистера Тао вышла $7. Получилась итоговая цена $0.13 за один диод

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

Почему то в описании на ТАО указана модель WS2813-4. На самом деле светодиоды полностью соответствуют описанию WS2812B


Продавец подошел серьезно к продаже и положил в подарок две таких ручки :))

Что можно сделать из таких деталек?

Обычные линейки, которые можно использовать в различных СДУ, иллюминации и прочих поделках со световыми эффектами.


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

Такие линейки, наравне с обычной светодиодной летной на WS2812 подойдут для изготовления системы фоновой динамической подсветки телевизора или монитора.

Следующей моей поделкой стал светодиодный дисплей.


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

Демонстрация работы дисплея на WS2812B

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

К Новому году собираюсь сделать цифро-аналоговые часы, которые могут работать, как светодинамическая установка с подгружаемыми эффектами.

О ней я тоже напишу в своем блоге

Подведем итог

— Товар полностью соответствует своему описанию
— Цена минимальная для изделий такого рода
— Светодиоды предоставляют огромные возможности для творчества в домашних самоделках.
— Тем кому не хочется возится с платой, можно купить такие светодиоды на ленте

Полезная информация


Описание микросхемы WS2811 на английском языке
Даташит на WS2811 на английском языке
Даташит на WS2812/WS2812S в корпусе SMD5050 с 6-ю контактами
Даташит на WS2812B в корпусе SMD5050 с 4-ми контактами
Библиотека Adafruit Neo Pixel для работы с WS2811/12 для ардуино

Кот похоже скоро будет разбираться в контроллерах лучше меня 😉

P.S Для тех, кто не любит покупать на ТАОБАО
Ссылка на похожий лот на АЛИ
Там по поиску «WS2812» очень много всего находится

mysku.ru

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

Итак, данный гайд посвящен адресной светодиодной ленте, я решил сделать его познавательным и подробным, поэтому дойдя до пункта “типичные ошибки и неисправности” вы сможете диагностировать и успешно излечить косорукость сборки даже не читая вышеупомянутого пункта. Что такое адресная лента? Рассмотрим эволюцию светодиодных лент.

Обычная светодиодная лента представляет собой ленту с напаянными светодиодами и резисторами, на питание имеет два провода: плюс и минус. Напряжение бывает разное: 5 и 12 вольт постоянки и 220 переменки. Да, в розетку. Для 5 и 12 вольтовых лент нужно использовать блоки питания. Светит такая лента одним цветом, которой зависит от светодиодов.

RGB светодиодная лента. На этой ленте стоят ргб (читай эргэбэ – Рэд Грин Блю) светодиоды. Такой светодиод имеет уже 4 выхода, один общий +12 (анод), и три минуса (катода) на каждый цвет, т.е. внутри одного светодиода находится три светодиода разных цветов. Соответственно такие же выходы имеет и лента: 12, G, R, B. Подавая питание на общий 12 и любой из цветов, мы включаем этот цвет. Подадим на все три – получим белый, зелёный и красный дадут жёлтый, и так далее. Для таких лент существуют контроллеры с пультами, типичный контроллер представляет собой три полевых транзистора на каждый цвет и микроконтроллер, который управляет транзисторами, таким образом давая возможность включить любой цвет. И, как вы уже поняли, да, управлять такой лентой с ардуино очень просто. Берем три полевика, и ШИМим их analogWrit’ом, изи бризи.

Адресная светодиодная лента, вершина эволюции лент. Представляет собой ленту из адресных диодов, один такой светодиод состоит из RGB светодиода и контроллера. Да, внутри светодиода уже находится контроллер с тремя транзисторными выходами! Внутри каждого! Ну дают китайцы блэт! Благодаря такой начинке у нас есть возможность управлять цветом (то бишь яркостью r g b) любого светодиода в ленте и создавать потрясающие эффекты. Адресная лента может иметь 3-4 контакта для подключения, два из них всегда питание (5V и GND например), и остальные (один или два) – логические, для управления.

Лента “умная” и управляется по специальному цифровому протоколу. Это означает, что если просто воткнуть в ленту питание не произойдет ровным счётом ничего, то есть проверить ленту без управляющего контроллера нельзя. Если вы потрогаете цифровой вход ленты, то скорее всего несколько светодиодов загорятся случайными цветами, потому что вы вносите случайные помехи, которые воспринимаются контроллерами диодов как команды. Для управления лентой используются готовые контроллеры, но гораздо интереснее рулить лентой вручную, используя, например, платформу ардуино, для чего ленту нужно правильно подключить. И вот тут есть несколько критических моментов:

alexgyver.ru

Ограничения в использовании умных светодиодов WS2812, WS2801 и подобных в современных проектах декоративной светотехники

Уже несколько лет на рынке светотехники можно встретить такие названия, как: «smart led strip», «smart led pixel» и подобные. Как правило, «умный пиксель» — это сборка из миниатюрного 3-х канального светодиодного драйвера (с интегрированным стабилизатором тока, PWM модулятором и сдвиговым регистром), подключенная к RGB светодиоду. На базе таких пикселей многие производители выпускают «умные» гибкие светодиодные ленты, LED «гвозди» и LED кластера. Также можно встретить такие модели чипов, как WS2812, WS2813, с интегрированным LED драйвером непосредственно в корпус 5050 RGB светодиода. Малые габариты, большое количество последовательно включенных пикселей (более 1000 шт.), простота управления по 1(2) проводу и сравнительно низкая стоимость решения — более чем оправдывают их применение.

Эта моя первая публикация на Хабре, в которой я хочу донести мой опыт использования и обозначить недостатки таких пикселей. За несколько последних лет я успел поработать со следующими LED драйверами: LPD6803, WS2801, WS2811, WS2812(B), TM1903, UCS1903, TM1804, TM1803, SM16716 и другими менее ходовыми. В интернете часто можно встретить такой термин как «светодиодная лента с пиксельной адресацией» — я с этим совершенно не согласен, и это является первым ограничением.

Информация в такие ленты/пиксели загружается по последовательному каналу, а именно через сдвиговые регистры с 24-х битной разрядностью (как правило), т.е. 3 канала по 8 бит для RGB. Никаких адресов такие LED пиксели не помнят и работают исключительно по последовательному принципу. Отсутствие сигнала управления на линии данных или синхронизации (если таковая есть), служит командой для преобразования значений в регистрах в PWM сигналы для RGB светодиодов. По этой причине, при выходе из строя информационного канала одного из пикселей, последующие пиксели перестанут корректно работать. Многие неопытные LED «рекламисты» наступили на эти грабли, применяя такие пиксели для уличных экранов.

Рисунок ниже демонстрирует «битые» полоски.

Второе ограничение связанно с температурой использования. В большинстве случаев у пикселей, что управляются только по одному проводу «DATA», к примеру, WS2812B — нижняя температура использования -25 градусов. На практике, часто от -15 градусов. Это связанно с отсутствием хорошего кварцевого блока регенерации сигнала внутри чипа. Таким образом, при низких температурах пиксель перестает корректно работать, наблюдаются «сверчки» и т.п. до полного отсутствия картинки. Другое дело — чипы с синхронизацией: WS2801, LPD6803, к примеру. Здесь имеется хорошая регенерация сигналов по уровням, по времени — регенерация не нужна, поскольку имеется линия синхронизации. Рабочая температура в этом случае от -40 градусов. Но и стоят эти чипы вдвое дороже.

Третье ограничение — глубина цвета.

Рисунок ниже демонстрирует экраны собранный на чипах WS2801.

Не вооруженным глазом заметно, что экран с фоном засвечен. Низкие уровни градиента «умные пиксели» (WS2812, WS2801 и т.п. практически все) не способны воспроизводить так, как это делают современные экраны. Это связанно с низкой разрядностью интегрированного в чип PWM генератора (всего 8 бит на канал) и как следствие – отсутствие полноценной гамма коррекции. Проще говоря, светодиод светит слишком ярко, когда хочется совсем чуть-чуть и ничего с этим нельзя поделать.

Ощутимым минусом, во всяком случае для меня, было отсутствие хорошего софта подготовки и конвертирования анимации, непосредственно для вывода на «железки». Это явилось четвертым ограничением.
Поначалу я использовал софт «LedEdit».

«LedEdit» обеспечивает возможность создания и редактирования видео анимации, захвата и последующего конвертирования на «железо». Но использовать этот софт я могу только совместно с их контроллерами. Также я выявил большие недостатки софта «LedEdit» в плане качества видео захвата и стабильности обработки кадров.

Поскольку в этой теме я был очень заинтересован и обладал неплохими знаниями в области программирования, в том числе микроконтроллеров, я написал свой «граббер» видео с последующей конвертацией на «пиксели». Идею объединить в одной программе возможности создания и конвертирования анимации я сразу отложил, поскольку это не профессиональный подход. Анимацию нужно создавать и редактировать в специализированных программах, к примеру, я выбрал FREE программное обеспечение «Jinx!».

На выходе ПО «Jinx!» можно получить открытый бинарный файл *.out представляющих битовое представление данных прямоугольной матрицы из пикселей для каждого кадра. Теперь дело остается за немногим: сопоставить прямоугольную матрицу из данных для каждого кадра с реальным расположением «умного пикселя» на пиксельном поле и произвести граб анимации. Так у меня родилось FREE программное обеспечение «LS Terminal».

Сейчас ПО «LS Terminal» позволяет работать с большинством видео форматов *.avi, *.flv и д.р., использовать десятки портов, качественно обрабатывать видео захват для десятков тысяч «умных пикселей» расставленных по полю пользователем. Для обработки и визуализации видео я использовал библиотеки OpenCV и OpenGL. Выгрузку данных на «умные пиксели» осуществляю посредством микроконтроллера, который считывает данных с SD карты.

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

— для LED костюмов:

— небольшой изогнутый экран на WS2812:

— в этом объекте несколько тысяч «умных пикселей» WS2801:

habr.com

119-Умные светодиоды WS2812B NeoPixels — GetChip.net

Светодиоды (пиксели) WS2812B и светодиодные ленты на базе этих пикселей довольно популярны и это оправдано по нескольким причинам:

— компактность — пиксель содержит в своем корпусе (размером всего 5х5 мм) 3 светодиода и драйвера для них
— простота управления – пиксель управляется посредством простого последовательного интерфейса, который легко реализовать как программно, так и используя аппаратные интерфейсы МК (такие как SPI и UART)
— управление всего по одной линии (не считая проводов питания)
— неограниченное количество включенных последовательно пикселей
— относительно небольшая стоимость (если посчитать стоимость отдельно 3х светодиодов и драйверов к ним выйдет гораздо дороже)

Эта статья попытка обобщить информацию (наверное, больше для себя) об умных светодиодах WS2812B в одном месте.

Начнем знакомство с серией WS

Первым идет WS2801

Фактически, это не светодиод а микросхема-драйвер для RGB-светодиода с последовательным интерфейсом SPI (есть линия данных и тактовая линия). Эти микросхемы используются во встраиваемых конструкциях пикселей:

Есть и ленты с использованием этих драйверов, но, наверное, их не найти уже.

WS2801.pdf — Даташит

Дальше — WS2811

Это тоже микросхема для управления RGB-светодиодом, но она уже компактней (8 ног, в отличие от WS2801 — 14 ног) и имеет однолинейный последовательный интерфейс.

WS2811.pdf — Даташит

Приближаемся — WS2812(S)

Это уже интегрированные в SMD корпусе 5050 и драйвер и сами светодиоды. Корпус 6-ти ножечный

Как и в предыдущем WS2811 интерфейс однолинейный, но тайминги протокола другие несовместимые.

WS2812.pdf — Даташит

И, наконец, WS2812B

Это почти аналог предыдущего светодиода, но уже с 4-мя ножками и слегка измененными таймингами протокола (совместимы, при использовании компромиссных значений временных периодов сигналов)

WS2812B.pdf — Даташит

Еще существует WS2812D (аналог PD9823)

Это полностью WS2812B но в корпусе обычного 8мм светодиода.

WS2812D.pdf — даташит

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

Принцип работы WS2812B — официальная информация из даташита.

Физически в WS2812B имеется 3 излучающих светодиода (красный, синий и зеленый) и ШИМ-драйвера управляющие их яркостью. ШИМ-драйвера 8-ми битные, то есть для каждого из цветов возможны 256 градаций яркости и, соответственно, для того чтобы установить яркости для каждого из 3-х светодиодов нужно передать пикселю 8х3=24 бит (3 байта) информации. Протокол передачи информации светодиоду однолинейный с фиксированной скоростью. Единички и нули информации о яркости кодируются длительностью высокого и низкого уровня сигнала в линии.

Время передачи одного бита составляет  0.8+0.45=1.25 мкС — это довольно быстро. Время передачи всего пакета из 24 бит для одного пикселя WS2812B составляет 24*1.25=30 мкС. Для 1000 штук — 1000*30=30 мС (что, например, позволяет обновлять по одной линии панно 30х30 пикселей с частотой 30 раз в секунду!).

Каждый из пикселей WS2812B имеет 2 вывода питания (VDD, VSS), вход (DIN) и выход (DOUT).

На вход DIN подается информация (24бита) для установки нового цвета. Информация о цвете передается побитно (начиная со старшего бита) последовательно для каждой из составляющей цветов G, R, B.

Пиксели соединяются в цепочку следующим образом:

Запись значений цвета цепочке пикселей происходит следующим способом:
Первые 24 бита поданные на DIN записывает себе во временную память (цвет пока остается неизменным с предыдущего раза) первый пиксель. Последующие биты первый пиксель пропускает через себя и выдает на выход DOUT. Второй пиксель повторяет действия первого (оставляя себе первые дошедшие до него 24 бита)  и так по цепочке. Для того, чтобы значения цветов из временной памяти пикселей стали активными должна быть выдержана пауза в передаче (reset code) в течении 50мкС. После этой паузы цикл можно повторять снова.

Вот это основное, что нам говорит довольно скудный даташит.

Теперь более интересная часть – 
Практические способы включения ленты и реализации протокола WS2812B.

То, о чем умалчивает даташит, я собрал из разных источников у людей имевший практический опыт работы с WS2812B. Конечно, это больше касается лент.

Для начала, общие советы (по большей части взятые с https://learn.adafruit.com):

— подключайте к ленте (между линиями питания) конденсатор побольше, вплоть до 1000 мкФ

— в разрыв линии данных (от МК к ленте) добавляйте резистор  300 — 500 Ом, устанавливая его ближе к ленте.

— по возможности, делайте короче провод данных к ленте

— при «горячем» подключении ленты, подключайте «землю» первой (отключайте последней)

— если лента запитана от отдельного источника питания, ее нужно запитать первой (после чего запитать схему управления)

— не допускайте статического электричества при монтаже ленты

— используйте преобразователь уровня, если лента и устройство управления запитаны от источников питания с разным напряжением

— напряжение питания пикселей, заявленное в даташите, лежит в пределах +3.5 ~ +5.3 вольт. Из чего видно, что предпочтительней подавать на ленту меньше 5ти вольт (этим правилом следует пользоваться при выборе количества элементов при батарейном питании)

— максимальный ток каждого пикселя составляет 60мА (при полной яркости белого цвета). Если Вы не планируете использовать ленту WS2812B как источник белого света (для этого лучше взять обычную светодиодную ленту с белыми светодиодами), то принято считать, что, усреднено, каждый пиксель потребляет 20мА.

Соответственно:
минимальный  ток ИП = 20мА*количество_пикселей.
максимальный  ток ИП = 60мА*количество_пикселей

— из последнего пункта вытекает следующее: если лента длинная, то недопустимо подавать на нее питание только с одной стороны. Для того чтобы исключить перегревание (или даже перегорание) токопроводящих дорожек ленты, питание ленты необходимо распределить по всей ее длине, подводя питание в нескольких местах отдельными проводами.

Теперь более ценные советы по реализации протокола

Есть несколько способов реализовать протокол умных светодиодов:
— аппаратный при помощи SPI-интерфейса
— аппаратный при помощи UART-интерфейса
— программный

Достоинство первых двух способов – это возможность освободить МК от части работы по передаче бит информации о цвете пикселю. Недостатки этих способов – во-первых, ограниченное количество линий управления пикселями (у МК редко бывает много незадействованных интерфейсных выходов), во-вторых, требуется дополнительное разбитие байтов информации о цвете на пачки битов (что частично съедает свободное время МК в моменты аппаратной передаче бит)

Реализация протокола WS2812B (NeoPixel) при помощи SPI

Прежде, чем приступить к реализации, следует акцентировать внимание, что у WS2812B кодирование нулей и единичек происходит по правилу 1/3 (смотрите даташит выше). То есть ноль передается как 1/3 времени высокий уровень и 2/3 низкий. Единица – это 2/3 высокий и 1/3 низкий. Из этого следует, что для передачи одного бита для  WS2812B нам достаточно 3х бит переданных по SPI.

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

Но есть решение этой проблемы! Забегая наперед, сообщу, что для пикселя важна длительность периода высокого уровня, а низкий уровень может быть с бОльшим отклонением, чем указано в даташите. Поэтому мы может удлинить наши цепочки бит SPI с трех до четырех:

Вот теперь алгоритм становится более простым и приемлемым к реализации.

Для выдачи информации на пиксели используется только один вывод SPI – MOSI. Выводы MISO и SCK остаются незадействованными. Частота SPI должна быть 1/0.4мкС = 2.5МГц

Реализация протокола WS2812B (NeoPixel) при помощи UART

Все, о чем я писал для SPI, подходит и для UART, но тут есть несколько моментов, которые усложнят реализацию:

— UART в паузах удерживает свою выходную линию (TXD) в высоком уровне, что для пикселей недопустимо, так как невозможно будет избежать неопределенностей в моменты начала и окончании передачи

— соответственно, нужно инвертировать сигнал перед подачей его на пиксели

— а, так как линия инвертируется, нужно инвертировать и передаваемые данные

— UART-пакет, в отличии от SPI, содержит служебные биты – это старт-бит и стоп-бит (бит четности нужно отключать в настройках UART — он не нужен). Дополнительные биты служебной информации нужно учитывать при формировании передаваемого байта, так как они тоже пойдут в пиксель

В итоге, если учесть все нюансы, получается идеальная реализация протокола. Устанавливаем скорость UART 2.5 МГц (это нестандартно), устанавливаем размер кадра 7 бит (вместо стандартных 8-ми), убираем бит четности, оставляем один стоп-бит и получаем следующую картинку:

Программная реализация протокола WS2812B (NeoPixel)

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

Первая проблема, которую придется решать – это формирование малых временных интервалов.
Для примера. МК работает на частоте 16МГц. Время одного такта 0,0625 мкС
Для формирования интерфейса WS2812B нам нужно формировать 2 временных интервала: 0,4мкС  (6 тактов) и 0,85мкС (14 тактов). Всего период бита составляет 20 тактов. Очевидно, язык высокого уровня не способен сформировать код с точной размерностью по тактам. Это возможно реализовать только на языке низкого уровня – придется использовать ассемблер (по крайней мере, только для этой процедуры).

Дальше возникает проблема с точностью формирования этих промежутков. Если мы говорим о передаче данных только для одного пикселя (3 байта), то периоды можно соблюсти очень точно, прописав отдельно буквально каждый бит. Другое дело если нам нужно передавать массив значений в одной посылке без пауз. Тут придется создавать алгоритм, который, кроме того что формирует сигнал (дрыгает ногой МК), еще и считывает данные с массива данных в SRAM (или Flash), возможно, осуществляет несложную обработку данных. В этом случае очень сложно будет уложиться в 20 тактов периода передачи бита и, неизбежно, будут возникать ситуации, где потраченное на обработку время превысит допустимые значения. Вот тут нам помогут исследования проведенные здесь:

Привожу итоговую таблицу того что допускает протокол в плане ухода от даташита.

Более детально читайте в статье по ссылке выше, но если кратко — протокол требует более жесткого формирования периодов сигнала с высоким уровнем, а периоды с низким уровнем могут быть значительно затянуты. Это дает нам простор для реализации «тяжелых» мест.

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

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

(Visited 69 316 times, 11 visits today)

www.getchip.net

Светодиоды со встроенным ШИМ WS2812 — DRIVE2

RGB-светодиоды и ленты на их базе — вещь изъезженная. Обычно найти три ШИМ-выхода у микроконтроллера не составляет труда, чтобы гирлянда светодиодов монотонно светила заданным цветом. Однако, если требуется задать несколько разных цветов в гирлянде, то уже начинаются проблемы как с количеством ШИМ-выводов микроконтроллера, так и с разводкой платы.

Наткнулся совершенно случайно на светодиоды, обладающие встроенным ШИМ-контроллером: WS2812 от Worldsemi Co. Всё что нужно — подвести питание 5 Вольт, а на линию данных DIN выдать последовательно 24 импульса, кодирующие три 8-битных значения яркости, соответственно, зелёной, красной и синей составляющей.
Получив свои значения, контроллер зажигает светодиод заданным цветом, а все последующие импульсы передаёт на выход DOUT. Таким образом, светодиоды можно соединить в гирлянду, и управлять 24-битным цветом каждого в отдельности всего по одному проводу данных.

распиновка WS2812B

Выпускаются в корпусах 5050 в двух версиях: WS2812B — четырёхвыводной и WS2812S — шестивыводной, с отдельными линиями питания для светодиодов и логической схемы.

На ebay светодиоды WS2812B россыпью можно купить по цене 10 баксов за 50 штук. По сравнению с «обычными» светодиодами, цена не маленькая, но, в принципе, доступная.
Так же там продаются различные варианты модулей на базе этих светодиодов, гибких пластинок где светодиоды расположены в несколько строк, и, самый распространённый вариант — светодиодные ленты различных длин и плотностей расположения светодиодов, в открытых, лакированных и водонепроницаемых вариантах.

5 метров герметичной ленты из 150 светодиодов WS2812B

В случае необходимости ленту можно разрезать на меньшие фрагменты.

Лента WS2812B

ШИМ работает на частоте около 400 Гц, поэтому мерцание на глаз не заметно, однако при съёмке видео могут появляться странные волнообразные эффекты. Незажжённый светодиод потребляет около 1мА, соответственно лента из 150 светодиодов потребляет около 150мА. Полностью зажжённый светодиод потребляет около 60мА, а значит для питания ленты из 150 светодиодов потребуется 9 Ампер. Желательно избегать длинных фрагментов лент и подводить питание с обеих сторон, поскольку падение напряжение на 5-метровой ленте при таком токе может быть критическим.

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

Кроме того, каким-то другим производителем выпускаются аналогичные и совместимые по протоколу светодиоды PL9823 в виде 5мм и 8мм круглых матовых светодиодов, а также smd 5050.

светодиоды PL9823-F5, 5мм

В момент простоя каждый из PL9823 кушает около 7мА, что весьма значительно.

Протокол управления

Каждый бит данных передаётся в виде отдельного импульса высокого уровня, длительность импульса кодирует передаваемое значение. Тайминги для всех вышеперечисленных моделей разные, но можно ориентироваться на те, что даны в даташите на WS2812B. А именно, длительность высокого уровня: 0.4 мкс для передачи значения 0, и 0.85 для передачи значения 1. Время передачи одного бита 1.25 мкс, т.е. скорость передачи 800 кбит/с. Иначе говоря, для гирлянды из 300 светодиодов время полного обновления составит всего 9мс, т.е. теоретически можно её обновлять более 100 раз в секунду.

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

Получив 24 бита на входе DIN, светодиод зажигается заданным цветом и все последующие биты данных транслирует на выход DOUT, передавая следующему светодиоду в гирлянде.

Сигналом сброса и началом нового цикла обмена считается наличие низкого уровня на линии в течение 50 мкс.

На этом скриншоте показана осциллограмма управляющего сигнала. Зелёным — сигнал от микроконтроллера на входе DIN, жёлтым — сигнал на выходе DOUT. Показан момент, когда завершилась передача первых 24 битов и чип начал ретранслировать данные.

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

Программирование на AVR

Для отладки я собрал себе тестовую плату:

Тестовая плата

Один бит данных передаётся за 1,25 мкс, а при частоте работы микроконтроллера 8 МГц это составляет всего 10 тактов.

В реализованном примере вывод данных написан на ассемблере. Поддерживается «быстрый» режим — 10 тактов на бит, и медленный — 20 тактов на бит.

Также поддерживается одновременный вывод на две гирлянды также на скорости 10, или 20 тактов на бит. В этом случае они должны быть подключены к выводам одного порта. Более подробные пояснения — в исходном коде. Демонстрационный проект написан на Atmel Studio 6.2 для ATmega8A, по умолчанию настроен на вывод на 1 линейку из 150 светодиодов, подключенную к PD0.

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

Макрос светодиода WS2812B для Sprint Layout здесь

Другие подобные светодиоды

Полные аналоги WS2812B

WS2812B — (описан в этой статье). Чип встроен в SMD светодиод размера 5×5мм, 4 вывода.

WS2812C — версия WS2812B, также SMD 5×5мм, 4 вывода, но на в 4 раза меньший ток: макс. 5мА на цвет (вместо 18.5мА у WS2812B). Позволяет делать гирлянды и табло с большей плотностью светодиодов и меньшей яркостью.

XT1511 — SMD 5×5мм, 4 вывода, аналог WS2812B. Так же существует версия XT1511-5mA на 5мА.

SK6812-RGB — SMD 5×5мм, 4 вывода.

SK6805 — SMD 5×5мм, 4 вывода, версия SK6812 но на ток 5мА.

Совместимые по протоколу в других корпусах

WS2812S — (был упомянут в статье). SMD 5×5мм, 6 выводов, раздельное питание для светодиодов и чипа.

SK6812-P6 SMD 5×5мм, 6 выводов.

SK6812-WWA SMD 5×5мм, 4 вывода. вместо красного, синего и зелёного его компоненты цвета: холодный белый, тёплый белый и янтарный, для динамического освещения.

WS2811 — отдельные чипы в корпусах soic-8. Продаются также в лентах с smd светодиодами и гирляндах с выводными 5мм светодиодами (пример использования). Может работать на пониженной частоте обмена (400 кГц).

WS2812B-Mini — чипы, встроенные в RGB-светодиод размера 3,5×3,5мм.

TM1804 — отдельная ИС в корпусе soic-8. Может работать на пониженной частоте обмена (490 кГц).

Частично совместимые, или похожие по протоколу

WS2813 — обновлённая версия, 6-контактный корпус, обладают запасным входом, который подключается параллельно входу предыдущего светодиода, таким образом, если один светодиод выходит из строя, то цепочка за ним не перестаёт работать. Менее строгая спецификация по таймингам, допускают паузу между битами до 100мкс. Соответственно, длительность низкого уровня для сброса увеличена до 300мкс. Частота ШИМ поднята до 2кГц.

WS2818 — обновлённая версия 2811; отдельные чипы в корпусах sop8, msop8 или dip8. Допускают менее строгие тайминги.

SK6812-RGBW SMD 5×5мм. Использует не 3 компоненты цвета, а 4: Красный, синий, зелёный, белый. Протокол аналогичен описанному, но на 1 светодиод требуется 32 бита данных. (описание от CAMOKAT-BETEPAHA)

PL9823-5050. SMD 5×5мм, 6 выводов. По описанию, работают на скорости обмена 580 кГц, но, вероятно, смогут принимать данные на 800 кГц.

PL9823-F5 и PL9823-F8 — (были упомянуты в статье) выводные, 4 ножки, диаметр 5 и 8 мм, соответственно. По описанию, работают на скорости обмена 580 кГц, но, по опыту, могут нормально принимать данные на 800кГц.

Несовместимые по протоколу

WS2801 — отдельные чипы в корпусах SOP-14. Продаются также в лентах в сопряжении с 5050 светодиодами. Ток каждого цвета светодиода задаётся резистором. Синхронный протокол (односторонний SPI — линия данных и линия тактирования), обеспечивает большую скорость обновления.

APA102 — встроенные в корпус светодиода 5050. Синхронный протокол (односторонний SPI — линия данных и линия тактирования), обеспечивает большую скорость обновления. На каждый светодиод выдаётся 4 байта данных: значение яркости красного синего и зелёного и общая яркость. ШИМ для красного синего и зелёного работает на высокой частоте, что позволяет добиться плавного вывода на движущихся объектах (POV, пример, автор mortonkopf)

LDP8803 и LDP8806 — отдельные чипы в корпусах soic-16, синхронный протокол (односторонний SPI — линия данных и линия тактирования). 3 и 6 управляемых каналов, соответственно.

www.drive2.ru

Светодиоды WS2812B с пиксельной адресацией

Когда то давным давно, еще до эпохи РК86 и ZX-Spectrum, делом чести каждого начинающего радиолюбителя был собрать цветомузыку.

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

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

В данной статье речь пойдет о продукции китайской компании  WORLDSEMI CO.,LIMITED — светодиодах с пиксельной адресацией.

Микросхема WS2811

Микросхема WS2811 представляют собой 3-х канальный контроллер/ШИМ драйвер с управлением по одному проводу.

Выпускаются WS2811 в корпусах DIP-8 и SOP-8

WS2811 подключаются последовательно друг за другом.

К каждой микросхеме подключается три светодиода

Либо 3 цепочки из светодиодов, если увеличить напряжение питания

 

На вход первой в цепочке микросхемы подается сигнал из прямоугольных импульсов частотой 400 или 800КГц. Импульсы, в зависимости от скважности, кодируют 0 или 1 для одного бита информации. Длинный (50мс) низкий уровень означает RESET или старт новой последовательности. Первая микросхема считывает 24 бита, в которых закодирован RGB сигнал по трем каналам светодиодов. Остальные импульсы пропускает на выходную шину. Следующие 24 бита достаются второй микросхеме и т.д. Всего каскадом может объединяться 1024 микросхем, информация в которых может обновляться 30 раз в секунду.

Подробнее изучить протокол управления микросхемами WS2811 можно изучить в даташите

WS2812 и WS2812B

WS2812 представляет собой RGB светодиод в корпусе SMD5050 в корпус которого встроена микросхема WS281.1

WS2812 и WS2812B отличаются количеством ног. WS2812B их количество сократили до 4-х

 

Даташит на WS2812/WS2812S в корпусе SMD5050 с 6-ю контактами

Даташит на WS2812B в корпусе SMD5050 с 4-ми контактами

Готовые изделия на WS2811/WS2812

На сайте компании WORLDSEMI представлен большой выбор готовых устройств на базе светодиодов с пиксельной адресацией

Это гирлянды из различных модулей

Корпусные изделия

Светодиодные ленты

И даже матричный дисплей 16×16

Чем управлять

Компания WORLDSEMI выпускает также и контроллеры управления данными микросхемами и устройствами

Но покупать готовые контроллеры — не наш путь. Наш путь подключить WS2812 к Arduino при помощи библиотеки Adafruit_Neopixel
(можно и не Ардуино, но тогда это выходит за рамки тематики этого блога)

Покупка в интернете

Микросхемы WS2811/2812 и изделия из них можно купить в интернете. Цены в российских интернет магазинах на данные изделия очень уж завышенные.

На Алиэкспресс партией 100шт можно купить WS2812B по $0.13 

Для тех кто не любит много паять можно купить светодиодную ленту с Ws2812 по 30, 60 или даже 144 светодиода на метр.

Я заказал на TAOBAO.COM  у этого продавца.

За эти же деньги можно их купить и на ТаоБао  WS2812B  (на сайте они почему то обозначены как WS2813-4). 200 штук через посредника с доставкой в Пермь обойдутся в $26 или $0.13 за штуку.

Поставляются светодиоды в специальной ленте, которую можно заряжать в устройство автоматического монтажа SMD компонентов

Светодиоды точно такие же как в даташите

 

Область применения

В основном, светодиоды с пиксельной адресацией используются для различных свето-динамических установок. Здесь собрана огромная коллекция реализации СДУ на WS2811/WS2812

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

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

   

Изготовление линейки из 10 светодиодов WS2812B

Изготовление дисплея на WS2812B

Цифро-аналоговые часы на WS2812B

Обзор и обсуждение по покупке

А пока можно вместе с Тимофеем хорошо подумать и подготовится к этому

 

 

со своего сайта.

samopal.pro