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

Светодиоды – электронный компонент, способный излучать свет. Сегодня они массово применяются в различной электронной технике: в фонариках, компьютерах, бытовой технике, машинах, телефонах и т.д. Многие проекты с микроконтроллерами так или иначе используют светодиоды.

Основных назначений у них два :

Демонстрация работы оборудования или оповещение о каком-либо событии;
применение в декоративных целях (подсветка и визуализация).

Внутри светодиод состоит из красного (red), зеленого (green) и синего (blue) кристаллов, собранных в одном корпусе. Отсюда такое название – RGB (рис.1).

2. С помощью микроконтроллеров

С помощью него можно получить множество различных оттенков света. Управление RGB-светодиодом осуществляется с помощью микроконтроллера (MK), например, Arduino (рис.2).

Конечно, можно обойтись простым блоком питания на 5 вольт, резисторами в 100-200 Ом для ограничения тока и тремя переключателями, но тогда управлять свечением и цветом придется вручную. В таком случае добиться желаемого оттенка света не получится (рис.3-4).

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

3. Контроллер для управление RGB

Для разгрузки выводов МК применяются специальные контроллеры WS2801 (5 вольт) или WS2812B (12 вольт) (рис.5).

С применением отдельного контроллера нет необходимости занимать несколько выходов MK, можно ограничиться лишь одним сигнальным выводом. МК подает сигнал на вход «Data» управляющего контроллера светодиода WS2801.

В таком сигнале содержится 24-битная информация о яркости цвета (3 канала по 8 бит на каждый цвет), а также информация для внутреннего сдвигового регистра. Именно сдвиговый регистр позволяет определять, к какому светодиоду информация адресовывается. Таким образом можно соединять несколько светодиодов последовательно, при этом использовать все так же один вывод микроконтроллера (рис.6).

4. Адресуемый светодиод

Это RGB-светодиод, только с интегрированным контроллером WS2801 непосредственно на кристалле. Корпус светодиода выполнен в виде SMD компонента для поверхностного монтажа. Такой подход позволяет расположить светодиоды максимально близко друг другу, делая свечение более детализированным (рис.7).

В интернет-магазинах можно встретить адресные светодиодные ленты, когда в одном метре умещается до 144 штук (рис.8).

Стоит учесть, что один светодиод потребляет при полной яркости всего 60-70 мА, при подключении ленты, например, на 90 светодиодов, потребуется мощный блок питания с током не менее 5 ампер. Ни в коем случае не питайте светодиодную ленту через контроллер, иначе он перегреется и сгорит от нагрузки. Используйте внешние источники питания (рис.9).

5. Недостаток адресуемых светодиодов

Адресуемая светодиодная лента не может работать при слишком низких температурах: при -15 контроллер начинает подглючивать, на более сильном морозе велик риск его выхода из строя.

Второй недостаток в том, что если выйдет из строя один светодиод, следом по цепочке откажутся работать и все остальные: внутренний сдвиговый регистр не сможет передать информацию дальше.

6. Применение адресуемых светодиодных лент

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

Получается интересное решение, если светодиодную ленту использовать в качестве фоновой подсветки Ambilight для монитора компьютера (рис.10-11).

Если вы будете использовать микроконтроллеры на базе Arduino, вам понадобится библиотека FastLed для упрощения работы со светодиодной лентой ().

Среди прочих деталек в посылке пришел вот такой пакетик с интересными трехцветными RGB светодиодами.


Название RGB Led происходит от аббревиатуры трех основных цветов - R (Red, красный), G (Green, зеленый) и B (Blue, синий). Таким образот, RGB Led это комбинированный трехцветный светодиод, в корпусе которого в действительности размещены три светодиода разных цветов. Яркостью каждого цвета можно управлять отдельно, изменяя ток через соответствующий диод. теориетически, изменяя соотношение яркостей мы можем получить любой цвет, в том числе и белый.

На рисунке показана распиновка RGB светодиода с общим катодом.


Обычно трёхцветный светодиод имеет четыре вывода. Один вывод - общий для всех трех цветовых компонент, и три отдельных вывода для раздельного управления цветами. В зависимости от того, какие из электродов светодиодов соединены вместе внутри общего корпуса, RGB светодиод может быть с общим катодом (ОК) или с общим анодом (ОА). Это нужно иметь в виду при подключении светодиода к источнику тока. Мне приехали светодиоды с общим катодом.

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

RGB светодиод удобно использовать в качестве многофункционального индикатора. Один такой диод может отображать несколько состояний или режимов работы какого-либо устройства, таким образом мы экономим пространство на панели прибора. Например, при использовании такого индикатора в зарядном устройстве, красным цветом можно показывать процесс заряда, зеленым - окончание заряда а синим - неисправность аккумулятора.


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

Для иллюстрации работы RGB светодиода с управлением посредством ШИМ я собрал вот такую простую схему на основе маленького дешевого микроконтроллера Microchip PIC12F629.

LED1, LED2 и LED3 это соответственно красный, зеленый и синий компоненты нашего RGB светодиода. Вывод общего катода соединяется с минусом питания. Светодиоды подключены в выводам микроконтроллера через токоограничивающие резисторы R1..R3 сопротивлением 240 Ом. резистор R4 сопротивлением 1...10 килоом подтягивает вывод MCLR контроллера к плюсу питания. Это необходимо для правильной работы программы. Кнопкой S1 можно мерять последовательности световых эффектов. (См. далее)

Прошивку я залил в микроконтроллер с помощью моего самодельного программатора - клона фирменного PicKit2 . Эта простая конструкция была собрана на китайской макетной беспаечной плате типа Breadboard. вот так это выглядит:

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

Управление светодиодом.

Управление осуществляется с помощью кнопки S1 (см. схему), подключенной к порту GP5 микроконтроллера (вывод 2 микросхемы).

Одиночное нажатие на кнопку. Пауза или продолжение текущей последовательности.
Вы можете нажать S1 в любое время, чтобы остановить текущую последовательность и зафиксировать текущий цвет светодиода. Еще одно нажатие продолжит выполнение программы.

Двойное нажатие - выбор следующей последовательности.
дважды нажмите кнопку с промежутком менее 0,5 секунды. так как вы делаете "двойной щелчок" компьютерной мышкой. такое действие позволяет переключать имеющиеся в прошивке последовательности. При этом все значения ШИМ сбрасываются в 0, то есть светодиод гаснет, и начинается следующая последовательность. Когда вы переберете все последовательности, вы вернетесь на самую первую. Достижение последней секвенции индицируется тремя короткими вспышками синего и зеленого светодиодов

Нажатие и удерживание более 1.2 сек. - переход в режим сна. Текущее состояние светодиода и программы записывается в энергонезависимую память EEPROM и схема переходит в состояние "сна". Последующее длительное нажатие снова включает схему и последовательность продолжается.

В этой статье рассмотрены основы использования RGB (Red Green Blue (красный, зеленый, синий)) светодиода с Arduino.

Мы используем функцию analogWrite для управления цветом RGB светодиода.

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

То есть, мы будем регулировать яркость каждого светодиода и получать нужный цвет на выходе, как будто это палитра художника или словно вы настраиваете частоты на своем плеере. Для этого можно использовать переменные резисторы . Но в результате схема будет достаточно сложной. К счастью, Arduino предлагает нам функцию analogWrite. Если задействовать на плате контакты, отмеченные символом «~», мы можем регулировать напряжение, которое подается на соответствующий светодиод.

Необходимые узлы

Для того, чтобы реализовать наш небольшой проект, нам понадобятся:

1 RGB светодиод 10 мм

3 резистора на 270 Ω (красная, фиолетовая, коричневая полоски). Вы можете использовать резистор с сопротивлением до 1 кОм, но не забывайте, что с повышением сопротивления, светодиод начинает светить не так ярко.


Шесть цифр номера соответствуют трем парам номеров; первая пара – красная составляющая цвета, следующие две цифры – зеленая составляющая, а последняя пара – синяя составляющая. То есть, красному цвету соответствует выражение #FF0000, так как это будет максимальная яркость красного светодиода (FF - это 255 в шестнадцатеричной системе), а красная и синяя компоненты равны 0.

Попробуйте зажечь светодиод, используя, например, оттенок индиго: #4B0082.

Красная, зеленая и синяя компоненты цвета индиго – это 4B, 00 и 82 соответственно. Мы можем использовать их в пределах функции "setColor" с помощью следующей строки кода:

setColor(0x4B, 0x0, 0x82); // индиго

Для трех компонент мы используем запись, в которой перед каждой из них ставится символ "0x" в начале.

Когда будете играться с разными оттенками RGB светодиода, не забывайте после использования каждого из них устанавливать задержку ‘delay’.

ШИМ и Arduino

Широтно импульсная модуляция (ШИМ (PWM на английском)) – это один из методов управления питанием. В нашем случае ШИМ используется для управления яркостью каждого отдельного светодиода.

На рисунке ниже схематично изображен сигнал с одного из ШИМ пинов Arduino.


Каждую 1/500 секунды ШИМ выход генерирует импульс. Длина этого импульса контролируется функцией "analogWrite". То есть, "analogWrite(0)" не будет генерировать никакого импульса, а "analogWrite(255)" сгенерирует сигнал, который будет длится до самого начала следующего. То есть, будет создаваться впечатление, что подается один непрерывный импульс.

Когда в пределах функции analogWrite мы указываем значение в диапазоне от 0 до 255, мы генерируем импульс определенной длительности. Если длина импульса составляет 5%, мы подадим на указанный выход Arduino 5% от максимально доступного питания и создается впечатление, что светодиод горит не на максимальную яркость.

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

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

Схема электрическая и описание

Во время тестирования контроллер подключался к 50 Вт на 12 В галогенным лампочкам, по одной на каждый канал. Температура МОСФЕТ транзисторов после 5 мин прогона составила чуть больше 50C. Теоретически общая нагрузка для всех трех каналов RGB не должна превышать 15 ампер.

Указанный транзистор STP36NF06L работает при низком напряжении на затворе. Вы можете использовать такие другие стандартные N-канальные полевые транзисторы, которые будут нормально работать при токах нагрузки до 5 ампер и не требовать слишком большого сигнала на входе для полного отпирания.

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

Вот один из вариантов реализации, который использует 20 светодиодов RGB типа Пиранья. Собрана лампа в коробе 25 х 50 х 1000 мм из алюминия. Позже она была приспособлена под настенную полку, чтобы осветить стол. Свет очень яркий и дает хорошее ровное освещение без какого-либо дополнительного рассеивателя.

Теперь же разберемся с многоцветным светодиодом, который часто называют сокращенно: RGB-светодиод .

RGB — это аббревиатура, которая расшифровывается как: Red — красный, Green — зеленый, Blue — синий. То есть внутри этого устройства размещается сразу три отдельных светодиода. В зависимости от типа, RGB-светодиод может иметь общий катод или общий анод.

1. Смешение цветов

Чем RGB-светодиод, лучше трех обычных? Всё дело в свойстве нашего зрения смешивать свет от разных источников, размещенных близко друг к другу. Например, если мы поставим рядом синий и красный светодиоды, то на расстоянии несколько метров их свечение сольется, и глаз увидит одну фиолетовую точку. А если добавим еще и зеленый, то точка покажется нам белой. Именно так работают мониторы компьютеров, телевизоры и уличные экраны.

Матрица телевизора состоит из отдельно стоящих точек разных цветов. Если взять лупу и посмотреть через нее на включенный монитор, то эти точки можно легко увидеть. А вот на уличном экране точки размещаются не очень плотно, так что их можно различить невооруженным глазом. Но с расстояния несколько десятков метров эти точки неразличимы.

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

2. Подключение RGB-светодиода к Ардуино

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

В уроке мы используем RGB-светодиод с общим катодом, так что провод к земле будет только один.

Принципиальная схема

Внешний вид макета

3. Программа для управления RGB-светодиодом

Составим простую программу, которая будет по очереди зажигать каждый из трех цветов.

Const byte rPin = 3; const byte gPin = 5; const byte bPin = 6; void setup() { pinMode(rPin, OUTPUT); pinMode(gPin, OUTPUT); pinMode(bPin, OUTPUT); } void loop() { // гасим синий, зажигаем красный digitalWrite(bPin, LOW); digitalWrite(rPin, HIGH); delay(500); // гасим красный, зажигаем зеленый digitalWrite(rPin, LOW); digitalWrite(gPin, HIGH); delay(500); // гасим зеленый, зажигаем синий digitalWrite(gPin, LOW); digitalWrite(bPin, HIGH); delay(500); }

Загружаем программу на Ардуино и наблюдаем результат.

Немного оптимизируем программу: вместо переменных rPin, gPin и bPin применим массив. Это нам поможет в следующих заданиях.

Const byte rgbPins = {3,5,6}; void setup() { for(byte i=0; i<3; i++) pinMode(rgbPins[i], OUTPUT); } void loop() { digitalWrite(rgbPins, LOW); digitalWrite(rgbPins, HIGH); delay(500); digitalWrite(rgbPins, LOW); digitalWrite(rgbPins, HIGH); delay(500); digitalWrite(rgbPins, LOW); digitalWrite(rgbPins, HIGH); delay(500); }

4. Семь цветов радуги

Теперь попробуем зажигать одновременно по два цвета. Запрограммируем такую последовательность цветов:

  • красный
  • красный + зеленый = желтый
  • зеленый
  • зеленый + синий = голубой
  • синий
  • синий + красный = фиолетовый

Оранжевый цвет мы для упрощения опустили. Так что, получилось шесть цветов радуги 🙂

Const byte rgbPins = {3,5,6}; const byte rainbow = { {1,0,0}, // красный {1,1,0}, // жёлтый {0,1,0}, // зелёный {0,1,1}, // голубой {0,0,1}, // синий {1,0,1}, // фиолетовый }; void setup() { for(byte i=0; i<3; i++) pinMode(rgbPins[i], OUTPUT); } void loop() { // перебираем все шесть цветов for(int i=0; i<6; i++){ // перебираем три компоненты каждого из шести цветов for(int k=0; k<3; k++){ digitalWrite(rgbPins[k], rainbow[i][k]); } delay(1000); } }

В результате работы программы получается:

Your browser does not support the video tag.

5. Плавное изменение цвета

Мы не зря подключили RGB-светодиод к выводам 3, 5 и 6. Как известно, эти выводы позволяют генерировать ШИМ сигнал разной скважности. Другими словами, мы можем не просто включать или выключать светодиод, а управлять уровнем напряжения на нем. Делается это с помощью функции analogWrite .

Сделаем так, что наш светодиод будет переходить между цветами радуги не скачкообразно, а плавно.

Const byte rgbPins = {3,5,6}; int dim = 1; void setup() { for(byte i=0; i<3; i++){ pinMode(rgbPins[i], OUTPUT); } // начальное состояние - горит красный цвет analogWrite(rgbPins, 255); analogWrite(rgbPins, 0); analogWrite(rgbPins, 0); } void loop() { // гасим красный, параллельно разжигаем зеленый for(int i=255; i>=0; i--){ analogWrite(rgbPins, i/dim); analogWrite(rgbPins, (255-i)/dim); delay(10); } // гасим зеленый, параллельно разжигаем синий for(int i=255; i>=0; i--){ analogWrite(rgbPins, i/dim); analogWrite(rgbPins, (255-i)/dim); delay(10); } // гасим синий, параллельно разжигаем красный for(int i=255; i>=0; i--){ analogWrite(rgbPins, i/dim); analogWrite(rgbPins, (255-i)/dim); delay(10); } }

Переменная dim определяет яркость свечения. При dim = 1 имеем максимальную яркость.

Загружаем программу на Ардуино.

Your browser does not support the video tag.

Задания

  1. Индикатор температуры. Добавим в схему термистор и подключим его к аналоговому входу. Светодиод должен менять свой цвет в зависимости от температуры термистора. Чем ниже температура, тем более синий цвет, а чем выше, тем более красный.
  2. RGB лампа с регулятором. Добавим в схему три переменных резистора и подключим их к аналоговым входам. Программа должна непрерывно считывать значения резисторов и менять цвет соответствующей компоненты RGB-светодиода.


Эта статья также доступна на следующих языках: Тайский

  • Next

    Огромное Вам СПАСИБО за очень полезную информацию в статье. Очень понятно все изложено. Чувствуется, что проделана большая работа по анализу работы магазина eBay

    • Спасибо вам и другим постоянным читателям моего блога. Без вас у меня не было бы достаточной мотивации, чтобы посвящать много времени ведению этого сайта. У меня мозги так устроены: люблю копнуть вглубь, систематизировать разрозненные данные, пробовать то, что раньше до меня никто не делал, либо не смотрел под таким углом зрения. Жаль, что только нашим соотечественникам из-за кризиса в России отнюдь не до шоппинга на eBay. Покупают на Алиэкспрессе из Китая, так как там в разы дешевле товары (часто в ущерб качеству). Но онлайн-аукционы eBay, Amazon, ETSY легко дадут китайцам фору по ассортименту брендовых вещей, винтажных вещей, ручной работы и разных этнических товаров.

      • Next

        В ваших статьях ценно именно ваше личное отношение и анализ темы. Вы этот блог не бросайте, я сюда часто заглядываю. Нас таких много должно быть. Мне на эл. почту пришло недавно предложение о том, что научат торговать на Амазоне и eBay. И я вспомнила про ваши подробные статьи об этих торг. площ. Перечитала все заново и сделала вывод, что курсы- это лохотрон. Сама на eBay еще ничего не покупала. Я не из России , а из Казахстана (г. Алматы). Но нам тоже лишних трат пока не надо. Желаю вам удачи и берегите себя в азиатских краях.

  • Еще приятно, что попытки eBay по руссификации интерфейса для пользователей из России и стран СНГ, начали приносить плоды. Ведь подавляющая часть граждан стран бывшего СССР не сильна познаниями иностранных языков. Английский язык знают не более 5% населения. Среди молодежи — побольше. Поэтому хотя бы интерфейс на русском языке — это большая помощь для онлайн-шоппинга на этой торговой площадке. Ебей не пошел по пути китайского собрата Алиэкспресс, где совершается машинный (очень корявый и непонятный, местами вызывающий смех) перевод описания товаров. Надеюсь, что на более продвинутом этапе развития искусственного интеллекта станет реальностью качественный машинный перевод с любого языка на любой за считанные доли секунды. Пока имеем вот что (профиль одного из продавцов на ебей с русским интерфейсом, но англоязычным описанием):
    https://uploads.disquscdn.com/images/7a52c9a89108b922159a4fad35de0ab0bee0c8804b9731f56d8a1dc659655d60.png