Светодиодный контроллер своими руками

ОБНОВЛЕНИЯ


• 30.05.19 Версия 1.0: первоначальная, вроде бы стабильная версия
• 05.06.2019 Версия 1.1:
– Добавлена настройка MIN_PWM
– Добавлена коррекция гаммы, настройка GAMMA_BRIGHT
• 10.06.2019 Версия 1.2: Добавлено управление кнопкой
• 12.07.2019 Версия 1.5 + приложение v1.2: добавлен белый канал света. Приложение работает только на 1.5 и выше!
• 27.07.2019 Версия 1.6: исправлены ошибки компиляции и баги с кнопкой
• 01.09.2019: исправлена плата Gerber_GyverRGB_DIP, подробности смотрите ниже
• 27.09.2019 Версия 1.7: исправлено запоминание настроек при управлении по BT

ОПИСАНИЕ


Захотелось мне сделать RGB свет для видео из китайских компонентов. RGB – значит нужен ШИМ контроллер, значит нужно его сделать! Вот и сделал: GyverRGB – контроллер для RGB светодиодных лент со множеством режимов и настроек, модульной структурой и различными способами управления.

Железо

Используется обыкновенная RGB светодиодная лента с общим анодом (контакты 12V G R B). Я использовал два ряда ленты с плотностью 120 диодов на метр, чтобы иметь хороший запас по яркости даже на одном цвете.

 

В проекте используется Arduino NANO (микроконтроллер ATmega328p). В качестве 100% совместимого аналога можно использовать Arduino UNO/Pro Mini.

Я рассматривал два варианта драйвера для светодиодной ленты: китайский RGB LED amplifier и самодельный драйвер из трёх МОСФЕТ (полевых) транзисторов. LED amplifier очень удобен в подключении, но имеет жуткий недостаток: на высоких частотах у него поднимается нижний порог яркости, что приводит к трате оттенков и вообще некорректной работе режимов.

blank

 

Вывод: если контроллер не планируется использовать для видео света, то можно поставить LED amplifier и в настройках контроллера поставить низкую частоту (490 Гц), глаз такую частоту не заметит, но снятое на камеру видео будет «стробить». Если планируется использовать контроллер для создания видео света, то в обязательном порядке нужно делать свой драйвер. Также свой драйвер позволит работать с большими отрезками ленты, т.к. транзисторы можно поставить очень мощные.

Полевой транзистор подойдёт практически любой (99%), наковырять можно из материнской платы. Список популярных МОСФЕТов в корпусе to-220: IRF3205, IRF3704ZPBF, IRLB8743PBF, IRL2203NPBF, IRLB8748PBF, IRL8113PBF, IRL3803PBF, IRLB3813PBF (в порядке роста стоимости). Список популярных МОСФЕТов в корпусе D-pak: STD17NF03LT4, IRLR024NPBF, IRLR024NPBF, IRLR8726PBF, IRFR1205PBF, IRFR4105PBF, IRLR7807ZPBF, IRFR024NPBF, IRLR7821TRPBF, STD60N3LH5, IRLR3103TRPBF, IRLR8113TRPBF, IRLR8256PBF, IRLR2905ZPBF, IRLR2905PBF (в порядке роста стоимости).

Управление контроллером предусмотрено тремя способами:

  • Энкодер – китайский модуль в двух вариантах
  • ИК пульт – продаётся вместе с приёмником-модулем, но удобнее монтировать отдельный приёмник
  • Кнопка – обычная нормально-разомкнутая тактовая кнопка
  • Bluetooth – управление с приложения GyverRGB для Android

Питается система от 12V, от блока питания или батареи из трёх литиевых аккумуляторов. При питании от аккумуляторов предусмотрен «вольтметр» – делитель напряжения на резисторах, позволяющий измерить напряжение на батарее для вывода его на дисплей.

Софтовые фишки

  • Автоматическое отключение дисплея по таймауту неактивности
  • Несколько вариантов частоты ШИМ для драйвера:
    • 490 Гц – для дешёвых LED усилителей
    • 8 кГц – слышно, как пищит
    • 4 кГц – работает только на самодельном драйвере
    • Настраиваемая до герца
  • Настраиваемое направление работы ШИМ (для готовых и самодельных усилителей)
  • Автоматическое ограничение тока потребления на основе количества светодиодов и яркости каналов цвета
  • Вывод напряжения питания на дисплей в вольтах или процентах
  • Режим поддержания яркости при разрядке аккумулятора (при полном заряде чуть занижает яркость)
  • Коррекция яркости по CRT гамме
  • Матрица коррекции LUT
  • 10 настраиваемых профилей
  • 11 настраиваемых режимов работы для каждого профиля, из них 5 статических и 6 динамических
  • Настройки хранятся в EEPROM и не сбрасываются при перезагрузке
  1. RGB – цвет в пространстве RGB
    • BR – яркость (0-255)
    • R – красный (0-255)
    • G – зелёный (0-255)
    • B – синий (0-255)
  1. HSV – цвет в пространстве HSV
    • HUE – цвет (0-255)
    • SAT – насыщенность (0-255)
    • VAL – яркость (0-255)
  1. Color – яркий цвет
    • BR – яркость (0-255)
    • COL – номер цвета (0-1530)
  1. ColorSet – предустановленные цвета
    • BR – яркость (0-255)
    • COL – цвет
      • WHITE
      • SILVER
      • GRAY
      • BLACK
      • RED
      • MAROON
      • YELLOW
      • OLIVE
      • LIME
      • GREEN
      • AQUA
      • TEAL
      • BLUE
      • NAVY
      • PINK
      • PURPLE
  1. Kelvin – установка цветовой температуры
    • BR – яркость (0-255)
    • TEMP – цветовая температура, К (1000-10000)
  1. ColorW – плавная смена цвета
    • BR – яркость (0-255)
    • SPD – скорость (0-1000)
    • STP – шаг (0-500)
  1. Fire – стандартный огонь
    • BR – яркость (0-255)
    • SPD – скорость (0-1000)
    • STP – шаг (0-500)
  1. FireM – ручной огонь
    • BR – макс. яркость (0-255)
    • COL – цвет (0-255)
    • SPD – скорость (0-1000)
    • MIN – мин. яркость (0-255)
  1. Strobe – стробоскоп
    • HUE – цвет (0-255)
    • SAT – насыщенность (0-255)
    • VAL – яркость (0-255)
    • SPD – скорость (0-1000)
  1. StrobeR – стробоскоп со случайным периодом
    • HUE – цвет (0-255)
    • SAT – насыщенность (0-255)
    • VAL – яркость (0-255)
    • SPD – скорость (0-1000)
  1. Police – мигалки
    • BR – яркость (0-255)
    • SPD – скорость (0-1000)

Энкодер

  • Кнопка удержана около секунды – вкл/выкл светодиоды
  • Кнопка клик – навигация: выбор профиля -> выбор режима -> выбор настройки
  • Смена профиля – поворот рукоятки
  • Смена режима – поворот рукоятки
  • Смена настройки – поворот рукоятки
  • Выбор настройки – нажатие, удержание и поворот рукоятки

ИК пульт

  • Кнопки 09 – быстрый переход к профилю с номером
  • Кнопки * и # – вкл и выкл систему
  • Кнопка ОК – навигация: профиль -> режим -> настройка
  • Кнопки вправо/влево – смена профиля/меню/настройки
  • Кнопки вверх/вниз – изменение выбранной настройки

Bluetooth

Загрузить приложение GyverRGB (для Android) и наслаждаться!

Кнопка (с версии 1.2)

  • Клик: включить/выключить ленту
  • Двойной клик: следующий пресет
  • Тройной клик: предыдущий пресет
  • Удержание: смена яркости

Кнопка вариант 2 (с версии 1.3)

  • Клик: включить/выключить ленту
  • Двойной клик: следующий цвет (12 цветов по кругу Иттена)
  • Тройной клик: предыдущий цвет
  • Удержание: смена яркости

ВИДЕО


КОМПОНЕНТЫ


Стараюсь оставлять ссылки только на проверенные крупные магазины, из которых заказываю сам. Также по первые ссылки ведут по возможности на минимальное количество магазинов, чтобы минимально платить за доставку. Если какие-то ссылки не работают, можно поискать аналогичную железку в каталоге Ардуино модулей. Также проект можно попробовать собрать из компонентов моего набора GyverKIT.

Управление

Драйвер

Прочее

Питание

Автономное питание

  • Аккумуляторы 18650, зарядники, бат. отсеки, индикация перейти
  • Вольтметр – резисторы 10k и 4.7k https://ali.ski/NDwcqy

Для версии на печатной плате!

СХЕМЫ


ПЛАТЫ


Драйвер

blank

Лицевая панель

blank

СБОРКА И НАСТРОЙКА


  • Установить необходимые программы и драйверы https://alexgyver.ru/arduino-first/
  • Установить библиотеки из архива проекта (смотри инструкцию)
  • Определиться с драйвером ленты (LED amplifier для декора/подсветки, самодельный драйвер для фото/видео света)
  • Установить частоту для драйвера в настройке HIGH_FREQUENCY, значение 0 – частота 490 Гц, для обычных применений ленты. Значение 2 – частота 31.4 кГц, для самодельного драйвера и видео-света
  • Установить направление работы ШИМ в DRIVER_DIRECTION, 0 для самодельного драйвера, 1 для готового
  • Дисплей можно «развернуть» на 180 градусов, настройка ROTATE_DISP
  • Если нужно отображение заряда батареи:
    • Подключить по схеме делитель напряжения (два резистора)
    • Измерить их точное сопротивление и указать в настройках R1 и R2
    • Не забыть включить настройку VOLTMETER
    • Включить питание от 12V, измерить напряжение на пине 5V платы Arduino, указать его в настройке VREF в Вольтах
  • Если нужен режим ограничения тока или поддержания яркости:
    • Убедиться, что лента из диодов 5050
    • Настроить вольтметр как написано выше
    • Указать количество светодиодов в настройке NUM_LEDS
  • Выбрать органы управления контроллером, настройки USE_IR, USE_ENC и USE_BT
  • Прошиться
Список настроек

  • LCD_BACKL – автоотключение подсветки дисплея по таймауту неактивности, 0 выкл, 1 вкл
  • BACKL_TOUT – таймаут неактивности отключения дисплея, секунды
  • CONTRAST – контрастность (яркость) дисплея, 0-255
  • ROTATE_DISP – повернуть дисплей на 180 градусов, 0 выкл, 1 вкл
  • I2C_ADDRESS – адрес дисплея. Если дисплей не работает, нужно определить его адрес (см. ниже).
  • HIGH_FREQUENCY – частота ШИМ для драйвреа: 0 – 490 Гц, 1 – 7.8 кГц, 2 – 31.4 кГц, 3 – ручная настройка
  • PWM_FREQUENCY – частота ШИМ на настройке №3, Герц
  • DRIVER_DIRECTION – 0 – обычный (мосфеты), 1 – реверс (LED amplifier)
  • MAX_CURRENT – автоматическое ограничение тока, при значении 0 ток не ограничивается, мА
  • NUM_LEDS – кол-во светодиодов для расчёта ограничения тока (только для диодов 5050), штук
  • USE_BT – использовать Bluetooth, 0 выкл, 1 вкл
  • USE_IR – использовать ИК пульт, 0 выкл, 1 вкл
  • IR_STEP – шаг изменения настроек с пульта
  • USE_ENC – использовать энкодер, 0 выкл, 1 вкл
  • ENC_REVERSE – инвертировать направление энкодера, 0 выкл, 1 вкл
  • ENC_TYPE – тип энкодера, 0 или 1
  • USE_BTN – использовать кнопку, 0 выкл, 1 вкл
  • VOLTMETER – вольтметр (делитель напряжения в пин А0), 0 выкл, 1 вкл
  • CHARGE_VAL – вывод напряжения: 0 – в процентах, 1 – в вольтах
  • CONSTANT_BRIGHT – поддержание яркости при разрядке АКБ (только для диодов 5050), 0 выкл, 1 вкл
  • VREF 5.1 – напряжение на пине 5V на плате при питании от 12V (по схеме)
  • R1 10010 – точное значение сопротивления резистора 10 кОм, Ом
  • R2 4700 – точное значение сопротивления резистора 4.7 кОм, Ом
  • MIN_PWM – минимальный ШИМ сигнал на драйвер (например для работы с дешёвым драйвером на высокой частоте)
  • GAMMA_BRIGHT – гамма-коррекция яркости (CRT), 0 выкл, 1 вкл
  • LUT_R, LUT_G, LUT_B – матрица коррекции LUT для каждого цвета


ПРОШИВКА


ОШИБКИ И FAQ


Ошибка при загрузке прошивки

Что-то из железа не работает

  • Первым делом проверить подключение

100% не работает дисплей – возможно, у него другой адрес

  • Найти и прошить прошивку ino из папки utility в архиве проекта
  • Открыть монитор порта (значок лупы справа вверху)
  • Увидеть текст как показано ниже, скопировать адрес дисплея (если он отличается от 0x3C) и указать его в настройке I2C_ADDRESS.

I2C Scanner

Scanning…

I2C device found at address 0x3C  !

done

Энкодер работает неадекватно (увеличивает на 2 за один тик или на 1 за 2 тика)

  • «Инвертировать» настройку ENC_TYPE (было 1 – поставить 0)

Лента светит неправильными цветами

  • Проверить подключение
  • Если лента светит ярко при 0 и не светит при 255 – инвертировать настройку DRIVER_DIRECTION (было 1 – поставить 0, и наоборот)

Не реагирует на ИК пульт из другого магазина

  • В прошивке на строке ~85 находится блок кодов с кнопками пульта. Можно закомментировать WAVGAT (стоит по умолчанию) и раскомментировать коды от KEYES
  • Если пульт всё ещё не реагирует, можно «измерить» коды его кнопок при помощи прошивки ino из папки utility. Прошить, открыть монитор порта (значок лупы справа вверху) и нажимать на кнопки. Скопировать коды в блок кодов пульта в прошивке GyverRGB.
  • Таким образом кстати можно научить систему работать с практически любым ИК пультом!

ПОДДЕРЖАТЬ


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

4.5/5 - (10 голосов)
Подписаться
Уведомить о
guest

103 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии