ОБНОВЛЕНИЯ
• 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 очень удобен в подключении, но имеет жуткий недостаток: на высоких частотах у него поднимается нижний порог яркости, что приводит к трате оттенков и вообще некорректной работе режимов.
Вывод: если контроллер не планируется использовать для видео света, то можно поставить 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 и не сбрасываются при перезагрузке
- RGB – цвет в пространстве RGB
- BR – яркость (0-255)
- R – красный (0-255)
- G – зелёный (0-255)
- B – синий (0-255)
- HSV – цвет в пространстве HSV
- HUE – цвет (0-255)
- SAT – насыщенность (0-255)
- VAL – яркость (0-255)
- Color – яркий цвет
- BR – яркость (0-255)
- COL – номер цвета (0-1530)
- ColorSet – предустановленные цвета
- BR – яркость (0-255)
- COL – цвет
- WHITE
- SILVER
- GRAY
- BLACK
- RED
- MAROON
- YELLOW
- OLIVE
- LIME
- GREEN
- AQUA
- TEAL
- BLUE
- NAVY
- PINK
- PURPLE
- Kelvin – установка цветовой температуры
- BR – яркость (0-255)
- TEMP – цветовая температура, К (1000-10000)
- ColorW – плавная смена цвета
- BR – яркость (0-255)
- SPD – скорость (0-1000)
- STP – шаг (0-500)
- Fire – стандартный огонь
- BR – яркость (0-255)
- SPD – скорость (0-1000)
- STP – шаг (0-500)
- FireM – ручной огонь
- BR – макс. яркость (0-255)
- COL – цвет (0-255)
- SPD – скорость (0-1000)
- MIN – мин. яркость (0-255)
- Strobe – стробоскоп
- HUE – цвет (0-255)
- SAT – насыщенность (0-255)
- VAL – яркость (0-255)
- SPD – скорость (0-1000)
- StrobeR – стробоскоп со случайным периодом
- HUE – цвет (0-255)
- SAT – насыщенность (0-255)
- VAL – яркость (0-255)
- SPD – скорость (0-1000)
- Police – мигалки
- BR – яркость (0-255)
- SPD – скорость (0-1000)
Энкодер
- Кнопка удержана около секунды – вкл/выкл светодиоды
- Кнопка клик – навигация: выбор профиля -> выбор режима -> выбор настройки
- Смена профиля – поворот рукоятки
- Смена режима – поворот рукоятки
- Смена настройки – поворот рукоятки
- Выбор настройки – нажатие, удержание и поворот рукоятки
ИК пульт
- Кнопки 0–9 – быстрый переход к профилю с номером
- Кнопки * и # – вкл и выкл систему
- Кнопка ОК – навигация: профиль -> режим -> настройка
- Кнопки вправо/влево – смена профиля/меню/настройки
- Кнопки вверх/вниз – изменение выбранной настройки
Bluetooth
Загрузить приложение GyverRGB (для Android) и наслаждаться!
Кнопка (с версии 1.2)
- Клик: включить/выключить ленту
- Двойной клик: следующий пресет
- Тройной клик: предыдущий пресет
- Удержание: смена яркости
Кнопка вариант 2 (с версии 1.3)
- Клик: включить/выключить ленту
- Двойной клик: следующий цвет (12 цветов по кругу Иттена)
- Тройной клик: предыдущий цвет
- Удержание: смена яркости
ВИДЕО
КОМПОНЕНТЫ
Стараюсь оставлять ссылки только на проверенные крупные магазины, из которых заказываю сам. Также по первые ссылки ведут по возможности на минимальное количество магазинов, чтобы минимально платить за доставку. Если какие-то ссылки не работают, можно поискать аналогичную железку в каталоге Ардуино модулей. Также проект можно попробовать собрать из компонентов моего набора GyverKIT.
Arduino Nano купить в РФ, aliexpress, aliexpress, искать
- Лента Giant4 (Россия) купить
- Лента Али RGB 120 https://ali.ski/QmgYI https://ali.ski/BF25a
Управление
Bluetoth HC-06 aliexpress, aliexpress, искать
- Энкодер aliexpress, aliexpress, aliexpress, искать
- ИК пульт – искать
- ИК приёмники отдельные искать
- Дисплей — искать
Драйвер
- RGB LED amplifier https://ali.ski/6WgkJh
- MOSFET IRF3205 (10 шт) https://ali.ski/EHBIK
- Резисторы (100R и 10k) https://ali.ski/obyBuq
Прочее
- Макетная плата https://ali.ski/fh2x0M
- Трубы http://energoplast.ru/
- Крепление на штатив https://ali.ski/UuYRB
Питание
Блоки питания aliexpress, aliexpress, искать
Гнездо 5.5×2.1 aliexpress, aliexpress, искать
Выключатель круглый aliexpress, aliexpress, искать
- Адаптер 12V 2A купить в РФ
- Адаптер 12V 6A купить в РФ
Автономное питание
- Аккумуляторы 18650, зарядники, бат. отсеки, индикация перейти
- Вольтметр – резисторы 10k и 4.7k https://ali.ski/NDwcqy
Для версии на печатной плате!
- Мосфеты – искать
- Драйвер моторов TA6586 для платы drv – искать
- Гнёзда https://www.chipdip.ru/product/ds-210a-djk-02b
- Кнопки https://www.chipdip.ru/product/ps850l-pb22e09
- Колпаки https://www.chipdip.ru/product/psm1-k-3-b
Корпус aliexpress, aliexpress, искать
- Лента белая https://ali.ski/5nal3N
СХЕМЫ
ПЛАТЫ
Лицевая панель
СБОРКА И НАСТРОЙКА
- Установить необходимые программы и драйверы 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
Ошибка при загрузке прошивки
- Читать https://alexgyver.ru/arduino-first/
- Не забыть установить библиотеки из архива проекта
- Читать https://alexgyver.ru/arduino-first/ ещё раз, пункт №5, читать по буквам
Что-то из железа не работает
- Первым делом проверить подключение
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.
- Таким образом кстати можно научить систему работать с практически любым ИК пультом!
ПОДДЕРЖАТЬ
Вы можете поддержать меня за создание доступных проектов с открытым исходным кодом, полный список реквизитов есть вот здесь.