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 18 980 times, 4 visits today)

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

  1. ripper77

    ripper77 :

    GetChiper :
    Картинку установленных фьюзов можешь показать?

    А как прикрепить файл?

    На форуме не получается зарегистрироваться,по-этому и спросил,куда прислать картинку.

  2. ripper77

    Совсем вялый блог и форум,может кто-нибудь прошивал тиньку codevisionavr ? Пришлите мне фьюзы на него пожалуйста ,а то не работает у меня схема.

  3. GetChiper

    В codevisionavr фьюзы ставишь с точностью до наоборот, то есть где на картинке в статье галочка — в CVAVR галочку не ставишь и наоборот.

    А вообще фьюзы ставятся для работы от внутреннего задающего генератора 8МГц без делителя частоты на 8.

    ПС посмотрел фьюзы на форуме — вроде все правильно.

  4. ripper77

    GetChiper :
    В codevisionavr фьюзы ставишь с точностью до наоборот, то есть где на картинке в статье галочка – в CVAVR галочку не ставишь и наоборот.
    А вообще фьюзы ставятся для работы от внутреннего задающего генератора 8МГц без делителя частоты на 8.
    ПС посмотрел фьюзы на форуме – вроде все правильно.

    Я с фьюзами был уверен,но переспросил на всякий случай,потому,что не понятно в чем причина,пока во всяком случае…Буду думать дальше.Спасибо за ответ.

  5. ripper77

    Схема у меня не работает,либо фьюзы,либо не знаю в чем проблема.

  6. Strannix

    Добрый день, есть такой вопрос, нашел интересное устройство с управлением через канал BlueTooth, можно ли использовать с контроллером ATtiny2313, уже привык к вашей схеме много раз ее собирал и не хотелось бы переходить на PIC. Думаю данная дороботка беспроводным модулем будет интересна многим. Если нужно есть ссылка где можно заказать его по цене 140р за штуку.

  7. exgen

    Здравствуйте. Собрал схему на IRF640.
    Взял коды кнопок через простейший COM приемник, Girder+IgorPlug (показывает коды). Изменил через АлгоритмБилдер соответствующие команды. Прошил. Подключаю, индикаторный LED помигал, лента не горит (она при запуске не должна гореть?). Нажимаю все кнопки (и включения также), LED мигает, на RGB ничего не горит. Вопрос: коды с IgorPlug не являются нужным хешем? При старте устройства RGB не должны работать?

  8. exgen

    Схема работает, но реакция на кнопки пульта произошла только когда часто стал касаться контактом от GND-R470Ом-LED- на вход с TSOP приемника… Т.е. держу кнопку пульта и парарезких касаний этого вывода и кнопка срабатывает по своему прямому назначению. Поясните почему так? Что добавить в схему, чтобы все работало без этого? Кстати, единственное отличие у меня в схеме, что в паре с керамическим 100n стоит 10мФ*25в. Это может быть из-за этого? 4,7мФ нигде не найти…

  9. exgen

    Ладно. Попробую? собирать то особо нечего. Просто интересно, что кнопки пульта, отведенные на свои действия, срабатывают именно этим запрогроммированным действием, но при прикасании LED’a…

  10. exgen

    А вообще получить такой же хеш, как в Attiny2313 на ПК никак нельзя через простой ИК приемник? А то у меня нет переходника UART-COM(USB) и деталей на них нет…

  11. exgen

    МОЖНО! 🙂 Собираем по схеме http://devicectrl.narod.ru/ins.html на TSOP4836. Подключеам. Настраиваем Girder+IgorPlug. Записываем все хешкоды кнопок.
    Переводим их в двоичный код. Меняем 0 на 1, а 1 на 0. Переводим в Hex. Вот и код кнопки для Attiny2313. В общем инверсия. Т.е. например: у меня код кнопки в Girder — BCBD (1011110010111101), для Attiny2313 — 4342 (0100001101000010).
    И не нужен мне UART в данном случае:) Girder + IgorPlug у меня на одном из компов ранее стояли для управления ПК с IR пульта. Надеюсь кому поможет.

  12. exgen

    Ну или из FFFF отнимаем код кнопки из Girder+IgorPlug и получаем инверсный код…

  13. GetChiper

    И работает? Проверял?

  14. exgen

    Все реально работает. Проверял и пользуюсь. Себе только я сделал 3-х канальное освещение на LED с пульта, в чем и была цель… Ну получилось еще и с эффектами дополнительно:)
    WinLirc проверял еще — выдает такие-же хеш коды, как и Girder+IgorPlug, т.е. инверсия относительно Attiny2313
    В статье у вас коды с китайского пульта, у меня с иного, и абсолютно все кнопки назначил на своем пульте. И коды все брал из Girder+IgorPlug. Потом из FFFF отнимал полученный код и получал код для этого устройства (FFFF-BCBD=4342). Все кнопки работают и делают то, что должны.
    В общем необязательно собирать UART и модифицировать схему для единовременного получения кодов, можно и простой ИК приемник c WinLirc’ом например. Надеюсь другим это поможет!

  15. exgen

    Я программой Algoritm Biulder очень плохо знаком… Может кто добавить функцию, что по нажатию определенной кнопки с пульта(кнопку также указать, как и другие), запускался таймер, например на 5 или 10 минут (указать в комментариях, где менять значение времени), чтобы по окончании его, срабатывало выключение всех светодиодов (выполнить процедуру, что назначена на кнопку выключения ду)? Думаю полезная функция, для тех кто включил и забыл… Предполагаю, что с момента нажатия кнопки, эффекты могут остановиться и остаться в этом положении, пока не сработает таймер.

  16. RAY

    А не могли бы вы добавить еще выход или два для диммирования второго канала. Хотел бы повесить RGB и еще одну одноцветную что бы одним пультом можно было управлять, просто несколько кнопок пожертвовать для диммирования?

  17. winzewul

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

  18. GetChiper

    Сам исходник открыл билдером?
    Полистай-посмотри там будут те-же коды что на картинке в статье.

    Коды для этого устройства можно считать 2-мя способами:
    1 первый прошить МК устройством http://www.getchip.net/posts/074-preobrazovatel-ir-to-uart-na-attiny2313/
    подключить выход UART к преобразоателю USB-UART и в программе «Терминал их посмотреть»
    2 как написал, несколько сообщений выше, exgen — при помощи Girder+IgorPlug (преобразователь не понадобится).

  19. winzewul

    считать терминалом я понял он есть, но там ведь нажимаем селд для посылки а для считывания что? в билдере я нашол 2 строчки с кодами, там надо изменить?

  20. GetChiper

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

    По кодам, да — нужно заменить те что там установлены

  21. Gacko2005

    Здравствуйте! Подскажите как отредактировать прошивку под свой пульт, коды кнопок я уже знаю! Я просто открыл исходник программы в CodeVision и не понял где менять коды на свой пульт. Заранее благодарен!

  22. Gacko2005

    @Gacko2005
    Всё, нашел, спасибо! Там просто менять на свои и компилировать?!

  23. Gacko2005

    Коды с пульта считыва ИР приёмником собранным на ардуино, подставил все коды в прошивку, скомпилировал! Запускаю, диод индикации сначала моргает, потом тухнет! Нажимаю кнопки на пульте, он реагирует,лента не загорается вообще!

  24. GetChiper

    Похоже кода не те.
    Нужно их считывать устройством тем что в статье указано.

  25. bogomol

    привет всем. вопрос: а для чего выходы подтянули к земле через 10к?

  26. GetChiper

    Для того, чтобы при отсутствии каких либо сигналов на ногах МК (во время сброса или включения питания) полевые транзисторы на дергали лентой как попало (они очень чувствительные по входам).

  27. bogomol

    спасибо ! я так и думал,но что то схема у меня не хочет работать.буду копать дальше.

  28. exgen

    bogomol :
    спасибо ! схема у меня не хочет работать

    коды клавиш с пульта верно определил? я около часа думал, что не работает устройство… а проблема была в неверных кодах…

  29. bogomol

    а вот на счет верности фиг его знает. на скорости в терминале 9600 выдает вот такой код к примеру: 2a c5 3a , 2a 6f 90 и т.д. я так понял первый байт нам не нужен а второй и третий байт это и есть код кнопки

  30. bogomol

    да, кстати н а других скоростях в терминале совсем другие коды выдает

  31. bogomol

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

  32. GetChiper

    Хорошо, что получилось 🙂

  33. vpashko

    Подскажите, я через Ардуино в Терминале получил код одной из кнопок 8503705D, но что-то он длинный?

  34. GetChiper

    Почему Ардуино? Вродебы код получается с устройства на ATtiny2313

  35. vpashko

    на ATtiny2313 делать надо а тут готовое устройство, так все-же 8 символов методом тыка???

  36. GetChiper

    В разных устройствах по разному воспринимаются ИК посылки

  37. vpashko

    @Gacko2005
    Здравствуйте Gacko2005, у вас получилось с помощью ардуино правильные кода кнопок записать в МК?

  38. vpashko

    ……нужно добиться того, чтобы при любых длительностях нажатия и интервалах между нажатиями коды принимались ОДИНАКОВЫЕ. Тогда такой код можно считать верным.
    А как это сделать? Я собрал два устройства этот 074-Преобразователь IR-to-UART на ATtiny2313 и этот 055-UART to USB – простой преобразователь на ATtiny2313 (Версия 2.Параметры UART:
    — скорость 9600;
    – размер посылки 8бит;
    – 1 стоп бит;
    – без бита четности.
    При нажатии на кнопку 1,2,3 раза код 92029А02 а на 4 или 5,6 раз код 9А029202 так от сюда вопрос:
    — как добиться одного показа кнопок;
    — как с 8 знаков добиться 4.
    — кнопка W на пульте выдает 4 знака, как ее записать?

  39. GetChiper

    — как добиться одного показа кнопок; — теоретически они и должны быть одинаковые если сам пульт не выдает их другие (или может какие помехи). Если это повторяется из разу в раз — это так работает пульт.

    — как с 8 знаков добиться 4. — откуда взялись 8 знаков? нужна прошивка устройства 074 та которая три байта выдает, первый из которых звездочка и его нужно игнорировать. получается 2 байта — 4 шестнадцатеричных знака. может это накладываются 2 посылки?

    — кнопка W на пульте выдает 4 знака, как ее записать? — как это выглядит в терминале?

  40. vpashko

    Прошивка эта — 074-T2313-IR-to-UART-3B.hex — Прошивка IR-to-UART на ATtiny2313 (3 байта).
    А теперь по терминалу — Параметры UART:
    — скорость 9600;
    – размер посылки 8бит;
    – 1 стоп бит;
    – без бита четности.
    ???? почему никто не пишет за черную точку на против ASCII, она должна там быть?Если должна то где еще должна стоять?
    Если с ASCII то получаются крякозяблы, а когда с HEX,Dec,Hex,Bin в терминал с пульта 8 знаков,например кнопка R — 9A16FE или 9206FE,
    кнопка G — 9A02FF или 9202FF, кнопка B — 9A17FC или 9217FC

  41. GetChiper

    — параметры UART правильные
    — черная точка должна стоять
    — попробуйте вставлять в текст программы последние 4 знака сообщения 9A02FF —> 02FF

  42. vpashko

    Добрый день,вопрос: если данное устройство начало реагировать на нажатие кнопок пульта, значит коды записанные правильные?

  43. GetChiper

    Если «реагировать» — это выполнять заложенные функции, тогда да.

  44. bogomol

    доброго здрвавия всем! такой вопрос:rgb лента 14.4вт на метр. ток стока макс. 18А при питании 12В поллучаем 200вт(полевики на радиатор поставить).при подходящем бп я значит могу до 10 метров ленты свободно подключить или нет?

  45. GetChiper

    Даже больше, так как при работе ленты, обычно, светодиоды работают не на максимум. На 30-40% можно «прицепить» больше ленты.

  46. fox40

    Добрый день, я может не нашёл, а реально к этому проекту прикрутить энкодер с кнопкой?
    Спасибо за Ваш труд!

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