Подключение Адресной Светодиодной Ленты Ws2812b к Arduino Монтаж ленты

Драйвер светодиодной ленты на WS2812B для STM32F103C8

Описывать идею реализации протокола на таймере не буду, всегда можно обратиться к первоисточнику на Хабре, перейду сразу к конкретной реализации библиотеки. Из периферии задействован таймер-счетчик TIM2, контроллер DMA1 и, в зависимости от конфигурации, один из портов PA0, PA1, PA2 или PA3. Библиотека состоит из 3-х файлов:

  • ws2812b.h — прототипы функций и настройка количества светодиодов в ленте
  • ws2812b_config.h — тонкая настройка библиотеки, включает подстойку таймингов и выбор ножки порта, через которую производится управление лентой
  • ws2812b.c — сама реализация протокола

Библиотека использует только CMSIS без всякой высокоуровневой требухи в виде SPL. Только регистры, только хардкор.

С помощью WS2812B_TIMER_AAR производим точную настройку периода ШИМ-сигнала таймера, чтоб он соответствовал скорости передачи данных. Значение 0x59 соответствует периоду в 1.25 мкс при тактировании таймера частотой 72 МГц.

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

Далее идет выбор пина порта WS2812B_OUTPUT_PAx, с помощью которого будет производиться управление лентой. Варианта тут только 4-ре: PA0, PA1, PA2 или PA3. Выбирай тот, что удобней)).

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

Затем идет расчет длины буфера, в котором хранятся значения цвета светодиодов:

Каждый светодиод добавляет 24 байта к занимаемой памяти. Так, для светодиодной ленты, состоящей из 144-х пикселей буфер будет занимать 144*24+2=3458~=3.4 Кбайт ОЗУ. AVR-щики в шоке. Ардуинщики чешут репу. Много это или мало, зависит от конкретной задачи: где-то такой расход памяти допустим, а где-то нет.

Поехали далее. Функция инициализации интерфейса выглядит следующим образом:

Первым делом включаем тактирование всех нужных нам модулей. Затем переключаем GPIO в режим альтернативных функций и задаем максимальную частоту вывода 10Мгц. После этого идет настройка таймера, DMA, и включение прерываний от этих модулей.

Здесь происходит предварительная настройка таймера и DMA должным образом и запуск всего процесса.

После завершения передачи данных возникает прерывание от DMA DMA1_Channelx_IRQHandler():

В этом прерывании запускается следующая стадия работы логики интерфейса, а именно формирование сигнала RET. В функции bus_retcode() происходит вся настройка таймера для этой стадии. После того, как таймер отсчитал чуть больше 50мкс, возникает прерывание TIM2_IRQHandler():

Какое освещение Вы предпочитаете
ВстроенноеЛюстра

Подключение Адресной Светодиодной Ленты Ws2812b к Arduino Монтаж ленты

Электроэнергетика и электротехника
Мнение эксперта
It-Technology, Cпециалист по электроэнергетике и электронике
Задавайте вопросы "Специалисту по модернизации систем энергогенерации"
Часы на адресной ленте WS2812b с синхронизацией по WiFi. Как видите, тут, кроме основных настроек, просто перечислены все возможные 255 светодиодов судя по всему, прога большее количество не поддерживает с их координатами на экране и размерами. Спрашивайте, я на связи!

117-12-ти канальный «Метеор» на светодиодных лентах WS2812B и Arduino..

Примеры на IAR ARM

В качестве примера я придумал несколько демонстраций работы с библиотекой. Среда разработки — IAR ARM 7.50.2. Начнем с простого: зажжем все светодиоды красным светом на половину яркости. Вот минимальный код запуска:

Подключение Адресной Светодиодной Ленты Ws2812b к Arduino Монтаж ленты

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

Изменяя H-компоненту от 0 до 360, получаем самую обычную радугу ?

Для справки: на яркости 100 лента в режиме радуги потребляет всего 130мА. А вот на полной яркости ест все 3 ампера.

Ну и небольшая демка с плавным зажиганием-погасанием радуги:

На видео видна некая неравномерность скорости затухания, но в реале этого не видно.

Что понадобится

Светодиодная лента — это группа из светодиодов, размещённых на гибком и клейком основании. Лента может быть длиной от 30 см до 5 м.

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

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

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

Для примера будет использоваться последний тип адресной ленты:

Готовимся к Новому году: простая гирлянда на Arduino

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

Электроэнергетика и электротехника
Мнение эксперта
It-Technology, Cпециалист по электроэнергетике и электронике
Задавайте вопросы "Специалисту по модернизации систем энергогенерации"
Драйвер светодиодной ленты на WS2812B для STM32F103C8 — DiMoon Electronics Фактически, устройство настолько простое, что можно обойтись и без плат вообще, соединив все элементы схемы проводами навесным монтажом. Спрашивайте, я на связи!

Часы – матрица на Arduino и адресных светодиодах WS2812B.

Контроллер

В гирлянде контроллером ленты будет Arduino Uno. Но для этих целей подойдёт всё, что под руку попадётся: различные платы Arduino, МК серии ESP, STM, AVR, PIC, микрокомпьютеры Raspberry Pi. Единственное, о чём ещё следует помнить, это о логическом уровне контроллера. Некоторые из них работают на 3-вольтовой логике, и нужно будет использовать конвертер уровней.

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

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

Для управления лентой понадобится специальная библиотека. В этой статье детально описывается установка библиотеки Adafruit NeoPixel.

117-12-ти канальный «Метеор» на светодиодных лентах WS2812B и Arduino.

Проект как аппаратно, так и программно реализован на Arduino.

Подключение Адресной Светодиодной Ленты Ws2812b к Arduino Монтаж ленты

Базовым элементом схемы является плата Arduino. Для данного устройства могут быть применены Arduino Uno или Arduino Nano или Arduino Pro Mini (как в моей схеме)

Схема устройства проста и особо в описании не нуждается, кроме некоторых моментов:

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

— резисторы на выводах МК не обязательны (устройство будет работать и без них), но все же желательно их установить — это защитит порта МК от перегорания в непредвиденных ситуациях

Корпусом устройства служит монтажно-раздаточная коробка, которую используют электрики. В магазине можно подобрать такой размер как Вам подойдет!

Блок питания на 5 вольт выбран с учетом среднего тока лент. Ток потребления одного кусочка ленты из 20 «пикселей» в режиме метеора не превышает 120-150мА. При 12 лентах суммарный ток 1,5-1,8А что соответствует мощности 10Вт. Я использовал 15Вт готовый блок питания от китайцев.

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

Блок питания питает и схему и ленты (хотя правильнее их нужно было бы развязывать). Я ограничился только конденсаторами (на входе питания Arduino) в качестве фильтра. Этого оказалось достаточно.

Разъемы лучей выполнены при помощи 3.5мм аудио джеков. Устройство позволяет включать и отключать лучи прямо во время работы. Это, совместно с удобными разъемами, облегчает монтаж устройства и его настройку.

Платы устройства
Функционально устройство собрано на трех платах (рисунки печатных плат есть в архиве)

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

Готовое устройство с подключенными лучами выглядит очень презентабельно!

Электроэнергетика и электротехника
Мнение эксперта
It-Technology, Cпециалист по электроэнергетике и электронике
Задавайте вопросы "Специалисту по модернизации систем энергогенерации"
Управление несколькими светодиодными полосами, основанными на WS2812B — WS2812B Разумеется, разработчикам встраиваемых систем проще всего было бы использовать быстродействующий 32-разрядный микроконтроллер, однако стоимость такого решения не может быть конкурентоспособной. Спрашивайте, я на связи!

Ambilight своими руками на Arduino и ws2812b — ФрогоБлог

Просмотр видео

SVPlight Pro

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

Да, на данный момент Prismatik не адресует через API светодиоды с номерами выше 99, так что в настройках SVPLight надо указывать не более 99 светодиодов, это выливается в то, что при просмотре видео у меня последние 3 светодиода (100й,101й и 102й) не работают. Учитывайте это при проектировании своей подсветки!

Кстати, в SVPшке тоже есть функция проверки светодиодов с новогодним эффектом:

Электроэнергетика и электротехника
Мнение эксперта
It-Technology, Cпециалист по электроэнергетике и электронике
Задавайте вопросы "Специалисту по модернизации систем энергогенерации"
О проекте Так как жрёт она по максимуму 90W, то есть 18A, запускать её я осмелился только от работающего компьютера моему БП Corsair AX860i такие токи как семечки. Спрашивайте, я на связи!

Схема подключения часов на Arduino Pro Mini и светодиодах WS2812B.

Понравилась статья? Поделиться с друзьями:
✨Мир света
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Adblock
detector