Мы не раз рассматривали разнообразные светодиоды, строение, использование и т.д. и т.п. Сегодня я хотел бы остановиться на одной из разновидностей светодиодов ( если так можно говорить ) – RGB светодиодах.
[contents]
Что такое RGB светодиод и устройство
В отличии от устройства обычных светодиодов, где имеется анод и катод, в RGB чипах для каждого из цветов имеется свой пин – катод, четвертая нога – анод. Анод самый длинный, определить где какой пин для цвета – необходимо смотреть datasheet Вашего диода.
Аббревиатура RGB – основана на первых трех буквах от английских слов (Red, Green, Blue — красный, зелёный, синий). Благодаря смешению этих цветов можно получать различные цветовые решения. Данный принцип основан на восприятии цвета человеческим глазом.
При смешении основных цветов RGB – например, синего (B) и красного (R), мы получаем пурпурный (M magenta), при смешении зеленого (G) и красного (R) — жёлтый (Y yellow), при смешении зеленого (G) и синего (B) — циановый (С cyan). Если мы соединим все три цвета сразу, то получим белый.
Если у обычного светодиода, как правило, установлены кристаллы белого цвета, то RGB светодиод имеет три кристалла с красным, синим и зеленым цветом. Под микроскопом это выглядит следующим образом:
Для получения разнообразных цветов, а не только основных: зеленого, синего, красного, необходимо управление диодами, отличное от белых. В следующих главах мы рассмотрим некоторые основы управления RGB светодиодами.
Управление, подключение RGB светодиодов
Для управления RGB светодиодами необходимо установить нужное значение параметров. На выходы подаются прямоугольные импульсы определенной величины, влияющие на величину среднего тока и средней яркости.
Если импульсы будут маленькие, то светодиоды начнут мигать. Для постоянного свечения требуется частота 60-70 Гц ( старые модели ), в новых типах не менее 100 Гц.
Простейшая реализация управления 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 регуляторов.
Ток питания светодиодов рассчитан исходя из десяти элементов на канал и составляет 12 мА, что втрое меньше номинального тока для ярких светодиодов. Это увеличивает срок службы элементов при хорошей яркости свечения. Токоограничительные резисторы выбраны из расчёта того, что количество элементов не менее 10 и они идентичные по типу. В случае применения светодиодов другого типа или количества, следует пересчитать ток и номинал резисторов R4.1 – R4.3. Падение на одном элементе составляет 3 вольта, поэтому для смещения базового напряжения в схему усилителей введены дополнительные резисторы R3.1 – R3.3, которые компенсируют мёртвую зону регулировки потенциометров. Данный метод, схема позаимствован с этого сайта.
Вот, в принципе и вся “хитрая” технология управления RGB светодиодами. Ничего сложного. Но опять же, данные схемы, методы ( и не только ) нужны для “конкретно помешанных” на радиоэлектронике или инженеров. Для простых обывателей достаточно приобрести всевозможные готовые контроллеры для управления RGB. С легкостью это можно сделать на площадке Aliexpress. Дешево и купите тоже самое, что и в местных магазинах, но с завышенными ценами перекупщиков. На этом прощаюсь с Вами и до новых встреч.)