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

Управление светодиодной RGB лентой через arduino Мультикоптеры

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

Здравствуйте ,подскажите как добавить дублирующий выход 12 к имеющемуся выходу 11 чтобы работали синхронно ?
#include

int b1=0;
int b2=0;
int b3=0;
int p_top, p_bottom;
int t_top, t_bottom;
int state_top, state_bottom;

char buf[32];
unsigned long prev_top, prev_bottom;
int pin_bottom = 11;
int pin_top = 13;
int tick = 200;

unsigned long prev_t;

int thermoDO = 4;
int thermoCLK = 5;
int thermoCS_b = 6;
int thermoCS_t = 7;
MAX6675 thermocouple_b(thermoCLK, thermoCS_b, thermoDO);
MAX6675 thermocouple_t(thermoCLK, thermoCS_t, thermoDO);

void setup()
{
Serial.begin(9600);
pinMode(pin_top, OUTPUT);
digitalWrite(pin_top, 0);
pinMode(pin_bottom, OUTPUT);
digitalWrite(pin_bottom, 0);
t_top = 10;
t_bottom = 10;
p_top = 0;
p_bottom = 0;

state_top = LOW;
state_bottom = LOW;
prev_top = millis();
prev_bottom = millis();
}

void loop()
{
if (Serial.available() > 0) {
b3 = b2; b2 = b1;
b1 = Serial.read();
if ((b1 == ‘T’) && (b2 == ‘E’) && (b3 == ‘S’)) {
p_top = Serial.parseInt();
if (p_top 100) p_top = 100;
p_bottom = Serial.parseInt();
if (p_bottom 100) p_bottom = 100;
t_bottom = thermocouple_b.readCelsius();
t_top = thermocouple_t.readCelsius();
sprintf (buf, “OKddddrn”, p_top, p_bottom, t_top, t_bottom);
Serial.print(buf);
}
}

if ((state_top == LOW) && ((millis()-prev_top) >= tick * (100-p_top) / 100)) {
state_top = HIGH;
prev_top = millis();
}
if ((state_top == HIGH) && ((millis()-prev_top) >= tick * p_top / 100)) {
state_top = LOW;
prev_top = millis();
}
digitalWrite(pin_top, state_top);

if ((state_bottom == LOW) && ((millis()-prev_bottom) >= tick * (100-p_bottom) / 100)) {
state_bottom = HIGH;
prev_bottom = millis();
}
if ((state_bottom == HIGH) && ((millis()-prev_bottom) >= tick * p_bottom / 100)) {
state_bottom = LOW;
prev_bottom = millis();
}
digitalWrite(pin_bottom, state_bottom);
}

Rgb подсветка на ардуино с управлением по bluetooth

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

Управление светодиодной RGB лентой через arduino
Рис.1

Мы разработали приложение в программе Android Studio:

Управление светодиодной RGB лентой через arduino
Рис.2

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

  1. возможность управлять несколькими лентами;
  2. управлять белой светодиодной лентой;
  3. ручная установка цвета;
  4. различные режимы работы;
  5. возможность управления подсветкой без использования андроид-устройства.

      Тимур Мельников

      Файлы :

      1. Прошивка для arduino
      2. Программа для android

      Тема форума:
      http://msevm.ru/forum/index.php?topic=8290

      Больше.

Смотрите про коптеры:  Как включить и настроить Bluetooth на ноутбуке

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

Arduino Remote Control, led
плата Arduino

Плата Arduino состоит из программируемого микроконтроллера. Плата подключена к различным датчикам, регуляторам и энкодерам, и управляет двигателями, светодиодами и другими исполнительными устройствами, включая другие платы Arduino, используя протокол SPI.

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

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

Настройки в коде

// ------ Дисплей ------
LCD_BACKL 1         // автоотключение подсветки дисплея (1 - разрешить) 
BACKL_TOUT 60       // таймаут неактивности отключения дисплея, секунды
CONTRAST 150        // контрастность (яркость) дисплея 0-255
ROTATE_DISP 1       // 0 или 1 - повернуть дисплей на 180 градусов
I2C_ADDRESS 0x3C    // адрес дисплея
// примерно на 200 строке можно поменять шрифт дисплея

// ------ Драйвер ------
HIGH_FREQUENCY 2    // 0 - 490 Гц, 1 - 7.8 кГц, 2 - 31.4 кГц, 3 - ручная настройка
PWM_FREQUENCY 15000 // частота ШИМ на настройке №3, Герц
DRIVER_DIRECTION 0  // 0 - обычный (мосфеты), 1 - реверс (LED amplifier)

// ------ Лента ------
MAX_CURRENT 0       // макс. ток в мА, при значении 0 фича не активируется
NUM_LEDS 60         // кол-во светодиодов для расчёта ограничения тока (только для диодов 5050!!!)
SMOOTH_K 0.25       // коэффициент плавности огня

// ------ Bluetooth ------
USE_BT 0            // 1 - использовать Bluetooth, 0 - нет

// ------ ИК пульт ------
USE_IR 1            // 1 - использовать ИК пульт, 0 - нет
IR_STEP 10          // шаг изменения настроек с пульта

// ------ Энкодер ------
USE_ENC 1           // 1 - использовать энкодер, 0 - нет
ENC_REVERSE 1       // 1 - инвертировать направление энкодера
ENC_TYPE 1          // 0 или 1 - тип энкодера

// ------ Напряжение ------
VOLTMETER 0         // 0 или 1 - вкл/выкл вольтметр (делитель напряжения в пин А0)
CHARGE_VAL 1        // вывод напряжения: 0 - в процентах, 1 - в вольтах
CONSTANT_BRIGHT 0   // 0 или 1 - вкл/выкл поддержание яркости при разрядке АКБ (только для диодов 5050!!!) (в схеме должен стоять делитель)
VREF 5.1            // напряжение на пине 5V
R1 10010            // точное значение 10 кОм
R2 4700             // точное значение 4.7 кОм

Особенности:

  • Управление 4-контактной светодиодной лентой RGB (R G B 12)
  • Частота ШИМ 8 или 31 кГц (регулируемая)
  • 10 настраиваемых предустановок, каждая с режимом и настройками для выбранного режима
  • 11 режимов работы: 5 статических и 6 динамических
  • Управление через энкодер, ИК-пульт или Bluetooth (приложение GyverRGB)
  • Вывод меню на OLED-дисплей
  • Контроль напряжения батареи и отображение процентов/напряжения
  • Полная информация приведена в документации

Папки

В НИМАНИЕ Если это ваш первый опыт работы с Arduino, прочтите инструкции

  • Библиотеки – библиотеки проекта. Заменить существующие версии
  • Firmware – прошивка для Arduino
  • Schematics – электрические схемы для компонентов
  • Docs – документация
  • Utilities – утилиты – программы поддержки и прошивки

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

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

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

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

Смотрите про коптеры:  Не верьте навигатору: уязвимости GPS и ГЛОНАСС / Блог компании Positive Technologies / Хабр

На рисунке показана схема электропроводки.

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

P WM-сигналы генерируются путем настройки выхода RGB-ленты с помощью команд analogWrite.

Исходный код Ардуино:.

#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)24;
  rgbled_g = (rgbled_g 2)24;
  rgbled_b = (rgbled_b 3)24;
  // 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);
}

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

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

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

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

Connection, Arduino, LED
управление Arduino

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

Этого выхода будет достаточно для питания RGB-индикатора или матричного светодиодного модуля 32*32 мм с током 20-40 мА при напряжении 5 В. Более мощную нагрузку он выдержать не сможет.

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

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

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

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

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

Транзистор NPN с общим эмиттером является лучшим выбором. Схема из нескольких элементов (микросхемный усилитель) или транзисторная сборка могут обеспечить более высокий коэффициент усиления.

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

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

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

Смотрите про коптеры:  Дьявольский квадрокоптер за 100$ с онлайн-трансляцией на монитор — WLtoys V666 FPV / Хабр

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

Ссылки оставлены на магазины, с которых я закупаюсь уже не один год

Первые ссылки – в основном магазин Great Wall, вторые – WAVGAT. Покупая в одном магазине, вы экономите на доставке!
Мосфеты и резисторы можно купить в любом магазине электронных компонентов (ChipDip итд)

Обращение

Драйвер

Прочее

Питание

Автономная система электроснабжения

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

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

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

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

ШИМ: 3, 5, 6, 9, 10, 11 и 13. Обеспечивает 8-битный ШИМ-выход с помощью функции analogWrite().

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

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

Например, “L298N Module Dual H Bridge Stepper Motor Driver Board Modules for Arduino Smart Car FZ0407” является модулем этого типа. Модули этого типа используют микросхему L298N. Для двигателя мостовое переключение полезно (оно может менять направление вращения), но с RGB-лентой оно бесполезно.

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

Через реле

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

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

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

Итого 37,65 долларов = 1 300 рублей.

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

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

Оцените статью
Радиокоптер.ру
Добавить комментарий

Adblock
detector