Обсуждаем цифровые устройства...
Ответить

Re: Гирлянда на RGB светодиодах

Вс янв 05, 2014 22:09:21

Если кому интересно - у меня наконец-то дошли руки попробовать ("в первом приближении") "интеллектуальные" светодиоды WS2812B. "Движок" пока сырой, но вполне работоспособно (ATmega, любой кристалл, поддерживающий режим SPI на UART, 16 MHz). Если делать чисто программно, то должно хватить хоть ATTINY13 @9.6 MHz, но на время загрузки ресурсы заняты полностью.

Светодиоды ОЧЕНЬ яркие, если без рассеивателя, то глазам больно. Рассеиватель из шарика от пинг-понга смешивает цвета великолепно, "артефакты" практически отсутствуют (надо бы попробовать и граненые или матовые бусины, но мне не попадались).

PWM все ж заметен (боковым зрением) даже при половинной яркости, но приемлемо. То, что PWM у них линейный, это, конечно, недостаток, но не фатальный.

В целом - штука потрясающая, никаких проблем с согласованием и репитерами, штук 300 (5 метров ленты 60 кристаллов/метр) можно регенерировать 100 раз в секунду.

Re: Гирлянда на RGB светодиодах

Вс янв 05, 2014 22:13:04

PIC 16 с этим справится? Атмегой не владею как и всем AVR :(
Какой алгоритм передачи данных?

Re: Гирлянда на RGB светодиодах

Вс янв 05, 2014 22:28:58

Нет, PIC (по крайней мере PIC16) не справится - мала производительность. Хотя вроде у них UART может работать в синхронном режиме, можно как-то извернуться, но вряд ли оно того стоит.

Принцип простой - биты кодируются PWM (у меня это UART в режиме SPI, смешанный импульсами от таймера, UART и таймер потактово синхронизированный), внешняя обвязка - два элемента И-НЕ. Такой способ позволяет освободить ресурсы для выполнения чего-то в фоновом режиме. А можно и чисто программно реализовать, "ногодрыганьем", но тогда на время загрузки ничего больше процессор делать не может. Но что-то типа "сосульки" вполне получится. Разноцветной.

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

Вопросов три:

1. Нужно ли это кому-нибудь ?

2. Отдельную тему заводить лениво, статью писать - тем более. Если я это здесь выложу - это будет этично ? (поскольку тема посвящена другому проекту).

3. Если ориентироваться на автомат эффектов, то логичнее сжать требуемую 24-битную посылку (три 8-битных кода PWM) до одного байта, чтобы упростить работу автомата эффектов. Пока представляется, что можно сделать четыре бита яркости и четыре бита цвета (13 цветов вполне различаются, осталось проверить, насколько хорошо они масштабируются по яркости), для упрощения все можно сделать одной 768-байтовой таблицей. А вот если попробовать за основу взять фильтровую ЦМУ, то там уже, наверное, каналы RGB надо обрабатывать по отдельности, а дальнейшие эффекты применять к трехбайтовому результату. Или, возможно, кто-нибудь еще идею предложит ? Это должна быть часть "движка"...

Re: Гирлянда на RGB светодиодах

Вс янв 05, 2014 22:40:35

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

А например у меня во время ногодрыганья контроллер ничем и не занят. Он в этот момент просто передает заранее расчитанный байт. Например хочу передать байт, я его заранее в программе расчитал, потом например по прерыванию начинаю дрыгать ногой или 0 или 1 (в зависимости от байта). А вот следующий байт я могу послать немного позже или нужно строго выдерживать тайминг. Например послал для одного светика посылку из трех байт, потом долго расчитываю следующий байт и шлю его. Светики поймут вторую посылку, или первый опять сожрет ее, потому что прошло много времени? Или там для окончание стоповый бит передается и он сразу транслируется всеми?

Re: Гирлянда на RGB светодиодах

Вс янв 05, 2014 22:47:34

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

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

Re: Гирлянда на RGB светодиодах

Вс янв 05, 2014 22:50:41

Формировать таблица в памяти (доступно 368 байт, часть правда занята) штук на 60 можно формировать. А потом неспешно и расчетно передавать данные без пауз.

Re: Гирлянда на RGB светодиодах

Вс янв 05, 2014 22:58:33

Но на PIC все равно не получится. Я чесал в затылке на предмет как бы сделать чисто внешний PWM-модулятор (тогда бы и на PIC с синхронным UART должно выйти), простого и красивого решения (на пару корпусов) что-то не проглядывается...

Сейчас у меня макетик на ATmega168, под буфер можно отдать практически весь килобайт SRAM, оставив чуток на стек и переменные. Если взять копеечную ($2...3) ATmega328, то там всего вдвое больше.

Re: Гирлянда на RGB светодиодах

Пн янв 06, 2014 01:25:44

rx3apf :beer:
Очень интересная затея - для разнообразия гирлянд и паять меньше. :))
Если бы китайцы догадались чип встроить в 10мм. выводные светики, тоже наверно получилась бы прикольная гирлянда. :)

Re: Гирлянда на RGB светодиодах

Пн янв 06, 2014 01:44:53

Вряд ли такое решение пользовалось бы особой популярностью. Но вот странно, почему до сих пор нет в ассортименте рассеивателей-насадок на 5050, это было бы более универсальный вариант. С 10-mm есть и другое решение - WS2811 и отдельный RGB-диод.

Re: Гирлянда на RGB светодиодах

Пн янв 06, 2014 01:54:43

rx3apf писал(а):С 10-mm есть и другое решение - WS2811 и отдельный RGB-диод.

Встроенный чип интересней. :)
С 5050 будет та же проблема - сложно подобрать рассеиватель и светить будет в одну сторону, хотя вариант тоже очень интересный, нужно делать, не за горами уже и подготовка к следующему НГ. :beer:

Re: Гирлянда на RGB светодиодах

Пн янв 06, 2014 01:57:50

Здравствуйте.
Как думаете, сколько вообще цветов и градаций яркости достаточно для подобных гирлянд? Понятно что чем больше - тем лучше, вот только надо ли тут миллионы цветов....
Мне кажется 16 цветов и 16 градаций для гирлянды вполне хватит.

Re: Гирлянда на RGB светодиодах

Пн янв 06, 2014 02:20:25

Думаю, вполне достаточно. Потому что при линейной PWM 2^24 различимых цветов получить нереально. 13 цветов, плюс белый = 14 цветов (основные комбинации из 0, 1/2 и 1, без вариаций "белого"). Ну, "до кучи" можно еще половинку белого (или, как вариант, чуть скорректировать в сторону розового), и состояние "выключено". И 16 градаций яркости. Тут, конечно, остается вопрос динамического диапазона, и без экспериментов не обойтись. Достаточно ровная шкала получается с диапазоном 1:16, худо-бедно можно сделать и 1:50. Т.о., при генерации эффектов можно обойтись байтовым представлением состояния элемента.

Re: Гирлянда на RGB светодиодах

Пн янв 06, 2014 02:27:31

vlad465 писал(а):
С 5050 будет та же проблема - сложно подобрать рассеиватель и светить будет в одну сторону, хотя вариант тоже очень интересный, нужно делать, не за горами уже и подготовка к следующему НГ. :beer:

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

А трухольный 10-mm RGB тоже ведь в сторону ног не особо хорошо светит, да и вообще все больше вперед. Смешивание цветов лучше, чем у 5-mm, но вообще-то даже "голые" диоды стоят дороже, чем WS2812B "в количествах".

Re: Гирлянда на RGB светодиодах

Пн янв 06, 2014 02:44:42

rx3apf писал(а): но вообще-то даже "голые" диоды стоят дороже, чем WS2812B "в количествах".

Этим лента и интересна, и монтаж проще. :)
Шарики от пинг-понга желтеют не быстро, если конечно гирлянда не будет круглый год висеть на улице, а зимой например у нас солнце бывает нечасто, так что вообще ничего не грозит.
Я в эти шарики вставлял обычные светодиоды, рассеивает очень хорошо, как будет с односторонней лентой нужно пробовать.
Если бы еще найти полуфабрикаты (половинки шариков до их склейки), было бы замечательно, но боюсь в России такого уже не производят.

Re: Гирлянда на RGB светодиодах

Вт янв 07, 2014 17:35:23

Всем привет. Заинтересовался данным проектом, хоть и после наступления НГ. Недавно для других дел заказал себе довольно много сдвиговых регистров и смд светодиодов: обычных 5050 ргб, 3528 ргб(может путаю чиселки, у них 4 контакта и общий анод вроде) и ws2812. Первые 2 вида обошлись чуть больше, чем за рубль, а ws2812 где-то в 7 рублей за штуку. Регистры порядка 3.5р/шт.
Вот думаю сделать все на меге 328 (аля ардуино) используя библиотеку для данной логики ShiftPWM. http://www.elcojacobs.com/shiftpwm/ думал сделать двухстороннюю плату и разместить по светодиоду на каждой стороне, которые будут управляться независимо. По сути задействуются 6 выводов регистра из 8. Не использует неудобный 0 вывод и пустой остается 7. Думал сделать 2 шарика для пинг-понга (по одному на диод и соответственно на две стороны.

Сейчас ввел данные в табличку и получил интересные варианты:
16МГц часота меги
150 элементов
50Гц часота полного обновления
25 градаций яркости на каждом светодиоде (на ргб это 25*3=75 оттенков)

При всем при этом загрузка меги где-то 50%

Re: Гирлянда на RGB светодиодах

Вт янв 07, 2014 20:44:15

При чисто программной реализации ("ногодрыгание") загрузки примерно так и будет. Если ресурсы больше ни для чего не нужны, то можно и так. А если как я предложил - то загрузка будет где-то процентов 10..15 максимум, 300 элементов 100 раз в секунду. Дополнительное "железо" - один корпус HC00/HC20 или что-то аналогичное.

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

Re: Гирлянда на RGB светодиодах

Вт янв 07, 2014 21:38:49

rx3apf писал(а):При чисто программной реализации ("ногодрыгание") загрузки примерно так и будет. Если ресурсы больше ни для чего не нужны, то можно и так. А если как я предложил - то загрузка будет где-то процентов 10..15 максимум, 300 элементов 100 раз в секунду. Дополнительное "железо" - один корпус HC00/HC20 или что-то аналогичное.

Советую изучить данную библиотеку подробнее (используется аппаратный spi), если на ргб светодиоде иметь всего 7 цветов, то при 600 (300х2) регистрах (по факту если использовать по полной все возможности, то это 8 ргб диодов на 3 регистрах - 1600 ргб светодиодов) загрузка мк только 30%
Я же писал про 25 градаций цвета и 50 раз в секунду (чего более чем достаточно). Ошибся немного: 25 градаций по каждому цвету - это 15625 цветов на всем светодиоде.

Если же делать 300 регистров и использовать 1-2 светодиода на регистре (как описал изначально), 10 градаций каждого из цветов (1000 цветов всего), 50 обновлений в секунду - загрузка 45%. остальное остается на реализацию алгоритмов рисования

rx3apf писал(а):А светодиоды на две стороны вряд ли стоит ставить - при подсветке в одной точке шарик от пинг-понга освещен полностью и весьма равномерно. Вот придумать бы какие-то мелкие колпачки, чтобы туда мелкую крепежную платку с WS2812, залить монтаж герметиком и им же приклеить шарик. ...

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

Re: Гирлянда на RGB светодиодах

Ср янв 08, 2014 03:55:01

Baxster писал(а):Если же делать 300 регистров и использовать 1-2 светодиода на регистре (как описал изначально), 10 градаций каждого из цветов (1000 цветов всего), 50 обновлений в секунду - загрузка 45%. остальное остается на реализацию алгоритмов рисования

Не, попробовав WS2812, варианты с регистром на SPI я даже и не рассматриваю всерьез. Когда-то у меня была идея адресуемых PWM-контроллеров (attiny13) на двух проводах питания (в смысле, передача по линии питания), оно на макете работало, вполне успешно, но по реализации обходится дороговато, а тиражировать - тем более. А идея однопроводной передачи как в WS2811/2812 - просто гениальная. Пусть три провода, но все равно замечательно. И что особо радует - никаких проблем с согласованием и звонами.
По идее на плате надо обязательно надо конденсатор крепить, при желании можно все на обратной стороне разместить и получить маленькую плату и маленькое "пятно" на шарике

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

Re: Гирлянда на RGB светодиодах

Ср янв 08, 2014 16:17:35

rx3apf писал(а):Не, попробовав WS2812, варианты с регистром на SPI я даже и не рассматриваю всерьез. Когда-то у меня была идея адресуемых PWM-контроллеров (attiny13) на двух проводах питания (в смысле, передача по линии питания), оно на макете работало, вполне успешно, но по реализации обходится дороговато, а тиражировать - тем более. А идея однопроводной передачи как в WS2811/2812 - просто гениальная. Пусть три провода, но все равно замечательно. И что особо радует - никаких проблем с согласованием и звонами.


Накидал платку для данного светодиода, попробую скоро вытравить и спаять.
Изображение
Шаг сетки 1.27мм. Слева - Top, посередине - Bottom, справа - оба слоя вместе.

Какого номинала нужно ставить конденсатор на данную плату? Сами провода не являются конденсатором?

Осталось найти нормальную библиотеку для управления этими светодиодами. По идее вот эта похожа https://github.com/adafruit/Adafruit_NeoPixel

Чувствую, что надо будет отдельную статью делать для новой гирлянды на WS2812B
Вложения
ws2812b.png
(22.63 KiB) Скачиваний: 1507
Последний раз редактировалось Baxster Чт янв 09, 2014 11:24:17, всего редактировалось 1 раз.

Re: Гирлянда на RGB светодиодах

Ср янв 08, 2014 16:39:34

У меня есть ощущение, что платку надо было бы делать с дополнительными фиксирующими отверстиями для провода, чтобы не рвался в точке пайки (особенно актуально при применении МГТФ). Но - габариты...

Конденсатор - 0.1 uF, как в даташите. Хотя в принципе некритично.

На счет готовой библиотеки - ну, это по желанию (я лично никогда не имел дело с Arduino, и не планирую). Без дополнительного "железа" крайне нерационально используются ресурсу процессора. Свой движок загрузки (если как-нибудь при случае допишу) отдам (вместе с отладочными компонентами - пропечатки там и все такое) всем желающим. Но это чистый .asm (достаточно хорошо откомментированный).

Отдельная статья по решениям на основе WS28xx - наверное нужна. Кто возьмется ?
Ответить