Управление светодиодной лентой при помощи Аrduino

Содержание:

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

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

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

Управление светодиодной лентой при помощи Аrduino

Плата Ардуино имеет два типа портов вывода: цифровой и аналоговый (ШИМ-контроллер). У цифрового порта возможно два состояния – логический ноль и логическая единица. Если подключить к нему светодиод он либо будет светиться, либо не будет.

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

Синтаксис команд

Цифровой вывод:

pinMode(12, OUTPUT); — задаём порт 12 портом вывода данных;
digitalWrite(12, HIGH); — подаём на дискретный выход  12 логическую единицу, зажигая светодиод.

Аналоговый вывод:

analogOutPin = 3; – задаём порт 3 для вывода аналогового значения;
analogWrite(3, значение); – формируем на выходе сигнал с напряжением от 0 до 5В. Значение – скважность сигнала от 0 до 255. При значении 255 максимальное напряжение.

Способы управления светодиодами через Ардуино

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

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

Виды  транзисторных ключей

  • Биполярный;
  • Полевой;
  • Составной (сборка Дарлингтона).
Способы подключения нагрузки
Через биполярный транзисторЧерез полевой транзисторЧерез коммутатор напряжения
Подключение через биполярный транзисторПодключение через полевой транзисторПодключение через коммутатор напряжения

При подаче высокого логического уровня (digitalWrite(12, HIGH);) через порт вывода  на базу транзистора через цепочку коллектор-эмиттер потечет опорное напряжение на нагрузку. Таким образом можно включать и отключать светодиод.

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

Биполярный вид не позволяет регулировать мощные нагрузки. Ток через него ограничен на уровне 0,1-0,3А.

Полевые транзисторы работают с более мощными нагрузками с током до 2А. Для ещё более мощной нагрузки используют полевые транзисторы Mosfet с током до 9А и напряжением до 60В.

Полевой транзистор Mosfet

Вместо полевых можно использовать сборку Дарлингтона из биполярных транзисторов на микросхемах ULN2003, ULN2803.

Микросхема ULN2003 и принципиальная схема электронного коммутатора напряжения:

Микросхема ULN2003

Принцип работы транзистора для плавного управления светодиодной лентой

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

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

Подключив транзистор к аналоговому порту Ардуино, присваиваем ему значение от 0 до 255, изменяем напряжение, подаваемое на коллектор либо сток от 0 до 5В. Через цепочку коллектор-эмиттер будет проходить от 0 до 100% опорного напряжения нагрузки.

Для управления светодиодной лентой arduino необходимо подобрать транзистор подходящей мощности. Рабочий ток для питания метра светодиодов 300-500мА, для этих целей подойдет силовой биполярный транзистор. Для большей длины потребуется полевой транзистор.

Схема подключения LED ленты к ардуино:

Схема подключения ленты к ардуино

Управление RGB лентой с помощью Andurino

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

Схема подключения к Arduino RGB светодиода:

подключение к arduino rgb светодиода

Аналогично построено и управление RGB лентой Arduino:

Управление RGB лентой через ArduinoАrduino RGB контроллер лучше собирать на полевых транзисторах.

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

Плавное управление яркостью

Скетч управления яркостью светодиодной ленты Arduino

int led = 120; устанавливаем средний уровень яркости

void setup() {
pinMode(4, OUTPUT);  устанавливаем 4й аналоговый порт на вывод
pinMode(2, INPUT);

pinMode(4, INPUT);  устанавливаем 2й и 4й цифровой порт на ввод для опроса кнопок
}
void loop(){

button1 = digitalRead(2);

button2 = digitalRead(4);
if (button1 == HIGH)  нажатие на первую кнопку увеличит яркость
{
led = led + 5;

analogWrite(4, led);
}
if (button2 == HIGH)  нажатие на вторую кнопку уменьшит яркость
{
led = led — 5;

analogWrite(4, led);
}

При удержании первой или второй кнопки плавно изменяется напряжение, подаваемое на управляющий контакт электронного ключа. Тогда и произойдет плавное изменение яркости.

Модули управления Ардуино

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

Инфракрасное управлениеИК-управление

Модуль позволяет запрограммировать до 20 команд.

Радиус сигнала около 8м.

Цена комплекта  6 у.е.

Управление по радиоканалуПо радиоканалу

Четырёхканальный блок с радиусом действия до 100м

Цена комплекта  8 у.е.

Позволяет включать освещение еще при приближении к квартире.

Бесконтактное управлениеБесконтактное

Датчик расстояния способен по движению руки увеличивать и уменьшать яркость освещения.

Радиус действия до 5м.

Цена модуля 0,3 у.е.

11 КОММЕНТАРИИ

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

  2. Статья прекрасная, не хватает совета по выбору ленты и транзистора. так как насколько слыщал, не все светодиоды диммируются.

  3. хорошо бы узнать как плавно включить ленту не используя delay(), что бы не подвешивать цикл и иметь возможность включать на время по таймеру millis() например.

  4. Статья хорошая, понравилась. Только есть ложка дегтя. Полевой транзистор управляется затвором, а не стоком.

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

    • Скетч управления яркостью написан не правильно транзистор роже подключен не верно
      я вот так переписал и выход на D3
      int led_pin=3; // пин подключения
      int brightness = 100; // яркость светодиода
      int fadeAmount = 3; // шаг изменения яркости
      void setup() {
      pinMode(2, INPUT);
      pinMode(4, INPUT); //устанавливаем 2й и 4й цифровой порт на ввод для опроса кнопок
      }
      void loop(){
      analogWrite(led_pin, brightness);
      if (digitalRead(2) == HIGH) //нажатие на первую кнопку увеличит яркость
      {
      brightness = brightness + fadeAmount;
      }
      if (digitalRead(4) == HIGH) //нажатие на первую кнопку увеличит яркость
      {
      brightness = brightness — fadeAmount;}
      delay(30);
      }

Поделитесь вашим мнением

Please enter your comment!
Please enter your name here