Автомат световых эффектов RGB 24 канала

Радиолюбитель сродни художнику — есть настроение творит, а если нет его, то и припой на паяльник даже не хочет липнуть… В такие моменты я, как и всегда прошу мою Музу, любимую Жену, подкинуть идею, сделать, так сказать, заказ какой-нибудь. «Слушай, — говорит, ведь у нас ночника нету. Хочу, чтоб светился моим любимым цветом – бирюзовым. И успокаивающими волнами-переливами разноцветными еще можно». Заказ принят!..  
И вот, в один из свободных вечеров в очередном порыве выискать на интернет-просторах чё-нибудь такое-эдакое мигающее и красивое, да чтоб еще и на контроллере, и конечно разноцветное, попал на http://lightportal.at.ua. Тут глаза и разбежались… Ну, конечно-же, моментально собрал «СОЮЗ-1«. Затем пришелся по душе проект  «Светодиодный диммер«.
Все собранные мною до сих пор схемы с применением микроконтроллеров Atmel (ну не люблю я PIC-и, и всё тут!) сводились к повторению уже существующих. Приходилось только немного подправлять имеющиеся исходники, которые были написаны на разных языках программирования. Но недавно я познакомился с простым языком, именуемым BASCOM.  Знакомство началось здесь со статьи  «Лабораторный блок питания с управлением от микроконтроллера». Немногим более 10 лет назад на мою долю приходилось прекрасное студенческое время, где на одном из курсов нам преподавали BASIC.  Поэтому В процессе решения поставленной мне задачки (мною же и поставленной smile) оказалось, что BASCOM-AVR  для меня немного знаком. Так вот, от диммера хотелось большего. Сначала думал как обычно, там поправить, здесь что-то изменить. Но чем больше правил, тем больше запутывался. Поэтому решил начать сначала. Скелетом для написания первой собственной программы на языке BASCOM послужил исходник из вышеупомянутой статьи 
«Светодиодный диммер«.  Посидев месячишко вечерами с BASCOM-ом вырисовалось следующее устройство.
24 канальный автомат световых эффектов на RGB-светодиодах и микроконтроллере Atmega16.







Схема простая, я даже печатку не травил. Мозги устройства собраны на макетке «в дырочку». К выходам портов A, B и C подключены входы 3-х микросхем ULN2803, к которым, в свою очередь, подключены аноды светодиодов. Яркость свечения каждого из 24 каналов задается программным ШИМ-ом, 16 градаций яркости. Катоды каждого цвета соединены в 3 группы и получают питание от P-канальных полевиков, управляемых аппаратным ШИМ-ом с портов D.4, D.5 и D.6 через примитивные драйверы на КТ315 транзисторах, 32 градации яркости.
Для управления устройством поставил 4 кнопки, повесив их через диоды на порт D.3. По низкому порогу на нем, срабатывает прерывание и переход на программу обработки прерываний от кнопок. Это сделано для того, чтобы при нажатии на любую из кнопок наступала моментальная реакция, не ожидая в цикле конца массива с эффектом.
Управляется так: 
при зажатой S1, тремя остальными выбирается яркость цвета, т.е. производится управление аппаратным ШИМ,- (S2-красного, S3-зеленого, S4-синего). Интенсивность каждого цвета изменяется от нулевого значения до максимального, затем в обратную сторону, с паузами в точках экстремума. Так мне показалось удобней. Информация о яркости записывается в Eeprom для каждого цвета, каждого из эффектов;
удержанием S2 выбирается скорость каждого эффекта, которая также записывается в Eeprom тоже для каждого из эффектов. Для визуализации изменения скорости предусмотрен отдельный массив Speders1. При выборе скорости не всегда удавалось визуально наблюдать ее изменение, т.к. при этом приостанавливается основной цикл и может оказаться, что все каналы погашены. Поэтому я специально зажег три канала, по интенсивности свечения которых можно наблюдать изменение скорости. 
   While Pind.1 = 0                ‘ пока удерживается кнопка S2
   Portb = &B0000001 
   Porta = &B0001000
   Portc = &B0000001;
S3 переключает эффекты по кругу, а ее длительное удержание включает автоматический перебор эффектов в цикле от первого до последнего. Последний выбранный номер эффекта записывается в EEPROM, если же был выбран режим «авто», то при включении устройство стартует с режима «авто»;
S4 –переключает цветовые режимы по кругу:
1.Цвет, установленный пользователем. 
2.Плавная смена цвета в пределах спектра, выбранного в 1-м режиме. Допустим, если был выбран малиновый (R-100%, G-0%, B-100%), то цвет меняется от синего к красному со всеми возможными их совместными комбинациями без участия зеленого.
3.Быстрая смена цвета в пределах спектра, выбранного в 1-м режиме.   
4.Плавная смена цвета по кругу (полный непрерывный спектр). 
6.Быстрая смена цвета по кругу (полный непрерывный спектр). 
7.Возврат к п.1
Выбранный цвет или цветовой режим также записывается в EEPROM.
В принципе, исходник постарался прокомментировать более-мение детально, так что должно быть все понятно. Но немного поясню.
В основном цикле программы можно было бы для красивого структурирования использовать переходы в отдельный массив для каждого из эффектов, но так программа занимала больше памяти. Поэтому я использовал общий массив для всех эффектов с вычислением начальной ячейки чтения яркостей эффекта как у автора диммера:
     Eff = Effect — 3      ‘ здесь -3 это 3 программных эффекта
     N = Eff * 24
     N = N — 24
Для построения интересного эффекта «набегающие волны», также использовал исходник «Светодиодной снежинки«
При таком расположении яркостей в массиве Pwm_rnd, получается плавный псевдо-случайный перелив всех 24 светодиодов.
При построении эффекта «Мерцающие звезды» использована функция Rnd( ), благодаря которой получен эффект случайных вспышек всех 24 каналов. А если еще и активирован режим непрерывного спектра, то выглядит это очень красиво. 
В память контроллера удалось поместить 16 табличных эффектов. EEPROM для хранения эффектов не подходила, ввиду малого объема, а для записи режимов – в самый раз. Разобраться с командами для работы с EEPROM было удивительно просто. Из нескольких вариантов команд подошел такой:
Writeeeprom S , Effect
В программе это работает так. Допустим, если сейчас мы изменяем скорость S для 5-го эффекта (Effect=5), то после отпускания кнопки S2 значение S запишится в 5-й байт EEPROM.
Readeeprom S , Effect
— Считать значение скорости для 5-го еффекта.
Вообще в BASCOM-AVR очень обширный HELP со множеством примеров
Прошивать контроллер нужно файлом final.hex, установив фъюзы на тактирование от внешнего кварца на 16МГц. Я поставил кварцевый резонатор на 20МГц специально, так мерцание диодов при работе ШИМ-ов не заметно вовсе.
При первом запуске все будет работать, но в EEPROM будут нули. После перебора и настройки параметров скорости и цветового оформления всех эффектов, эти параметры сохранятся в память контроллера.   
Сначала написания программы усиленно использовался PROTEUS, но когда количество каналов возросло до 24, он начал сильно тормозить. В момент, когда я задействовал аппаратный ШИМ, PROTEUS вообще помер… Пришлось сваять макет, и отлаживать дальше на нем. Поэтому за время написания программы счетчик количества программирований моей Atmega16 перевалил за 1000…
Видео с интересным эффектом при съёмке. Видна работа ШИМ в развёртке.
Да прибудет ваша Муза с Вами!
Творческих успехов!
Автор: vitalkalm — Дёгтев Виталий 
vitalkalm@mail.ru 

Автор публикации

не в сети 1 день

Radan

0
Комментарии: 899Публикации: 169Регистрация: 30-11--0001
Поделиться

36
Отправить ответ

Пожалуйста, чтобы добавить комментарий.
Войти с помощью: 
27 Цепочка комментария
9 Ответы по цепочке
0 Последователи
 
Популярнейший комментарий
Цепочка актуального комментария
10 Авторы комментариев
extremeextaz yuransd yuransdkoka45565akon Авторы недавних комментариев
  Подписаться  
новые старые рейтинг
Подписаться на
extremeextaz
Участник

Всем привет, Я использую AVRDUDE PROG кто нибудь может сказать какие фьюзы пометить. Спасибо.

yuransd
Участник

Кто собрал этот автомат,схема рабочая?.А то я не могу понять в статье написано К выходам портов A, B и C подключены входы 3-х микросхем ULN2803, к которым, в свою очередь, подключены аноды светодиодов.ULN2803 управляет катодами а не анодами значит светики должны бить с общим катодом а по схеме они с общим анодом. Катоды каждого цвета соединены в 3 группы и получают питание от P-канальных полевиков, управляемых аппаратным ШИМ-ом с портов D.4, D.5 и D.6 через примитивные драйверы на КТ315 транзисторах, значит на каналы RGB приходит +12в.Мне кажется здесь что то напутано,я согласен если светодиод с общим катодом тогда да.Может я… Читать далее »

koka45565
Участник

Если у кого есть подправленная прошивка выложите ,пожалуйста.

akon
Участник

какие полевики?

pwd
Участник

Наконец-то довел до состояния идеальной работыю Автору спасибо за прекрасный автомат световых эффектов. Прекрасная штука. Пришлось правда поменять пару параметров в исходнике и перекомпилировать исходник. Все работает прекрасно. Так же как на демо. Спасибо за проект.

pwd
Участник

В Hex файле мне кажется что-то не то. По крайней мере в исходнике значения задержки для регулировки скоростей Speeders есть два значения 180 и 256, которым в Hex-файле соответствуют значения В5 и 00, а 180 это B4h, а 256 это уже 100h. Перебор цветов спектра тоже не получается. Получается малиново-бирюзовый. Зеленый и синий полностью не убираются. Что-то с константами в Hex файле.

pwd
Участник

Виталий, при выставлении цветов при нажатой S1 красный убыраеься до нуля, синий и зеленый не до конца. С выходов 18,19 кнтроллера все-таки ШИМ проходит. По исходнику подпрограммы выставления цветов одинаковы. Почему так?

pwd
Участник

У меня почему-то нет эффекта мерцающих звезд. При переборе комбинаций есть такая, что ничего не происходит. Ничего даже не стветится. Почему?

pwd
Участник

Повторил схему, проект интересный. С выставлением скоростей проблема. Скорость регулирется только вперед. И непонятно, когда нужно остановиться при выставлении скорости. Цвета -в основном оттенки бирюзово-малиновые. Чистых нет. Я взял RGB входа на светодиоды и подсоединил к выходу RGB диммера (схема Носова). Получилось очень эффектно. Действительно полный спектр всех цветов радуги.

yuradenis
Участник

Почему использованы стабилитроны D1-D4 (1N4115) именно на 22 вольта
Можно ли заменить обычными диодами, например 1N4148 ?

Vitalkalm
Участник

«Можно ли заменить обычными диодами, например 1N4148 ?»
Именно!

megawolt75550
Участник

Скажите ,а прошивка для 32 меги подойдёт? Если нет ,то можете выложить . Спасибо !

Vitalkalm
Участник

Исходник перекомпилировать можно и под 32 мегу. Все выложено.

Disa192
Участник

Вылезла надпись, что это сайт атакует компьютеры. Не буду туда заходить. Но за помощь в любом случае благодарю!

Disa192
Участник

Спасибо! Ну, может, еще кто-либо сможет помочь.

Disa192
Участник

Спасибо! А про фьюзы скажите, пожалуйста!

Disa192
Участник

И еще пара уточнений, пожалуйста!
С1, С2 — это 20 пф?
С3, С4, С5 — это 0.1мкф? Неполярные?

Спасибо!

Disa192
Участник

Подскажите, пожалуйста, начинающему! Как нужно выставить фьюзы для этого приборчика в программе CodeVisionAVR? Никак толком не могу разобраться. Спасибо заранее!

Vitalkalm
Участник

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

NCy
Участник

12 в стабилизированное надо? а можно без него обойтись?

NCy
Участник

Решил собрать схемку, но переделав плату. И появился вопрос: на светодиодны какое напряжение идет, 12-5=7В?

Vitalkalm
Участник

Пожалуй, себя процитирую, в статье полное описание.
"…Прошивать контроллер нужно файлом final.hex, установив фъюзы на тактирование от внешнего кварца на 16МГц. Я поставил кварцевый резонатор на 20МГц специально, так мерцание диодов при работе ШИМ-ов не заметно вовсе…"

Bob
Гость
Bob

8 МГЦ, в исходниках смотри

wasa
Гость
wasa

Кварц на сколько мегагерц ???

trojan-krichev
Гость
trojan-krichev

А что за трек играет в видеоролике???
раскошелюсь куплю ленточку и мегу !!!
Зачетно!!!

Vitalkalm
Участник

А зачем переписывать? Используй любой один цветовой канал.

Livestealer
Гость
Livestealer

А можно перепистать программу просто под белые светодиоды?
Если не трудно

Armen
Гость
Armen

В статье о полярности подключения светодиодов написано правильно , подключены входы 3-х микросхем ULN2803, к которым, в свою очередь, подключены аноды светодиодов.Большие Спасибы Автору.

Juris_3D
Участник

Пока не собирал, но выглядит достойно проработанная вещь, отличная статья! Большие Спасибы Автору. Я, конечно, как неизлечимо преданный поклонник Цветомузык, попытался бы добавить реакцию от звука, изменение скорости от уровня сигнала или как-то ещё. Если бы умел smile