Адресная РГБ лента: принцип работы и схема подключения WS2812B

Вопросы и ответы

Светодиодная лента на базе WS2812B

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

Как подключить адресную светодиодную ленту WS2812B к Arduino
Внешний вид светодиода с драйвером.

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

Внешний вид адресной ленты.
Внешний вид адресной ленты.

Шина управления микросхемы WS2812B состоит из линии: по ней передаются данные. Данные кодируются как импульсы постоянной частоты, но с другим рабочим циклом. Один импульс — один бит. Длительность каждого бита составляет 1,25 мкс, нулевой бит состоит из высокого уровня длительностью 0,4 мкс и низкого уровня 0,85 мкс. Единица кажется высокой для 0,8 мкс и низкой для 0,45 мкс. 24-битный (3-байтовый) пакет отправляется на каждый светодиод, после чего следует пауза низкого уровня на 50 мкс. Это означает, что для следующего светодиода будет передано больше данных, и так далее для всех элементов в цепочке. Передача данных завершается паузой в 100 мкс. Это означает, что цикл программирования ленты завершен и можно отправлять следующий набор пакетов данных.

Данные для управления адресной лентой.
Данные для управления адресной лентой.

Этот протокол позволяет обойтись без передачи данных по одной строке, но требует точности отсчета временных интервалов. Расхождение допускается не более 150 нс. К тому же помехозащищенность такой шины очень низкая. Любое вмешательство достаточной силы может быть воспринято диспетчером как данные. Это накладывает ограничения на длину проводов от цепи управления. С другой стороны, это позволяет проверить исправность ленты без дополнительных устройств. Если включить светильник и коснуться пальцем контактной площадки шины управления, некоторые светодиоды могут случайным образом включаться и выключаться.

Технические характеристики элементов WS2812B

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

Размер светодиода 5×5 мм
Частота модуляции ШИМ 400 Гц
Энергопотребление при максимальной яркости 60 мА на ячейку
Напряжение питания 5 вольт

Arduino и WS2812B

Всемирно известная платформа Arduino позволяет создавать скетчи (программы) для управления адресными лентами. Возможности системы довольно обширны, но если их уже недостаточно на определенном уровне, приобретенных навыков будет достаточно, чтобы безболезненно перейти на C ++ или даже на ассемблер. Хотя базовые знания получить на Arduino проще.

Протокол

Теперь, когда мы понимаем, как подключить нашу ленту к Arduino, нам нужно понять, как ею управлять, для этого в даташите есть описание протокола, которое мы сейчас рассмотрим. Каждый светодиод WS2812B имеет один вход (DIN) и один выход (DO). Выход каждого светодиода подключен к входу следующего. Сигналы должны быть отправлены на вход самого первого светодиода, это запустит схему, и данные будут передаваться от первого ко второму, со второго к третьему и т.д. Команды на светодиоды передаются пакетами 24 бита (3 байта, по одному байту на каждый цвет, сначала передается байт для зеленого, затем для красного, и заканчивается байт для синего светодиода.


Знак светодиодной ленты.

Порядок битов является наиболее значимым). Каждому пакету предшествует пауза продолжительностью 50 мкс. Пауза более 100 мкс воспринимается как конец передачи. Все биты, как 0, так и 1, имеют фиксированное время 1,25 мкс. Бит 1 кодируется импульсом 0,8 мкс, за которым следует пауза 0,45 мкс. Бит 0 кодируется импульсом 0,4 мкс, за которым следует пауза 0,85 мкс. Собственно наглядная схема на фото ниже. Для каждого фронта также допускаются небольшие ошибки в 0–150 нс. Что ж, следует иметь в виду, что это нужно повторять для каждого светодиода на ленте, поэтому сделайте паузу не менее 100 мкс. Затем вы можете повторить перенос.

Глядя на все эти цифры, становится понятно, что сделать все это с помощью стандартных функций digitalWrite, delay и подобных просто невозможно из-за их длительной работы и неточности. Этот протокол можно реализовать только с использованием специальных библиотек, таких как CyberLib, или написав свою собственную на чистом C или, что еще хуже для текущего программиста, на Assembler. Но все не так плохо, как кажется. Светодиоды WS2812B довольно популярны в сообществе Arduino, а значит, нам не приходится сталкиваться с такими трудностями, и достаточно выбрать одно из понравившихся нам решений.

Светодиодная лента Ардуино – написание кода.

Подключите плату Arduino к компьютеру через USB и откройте Arduino IDE. Убедитесь, что вы выбрали правильную карту и номер порта для своей карты в Инструменты> Инструменты и инструменты> Порт. Откройте новый эскиз и сохраните его с соответствующим именем.
Этот эскиз исчезает с постоянным светом, удерживает его в таком состоянии в течение нескольких секунд, а затем гаснет, пока он снова не погаснет.

Начните с определения контактов, которые будут использоваться для управления полевыми МОП-транзисторами.

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

В вашей настройке мы установим контакты Arduino. Мы также вызовем несколько функций с задержкой в ​​5 секунд. Этих функций пока нет, но не волнуйтесь, мы до них доберемся.

Адресная светодиодная лента ws2812 и arduino
Адресная светодиодная лента: подключение, управление через arduino, предложения
Адресная светодиодная лента и ее подключение к Arduino
Подключите фоторезистор к ардуино и работайте с датчиком освещенности
Освещение телевизора Ambilight своими руками на Arduino

Эти три цикла for полностью смешивают каждый цвет за время, указанное значением fadeSpeed.
Наконец, вам нужно создать метод TurnOff ():
Когда вы закончите с этим кодом, сохраните его. Проверьте код и загрузите его на плату Arduino. Если вы видите ошибки, проверьте код еще раз на наличие опечаток или пропущенных точек с запятой.

Плавное включение светодиодной ленты на Ардуино

Теперь вы должны увидеть, как яркость светодиодной ленты Arduino увеличивается, белый оттенок сохраняется в течение 5 секунд, а затем постепенно исчезает до нуля:

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

Подключение RGB светодиода с общим катодомк Arduino

Если вы используете RGB-светодиод с общим катодом, подключите длинный кабель светодиода к GND платы Arduino, а каналы R, G и B — к цифровым портам Arduino. Помните, что светодиоды загораются, когда высокий уровень (HIGH) применяется к каналам R, G, B, в отличие от светодиода с общим анодом.

Схема подключения светодиодов RGB с общим катодом к Arduino

Если вы не измените приведенный выше эскиз, каждый цвет светодиода в этом случае будет гореть на 0,2 секунды, а пауза между ними будет составлять 0,1 секунды.

Полезный совет

Если вы хотите управлять яркостью светодиода, подключите светодиод RGB к цифровым контактам Arduino, которые имеют функцию ШИМ. Эти контакты на Arduino обычно отмечены тильдой (волнистой линией), звездочкой или кружком.

Виды транзисторных ключей

  • Биполярный;
  • Поле;
  • Композитный (сборка Дарлингтона).

Когда высокий логический уровень (digitalWrite (12, HIGH);) применяется к выходному порту на базе транзистора через цепь коллектор-эмиттер, опорное напряжение течет на нагрузку. Таким образом вы можете включать и выключать светодиод.

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

Биполярное зрение не позволяет регулировать мощные нагрузки. Ток, протекающий через него, ограничен 0,1-0,3 А.

Полевые транзисторы работают с более мощными нагрузками с током до 2А. Для еще более мощной нагрузки используются полевые транзисторы Mosfet с током до 9А и напряжением до 60В.

Вместо полевого эффекта можно использовать сборку биполярных транзисторов Дарлингтона на микросхемах ULN2003, ULN2803.

Микросхема ULN2003 и принципиальная схема электронного переключателя напряжения:

Признаки и симптомы ВПЧ 45 у женщин

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




Папилломавирус 45 не имеет характерных признаков, но заподозрить инфекцию можно по следующим симптомам:

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

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

Управление RGB лентой с помощью Andurino

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

Схема подключения светодиодов Arduino RGB:

Ленточный элемент управления Arduino RGB устроен аналогично:


Контроллер Arduino RGB лучше всего собирать на полевых транзисторах.

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

КАК ДЕЛАТЬ НЕЛЬЗЯ

Как мы уже поняли, для питания ленты требуется источник на 5 Вольт с достаточным запасом по току, а именно: один цвет качественного светодиода на максимальной яркости потребляет 0,012 А (12 мА) соответственно, весь светодиод — 0,036 А (36 мА) на максимальной яркости… У китайцев есть «китайские» ленты, которые меньше потребляют и тускло светятся. Всегда покупаю в магазине осветительных приборов БТФ (ссылка в начале статьи), там ленты качественные.

Я понимаю, что иногда мне очень хочется пропустить ленту напрямую с Arduino через USB или с помощью встроенного стабилизатора платы. Ты не сможешь это сделать. В первом случае есть риск сжечь защитный диод на плате Arduino (в худшем случае сжечь порт USB), во втором из стабилизатора на плате выйдет синий дым. Если очень хочется, есть два варианта:

  • Не подключайте больше того количества светодиодов, при котором ток потребления будет больше 500мА, то есть 500/32 ~ 16шт
  • Напишите код на основе библиотеки FastLED, где вы можете ограничить ток специальной функцией. НО! Если отсоединить вывод Din от источника сигнала, есть риск случайно включить ленту и никакие программные ограничения не спасут вас от прожига утюга.

Вы можете спросить: как я могу затем прошить проект на магнитную ленту? Ведь судя по первой картинке так подключиться не получится! Все очень просто: если в прошивку сразу после загрузки не входит магнитная лента, просто прошейте ее. Если он включается и есть риск перегрузки по току, подключите внешний источник питания к 5V и GND.

Объяснение программы Arduino для работы с адресной светодиодной лентой

Прежде чем начать работу с адресуемой светодиодной лентой в Arduino, вам необходимо скачать и установить для нее библиотеку: библиотеку Adafruit NeoPixel.

Ардуино

1 Пиксель Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

Эта функция определяет количество светодиодов и вывод Arduino для управления ими.

Ардуино

1 pixel.begin();

Эта функция инициализирует адресуемую светодиодную ленту.

Ардуино

Функция, устанавливающая яркость светодиодов. 1 — минимальная яркость, 255 — максимальная.

Ардуино

1 pixelColor (какой светодиод, какой цвет (красный, зеленый, синий));

Эта функция устанавливает цвет свечения светодиода с использованием системы RGB, одновременно задавая номер светодиода (от 0 до NUMPIXELS-1).

Ардуино

1 pixel.show();

Функция, которая активирует настройки по умолчанию, т.е включает светодиоды с настройками по умолчанию.

Теперь рассмотрим примеры программ, позволяющих реализовать различные варианты управления светодиодами в адресной светодиодной ленте.






122-Эффектор с выходом на умную ленту WS2812

После переноса старого Effector на платформу Arduino (ATmega328P) появилась возможность дальнейшего развития проекта. А теперь подключил к Эффектору смарт-ленту (NeoPixels) WS2812. В то же время новый Effector WS2812 не только демонстрирует свои эффекты на смарт-ленте вместо обычных светодиодов, но и приобрел впечатляющее количество новых функций. Новые вкусности: — переработан алгоритм формирования уровней, теперь яркость каналов имеет 255 градаций (против 8 в предыдущей версии)

  • встроенные эффекты переработаны, теперь они стали плавнее — количество встроенных эффектов увеличено с 8 до 16.

правда, из управляющей программы Effector-12 доступно всего 8, как и в предыдущей версии

  • как и в предыдущем эффекторе, управление с ИК-пульта дистанционного управления осталось, но были добавлены новые команды управления, связанные с интеллектуальной лентой — поскольку интеллектуальная лента окрашена, цветовые палитры использовались для генерации разных цветов из монохромных сигналов уровня канала. Вы можете выбрать одну из 8 палитр (включая динамическую палитру переливающихся цветов) — теперь Effector может быть членом сети ZiCip в качестве сателлита

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

  • количество пикселей, отображаемых на смарт-ленте, может быть произвольным, до 255 пикселей — можно регулировать общую яркость ленты — 12-канальный рисунок не только на 12 пикселей ленты, но может масштабироваться (растягиваться)) на любое количество пикселей — рисунок на ленте длиннее 12 пикселей, повторяются циклически — большинство генерируемых эффектов цикличны и на ленте создается непрерывное изображение эффекта (невозможно определить границы области эффектов) — для нециклических эффектов предусмотрен зеркальный вариант повторяющихся каналов, что создает непрерывное изображение, и в этом случае — изображение на ленте можно перемещать по произвольному количеству пикселей — контрольные линии (те к которым подключаются кнопки) выполнены по принципу «ИЛИ сборки» — это означает, что, управляя устройством с пульта ДУ, можно принимать на этих линиях сигналы счетчика llo (нажав на землю), который можно использовать, например, для управления вашими устройствами.

Как это выглядит вживую.

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

Сборка

Поскольку устройство работает на готовой плате Arduino Nano (или Uno), собирать / паять что-то особенное не нужно. Просто подключите смарт-ленту к Arduin (к контакту 13), скомпилируйте прошивку (через стандартный USB-кабель Arduin) и устройство заработает.

Если у вас WS2812 не более 2-3 десятков пикселей, отдельный блок питания вам не понадобится — все будет работать от одного USB-порта. Если лента длинная, порт USB не сможет обеспечить необходимый ток. В этом случае вам понадобится мощный внешний блок питания на 5 вольт.

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



Если вы хотите получить от устройства больше, добавьте переменные резисторы, кнопки, TSOP и т.д.

Ленту для теста мне предоставил магазин DiyLab.com.ua. Если прибор понравился и хочется повторить, ленту в Украине можно купить в этом же магазине — ссылка на ленты. Для России его можно приобрести у другого моего партнера TIXER.RU (обещали в ближайшее время пополнить ассортимент).

Описание работы

Устройство работает как и его предшественник, но есть и нововведения. Пройду чеки. Кнопки:

  • 0 All Off — отключает все эффекты и выключает кассету
  • 1 серия EE — запускает последовательность эффектов, хранящихся в EEPROM (их 4, их можно изменить с помощью программы Effector-12)
  • 2 Flash-серии — запускает случайную последовательность встроенных в устройство эффектов (их 16, их нельзя изменить, период смены эффекта 10 секунд)
  • 3 Next — запускает следующий эффект, при этом продолжая работать постоянно, причем после перезапуска Эффект, этот эффект будет продолжать работать
  • 4 полосы_Зеркало — когда держать на земле »В этой строке 12 каналов Эффекта начинают периодически позиционироваться в зеркале на ленте (например, AL, LA, AL, ..) вместо периодической позиции по умолчанию (например, AL, AL, AL,…)
  • 5strip_R, 6strip_G, 7strip_B — эти три строки определяют текущую палитру, в которой отображается рисунок эффекта на ленте


в «радужном» варианте цвет меняется непрерывно циклически

  • 8strip_IROut — при удерживании этой линии нажатой на «землю» информация о состоянии канала начинает передаваться в ИК-сеть (ИК-излучатель светодиода) (более подробно об этом будет рассказано в отдельной статье).

Аналоговые входы (АЦП) — новый метод управления в этом устройстве. Посредством протекающего через них напряжения (в диапазоне 0-5 вольт) можно изменить изображение, отображаемое на ленте. Линии АЦП подтянуты до 5 вольт, то есть если к линии ничего не подключено, прибор воспринимает это как максимальный уровень.

  • Strip_PixelsNumber — количество пикселей в ленте, воспроизводящих изображение (5 вольт — 255 шт., 0-0) — strip_Scale — масштабирование изображения на ленте (5 вольт — масштаб 1 канала: проецируется 1 пиксель, 0 — 1 канал на всю ленту) — strip_Offset — смещение изображения на ленте — strip_Bright — общая яркость ленты (5 вольт — максимум, 0 — минимум)

Проверка уровня напряжения открывает новые возможности использования устройства. Например, если подключить аналоговый сигнал от усилителя к входу strip_Pixels Number, мы получим измеритель уровня. Также, используя палитру огня и подключив сигнал от термометра к strip_Bright, вы можете просматривать температуру и т.д.

Управление устройством с домашнего пульта ДУ.

Для управления устройством подойдет любой домашний пульт (могут быть проблемы с конкретными пультами с обратной связью, например, с пультом для кондиционера).

Для изучения кнопок необходимо:

  • нажать (и удерживать) кнопку «Learn»
  • сбросить Arduino с помощью кнопки сброса (светодиодный индикатор должен мигнуть несколько раз)
  • отпустить кнопку «Learn».

В связи с тем, что в данном алгоритме невозможно подавить дребезг контакта кнопки «Обучение», необходимо контролировать момент отпускания кнопки. Если в этот момент светодиодный индикатор мигает, необходимо перезапустить процедуру обучения (дребезг контакта создает сигнал, аналогичный сигналу пульта дистанционного управления, который запоминается как первая кнопка)

  • последовательно нажать 9 кнопок пульта ДУ в последовательности функций (кнопки прибора 0 All Off… 8 strip_IR Out) 5 — после чего прибор автоматически перейдет в нормальный режим работы

Каждое нажатие кнопки на пульте дистанционного управления будет подтверждаться сигнальным светодиодом.

Если вам в устройстве не нужны никакие кнопки (например, советую пока не использовать 8 strip_IR Out), то в процессе обучения нужно нажимать ранее изученную клавишу.

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

Это можно использовать для управления нажатиями клавиш на пульте дистанционного управления или для управления вашими устройствами. Строки от «0 All Off» до «3 Next» при нажатии кнопок на пульте дистанционного управления будут на короткое время прижаты к земле, а строки от «4 strip_Mirror» до «8 strip_IR Out» действуют как триггер (нажатие один раз — нажал, снова нажал — отпустил)

Управление устройством с помощью программы Effector-12.

Несмотря на незначительные изменения, устройство оставалось совместимым с программой Effector-12 (за исключением некоторых нюансов, связанных с палитрами и дополнительными функциями). Встроенный в Arduin USB-UART позволяет подключать устройство к компьютеру и легко управлять им. Напомню, что управляющая программа может управлять каналами и эффектами устройства в ручном режиме, воспроизводить музыку (с возможностью самостоятельно создавать различные способы отображения), выполнять различные действия с течением времени и так далее.

WS2811 (WS2818) и WS2812

В настоящее время популярны два типа лент: WS2812b и WS2811 (и новый WS2818). Какие отличия? Микросхема WS2812 находится внутри светодиода, поэтому одна микросхема контролирует цвет светодиода, а лента питается от 5 В. Микросхемы WS2811 и WS2818 находятся отдельно и питают 3 светодиода одновременно, поэтому вы можете контролировать цвет только сегменты по 3 светодиода в каждом. Напряжение питания этих лент 12-24 В!

Подключение ленты на базе WS2812B к Arduino Uno (Nano)

На первом этапе достаточно простых плат Arduino Uno или Arduino Nano. В будущем более сложные платы можно будет использовать для построения более сложных систем. При физическом подключении адресуемой светодиодной ленты к плате Arduino необходимо соблюдать несколько условий:

  • из-за малой помехоустойчивости соединительные провода линии передачи данных должны быть как можно короче (старайтесь проложить их в пределах 10 см);
  • необходимо подключить провод данных к свободному цифровому выходу платы Arduino — тогда он будет указан программно;
  • из-за большого энергопотребления нет необходимости подавать ленту с карты — для этого предусмотрены отдельные блоки питания.

Общий кабель питания лампы и Arduino должен быть подключен.

Схема подключения WS2812B.
Схема подключения ленты WS2812B.

Как подключить светодиод к плате Arduino

Читайте также: Термостат на Ардуино с дисплеем: схема подключения Dallas 18B20

Оцените статью
Блог про Arduino