Управление светодиодной лентой при помощи Аrduino. Подключение RGB светодиода к Ардуино

Новости 10.07.2019
Новости

В прошлый раз был рассмотрен способ подключения светодиодной ленты к ардуино через драйвер L298. Управление цветом осуществлялось программно - функция Random. Теперь пришла пора разобраться, как управлять цветом светодиодной ленты на основании показаний датчика температуры и влажности DHT 11.

За основу взят пример подключения светодиодной ленты через драйвер L298. Плюсом ко всему в пример добавлен дисплей LCD 1602, который будет отображать показания датчика DHT 11.

Для проекта понадобятся следующие элементы Ардуино:

  1. Плата Ардуино УНО.
  2. Дисплей LCD 1602 + I2C.
  3. Датчик температуры и влажности DHT
  4. Светодиодная лента.
  5. Драйвер L298.
  6. Блок питания 9-12В.
  7. Корпус для ардуино и дисплея (по желанию).

Первым делом посмотрим на принципиальную схему (рис. 1). На ней можно увидеть, как нужно подключить все вышеперечисленные элементы. В сборке схемы и подключении ничего сложного нет, однако стоит упомянуть об одном нюансе, о котором большинство людей забывают, и в итоге получают неправильные результаты работы LED – ленты с Ардуино.

Рисунок 1. Принципиальная схема подключения Arduino и светодиодной ленты с датчиком DHT 11

Во избежание некорректной работы светодиодной ленты (мерцание, несоответствие цветов, неполное свечение и т.д.), питание всей схемы необходимо сделать общим, т.е. объединить контакты GND (земля) контроллера Ардуино и драйвера L298 (светодиодной ленты). Как это сделать, можно посмотреть на схеме.

Пару слов о подключении датчика влажности. Если покупать голый DHT 11, без обвязки, то между первым и вторым контактами, 5В и Data, соответственно, нужно впаять резистор номиналом 5-10 кОм. Диапазон измерения температуры и влажности написан на обратной стороне корпуса датчика DHT 11. Температура: 0-50 градусов по Цельсию. Влажность: 0-80%.


Рисунок 2. Правильное подключение датчика влажности DHT 11

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

Для программирования датчика DHT 11 понадобится дополнительная библиотека.

Код программы Arduino и RGB – лента. Изменение цвета ленты в зависимости от влажности.

#include #include //библиотека для работы с дисплеем LCD 1602 #include //библиотека для работы с датчиком влажности и температуры DHT 11 int chk; //переменная будет хранить все данные с датчика DHT11 int hum; //переменная будет хранить показания влажности с датчика DHT11 dht11 DHT; //объект типа DHT #define DHT11_PIN 4 //контакт Data датчика DHT11 подключен на вход 4 #define LED_R 9 // пин для канала R #define LED_G 10 // пин для канала G #define LED_B 11 // пин для канала B //переменные будут хранить значения цветов //при смешивании всех трех цветов будет получаться необходимый цвет int led_r=0, led_g=0, led_b=0; //объявление объекта дисплея с адресом 0х27 //не забываем использовать в проекте дисплей через плату I2C LiquidCrystal_I2C lcd(0x27,16,2); void setup() { //создание дисплея lcd.init(); lcd.backlight(); // объявляем пины выходами pinMode(LED_R, OUTPUT); pinMode(LED_G, OUTPUT); pinMode(LED_B, OUTPUT); } void loop() { chk = DHT.read(DHT11_PIN);//читаем данные с датчика DHT11 //вывод данных на дисплей lcd.print("Temp: "); lcd.print(DHT.temperature, 1); lcd.print(" C"); lcd.setCursor(0,1); lcd.print("Hum: "); lcd.print(DHT.humidity, 1); lcd.print(" %"); delay(1500); //для корректной работы датчика нужна задержка на опрос lcd.clear(); hum = DHT.humidity; //берем показания влажности //в диапозоне от 19 до 30% влажности выдать зеленый цвет if ((hum >= 19) && (hum <= 30)) { led_r = 1; led_g = 255; led_b = 1; } //в диапозоне от 31 до 40% влажности выдать красный цвет if ((hum >= 31) && (hum <= 40)) { led_r = 255; led_g = 1; led_b = 1; } //в диапозоне от 41 до 49% влажности выдать синий цвет if ((hum >= 41) && (hum <= 49)) { led_r = 1; led_g = 1; led_b = 255; } // подача сигналов цвета на выхода analogWrite(LED_R, led_r); analogWrite(LED_G, led_g); analogWrite(LED_B, led_b); }

Метки: Метки

В данной статье мы расскажем о цветных светодиодах, отличии простого 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 для упрощения работы со светодиодной лентой ().

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

Процессор ATmega управляет программой-скетчем, контролируя многочисленные дискретные выводы, аналоговые и цифровые входы/выходы, ШИМ-контроллеры.

Принцип действия Arduino

«Сердце» платы Arduino - микроконтроллер, к которому подключаются датчики, управляющие элементы. Заданная программа (называется «скетч») позволяет управлять электродвигателями, светодиодами в лентах и других осветительных приборах, даже используется для контроля над другой платой Arduino через протокол SPI. Контроль осуществляется при помощи пульта ДУ, Bluetooth-модуля или сети Wi-Fi.

Для программирования используется открытый исходный код на ПК. Для загрузки программ управления можно пользоваться USB-коннектором.

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

На плате Arduino есть порты двух типов - цифровые и аналоговые. Первый имеет два состояния - «0» и «1» (логические ноль и единица). При подключении светодиода к плате в одном состоянии он будет светиться, в другом - нет.

Аналоговый вход, по сути, - ШИМ-контроллер, регистрирующий сигналы частотой около 500 Гц. Такие сигналы подаются на контроллер с настраиваемой скважностью. Аналоговый вход позволяет не просто включать или отключать управляемый элемент, но и изменять значение тока (напряжения).

При прямом подключении через порт используйте слабые светодиоды, добавляя к ним ограничительный резистор. Более мощная нагрузка выведет его из строя. Для организации управления светодиодной лентой и другим осветительным прибором примените электронный ключ (транзистор).

Подключение к Arduino

Прямое подключение светодиодной ленты к Arduino уместно только в случае применения слабых LED-диодов. Для светодиодной ленты между ней и платой необходимо установить дополнительные электротехнические элементы.

Через реле

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

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

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

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

Обратите внимание! В идеале нужно пользоваться транзистором n-p-n типа на базе общего эмиттера. Если требуется большое усиление, примените транзисторную сборку.

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

Вместо биполярных транзисторов для управления светодиодными лентами возьмите полевые (сокращенно - МОП). Разница между ними связана с принципом управления: биполярные изменяют ток, полевые - напряжение на затворе. Благодаря этому небольшой ток затвора управляет большой нагрузкой (десятками ампер).

Обязательно добавьте к схеме резистор для ограничения тока. Из-за высокой чувствительности к помехам к выходу контроллера подключается масса резистора на 10 кОм.

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

Если нет желания использовать реле и транзисторы, можно купить целые блоки - платы расширения. К ним относятся Wi-Fi, Bluetooth, эквалайзер, драйвер и т. д., которые необходимы для управления нагрузкой разных мощностей и напряжений. Это могут быть как одноканальные элементы, которые подойдут монохромным лентам, так и многоканальные (для управления цветными RGB-лентами).

Различные программы

Библиотеки с программами для платы Arduino можно загрузить с официального сайта или найти в Интернете на других информационных ресурсах. Если есть навыки, можете даже самостоятельно написать скетч-программу (исходный код). Для сбора электрической цепи не требуется каких-то специфичных знаний.

Варианты применения системы под управлением Arduino:

  1. Освещение. Наличие датчика позволит задать программу, в соответствии с которой свет в комнате либо появляется сразу, либо плавно включается параллельно заходу солнца (с увеличением яркости). Для включения можно использовать Wi-Fi, телефон и интеграцию в систему «Умный дом».
  2. Освещение коридора и лестничных площадок. Arduino позволит организовать освещение каждой детали (к примеру, ступени) отдельно. Добавьте в плату датчик движения, чтобы адресные светодиоды загорались последовательно в зависимости от того места, где зафиксировано движение объекта. Если движения нет, диоды будут гаснуть.
  3. Светомузыка. Воспользуйтесь фильтрами и подайте на аналоговый вход звуковые сигналы, чтобы на выходе организовать светомузыку (эквалайзер).
  4. Модернизация компьютера. Некоторые датчики позволят создать зависимость цвета светодиодов от температуры процессора, его загрузки, нагрузки на оперативную память. Используется протокол DMX 512.

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

Здравствуйте Хабр-сообщество.

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

К таким лентам можно купить источник питания, диммер, диммер с пультом управления. Это позволит вам использовать светодиодную ленту для посветки. Однако если вы захотите запи запрограммировать алгоритм изменения цвета, или сделать управление из компьютера - то тут начинается разочарование. Вы в продаже не найдете диммеров с управлением через COM-порт или Ethernet.

Добро пожаловать под кат.

Теоретическая часть

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

В качестве мозгов идеально подходит Arduino. В её программу можно записать любой алгоритм изменения цветов, а также её можно управлять как с помощью модулей Arduino, так и удаленно по Ethernet, Ик-порту, Bluetooth, используя соответствующие модули.

Для реализации задуманного я выбрал Arduino Leonardo. Она одна из самых дешевых плат Arduino, и она имеет много выводов с поддержкой ШИМ.

PWM: 3, 5, 6, 9, 10, 11, and 13. Provide 8-bit PWM output with the analogWrite() function.

И так, источник ШИМ у нас имеется, остаётся придумать с силовыми ключами. Если побродить по интренет магазинам, то выяснится, что не существует модуля Arduino для управления RGB лентами. Или просто универсальных модулей с силовыми транзисторами. Также можно найти огромное количество сайтов радиолюбителей, которые делают платы с силовыми ключами сами.

Однако есть способ проще! Нас выручит модуль Arduino для управления двигателями. Этот модуль имеет все необходимое для нам - на нем установлены мощные ключи на 12В.

Пример такого модуля является «L298N Module Dual H Bridge Stepper Motor Driver Board Modules for Arduino Smart Car FZ0407». Такой модуль основан на микросхеме L298N, которая представляет из себя 2 моста. Однако мостовое включение полезно для двигателя (от этого он может менять направление вращения), а в случае RGB ленты, оно бесполезное.

Мы будем использовать не весь функционал этой микросхемы, а только 3 её нижних ключа, подключив ленту как показано на рисунке.

Практическая часть часть

Для реализации потребуется Arduino Leonardo, Модуль управления двигателями L298N, Источник 12В (для запитки ленты), сама RGB лента, соединительные провода.
Для удобства подключения я еще использовал Fundruino IO Expansion, но он никакой функциональной нагрузки не несет.

Схема подключения показана на рисунке.

Хочу дополнительно описать питание системы. В данной схеме питание подается на модуль управления двигателями, в нем стоит понижающий источник питания на 5В, и эти 5В я подаю на вход Vin питания Arduino. Если разорвать эту связь (естественно земли оставив соединенными), то запитывать Arduino и силовые ключи можно от разных источников питания. Это может быть полезно когда к Arduino много всего подключено, и источник в модуле управления двигателями не справляется (выключается по перегреву).

Управляется RGB лента с помощью команд analogWrite, которая настраивает выход для формирования ШИМ сигнала.

Исходный код программы для arduino:
#define GRBLED_PIN_R 9 // пин для канала R #define GRBLED_PIN_G 10 // пин для канала G #define GRBLED_PIN_B 11 // пин для канала B int rgbled_r=0, rgbled_g=0, rgbled_b=0; void setup(){ //enable serial datada print Serial.begin(9600); Serial.println("RBG LED v 0.1"); // RGBLED pinMode(GRBLED_PIN_R, OUTPUT); pinMode(GRBLED_PIN_G, OUTPUT); pinMode(GRBLED_PIN_B, OUTPUT); } void loop(){ // change color rgbled_r = (rgbled_r+1)%1024; rgbled_g = (rgbled_g+2)%1024; rgbled_b = (rgbled_b+3)%1024; // Output Z1_output_rgbled(); delay(1); } void Z1_output_rgbled() { analogWrite(GRBLED_PIN_R, rgbled_r); analogWrite(GRBLED_PIN_G, rgbled_g); analogWrite(GRBLED_PIN_B, rgbled_b); }

На видео можно увидеть как это работает:

Экономическая часть






















L298N Module Dual H Bridge Stepper Motor Driver Board Modules for Arduino Smart Car FZ0407 $ 5.31 1
Leonardo R3 Development Board for Arduino Compatiblae + USB Cable Wire FZ0437 $ 10.00 1
5050 LED Strip RGB and single color 5M DC12V/24V 60leds/m Waterproof Flexible Car auto Strip Light saving light $ 12.38 1
Retail AC85~265V to DC 12V/6A power supply adaptor transformer switching for led light $ 9.98 1

Итого $37,65 = 1 300 руб

Вместо заключения

Для тех, кто захочет повторить описанную здесь схему - хочу заметить, что драйвер L298N рассчитан на ток 2-3А, а RGB светодиодные ленты, на светодиодах 5050 с плотностью 60 светодиодов на метр, продающиеся по 5 метров, могут потреблять до 6А. По этому если вы хотите использовать длинные и яркие ленты - возможно потребуется схему модернизировать (подключать ленту по сегментам, или взять более мощный драйвер) или использовать ленты по проще.

На этом занятии мы будем использовать цифровые и аналоговые выходы с «широтно импульсной модуляцией» на плате 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 .


Рекомендуем почитать

Наверх