RGB СВЕТОДИОДНЫЙ КОНТРОЛЛЕР

30.05.19 Версия 1.0: первоначальная, вроде бы стабильная версия
05.06.2019 Версия 1.1:
– Добавлена настройка MIN_PWM
– Добавлена коррекция гаммы, настройка GAMMA_BRIGHT
10.06.2019 Версия 1.2: Добавлено управление кнопкой

подписаться на обновления

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

Железо

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

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

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

Вывод: если контроллер не планируется использовать для видео света, то можно поставить 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 цветов по кругу Иттена)
  • Тройной клик: предыдущий цвет
  • Удержание: смена яркости

ПОДРОБНОЕ ВИДЕО ПО ПРОЕКТУ

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

  • Понятные схемы, OpenSource прошивки с комментариями и подробные инструкции это очень большая работа. Буду рад, если вы поддержите такой подход к созданию Ардуино проектов! Основная страница пожертвовать – здесь.

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

  • Установить необходимые программы и драйверы 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 для каждого цвета

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


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

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

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.
  • Таким образом кстати можно научить систему работать с практически любым ИК пультом!

СХЕМЫ, ПЕЧАТНЫЕ ПЛАТЫ

Общая, RGB

Автономная

Схема 3

Схема 4

Драйвер

проект на easyeda

МАТЕРИАЛЫ И КОМПОНЕНТЫ

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

Вам скорее всего пригодится:

Если вместо указанных товаров у вас открываются блузки/вата/прочая хрень – выбросьте свой айфон! Или проверьте его на вирусы.

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

Управление

Драйвер

Прочее

Питание

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

всё для пайки
аккумы, bms
arduino, модули
мультиметры
инструменты
бп и модули

ПРОШИВКА И НАСТРОЙКА

Загружать прошивку желательно до подключения компонентов, чтобы убедиться в том, что плата рабочая. После сборки можно прошить ещё раз, плата должна спокойно прошиться. В проектах с мощными потребителями в цепи питания платы 5V (адресная светодиодная лента, сервоприводы, моторы и проч.) необходимо подать на схему внешнее питание 5V перед подключением Arduino к компьютеру, потому что USB не обеспечит нужный ток, если например лента его потребует. Это может привести к выгоранию защитного диода на плате Arduino. Гайд по скачиванию и загрузке прошивки можно найти под спойлером на следующей строчке.

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

2. Скачайте архив со страницы проекта. Если вы зашли с GitHub – кликните справа вверху Clone or download, затем Download ZIP. Это тот же самый архив!

3. Извлеките архив. Содержимое папки libraries перетащите в пустое место папки с библиотеками Arduino C:/Program Files (x86)/Arduino/libraries/

4. Папку с прошивкой из firmware положите по пути без русских букв. Если в папке с прошивкой несколько файлов – это вкладки, они откроются автоматически.

5. Настройте прошивку (если нужно), выберите свою плату, процессор. Подключите Arduino к компьютеру, выберите её COM порт и нажмите загрузить.

6. При возникновении ошибок или красного текста в логе обратитесь к 5-ому пункту гайда для новичков – “Разбор ошибок загрузки и компиляции“.

Содержимое папок в архиве

  • libraries – библиотеки проекта. Заменить имеющиеся версии
  • firmware – прошивки для Arduino
  • schemes – схемы подключения компонентов
  • docs – документация
  • utility – вспомогательные программы и прошивки
скачать архив
страница на github
сообщить об ошибке
обсудить на форуме

Дополнительно

Светодиодный контроллер своими руками
5 (100%) 1 vote[s]

2019-06-24T13:57:24+03:00