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

Для тестирования выбрана плата ILLISSI с контроллером PIC18F26R22.

Catcatcat_electronics_bo_02


Создание драйвера WS2812B вызвано необходимость получить недорогой RGB светодиод  со встроенной схемой ШИМ, стабилизаторами тока и простым управлением.

Техническое описание

Функциональная схема

Catcatcat_electronics_bo_03

 

Драйвер поддерживает напряжение питания в диапазоне +3,5 до 5,3 вольт, и имеет защиту от переполюсовки. Для подавления помех рядом с каждым светодиодом WS2812B необходимо установить конденсатор 0,1 uF.

Для управления используется однопроводная шина с управлением временными интервалами. Основные характеристики передачи данных:

Сигнал Описание Длительность Допустимое отклонение
T0H 0 code, длительность высокого уровня 0.4us ±150ns
T1H 1 code, длительность высокого уровня 0.8us ±150ns
T0L 0 code, длительность низкого уровня 0.85us ±150ns
T1L 1 code, длительность низкого уровня 0.45us ±150ns
RES Длительность импульса СТАРТ Более 50μs

Все данные передаются по битам, старшим битом в перед. Общая длительность передачи суммы двух бит 0 и 1 должна быть в пределах TH+TL=1.25μs±600ns

Передача бита 0:

Catcatcat_electronics_bo_04

 

Передача бита 1:

Catcatcat_electronics_bo_05

Принцип подключения драйверов-светодиодов.

Catcatcat_electronics_bo_06

Принцип передачи данных следующий:

  1. Сформировать условие СТАРТ – отрицательный импульс длительностью не менее 50 us.
  2. Начать передавать данные по битам. Данные передаются старшим битом в перед, каждый бит должен быть сформирован с учетом выше описанных условий.
  3. Для управления одним RGB светодиодом необходимо передать 24 бита.
  4. Если в цепочке N- светодиодов, то необходимо передать N*24 бит.
  5. Для передачи новых данных повторить пункты 1-4.

Длительности и формируемых сигналов имеют широкие допуски, но рекомендуется их сильно занижать, так как это может сказаться как искажение данных при передачи на длинные цепочки свыше 70-80 драйверов.

Последовательность передачи цветов GRB

Catcatcat_electronics_bo_07

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


Простой принцип формирования цветов и загрузки данных в ленточки из N-светодиодов.

Для гибкого управления необходимо взять несколько параметров используемых в ch-светомузыке. Для нас это цвет, яркость светодиода и параметр интеграция – это скорость изменения яркости.

Для гибкого управления драйверами WS2812B необходимо следующие параметры:

  • Указать количество используемых светодиодов

  •  Описать цветовые массивы

где параметр, например, ledred[LEDC][0] – яркость свечения, а ledred[LEDC][1] – скорость интеграции.

Скорость интеграции 0 – нет интеграции, – (минус, например, -3) уменьшение яркости, положительное число увеличение яркости. Если включено увеличение яркости, то при достижении максимума, выполняется автоматическое переключение на уменьшение с такой же величиной. При достижении яркости 0 функция интеграции устанавливается равной 0.

Тестирование WS2812B

 

 Для любопытных программа выполняющая этот эффект


Каждый драйвер получает данные и формирует на выходе данные для передачи на следующие светодиоды, Только длительности формируемых данных 0 и 1 несколько отличаются от паспортных:

Передача бита нуля близка к описанию

Catcatcat_electronics_bo_08

 

а передача бита единицы значительно отличается

Catcatcat_electronics_bo_09

эти сигналы сняты с выхода драйвера WS2812B. Опытным путем было получено, что скорость передачи не может превышать 500 кбит, если её увеличивать, то происходит потеря данных при передачи через цепочки свыше 30 светодиодов. Я склоняюсь к мнению, что драйвер отслеживает только длительность положительного импульса, длительность отрицательного, просто должна быть не меньше 0.9-1 микросекунды.

В связи с этим пример драйвера для загрузки данных в светодиоды

Пример функции приведен для PIC контроллеров 12-16-18 серии с тактовой частотой 32 МГц. Длительности в передачи последнего бита закомментированы, так как они не имеют значения, потому, что выборка следующего байта в пределах более 1 микросекунды.


Для серии PIC18.

Вариант 1. Функции для PIC18 с тактовой частотой 64 МГц.


Вариант 2, для PIC18, более компактный, но по быстродействию он хуже.


Важное условие подключения драйвера к контроллеру.

Необходимо всегда (особенно для первого включения) устанавливать между микроконтроллером и первым драйвером резистор 430-330 ом.

Catcatcat_electronics_bo_10


Продолжение следует….


Это может быть интересно


  • Датчик контроля протечки воды ch-c0020Датчик контроля протечки воды ch-c0020
    Как здорово летом под теплым дождем с тобою вдвоем оказаться. Как классно по лужам бежать босиком, с тобою играть и смеяться! Но совсем грустно оказаться под таким дождем, который течет с потолка…  И …
  • Проект с использованием MCC часть 04Проект с использованием MCC часть 04
    Теперь простого горения светиков нам не достаточно, заставим их мигать. Для начала используем первобытно простой способ, но достаточно простой. Используем функции delay, напрягаться откуда они берутся не будем, самое главное , …
  • MPLAB® Code Configurator and EncoderMPLAB® Code Configurator and Encoder
    Еще раз про энкодер… Для некоторых приложений очень удобно и экономически выгодно, для настройки и управления использовать энкодер. Такие энкодеры имеют строенную тактовую кнопку которую можно применить для выбора режимов работы …
  • LED драйвер TM1639LED драйвер TM1639
    TМ1639 позволяет работать на матрицу 8*8 или 8 семисегметных индикаторов. Может работать как на индикаторы с общим катодом, но и есть возможность подключать общим анодом. Для управления драйвером используется трех …
  • Стабилизатор тока на SN3350, часть 2Стабилизатор тока на SN3350, часть 2
    Если вам необходимо разработать устройство с применением мощных светодиодов, то никак не обойтись без применения стабилизатора тока. На настоящий момент стабилизаторы тока являются самым эффективным механизмом, для питания светодиода в течение всего его цикла …
  • Применение typedef, struct и unionПрименение typedef, struct и union
    Полезные описания переменных Часто необходимо в памяти расположить последовательно разные виды данных, что бы потом можно было их использовать. Полезные ссылки Взято и переработано с сайта http://www.butovo.com/~zss/cpp/struct.htm http://cppstudio.com/post/9172/ Синтаксис структур. …
  • LCD индикаторы на драйвере ML1001LCD индикаторы на драйвере ML1001
     ML1001 – статический LCD GOG (чип в стекле) драйвер для 40-сегментного LCD в позолоченном противоударном исполнении. На них можно каскадно строить цельные из 80 или 120 сегментов LCD индикаторы. Описание драйвера  …
  • Тестирование модуля генератораТестирование модуля генератора
      Тестирование модуля генератора Настройка, запуск и проверка рабочей частоты на примере PIC18F26K40. PIC18F26K40 Чтобы понять из-за чего зависит производительность микроконтроллера просто надо понять как работает его задающий тактовый генератор. …
  • 12-BIT A/D CONVERTER WITH THRESHOLD DETECT на примере PIC24FJ128GA20412-BIT A/D CONVERTER WITH THRESHOLD DETECT на примере PIC24FJ128GA204
    Введение. 12-битный модуль A/D Converter является усовершенствованной версией 10-битного модуля, предлагаемого на некоторых устройствах PIC24. Оба модуля являются преобразователями, в своих ядрах, с последовательным приближением (SAR), в окружении ряда аппаратных …
  • OLED RET012864E/REX012864JOLED RET012864E/REX012864J
    RET012864E/REX012864J ОЛЕД индикатор производитель Raystar-Optronics приобретался в http://www.microchip.ua/ к сожалению никакой информации на сайте поставщика нет. Поэтому решил работу с этой версией индикатора на драйвере SSD1305 предоставить на своем сайте. Так как есть ошибки …



Tagged with →  
Share →
Translate »

Copyright © Catcatcat electronics 2013-2019. Все права защищены.
Копирование разрешается только с указанием активной ссылки на правообладателя.

e-mail: catcatcat.electronics@gmail.com