Цветомузыка На Базе Плис



Цветомузыка или разработка трехполосного анализатора спектра реального времени с использованием вейвлет-анализа на базе FPGA. Однажды мой отец показал мне созданную им аналоговую цветную музыку.

Три прожектора весело, четко в такт музыке мигали, настроенные каждый на свой диапазон частот, а четвертый зажигался только тогда, когда какой-либо из прожекторов гас, чтобы в комнате не было темно во время затишья.

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

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



Цветомузыка на базе ПЛИС

Поскольку я работаю в компании, которая занимается обработкой цифровых и аналоговых сигналов на базе ПЛИС, то идея возникла сама собой.

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

Покопавшись в Интернете, какие диапазоны частот используются для создания цветомузыки (ведь тема эта достаточно старая), я нашел следующее: НЧ: 40 – 110 Гц СЧ: 1000 – 5000 Гц ВЧ: 10000 – 18000 Гц В качестве фильтров я изучил вейвлет-преобразование, которым занимается компания, и получил три набора коэффициентов, с помощью которых свернул данные с помощью АЦП с частотой дискретизации 3 МГц.

Частотная характеристика фильтров представлена на рисунке:

Цветомузыка на базе ПЛИС

Итоговый проект выглядит следующим образом:

Цветомузыка на базе ПЛИС

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

Аппаратно созданы блоки памяти с коэффициентами фильтра, блок чтения данных с АЦП, реализована свертка данных АЦП и коэффициентов фильтра, а также блок с ШИМ для светодиодов.

Все это было подключено к процессору, скомпилировано и зашито в Spartan-3 XC3S400. Далее я начал писать программу для процессора, которая выполняла бы нужную мне задачу — считывала результаты свертки (амплитуда сигнала на определенных частотах) и подавала полученные значения на светодиоды ШИМ.

Результаты свертки были правильными, но светодиоды почему-то горели постоянно и гасли только тогда, когда музыка почти утихала.

Начал разбираться и понял, что яркость светодиода зависит от порога ШИМ не линейно, а логарифмически.

То есть, если у меня 1024-битный ШИМ, то чтобы плавно менять яркость светодиода от самого тусклого к самому яркому, мне пришлось последовательно брать следующие пороговые числа ШИМ: 0, 15, 31, 63, 127. , 255, 511, 1023. Таким образом, я получил 8 разных степеней свечения светодиодов, и этого мне вполне хватило.

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

Далее я написал логику для пассивного канала.

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

Таким образом, в комнате никогда не будет совсем темно.

Еще я написал автоматическую регулировку чувствительности - при изменении громкости музыки программа сама увеличивает или уменьшает коэффициент, который умножается на результат свертки из фильтров.

Также я написал программу на Delphi, которая общается с платой через COM-порт RS-232 и умеет строить графики по всем каналам в реальном времени, а также в порядке тонкой настройки изменять значения некоторых внутренних переменных.

Все эти настройки можно записать на флешку EEPROM 93C86, которая была распаяна на подаренной мне плате.

Внешний вид программы:

Цветомузыка на базе ПЛИС

Когда все это заработало, нужно было создать силовой агрегат. В качестве перехода к силовой части я использовал оптотиристоры Т0125-12,5:

Цветомузыка на базе ПЛИС

Эти элементы имеют 4 вывода: 2 из них — обычные светодиоды, а два других — силовые выключатели.

Вы можете догадаться, что когда светодиод горит, две клеммы питания замкнуты, и наоборот. Я продублировал каналы ШИМ в аппаратной части своего проекта и подключил их к выходам оптотиристоров (правда, ШИМ для этих каналов пришлось инвертировать из-за обратной логики работы оптотиристоров), и выложил небольшую полоску по силовой части для подключения точечных светильников.



Цветомузыка на базе ПЛИС

Все заработало с первого раза и работает до сих пор.

В качестве точечных светильников используются обычные лампочки на 220В.



Цветомузыка на базе ПЛИС

В дальнейшем я решил добавить на цветно-музыкальную панель два аналоговых измерителя на два канала, дал им красивую зеленую подсветку, и в результате получилась вот такая коробочка:

Цветомузыка на базе ПЛИС

Ну а внутри все это выглядит так:

Цветомузыка на базе ПЛИС

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

Файл прошивки для Spartan-3 XC3S400-4tq144 а также программа Delphi с исходниками здесь .

Печатные платы выложу чуть позже.

Этого комплекта хватит тем, кто серьезно хочет собрать себе такую же систему.

"="

Теги: #Сделай сам или сделай сам #плайс #FPGA #плайс #фильтр #цветомузыка #анализатор спектра
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.