Многоцветная светодиодная подсветка или RGB-контроллер своими руками

Для чего мне нужна многоцветная светодиодная подсветка? У меня растёт дочка и она совсем малышка. И в один прекрасный момент меня в очередной раз торкнуло сделать поделку для неё, а если быть точнее – украсить подвесной потолок детской комнаты подсветкой. Для этих целей в детскую комнату было приобретено четыре катушки светодиодной RGB ленты.



Железо и запчасти для светодиодной подсветки.

Продается светодиодная RGB лента в рулонах на катушках. В продаже встречаются экземпляры по 60 и по 30 светодиодов на метр, т.е. светодиоды плотнее или реже расположены на ленте. Берем 60 светодиодов на метр, т.к. оптом ещё дешевле и суммарно ярче.

В моем случае лента герметичная, т.е. находится в силиконовой оболочке. С силиконом лента конструктивно намного надежнее. Не знаю как вам, а мне нужна надежность и яркость.



Лента имеет маркеры мест разреза и контактных площадок (+12V, G, R, B). Может разрезаться на кусочки по три светодиода. Квадратные светодиоды под силиконом имеет по 6 выводов, три вывода с одной стороны, и три с противоположной. Визуально под общей линзой находится три кристалла.

Данная лента комплектуется блоком управления и пультом дистанционного управления. Начинаем методично ломать эту железку. Блок управления собран на микроконтроллере SONIX типа SN8P2501B и микросхеме памяти 24С02С . Ниже фотографии общего вида и внутренностей.

Многоцветная светодиодная подсветка или RGB-контроллер своими руками




Очень радует симпатичный пульт в комплекте. И всё это прекрасно работает, но чего-то не хватает. В этом контроллере отсутствует ручная настройка. Хочется настройки цвета энкодером. И этот подход к управлению запал в душу. Согласитесь, что радиолюбительский вариант должен быть доступным для повторения. А по сему было принято решение сделать светодиодную подсветку с управлением с помощью энкодера со встроенной кнопкой, который будет культурно монтироваться в корпус типового диммера.



Теория управления RGB светодиодами с помощью ШИМ.

Теперь кратко разберемся в теории как управляется RGB светодиод и что такое в принципе RGB. RGB-светодиод, как мы выяснили, это три близко расположенных светодиода под одной линзой: красный – Red, зелёный – Green и синий – Blue, отсюда и название. Как известно, сочетанием этих трёх цветов можно получить любой другой цвет. Обычно эти три светодиода имеют один общий вывод. В нашем случае плюсовой, т.е. общий анод. Яркость свечения светодиода зависит от протекающего через светодиод тока.

Для регулировки протекающего тока используется ШИМ. Что такое ШИМ? Широтно-импульсная модуляция (ШИМ) – есть импульсный сигнал постоянной частоты и переменной скважности, то есть отношения длительности импульса к периоду его следования. С помощью задания скважности (длительности импульсов) можно менять яркость светодиода.



Говоря по простому – ШИМ это соотношение времени включенного и выключенного состояния светодиода. Переключение происходит на высокой частоте и незаметно для зрительного восприятия.

Теперь поговорим о смене цвета. Микроконтроллер каждому из основных цветов – красный, зеленый и синий может установить 256 уровней яркости (от полностью выключенного до полностью включенного), а это в свою очередь позволяет сделать 256*256*256=16777216 комбинаций оттенков. Антиреально много. Мне изначально хотелось попроще, типа радуги с её мнемоникой "Каждый Охотник Желает Знать Где Сидит Фазан", т.е. красный, оранжевый, желтый, зеленый, голубой, синий, фиолетовый и с плавными переходами между ними. Я никого не удивлю, но реализация алгоритма есть у каждого в компьютере.

Программная реализация непрерывного спектра.

Запускаем тестовый редактор Word (у меня в составе Office XP). Меню Формат – Границы и заливка… . Выбираем вкладку Заливка. Нажимаем кнопку Другие цвета... . Выбираем вкладку Спектр. Устанавливаем стартовые значения цветов вручную 255-0-0.



Затем указатель цвета (крестик) в цветном поле ведем вдоль верхнего края и одновременно следим как меняются цифры значений цвета. В общем всё довольно просто.

По-умолчанию формулу R-G-B начнем с красного цвета 255-0-0.
1) Наращивается зеленый цвет 255-1-0, 255-2-0 ... 255-255-0.
2) Уменьшается красный цвет 254-255-0, 253-255-0 ... 0-255-0.
3) Наращивается синий цвет 0-255-1, 0-255-2 ... 0-255-255.
4) Уменьшается зеленый цвет 0-254-255, 0-253-255 ... 0-0-255.
5) Наращивается красный цвет 1-0-255, 2-0-255 ... 255-0-255.
6) Уменьшается синий цвет 255-0-254, 255-0-253 ... 255-0-0.

Как видим, мы начали красным цветом и закончили красным цветом. Этим мы обеспечиваем непрерывность смены цвета по кругу.

Теперь определимся (точнее я уже определился экспериментально) с шагом смены значения ШИМ. Чуть выше мы перечислили шесть сцен с наращиванием и уменьшением значений цвета. Каждая сцена имеет 255 шагов. Чтобы пройти все сцены нам потребуется 255*6=1530 шагов. Или 1530 оттенков. Уже интересно. Смотрим как работает на практике. Энкодер имеет 20 кликов. 1530/20=76 полных оборотов. Мне наверняка не понравится столько крутить энкодер чтобы сделать полную смену цветов. Сделаем еще немного расчетов.

Вычисляем новый шаг приращения/уменьшения значения ШИМ. Желательно, чтобы это число было кратным 255. Приведем несколько чисел: 5, 15, 17.
Шаг = 5; одна сцена 255/5=51 клик; шесть сцен 51*6=306; оборотов энкодера 306/20=15.
Шаг = 15; одна сцена 255/15=17 клик; шесть сцен 17*6=102; оборотов энкодера 102/20=5.
Шаг = 17; одна сцена 255/17=15 клик; шесть сцен 15*6=90; оборотов энкодера 90/20=4,5.

В итоге остановимся на шаге 15. Смена цветов плавная из 102 оттенков. Реально два соседних оттенка еле различимы для глаза. Поздравляем друг друга – мы определились с алгоритмом.




Следует сказать, что в Интернете этот алгоритм также встречается под названием алгоритм непрерывного спектра. Теперь посмотрим один из вариантов реализации примитивного алгоритма на Си. Здесь алгоритм приведен для примера, на самом деле способы реализации могут быть более замороченными.

void min (void){
if (scena == 1) {if(G0) R=R-15; else scena = 3;}
if (scena == 3) {if(B0) G=G-17; else scena = 5;}
if (scena == 5) {if(R0) B=B-17; else scena = 1;}
}

void max (void){
if (scena == 1) {if(G>0) G=G-15; else scena = 6;}
if (scena == 2) {if(R0) B=R-15; else scena = 2;}
if (scena == 4) {if(G0) R=R-15; else scena = 4;}
if (scena == 6) {if(B<255) B=R+15; else scena = 5;}
}


Как видим у нас две функции: min и max. В зависимости от направления вращения энкодера вызывается та или иная функция. На этом хватит теории, переходим к практике.

Реализация контроллера светодиодной подсветки на AVR.

Плата контроллера изготовлена методом ЛУТ. Значительное место на плате занимают винтовые зажимы для подключений.






Плата имеет размер 4x5 см. Электрические соединения настолько просты, что конструктив можно легко реализовать на куске монтажной платы. Далее собственно схема блока управления и электрических соединений.



Основой устройства является популярный, доступный и дешевый микроконтроллер ATtiny2313. Как видим, в схеме присутствует датчик ИК приемника (TSOP1736) для управления с пульта дистанционного управления. TSOP1736 можно не устанавливать на плату и отсутствие этого датчика никак не сказывается на работе устройства.

Для пульта от заводского контроллера в программе я продублировал функции:
– включение и выключение,
– 256 уровней яркости,
– 15 фиксированных цветов,
– выбор любого (!) цвета из палитры непрерывного спектра,
+ режимы анимации и спецэффектов:
– динамичное переливание цветов,
– стробоскоп любого текущего цвета,
– случайное смешение цветов,
– плавная смена цветов палитры непрерывного спектра.
Напрограммировал от души. Выглядит потрясающе красиво и эффектно.

Как работает блок управления? Подаем питание – ничего не светится. Это сделано для того, чтобы в моё отсутствие случайный скачок напряжения в доме не включил подсветку. Далее любой кнопкой на пульте (кроме кнопки выключения) включаем необходимый режим.

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

При прошивании микроконтроллера ATtiny2313 устанавливать следующие фьюзы.



Оформление экнодера в корпусе диммера.

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



Далее делаем плату (также можно сделать на обрезке монтажки).









Энкодер монтируем со стороны фольги (пайки). Разъемы и конденсаторы монтируем с другой стороны.

В корпусе диммера сверлим отверстия (4 шт) под ввод проводов. Обтачиваем напильником плату до кондиции. На корпусе энкодера стачиваем выступ. Примеряем плату в корпус и оцениваем примыкание. До финальной фиксации желательно оценить работоспособность путем подключения к блоку управления.

Затем клеем из обычного термопистолета (GLUE GUN) делаем крепление платы в корпусе диммера. Ожидаем пять минут для отвердевания клея.





Затем собираем корпус диммера-энкодера.





Поздравляем друг друга с успешной сборкой.

Реализация контроллера светодиодной подсветки на PIC.

Плата контроллера изготовлена методом ЛУТ. Значительное место на плате занимают винтовые зажимы для подключений (отдельное спасибо Александру Калмыкову за зажимы).





Плата имеет размер 3,5x5 см. Электрические соединения настолько просты, что конструктив можно легко реализовать на куске монтажной платы. Далее собственно схема блока управления и электрических соединений.



Основой устройства является популярный, доступный и дешевый микроконтроллер PIC12F629 (можно использовать PIC12F675). Работа схемы аналогична предыдущей схеме. После подачи питания всё выключено. Нажатием на кнопку энкодера включается белый цвет свечения. Вращением выбирается любой оттенок из непрерывного спектра. Повторное нажатие на кнопку энкодера переводит светодиодную RGB ленту из включенного состояния в выключенное.

Заключение.

У вас возникнет вопрос, какой проект лучше - на AVR или на PIC. Отвечаю - лучше на AVR.

Плюсы.
Микроконтроллер ATtiny2313 имеет 4 шт аппаратных ШИМ. В микроконтроллерах PIC 12й и 16й серий 3 шт аппаратных ШИМ в одном корпусе мне не удалось обнаружить и поэтому пришлось сделать программный ШИМ. Казалось бы, какая разница, ведь и то и другое работает. Программный ШИМ ограничивает реализацию дистанционного управления; эти два процесса (ШИМ и ДУ) имеют слишком разные требования по времени исполнения программы; ДУ будет тормозить ШИМ, что приведет к мерцанию светодиодов в момент управления с пульта. Конечно можно попытаться напрячь мозг и сделать красиво, но у меня большие сомнения за конечный результат. Можно разделить эти процессы и сделать проект на двух микроконтроллерах PIC. Однако, тут нужно взвесить цену этого "двухконтроллерного" проекта.

Минусы.
По моим ранним проектам вы успели заметить, что я отдаю предпочтение PIC, так как для меня "лучше то, что лучше знаешь" (так уж сложилось). В этом заключении я делаю своё субъективное сравнение, т.е. ничего личного. Размер выходного кода у AVR примерно раза в два больше чем у PIC. Скорее всего это особенность компиляторов, а может и особенность системы машинных команд. Что бы вы не говорили, но я приучен к экономии. Также мне НЕ понравился доступ к битам (из AVR Studio 4); капитальный неудобняк. Также есть минус с которым как-бы можно смириться - долбанная система фьюзов.


Видео работы устройства:



AVR:
Печатная плата под ATtiny2313 - У вас нет доступа к скачиванию файлов с нашего сервера
Прошивка под ATtiny2313


PIC:
Печатная плата под PIC12F629 / PIC12F675 - У вас нет доступа к скачиванию файлов с нашего сервера
Прошивка под PIC12F629 / PIC12F675:


Печатная плата энкодера в корпус диммера - У вас нет доступа к скачиванию файлов с нашего сервера

Источник: www.labkit.ru

23 комментария

Alukard007 8 декабря 2010 14:54
класно
retrew1980 8 декабря 2010 22:30
ПРИКОЛЬНЕНЬКАЯ ШТУЧКА
PUSIN 9 декабря 2010 13:32
А с другими пультами ДУ (RC-5,SONY и т.д.) будет работать , а то получается блок управления всеравно надо покупать , чтобы пользоваться симпатичным пультом из комплекта ?
sgroot 23 декабря 2010 23:56
Отличная штуковина.Только ошибка в схеме на AVR.

от ик приемника на 6 ногу надо.

Спасибо за решение.
Romka23 24 декабря 2010 22:14
а у меня почемуто на avr вообще не запускается(((
а можно исходники прошивки выложить?
drug 4 января 2011 18:57
вроде она wink


выделить всё
копировать
создать txt
сохранить
и переименовать расширение в HEX smile

сделай так
выделить всё
копировать
создать txt
всохранить
переименовать расширение HEX

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

ВО Я НАПЕЧАТАЛ АЖ САМ ЗАПУТАЛСЯ
Romka23 5 января 2011 20:17
я сделал все как ты сказал, ну у меня почемуто молчание!!
drug 8 января 2011 18:53
а димер подключал

у меня все работает только пульты чучуть не подходят я вместо димера 2 резюка временно поставил
Romka23 12 января 2011 09:09
да подключал!
не работает!
Bounce 23 января 2011 23:13
искал долго схему. не мог найти но вот к счастью напоролся. сразу возникает несколько вопросов. я ни разу не сталкивался с Микроконтроллерами и их прошивкой. где взять прошивку на саму смену цветов и на пульт. и вопрос пульт именно от покупного устройства или можно использовать другой? (при использовании другого пульта необходима другая программа?)
cdrom 4 марта 2011 15:56
почему то ссылка скачивания файла прошивки неактивна!!!! Большая просьба к добрым людям: ПРИШЛИТЕ ФАЙЛ ПРОШИВКИ НА МЫЛО!!!! [email protected] Заранее благодарен!!!!
-=Aquarius=- 4 апреля 2011 10:13
Собрал всё по схеме под PIC, не заработало... При подаче напряжения сразу всё загорается белым, даже если МК вытащить из схемы. Нажатие на кнопку энкондера ничего не дает, все также светится белым... Напряжение на выходе не меняется. Практически везде по 12В. Всю голову уже поломал, как может загораться подсветка, если на первую ногу Транзистора ничего не идет, есди вытащить МК, а все равно все горит... Получается что цепь протекает только между 2 и 3 ногой. Может у меня с транзисторами что-то не то???
I_ivi 12 октября 2011 07:15
А какой протокол у пульта? RC5?
Rover 4 ноября 2011 21:04
а как связаться с автором ?
чтоб не ходить вокруг да около, нужен исходник, переделать под свои нужды ,изучаю пик. пишу в мплабе
выручайте
delta24 28 декабря 2011 23:14
повторил на пике работает но собрал на макетной плате.
Теперь проверяю на AtIny2313.

повторил на тиньке работает в схеме реально ошибка с 5 ноги МК переделать надо ик на 6 ногу
Technick 26 января 2012 13:23
Автору огромный респект ! Собрант вариант на ATtIny2313 . Собственно, как раз и нужен был контроллер , управляемы энкодером. Китайцы, подлецы добавили ложку дегтю :) Попался на глаза абсолютно такой же контроллер с пультом, как на фотографии в начале статьи. Всего 10 долл. Купил из-за пульта .Думал , пусть еще и с пульта управляется, использую его на все 100% . При абсолютной внешней идентичности , внутри все оказалось совсем другим . Контроллер вообще без надписи ( не затерта, как обычно, а вообще нету :))) Система команд пульта не совпала (((
RIKK 18 марта 2012 16:16
Собрант вариант на ATtIny2313, прошивал USB программатор AVR — USBAsp, сначала фьюзы потом прошивка, все сразу заработало. Спасибо автору!
bacek-1976 16 мая 2012 11:07
Подскажите, пожалуйста, какие транзисторы использовать, если у светодиодов общий "минус"?
Maik 5 июня 2012 13:14
Господа! Просьба великая!!! Пришлите пожалуйста на мыло прошивку для ATTiny2313! Адрес почты: [email protected] Заранее премного благодарен!!!

Господа! Просьба великая!!! Пришлите пожалуйста на мыло прошивку для ATTiny2313! Адрес почты: [email protected] Заранее премного благодарен!!!
monters 24 октября 2012 12:33
спасибо автору работает на тини пульт подошел от AVERMEDIA TV- и FM-тюнер AVerTV Studio Model 307
Cherniy_S 28 ноября 2013 18:13
Вместо TSOP1736 можно ставить TSOP4836 ?
schukar2011 27 апреля 2014 06:42
Собрали на 675ПИКе,классно смотрится,цветов много,очень понравилось,автору спасибо,схемка децельная а цветов спекр широкий,так что собирайте люди,не пожалеете! smile
Vitaliy 26 мая 2014 08:06
А сколько светодиодных RGB лент можно подключить к одному контроллеру управления, к китайскому ото что вверху на фото вроде только одну. Спасибо.
Ваше имя: *
Ваш e-mail: *
Войти через
  • bowtie smile laughing blush smiley relaxed smirk
    heart_eyes kissing_heart kissing_closed_eyes flushed relieved satisfied grin
    wink stuck_out_tongue_winking_eye stuck_out_tongue_closed_eyes grinning kissing stuck_out_tongue sleeping
    worried frowning anguished open_mouth grimacing confused hushed
    expressionless unamused sweat_smile sweat disappointed_relieved weary pensive
    disappointed confounded fearful cold_sweat persevere cry sob
    joy astonished scream tired_face angry rage triumph
    sleepy yum mask sunglasses dizzy_face imp smiling_imp
    neutral_face no_mouth innocent
Введите два слова, показанных на изображении:
© 2010-2020 Все права соблюдены.