RGB светодиод и Arduino. Подключение и управление светодиодной лентой к arduino

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

Общий принцип действия драйвера показан на рисунке 1. Два генератора генерируют прямоугольные импульсы с заполнением 50%, но немного отличаются по частоте (до десятков Гц).

На выходе логического элемента EX-OR (исключающее ИЛИ) высокий уровень появиться только тогда, когда на обоих выходах генераторов одновременно появится 1 или 0.

Диаграмма сигналов на выходах генераторов приведена на рисунке 2. Как видно, на выходе логического элемента EX-OR появляется меандр с переменным заполнением 0…100%. Заполнение это будет изменяться тем медленнее, чем меньше будет разность частот обоих генераторов.

Микросхема CD4060 это 14-разрядный двоичный счётчик с генератором. Миниатюрный дроссель L1, конденсаторы C1 и C2, а также логические элементы CD4060 образуют генератор высокой частоты, работающий на частоте примерно 700 кГц. Эта частота делится в этом счетчике на 212.

Сигнал с генератора также подается на входы CLK 12-разрядных двоичных счётчиков на CD4040, которые подсчитывают импульсы с генератора.

Когда отсчет доходит до того, что на выходе Q11 (ножка 15) появляется логическая единица, на выходе элемента NOT будет низкое состояние, приводящее к блокировке на доли секунды подсчета импульсов (время зависит от емкости C3 и суммарного сопротивления R2 и PR1).

И так происходит при каждом появлении высокого уровня на выходе Q11 CD4040, то есть, как можно заметить, при каждом изменении состояния на выходе Q12 CD4040. Это приводит к тому, что на выходе Q12 CD4060 частота несколько выше от частоты на выходе Q12 CD4040 (разница зависит от C3, R и чем больше значение, тем больше разница).

Благодаря этой минимальной разнице, на элементах EX-OR появляется меандр переменного заполнения по времени. Это в свою очередь приводит к тому, что светодиод, подключенный к выходу этой, цепи будет плавно загораться и гаснуть.

Переменными резисторами можно регулировать скорость изменения заполнения (скорость включения и выключения светодиодов). Так же в схеме добавлен фотодатчик на элементах T4, T5 и R14, для того чтобы схема автоматически включалась только в темное время суток. От сопротивления резистора R14 зависит, при какой яркости схема все еще будет работать.

(233,6 Kb, скачано: 422)

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

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

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

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

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

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

На этом занятии мы будем использовать цифровые и аналоговые выходы с «широтно импульсной модуляцией» на плате Arduino для включения RGB светодиода с различными оттенками. Использование RGB LED ленты позволяет создать освещение интерьера с любым оттенком цвета. Расскажем про устройство и распиновку полноцветного (RGB) светодиода и рассмотрим директиву #define в языке C++.

Устройство и назначение RGB светодиода

Для отображения всей палитры оттенков вполне достаточно три цвета, используя RGB синтез (Red - красный, Green - зеленый, Blue - синий). RGB палитра используется не только в графических редакторах, но и в сайтостроении . Смешивая цвета в разной пропорции можно получить практически любой цвет. Преимущества RGB светодиодов в простоте конструкции, небольших габаритах и высоком КПД светоотдачи.

RGB светодиоды объединяют три кристалла разных цветов в одном корпусе. RGB LED имеет 4 вывода — один общий (анод или катод имеет самый длинный вывод) и три цветовых вывода. К каждому цветовому выходу следует подключать резистор. Кроме того, модуль RGB LED Arduino может сразу монтироваться на плате и иметь встроенные резисторы — этот вариант более удобный для занятий в кружке .

Фото. Распиновка RGB светодиода и модуль с RGB светодиодом для Ардуино

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

Управление RGB светодиодом на Ардуино

Аналоговые выходы на Ардуино используют «широтно импульсную модуляцию» для получения различной силы тока. Мы можем подавать на все три цветовых входа на светодиоде различное значение ШИМ-сигнала в диапазоне от 0 до 255, что позволит нам получить на RGB LED Arduino практически любой оттенок света.

Для занятия нам понадобятся следующие детали:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • макетная плата;
  • RGB светодиод;
  • 3 резистора 220 Ом;
  • провода «папа-мама».

Фото. Схема подключения RGB LED к Ардуино на макетной плате

Модуль «RGB светодиод» можно подключить напрямую к плате, без проводов и макетной платы. Подключите модуль с полноцветным RGB светодиодом к следующим пинам: Минус — GND, B — Pin13, G — Pin12, R — Pin11 (смотри первое фото). Если вы используете RGB LED (Light Emitting Diode), то подключите его по схеме на фото. После подключения модуля и сборки схемы на Ардуино загрузите скетч.

Скетч для мигания RGB светодиодом

#define RED 11 // Присваиваем имя RED для пина 11 #define GREEN 12 // Присваиваем имя GREEN для пина 12 #define BLUE 13 // Присваиваем имя BLUE для пина 13 void setup () { pinMode(RED, OUTPUT ); pinMode(GREEN, OUTPUT ); // Используем Pin12 для вывода pinMode(BLUE, OUTPUT ); // Используем Pin13 для вывода } void loop () { digitalWrite (RED, HIGH ); // Включаем красный свет digitalWrite (GREEN, LOW ); digitalWrite (BLUE, LOW ); delay (1000); digitalWrite (RED, LOW ); digitalWrite (GREEN, HIGH ); // Включаем зеленый свет digitalWrite (BLUE, LOW ); delay (1000); // Устанавливаем паузу для эффекта digitalWrite (RED, LOW ); digitalWrite (GREEN, LOW ); digitalWrite (BLUE, HIGH ); // Включаем синий свет delay (1000); // Устанавливаем паузу для эффекта }

Пояснения к коду:

  1. с помощью директивы #define мы заменили номер пинов 11, 12 и 13 на соответствующие имена RED , GREEN и BLUE . Это сделано для удобства, чтобы не запутаться в скетче и понимать какой цвет мы включаем;
  2. в процедуре void setup() мы назначили пины 11, 12 и 13, как выходы;
  3. в процедуре void loop() мы поочередно включаем все три цвета на RGB LED.
  4. Плавное управление RGB светодиодом

    Управление rgb светодиодом на Arduino можно сделать плавным, используя аналоговые выходы с «широтно импульсной модуляцией». Для этого цветовые входы на светодиоде необходимо подключить к аналоговым выходам, например, к пинам 11, 10 и 9. И подавать на них различные значения ШИМ (PWM) для различных оттенков. После подключения модуля с помощью проводов «папа-мама» загрузите скетч.

    Скетч для плавного мигания RGB светодиода

    #define RED 9 // Присваиваем имя RED для пина 9 #define GREEN 10 // Присваиваем имя GREEN для пина 10 #define BLUE 11 // Присваиваем имя BLUE для пина 11 void setup () { pinMode (RED, OUTPUT ); // Используем Pin9 для вывода pinMode (GREEN, OUTPUT ); // Используем Pin10 для вывода pinMode (BLUE, OUTPUT ); // Используем Pin11 для вывода } void loop () { analogWrite (RED, 50); // Включаем красный свет analogWrite (GREEN, 250); // Включаем зеленый свет analogWrite (BLUE, 150); // Включаем синий свет }

    Пояснения к коду:

    1. с помощью директивы #define мы заменили номер пинов 9, 10 и 11 на соответствующие имена RED , GREEN и BLUE . Это сделано для удобства, чтобы не запутаться в скетче и понимать какой цвет мы включаем;
    2. пины 11, 12 и 13 мы использовали, как аналоговые выходы analogWrite .

Для управления этими устройствами используется 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 — это аббревиатура, которая расшифровывается как: 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-светодиода.



Top