Проект управления rgb светодиодами авр. Ардуино: трехцветный светодиод — RGB. Плавное изменение цвета

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

Внутреннее устройство

На самом деле RGB-светодиод - это три одноцветных кристалла совмещенные в одном корпусе. Название RGB расшифровывается, как Red - красный, Green - зеленый, Blue - синий соответственно цветам, которые излучает каждый из кристаллов.

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

На этой картинке вы видите принцип смешивания цветов, для получения всех оттенков.

Кристаллы в RGB-светодиоды могут быть соединены по схеме:

С общим анодом;

С общим катодом;

Не соединены.

В первых двух вариантах вы увидите, что у светодиода есть 4 вывода:

Или 6-тью выводами в последнем случае:

Вы можете видеть на фотографии под линзой четко видны три кристалла.

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

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

Естественно не обошлось и без лент с такими светодиодами.

На этой картинке изображена лента с RGB-светодиодами , собранные по схеме с общим анодом, регулировка интенсивности свечения осуществляется путем управления «-» (минусом) источника питания.

Для изменения цвета RGB-ленты используются специальные RGB-контроллеры - устройства для коммутации напряжения подаваемого на ленту.

Вот цоколевка RGB SMD5050:

И ленты, особенностей работы с RGB-лентами нет, всё остается также как и с одноцветными моделями.

Для них есть и коннекторы для подсоединения светодиодной ленты без пайки.

Вот распиновка 5-ти мм РГБ-светодиода:

Как изменяется цвет свечения

Регулировка цвета осуществляется путем регулировки яркости излучения каждым из кристаллов. Мы уже рассматривали .

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

Да такого мощного устройства в корпусе размером с блок питания.

Они подключаются к ленте по такой схеме:

Так как сечение дорожек на ленте не позволяет подключать последовательно с ней следующий отрезок ленты, если длина первого превышает 5м, нужно подключать второй отрезок проводами напрямую от РГБ-контроллера.

Но можно выйти из положения, и не тянуть дополнительных 4 провода на 5 метров от контроллера и использовать RGB-усилитель. Для его работы нужно протянуть всего 2 провода (плюс и минус 12В) или запитать еще один блок питания от ближайшего источника 220В, а также 4 «информационных» провода от предыдущего отрезка (R, G и B) они нужны для получения команд от контроллера, чтобы вся конструкция светилась одинаково.

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

Регулируем RGB-led своими руками

Итак, есть два варианта для управления RGB-светодиодами:

Вот вариант схемы без использования ардуин и других микроконтроллеров, с помощью трёх драйверов CAT4101, способных выдавать ток до 1А.

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

Заключение

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

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

Ассортимент цветных светодиодных лент достаточно обширен и их правильный выбор – дело довольно сложное. И все же, какими бы идеальными они ни были, для их правильной работы необходим блок питания 12 В (реже 24 В) и, конечно же, блок управления с параметрами, подходящими именно под выбранную световую полосу.

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

Принцип работы

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

Контроллеры различаются как по мощности, так и по количеству выходов, т. е. подключаемых к нему световых полос. Есть устройства с пультом, а бывают и без ПДУ. Также есть различие и по сигналу, поступающему на ленту, т. к. полоса может быть либо аналоговой, либо цифровой. Различие между ними существенное, а вот сходство одно. Все они работают только с блоком питания (трансформатором), потому как светодиодная полоса имеет номинальное напряжение в 12 В, а не 220, как думают некоторые.

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

Варианты подключения

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

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

А потому при необходимости осветить более длинные расстояния применяются следующие способы и схемы подключения.

Две светодиодные ленты

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

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

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

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

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

Контроллер своими руками


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

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

Схема контроллера, сделанного своими руками

Как раз внутри этого блока управления гирляндой можно увидеть три тиристорных выхода. Это и будут направления R, G и B.

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

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

Стоит ли игра свеч?

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

Теперь же разберемся с многоцветным светодиодом, который часто называют сокращенно: 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-светодиода.

Для управления этими устройствами используется RGB-контроллер. Но, кроме него, в последние годы применяется плата Arduino.

Ардуино – принцип действия

плата Arduino

Плата Ардуино – это устройство, на котором установлен программируемый микроконтроллер. К нему подключены различные датчики, органы управления или encoder и, по заданному скетчу (программе), плата управляет моторами, светодиодами и прочими исполнительными механизмами, в том числе и другими платами Ардуино по протоколу SPI. Контроль устройства может осуществляться через дистанционный пульт, модуль Bluetooth, HC-06, Wi-Fi, ESP или internet, и кнопками. Одни из самых популярных плат – Arduino Nano и Arduino Uno, а также Arduino Pro Mini – устройство на базе микроконтроллера ATmega 328


Внешний вид Arduino Pro Mini
Внешний вид Arduino Uno
Внешний вид Arduino micro

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

Принцип управления нагрузкой через Ардуино


управление Arduino

На плате есть много выходов, как цифровых, имеющих два состояния — включено и выключено, так и аналоговых, управляемых через ШИМ-controller с частотой 500 Гц.

Но выходы рассчитаны на ток 20 – 40 мА с напряжением 5 В. Этого хватит для питания индикаторного RGB-светодиода или матричного светодиодного модуля 32×32 мм. Для более мощной нагрузки это недостаточно.

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

  • Реле. Кроме отдельных реле с напряжением питания 5В есть целые сборки с разным количеством контактов, а также со встроенными пускателями.
  • Усилители на биполярных транзисторах. Мощность таких устройств ограничена током управления, но можно собрать схему из нескольких элементов или использовать транзисторную сборку.
  • Полевые или MOSFET-транзисторы. Они могут управлять нагрузкой с токами в несколько ампер и напряжением до 40 – 50 В. При подключении мосфета к ШИМ и электродвигателю или к другой индуктивной нагрузке, нужен защитный диод. При подключении к светодиодам или LED-лампам в этом нет необходимости.
  • Платы расширения.

Подключение светодиодной ленты к Ардуино


подключение светодиодной ленты к Arduino

Мнение эксперта

Алексей Бартош

Специалист по ремонту, обслуживанию электрооборудования и промышленной электроники.

Задать вопрос эксперту

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

Через реле


Подключение через реле

Реле подключается к устройству на цифровой выход. Полоса, управляемая с его помощью имеет только два состояния — включенная и выключенная. Для управления red-blue-green ленточкой необходимы три реле. Ток, который может контролировать такое устройство, ограничен мощностью катушки (маломощная катушка не в состоянии замыкать большие контакты). Для подсоединения большей мощности используются релейные сборки.

С помощью биполярного транзистора


Подключение с помощью транзистора

Для усиления выходного тока и напряжения можно использовать биполярный транзистор. Он выбирается по току и напряжению нагрузки. Ток управления не должен быть выше 20 мА, поэтому подается через токоограничивающее сопротивление 1 – 10 кОм.

Транзистор лучше применять n-p-n с общим эмиттером. Для большего коэффициента усиления используется схема с несколькими элементами или транзисторная сборка (микросхема-усилитель).

С помощью полевого транзистора

Кроме биполярных, для управления полосами используются полевые транзисторы. Другое название этих приборов – МОП или MOSFET-transistor.

Такой элемент, в отличие от биполярного, управляется не током, а напряжением на затворе. Это позволяет малому току затвора управлять большими токами нагрузки – до десятков ампер.

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

С помощью плат расширения


Подключение Arduino с помощью плат расширения

Кроме реле и транзисторов используются готовые блоки и платы расширения.

Это может быть Wi-Fi или Bluetooth, драйвер управления электродвигателем, например, модуль L298N или эквалайзер. Они предназначены для управления нагрузками разной мощности и напряжения. Такие устройства бывают одноканальными – могут управлять только монохромной лентой, и многоканальными – предназначены для устройств RGB и RGBW, а также лент со светодиодами WS 2812.

Пример программы


Arduino и светодиодная лента

Платы Ардуино способны управлять светодиодными конструкциями по заранее заданным программам. Их библиотеки можно скачать с официально сайта , найти в интернете или написать новый sketch (code) самому. Собрать такое устройство можно своими руками.

Вот некоторые варианты использования подобных систем:

  • Управление освещением. С помощью датчика освещения включается свет в комнате как сразу, так и с постепенным нарастанием яркости по мере захода солнца. Включение может также производиться через wi-fi, с интеграцией в систему «умный дом» или соединением по телефону.
  • Включение света на лестнице или в длинном коридоре. Очень красиво смотрится диодная подсветка каждой ступеньки в отдельность. При подключении к плате датчика движения, его срабатывание вызовет последовательное, с задержкой времени включение подсветки ступеней или коридора, а отключение этого элемента приведет к обратному процессу.
  • Цветомузыка. Подав на аналоговые входы звуковой сигнал через фильтры, на выходе получится цветомузыкальная установка.
  • Моддинг компьютера. С помощью соответствующих датчиков и программ цвет светодиодов может зависеть от температуры или загрузки процессора или оперативной памяти. Работает такое устройство по протоколу dmx 512.
  • Управление скоростью бегущих огней при помощи энкодера. Подобные установки собираются на микросхемах WS 2811, WS 2812 и WS 2812B.

Видеоинструкция

Продолжаем осваивать ШИМ, на этот раз для управления цветом RGB светодиода.

По сути, RGB светодиод совмещает в себе три обычных светодиода — красный, зеленый и синий.

Соответственно у RGB светодиода 4 ножки: для управления каждым из цветов используется по одной ножке и одна общая (обычно самая длинная). Общим может быть как катод(-), так и анод(+). На схеме приведен пример, для схемы с общим анодом.

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

Теперь о реализации, мне достался светодиод с общим катодом, номинальный ток, которого по даташиту составлял 20мА. Однако, есть небольшой нюанс, у каждого цвета свой порог зажигания. Например, у красного светодиода, 20мА соответствовало напряжению 2.1В, зеленому и синему — напряжение 3.2В. В целом ножка микроконтроллера должна выдерживать такой ток, поэтому можно смело подключать через токоограничивающие резисторы к микроконтроллеру.
Я же использовал pnp транзисторы, однако эту идею никому не навязываю.

У Atmega8 есть 3 канала ШИМ: два канала на таймере1(ножки PB.1 — OCR1A, PB.2 — OCR1B) и один таймере2(ножка PB.3 — OCR2). Регулируя заполнение ШИМ, мы регулируем напряжение на светодиоде, соответственно его яркость.

Создаем новый проект, настраиваем таймер2.

Так как OCR2 8-битный, а OCR1 10-битный, то максимальное значение OCR2=0хFF(255), а OCR1A/B=0х3FF(1023), т.е. в 4 раза больше. Учитываем эту особенность, поэтому чтобы каналы регулировались одинаково, настраиваем частоту таймера в 4 раза больше. Соответственно, максимальная яркость для OCR2 будет при 0xFF, а для OCR1 при 0x3FF.

Настраиваем ножки PB1-PB3 как выход. В основной цикл программы дописываем код, который плавно зажигает красный от 0 до 255, а затем плавно тушит его от 255 до 0.

while(OCR1A<0x3FF) { OCR1A++; delay_ms(2); } while(OCR1A>0x00) { OCR1A--; delay_ms(2); }

Результат:

Если нужно получить, некоторый определенный цвет, например пурпурный, открываем какой нибудь графический редактор, например Paint.net заходим в палитру нажимаем на понравившийся цвет, справа, где написано RGB отобразятся его числовые значения R=255, B=220.

Канал R у меня на OCR2, поэтому смело в OCR2 записываем 0xFF(255), канал B на OCR1A, но т.к. максимальное значение 1023, то по пропорции пересчитываем:

(220*1023)/255=882 вот его смело пихаем в OCR1A, результат довольно таки похож.




Top