Контроллер RGB светодиодной ленты

Описываемое устройство позволяет произвольным образом регулировать цвет свечения ленты со светодиодами трёх базовых цветов — красного (R ), зелёного (G) и синего (В). Оно рассчитано на работу с лентой с объединённым анодным выводом всех цветовых компонент, но может быть приспособлено и к лентам со светодиодами, включёнными в другой полярности.

Контроллер RGB,Контроллер RGB светодиодной ленты,Схема RGB контроллера,RGB

Установка нужного цвета свечения RGB светодиодной ленты производится изменением яркости образующих его компонент R, G и В за счёт варьирования длительности импульсов, питающих соответствующие светодиоды, при постоянной частоте их повторения (76 Гц). Для каждой компоненты предусмотрено по 256 ступеней изменения длительности импульсов и, следовательно, её яркости. Имеется возможность запомнить сочетания яркости компонент RGB для трёх оттенков цвета свечения ленты и быстро устанавливать эти оттенки простыми нажатиями на предназначенные для этого кнопки.

Схема RGB контроллера

На рис. 1 изображена схема контроллера. Его управляющий элемент — микроконтроллер DD1. Кнопками SB5 и SB6 регулируют яркость красной, SB8 и SB7 — зелёной, a SB9 и SB10 — синей компоненты синтезируемого цвета. Первыми здесь указаны кнопки, увеличивающие яркость, а вторыми — уменьшающие её. Установленный в данный момент оттенок цвета можно запомнить в энергонезависимой памяти (EEPROM) микроконтроллера, нажав на одну из кнопок SB1—SB3 одновременно с кнопкой SB4.

схема rgb контроллера, контроллер rgb, контроллер rgb светодиодной ленты

Пример содержимого EEPROM показан на рис. 2. Здесь записана информация о трёх синтезированных оттенках. Первый — фиолетовый, в котором яркость синей компоненты 216 (0D8H), яркость зелёной — нулевая, а красной — 255 (0FFH), максимальная. Второй — светлозелёный с синей компонентой 108 (6СН), зелёной 255 (0FFH) и красной 0. Третий оттенок — жёлтый, который образуют зелёная и красная компоненты при нулевой синей. Вызывают хранящиеся в памяти цвета свечения ленты нажатиями на те же
кнопки SB1—SB3, с помощью которых они записывались, но без SB4.

пример содержимого EEPROM, контроллер rgb, контроллер rgb светодиодной ленты

Когда кнопки SB3—SB 10 не нажаты, высокий логический уровень на соединённых с ними входах порта В поддерживают внутренние резисторы микроконтроллера, которыми снабжены входы. Эти резисторы программа включает в начале своей работы записью 1 в разряд RBPU регистра OPTION. На входах порта А такие внутренние резисторы не предусмотрены, поэтому для кнопок SB1 и SB2 установлены внешние резисторы R2 и R3. Программа определяет, что кнопка нажата, обнаружив нулевое значение в соответствующем ей разряде порта А или В.

Цепи катодов светодиодов ленты коммутируют электронные ключи на полевых транзисторах VT1—VT3. Ключами управляют импульсы, формируемые программой микроконтроллера с помощью его счётчика-таймера TMR0. Поскольку таймер восьмиразрядный, он переполняется и генерирует запрос прерывания программы через каждые 256 пришедших на его счётный вход импульсов, полученных делением частоты тактового генератора микроконтроллера. Сразу после переполнения содержимое счётного регистра становится равным нулю. Но если в этот момент программно загрузить в регистр число N, то следующее его переполнение произойдёт уже не через 256, а через 256-N импульсов.

Контроллер RGB,Контроллер RGB светодиодной ленты

Рассмотрим, как генерируются импульсы нужной длительности на примере, показанном на рис. 3. Предположим, что элементам массива rgb, задающим яркость светодиодов, присвоены значения rgb(0)=195 (синий), rgb(1)=157 (зелёный) и rgb(2)=226 (красный), что соответствует розоватобежевому цвету свечения ленты. В момент начала очередного цикла генерации импульсов, когда все светодиоды ещё погашены, программа определит, что первыми должны быть включены светодиоды канала R, для которых задана наибольшая яркость, вторыми — канала В и последними — канала G.

В регистр таймера будет загружено число 226. Приняв 256-226=30 счётных импульсов, таймер переполнится, и в ответ на запрос прерывания программа установит высокий уровень на выводе RA2 микроконтроллера — включит светодиоды канала R.

Затем она загрузит в регистр таймера число 256-226+195=225. Новое прерывание произойдёт через 256-225=31 счётный импульс, когда до окончания цикла их останется 195. Для включения светодиодов канала В будет установлен высокий уровень на выходе RAO. Далее в регистр таймера загружается число 256-195+157=218. Это обеспечивает генерацию следующего запроса прерывания через 256-218=38 счётных импульсов.

По этому запросу устанавливается высокий уровень на выходе RA1, что включает остававшиеся до сих пор выключенными светодиоды канала G. В регистр таймера заносится число 256-157=99. Ещё через 256-99=157 счётных импульсов по очередному запросу прерывания на выходах RA0— RA2 микроконтроллера будет установлен низкий уровень, светодиоды всех трёх каналов выключатся, начнётся новый цикл формирования управляющих ими импульсов.

Нетрудно убедиться, что независимо от заданной яркости светодиодов длительность цикла всегда остаётся равной 256 периодам повторения счётных импульсов Т. При кварцевом резонаторе ZQ1 на 20 МГц и предусмотренном в программе режиме работы таймера частота повторения управляющих светодиодами импульсов приблизительно 76 Гц, что делает их мерцание незаметным для глаз.

Программа, загружаемая в микроконтроллер DD1, создана с помощью компьютерной среды разработки и отладки PIC Simulator IDE 6.92. Использовалась её платная полнофункциональная версия. К сожалению, бесплатная демонстрационная версия этой среды имеет ограничение по объёму программы (не более 50 строк). Для рассматриваемой программы этого оказалось недостаточно.

Желающие усовершенствовать её могут попытаться использовать и другие компиляторы языка BASIC для микроконтроллеров PIC. При этом следует обратить внимание на встречающуюся в программе функцию LookUp(1, 2, 4), s1. Она возвращает число, порядковый номер которого (начиная с нулевого) в списке, заключённом в скс5ки, равен значению переменной s1. В версиях языка BASIC, отличающихся от используемой в PIC Simulator IDE, такой функции может не быть. В этом случае оператор

mask(s1) = LookUp(1, 2, 4), s1

можно заменить, например, подпрограммой, приведённой ниже.

Select Case s1	
case 0	
mask(0) =	1
Case 1	
mask(1) =	2
Case 2	
mask(2) =	4
EndSelect	


Возможны также различия в операторах записи в EEPROM (Write) и чтения из него (Read).

Контроллер RGB,Контроллер RGB светодиодной ленты,Схема RGB контроллера, Чертеж печатной платы

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

Контроллер RGB,Контроллер RGB светодиодной ленты,Схема RGB контроллера

Для использования RGB светодиодной ленты с общими катодами ключи на транзисторах VT1—VT3 следует заменить собранными по схеме, показанной на рис. 5. Катоды в этом случае подключают к общему проводу (минусу батареи GB1). Изменений в программе не требуется.

Источник: Радио Автор: К. Абдукаримов, г. Шымкент, Казахстан

0 комментариев

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