Мы не раз рассматривали разнообразные светодиоды, строение, использование и т.д. и т.п. Сегодня я хотел бы остановиться на одной из разновидностей светодиодов ( если так можно говорить ) - RGB светодиодах.

к оглавлению ↑

Что такое RGB светодиод и устройство


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

Аббревиатура RGB - основана на первых трех буквах от английских слов (Red, Green, Blue — красный, зелёный, синий). Благодаря смешению этих цветов можно получать различные цветовые решения. Данный принцип основан на восприятии цвета человеческим глазом.

Как светит RGB светодиод
Цвета, на которые способен RGB светодиод

При смешении основных цветов RGB - например, синего (B) и красного (R), мы получаем пурпурный (M magenta), при смешении зеленого (G) и красного (R) — жёлтый (Y yellow), при смешении зеленого (G) и синего (B) — циановый (С cyan). Если мы соединим все три цвета сразу, то получим белый.

Цвета белые от КПИ
Получение белого цвета

Если у обычного светодиода, как правило, установлены кристаллы белого цвета, то RGB светодиод имеет три кристалла с красным, синим и зеленым цветом. Под микроскопом это выглядит следующим образом:

RGB и микроскоп
Фото RGB под микроскопом

Для получения разнообразных цветов, а не только основных: зеленого, синего, красного, необходимо управление диодами, отличное от белых. В следующих главах мы рассмотрим некоторые основы управления RGB светодиодами.

к оглавлению ↑

Управление, подключение RGB светодиодов


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

Если импульсы будут маленькие, то светодиоды начнут мигать. Для постоянного свечения требуется частота 60-70 Гц ( старые модели ), в новых типах не менее 100 Гц.

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

к оглавлению ↑

Простая схема соединения RGB светодиода на контроллер Altmega8


Материал позаимствован с сайта:

Подключение RGB диода с ШИМ контроллером
Соединение RGB диодов с ШИМ Altmega8

Аноды RGB светодиода подключаем  к линиям 1,2,3 порта В, катоды соединяем с минусом. Чтобы получить разнообразные палитры цвета на аноды будем подавать ШИМ сигнал в определенной последовательности. В этом примере мы специально используем программный ШИМ, хотя на Atmega8 можно без проблем получить аппаратный ШИМ на 3 канала. Программный ШИМ можно использовать в случаях нехватки таймеров/счетчиков и по другим причинам. Для генерации ШИМ определенной частоты используем прерывание по переполнению 8-ми битного таймера Т0(TIMER0_OVF_vect). Так как предделитель не используем частота переполнения таймера будет равна 31250Гц. А если переменная "pwm_counter" считает до 163, то частота ШИМ будет равна 190 Hz. В обработчике прерываний исходя из значений в переменных pwm_r, pwm_g, pwm_b переключаются ножки порта В. Цветовые эффекты настраиваются с помощью функций, где задается время свечения светодиода. В тестовой программе сначала загораются красный, зеленый, синий, белый цвета, а потом начинается цикл с переходами цвета.

Программный код:

// Управление RGB светодиодом. Программный ШИМ
#include <avr/interrupt.h>
#include <avr/io.h>
volatile char pwm_counter,pwm_r,pwm_g,pwm_b;
// Прерывание по переполнению Т0
ISR (TIMER0_OVF_vect)
{
if (pwm_counter++ > 163)
{
PORTB = 0x00;
pwm_counter = 0;
}
if (pwm_counter > pwm_r) PORTB |= (1 << PB1);
if (pwm_counter > pwm_g) PORTB |= (1 << PB2);
if (pwm_counter > pwm_b) PORTB |= (1 << PB3);
}
// Процедура задержки в микросекундах
void delay_us(unsigned char time_us)
{ register unsigned char i;
for(i = 0; i < time_us; i++) // 4 цикла
{ asm (" PUSH  R0 ");       // 2 цикла
asm (" POP   R0 ");     // 2 цикла
        // 8 циклов = 1 us для 8MHz
}
}
// Процедура задержки в миллисекундах
void delay_ms(unsigned int time_ms)
{ register unsigned int i;
for(i = 0; i < time_ms; i++)
{ delay_us(250);
delay_us(250);
delay_us(250);
delay_us(250);
}
}
// Красный цвет
void red (unsigned int time)
{
 for (char a = 0; a < 165; a++)
{
pwm_r = 164 - a; //увеличение
pwm_g = 164;
pwm_b = 164;
delay_ms(time);
}    
for (char a = 0; a < 165; a++)
{
pwm_r = a; //уменьшение
pwm_g = 164;
pwm_b = 164;
delay_ms(time);
}
}
// Зеленый цвет
void green (unsigned int time)
{
for (char a = 0; a < 165; a++)
{
pwm_r = 164;
pwm_g = 164 - a;
pwm_b = 164;
delay_ms(time);
}    
        
for (char a = 0; a < 165; a++)
{
pwm_r = 164;
pwm_g = a;
pwm_b = 164;
delay_ms(time);
}
}
// Синий цвет
void blue (unsigned int time)
{
for (char a = 0; a < 165; a++)
{
pwm_r = 164;
pwm_g = 164;
pwm_b = 164 - a;
delay_ms(time);
}    
for (char a = 0; a < 165; a++)
{
pwm_r = 164;
pwm_g = 164;
pwm_b = a;
delay_ms(time);
}
}
// Белый цвет
void white (unsigned int time)
{
for (char a = 0; a < 165; a++)
{
pwm_r = 164 - a;
pwm_g = 164 - a;
pwm_b = 164 - a;
delay_ms(time);
}    
for (char a = 0; a < 165; a++)
{
pwm_r = a;
pwm_g = a;
pwm_b = a;
delay_ms(time);
}
}
// Переход цветa
void rgb (unsigned int time)
{
for (char a = 0; a < 165; a++)
{
pwm_r = a;
pwm_b = 164 - a;
delay_ms(time);
}
for (char a = 0; a < 165; a++)
{
pwm_b = a;
pwm_g = 164 - a;
delay_ms(time);
}
        
for (char a = 0; a < 165; a++)
{
pwm_g = a;
pwm_r = 164 - a;
delay_ms(time);
}
}
int main (void)
{
DDRB |= (1 << PB3)|(1 << PB2)|(1 << PB1); // PB3,2,1 - выходы
TCCR0 |= (1 << CS00); // Без предделителя
TIMSK |= (1 << TOIE0); // Разрешение прерывания по переаолнению Т0
sei();// Глобальное разрешение прерываний
while(1)
{  
red(5);
green(5);      
blue(5);
white(10);
for(;;)
{rgb(100);}
}
}
к оглавлению ↑

Видео работы диода при такой схеме соединения RGB


к оглавлению ↑

Простая замена управления RGB светодиодами без ШИМ схема


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

Как соединить светодиоды RGB без ШИМ
Управление RGB диодами без ШИМ, схема

Ток питания светодиодов рассчитан исходя из десяти элементов на канал и составляет 12 мА, что втрое меньше номинального тока для ярких светодиодов. Это увеличивает срок службы элементов при хорошей яркости свечения. Токоограничительные резисторы выбраны из расчёта того, что количество элементов не менее 10 и они идентичные по типу. В случае применения светодиодов другого типа или количества, следует пересчитать ток и номинал резисторов R4.1 – R4.3. Падение на одном элементе составляет 3 вольта, поэтому для смещения базового напряжения в схему усилителей введены дополнительные резисторы R3.1 – R3.3, которые компенсируют мёртвую зону регулировки потенциометров. Данный метод, схема позаимствован с этого сайта.

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

2 Комментарии

  1. Спасибо за статью!
    Подскажите, пожалуйста, как соединить рядами группы rgb светодиодов (именно рядами, где все контакты и дорожки переплетены, а не лентой, что проще), чтобы можно было управлять яркостью каждой составляющей цвета, и чтобы было задействовано минимальное число пинов. Ломаю голову несколько дней. Есть готовые на ws2812, но в уроках их соединяют в ряды, кроме того, они слишком яркие для настольного прибора – ослепят пользователя.

    • А можно поинтересоваться для чего? А практическое обслуживание? Я кажется. не много не понимаю сути вопроса…

Оставить отзыв

Please enter your comment!
Please enter your name here