085-Контроллер RGB ленты на ATtiny2313.

Автор: | 20.05.2012

кусочки лентыВсе началось с идеи управления нагрузкой не постоянного тока, а переменного. Очень хорошая идея была предложена Сергеем (Ghjuhfvvf) вот тут. В развитии этой идеи им были разработаны и построены схемы управления нагрузкой переменного тока как с пульта так и по сенсорному управлению (но это тема отдельного топика и вероятно Сережа созреет для того, чтобы выложить свою работу на форуме). Меня же, чисто из прикладных соображений, заинтересовала возможность управлять RGB светодиодной лентой. За базу был взят вышеуказанный алгоритм.
Сразу приношу извинения за возможные нерациональности в тексте программы. Я не программист и поэтому, вероятно, мне это простительно.


1 Схема.

Схема несложная. Включение ленты делалось через сборку Дарлингтона. Для ленты самое то (при токах нагрузки до 1А на канал или при длине стандартной ленты до 2м). Она инвертирует сигнал, что как раз кстати для ленты с общим анодом (а таких в RGB варианте большинство). Для алгоритма это означает что включать свечение можно единицами.

scheme-RGB-ULN.spl7 - Схема контроллера RGB ленты на ULN
ULN2003.pdf - Даташит на сборку Дарлингтонов ULN2003


Дальше вариант для полевиков IRF640 (при больших токах нагрузки)

scheme-RGB-IRF.spl7 - Схема контроллера RGB ленты на IRF
IRF640.pdf - Даташит на полевой транзистор IRF640


2 Плата.

Печатную плату не делал — собрал на макетке. Но специально для Вас :),  набросал в сплинте оба варианта для ULN и для IRF. 
PBC-RGB-ULN.lay - Печатка контроллера RGB ленты для ULN
PBC-RGB-IRF.lay - Печатка контроллера RGB ленты для IRF


3 Алгоритм работы.

В самой программе алгоритм достаточно подробно описан в комментариях. Мне кажется все должно быть понятно. Дополнительно только скажу то, что ШИМ реализован программно, а поскольку программа не помещалась в память AtTiny2313A, то все коды кнопок пульта сразу были прописаны в алгоритме (без блока программирования кнопок). В программе также есть участок генерации случайных чисел. Я попытался в нем реализовать принцип М-последовательности. Похоже пока это лучший программный алгоритм генерации случайных чисел.
RGB controller(ULN+IRF) - Исходник контроллера RGB ленты


4 Реализация.

За основу экспериментов был взят китайский пульт от похожего контроллера.

На картинке  пульта приведены коды всех кнопок для того, чтобы было легче разобраться в программе. Если кому понадобятся пояснения в последовательности записи кнопок в базу данных — спрашивайте. Вы можете заменить коды в программе на свои, считанные с пульта через UART вот этим: 074-Преобразователь IR-to-UART на ATtiny2313..


5 Прошивка.

С прошивкой все как обычно — описывать нечего…
RGB-Controller.hex - Прошивка контроллера RGB ленты для ATtiny2313
FuseBits - Фьюз биты для контроллера RGB ленты
Для Algorithm Builder и UniProf галочки ставятся как на картинке.
Для PonyProg, AVR Studio, SinaProg галочки ставятся инверсно.
Как правильно прошить AVR фьюзы


6 Демонстрация работы контроллера RGB ленты.

Видео демонстрирует как работает контроллер с лентой в различных режимах.


7 Заключение.

Хотел бы поблагодарить за помощь и подсказки в разработке соавтору Ghjuhfvvf и всем активным участникам форума, в особенности SVN и anatoliy.

В планах сделать контроллер на 3 ленты на AtTiny2313A, управляемых с одного пульта. Всех заинтересованных прошу отписываться здесь или мне на почту (Kolini1967*ukr.net   * заменить на @). Спасибо.

(Visited 7 112 times, 31 visits today)

085-Контроллер RGB ленты на ATtiny2313.: 218 комментариев

  1. GetChiper

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

  2. Kolini Автор записи

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

  3. UltraVitaMin

    Статейка-занимательная! Повторил-супер, но для большей универсальности (да или ещё раз повторить) можно ли добавить (исправить, дополнить прошивку) под пульт RC-5? А то еле пульт такой нашел от старого ТВ-тюнера.Сам я в програмировании не силён и коды RC-5 не вставлю в прошивку. Ведь такой пуль гораздо проще найти или использовать один от домашней аппаратуры например. Ну или добавить кнопочное управление в схему? Было бы вообще супер и универсальность повысилась бы сей гаджета 🙂

  4. UltraVitaMin

    …кстати, любой «чужой» пульт ДУ заставляет эффекты останавливаться либо вообще полное моргание всех цветов (белый получается) с частотой 2 раза в секунду (т.е. «чужой» пульт видит, но реагирует просто неадекватно, лучше бы не реагировал вовсе тогда уж, а понимал только «свой»). В остальном-всё замечательно.

  5. Kolini Автор записи

    В алгоритме в блоке прерывания от фотоприемника программно настраивается уровень «ложных» срабатываний, как раз и регулирующий с какими допусками по счетчику импульсов пролазит сигнал от фотоприемника.
    Кроме того, стабильность приема сигналов можно увеличить добавив в схему внешний кварц на 8Мгц

  6. UltraVitaMin

    Перепрошил фьюзы под внешний кварц и, соответственно, подвесил и его на 8Мгц. Да вроде как постабильнее стало, но вцелом картина не изменилась.

  7. Kolini Автор записи

    Опиши мне пожалуйста в приват подробнее все нехорошие симптомы и условия при которых они проявляются. Спасибо.

  8. UltraVitaMin

    @Kolini
    Да, собственно, все симптомы, а точнее симптом я уже написал. Единственный недостаток девайса, я бы сказал-это реагирование на любой другой, который имелся в быту, пульт (6 шт.). А именно: работает девайс, какой то эффект, всё нормально. Переключил канал ТВ или муз.центра например, бац, эффекты замерли, либо моргание с частотой 2 раза в секунду.Приходится вновь брать пульт от девайса и запускать эффекты заново, и лучше другими пультами бытовых приборов в данной комнате-непользоваться. Опять эффекты поломаются.

  9. Kolini Автор записи

    Поправил прошивку с учетом замечаний. Дайте пожалуйста свои координаты куда отправить. На сайте обновление появиться чуть позже.

  10. alexfick

    Привет всем хочу реализовать данную идею но нужно както совместить с пультом RC-5 если уже ктото делал помогите

  11. GetChiper

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

  12. alexfick

    Ничего не понял если чесно, а как практически это реализовать.?

  13. Kolini Автор записи

    Прочтите пожалуйста статью еще раз внимательно. Там описана процедура подключения других пультов. В блоге есть устройство под номером 74 которое и позволит Вам увидеть тут самую ХЭШ сумму через UART. Эти коды и нужно будет подставть в массив в алгоритме, вместо существующих.

  14. Kolini Автор записи

    В статье программа и прошивки заменены на новые версии с учетом высказанных замечаний.

  15. becc

    проэкт прикольный но уменя токой вопрос можноли вместо ir использовать радео приёмник спультом например от мастер кит. ато у меня завалялось два правдо в них pici накрылись а приёмники с кампораторами остались рабочими. нехотелось бы забра сывать в ящик как невастребованые

  16. Kolini Автор записи

    Да, можно. Но нужно принимать во внимание то, что проект предусматривает управление устройством с использованием 27 команд (кнопок на пульте). На радиобрелке их только 4, поэтому функционал придется усекать до выбранных вами 4-х команд, что с моей точки зрения нецелесообразно.

  17. Ghjuhfvvf

    Кнопка «увеличение», кнопка «уменьшение» (для уменьшения/увеличения яркости), кнопка «следующий режим»… Так что, becc, все в Ваших руках … осталось только подправить программу

  18. becc

    к этому девайсу ещёбы пульт спрошивкой штобы не заморачиваться

  19. becc

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

  20. becc

    просто когда считываю пишит одни бббббббббббббббббббббббббббббббб и так пока не отпустиш кнопку читал через терминал

  21. Kolini Автор записи

    Читать коды команд пульта можно через UART. Для этого понадобиться любой, USB-UART адаптер типа 040 или 041 устройства на сайте. Считывать код клавиши можно прямо из самой программы. Для этого нужно включить и настроить в кристалле UART (смотри справку по АБ) и после получения команды отправить туда последовательно байты двойного регистра IR_Temp. Последовательность кодов кнопок в самом алгоритме прописана в базе Num в такой же последовательности как и обрабатывается в программе.

  22. GetChiper

    becc :

    к этому девайсу ещёбы пульт спрошивкой штобы не заморачиваться

    Я думаю мы с колини чтото подумаем для облегчения обучения пульта.

  23. becc

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

  24. UltraVitaMin

    Аналогичная ситуация была со старой версией прошивки (писал в форуме и автору). Сейчас, насколько я знаю, прошивка заменена на новую с учетом замечаний. Исправленная версия уже не реагирует на сторонние пульты.Работает чётко.@becc

  25. bornik

    @becc
    Уважаемый becc.
    Очень тебя прошу: проверяй то, что ты написал, а то читать очень трудно когда такой безграмотный текст. Нельзя быть хорошим специалистом в любой области если не умеешь грамотно писать.
    Извени если обидел.

  26. Mihail 2

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

  27. GetChiper

    Хекс-файл, после компиляции программы, лежит в папке проекта.

  28. Mihail 2

    спасибо большое.

  29. Mihail 2

    возникла опять небольшая проблема. вбиваю в исходник коды полученные от моего пульта прошиваю контроллер вставляю в разъем подаю питание. при нажатии на кнопки устройство реагирует но не выдает ответа на команды. подскажите! где я мог ошибиться? пульт от приблизительного контроллера.

  30. Kolini Автор записи

    коды 100% прочитаны неправильно. Проверяйте коды. Младший и старший байты кода команды должны быть инверсными. Это как минимум первая точка контроля.

  31. Mihail 2

    а когда будет добавлена функция обучения пультов и какой микроконтроллер при этом будет использоваться? коды по новому прочел с пульта занес их в прогу. интересный эфект получился: команды также не выполняются а при удерживании кнопки нажатой сначала включились 2 светодиода по очереди(переключались) и 2ой 1 светодиод мигал и не на что не реагировал.

  32. Mihail 2

    В EEPROM должно что то быть? я программирую мк через юнипроф. когда загружаю полученный хекс фаил в программу- загрузик то на месте EEPROM ни чего нет.

  33. Kolini Автор записи

    В EEPROM ничего не пишется. Все базы команд в памяти программ. Функция обучения пульта добавлена не будет. Для ATtiny2313 уже занята вся память программ. Коды команд прочитались правильно?

  34. Mihail 2

    да коды прочитались правильно потому что несколько раз перепроверял каждую посылку.

  35. Mihail 2

    коды считывал через программу из 81 го поста. но есть еще маленькое но! при нажатии кнопки почему то выдается несколько кодов. дольше удерживаешь кнопку нажатой и все это дело останавливается на конкретном коде. вот его я и вносил в программу.

  36. Kolini Автор записи

    Этот код совпадает с кодом единичного нажатия?

  37. Kolini Автор записи

    Коды реально лучше смотреть через UART. На сайте эти интерфейсные модули описаны в постах 40 и 41. Нужно добиться того, чтобы при любых длительностях нажатия и интервалах между нажатиями коды принимались ОДИНАКОВЫЕ. Тогда такой код можно считать верным.

  38. GetChiper

    Kolini :

    В EEPROM ничего не пишется. Все базы команд в памяти программ. Функция обучения пульта добавлена не будет. Для ATtiny2313 уже занята вся память программ. Коды команд прочитались правильно?

    Kolini, может, если память занята и нет возможности поместить код обучения, сделать две прошивки?
    Первая прошивка изучает клавиши пульта и заносит их в EEPROM.
    Вторая (контроллер ленты) пользуется изученными кодами с EEPROM.

  39. Mihail 2

    @Kolini
    да код совпадает с кодом единичного нажатия

  40. Mihail 2

    @Kolini
    а может сам пульт некоректно работать? тут же не играет роли по какому протоколу он работает? нам же нужна хеш-сумма? а преобразователь собран из этих постов.

  41. Mihail 2

    @GetChiper
    а как тогда реализовывался бы процесс занесения кодов полученных с пульта в основную программу? если можно чуть по подробнее!!!

  42. GetChiper

    Чуть подробнее:
    1 прошиваем микроконтроллер контроллера RGB ленты прошивкой №1 и проходим процедуру обучения пульта.
    2 прошиваем микроконтроллер контроллера RGB ленты прошивкой №2 (собственно самим контроллером RGB ленты) и пользуемся изученным пультом.

    В основную программу кода заносить и не нужно, их можно брать прямо с EEPROM. Или как вариант при каждом запуске программы заносить их в таблицу переменных SRAM.

    И, конечно, текущую прошивку контроллера RGB ленты придется подправить (как и написать с нуля обучающую прошивку №1).
    И, конечно, на этот подвиг еще нужно сподвигнуть Kolini 🙂

  43. Kolini Автор записи

    Вернусь из отпуска — подумаю как сделать лучше. Mihail2 прошу прислать мне на мэйл (есть в конце топика) программу с уже подставленными тобой кодами. Спасибо.

  44. Mihail 2

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

  45. Kolini Автор записи

    К сожалению НЕТ. Пробуйте еще раз. Спасибо.

  46. nikolyan

    Сколько ни бороздил сеть в поисках нормального драйвера светодиодной ленты-не нахожу.Готовый недорогой драйвер-пульт от которого видим у вас-всем хорош, но у него нет нормальных световых эффектов, плавного перетекания цветов.И вот уже не первый раз вижу схему, с которой используется пульт от готового устройства.А где взять такой пульт? купить готовое устройство и выкинуть оставив пульт?Смысл, если работа схемы ничем не лучше?Наклеивать цветные кружки на пульт от телека-не вариант.Идеально-три кнопки на пульте RGB, каждая из которых регулирует вверх-вниз свой цвет.кнопка вверх-вниз общая яркость.Кнопка вкл-выкл эффект, и кнопка перебора эффектов.Кнопка запомнить.Итого 7 кнопок.Вот это устройство http://picprojects.org.uk/projects/rgb/index.htm замечательно управляется одной кнопкой.Можно сохранять эффект, ставить на паузу и сохранять цвет, переключать эффекты.Но опять-же не всегда удобно ждать когда появится нужный цвет и нажать на паузу…

Добавить комментарий