ЦМУ с выбором диапазона частот для каждого канала

Цветомузыка на AVR (ATMega16).
Из преимуществ над другими вариантами — возможность задавать диапазоны частот на каждый канал индивидуально.
Для этого применяется LCD дисплей и энкодер.
Аналоговая часть взята со схемы Детка.
Цифра взята с какого то форума, малость доработана, а точнее разведена на два канала(стерео).
Для настройки полос был введен LCD16/2. 
(Можно и другой, если поправить индикацию. В начале хотел сделать индикацию работы каналов на нем, но он тупо не справился по скорости отображения.) 
В исходной программе, откуда в принципе и бралась алгоритмика, использовался массив вида: 
unsigned char E_spektrum_canal_left[8] = {4,8,12,16,18,22,26,30}; 
Массивов у  меня два — значения измерений по частотам левого и правого каналов, которые выбираются из массива spektrum:
spektrum[0]     0
spektrum[1]     156,25
spektrum[2]     312,5
spektrum[3]     468,75
spektrum[4]     625
…….
spektrum[29]    4531,25
spektrum[30]    4687,5
spektrum[31]    4843,75
Эти значения постоянно получаются из замеров АЦП и обрабатываются библиотекой ffft.s (ставшей уже стандартной, и применяемой много где, в том числе и в ЦМУ).
Значения массива я затащил в EEPROM, потом при старте железки вытаскиваю в обычный массив. 
При помощи энкодера переключаем каналы и задаем значения поворотом (значение от 0 до 31). 
При переходе на следующий параметр пишем в EEPROM .
Преимуществ (для меня) два: это при ошибке разводки канала можно переназначить частоты и радоваться, ну и вторая вытекает из первой — можно на лету проиграться с цветами уже на готовой ЦМУ, без лишних экспериментов и прошивок.
Выходные каналы работают на программном ШИМе, по таймеру. 
При этом регулируется и яркость (верхний порог ШИМ) и скорость обновления. 
Меня немного раздражает скорость «моргания», по идее, можно вставить задержку на переключение ШИМа по каждому каналу, либо посадить емкости параллельно светодиодам.
Схема:
Под экраном смонтированы светильники, что бы хрусталь «играл». 8 каналов,
сведенных ULN-ками из 2х8 стерео.
Архив со схемой и платой для proteus.
Исходный код.

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

не в сети 4 дня

Radan

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

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

Оставьте первый комментарий!

Войти с помощью: 
Подписаться на
Juris_3D
Участник

Я не собирал, но если смотрим исходный кода, то там дефинировано #define F_CPU 16000000UL, так что 16MHz.

electrik19616742
Участник

Добрый всем вечер.Мужики подскажите кто собирал ЦМУ с выбором диапазона частот,без дисплея будет работать если да то какой нужен кварц, а то в схеме он не указон. Большое спасибо.

Peroon
Гость

http://youtu.be/T9P3SSM4F_A
Видео работы

Peroon
Гость

Как буду в гостях, сниму на телефон.
На самом деле (на мой взгляд) тут интересно больше тот момент, что она отрабатывает стерео. Т.е. два аналоговых канала на входе.
Мерцанием я называю скорость включения и выключения светодиодов. Тут можно как то побороться обычными емкостями , либо снизить скважность опроса АЦП.

Juris_3D
Участник

Может есть возможность выложить небольчое видео работы устройства? Хотелось бы это включить в мой список повторяемых конструкций на будущее, но вот отпугивает упоминание мерцания. Я сторонник плавного зажигания и гашения каналов (ну уж если и регулируемая плавность, то вообще сказка). Как с этим делом здесь?