Съдържание:

Неадресируем RGB LED лента Аудио визуализатор: 6 стъпки (със снимки)
Неадресируем RGB LED лента Аудио визуализатор: 6 стъпки (със снимки)

Видео: Неадресируем RGB LED лента Аудио визуализатор: 6 стъпки (със снимки)

Видео: Неадресируем RGB LED лента Аудио визуализатор: 6 стъпки (със снимки)
Видео: Трактористы (комедия, реж. Иван Пырьев, 1939 г.) 2024, Ноември
Anonim
Image
Image

От известно време имам 12v RGB LED лента около шкафа на телевизора си и се управлява от скучен LED драйвер, който ми позволява да избера един от 16 предварително програмирани цвята!

Слушам много музика, която ме държи мотивиран, но осветлението просто не създава настроение. За да поправите това, решихте да вземете аудио сигнала, който беше подаден на моя високоговорител през AUX (3,5 мм жак), обработете го и съответно контролирайте RGB лентата.

Светодиодите реагират на музиката въз основа на силата на басите (ниски), високи (средни) и високи честоти.

Честотният диапазон - Цветът е както следва:

Ниско - червено

Средно - зелено

Високо - Синьо

Този проект включва много DIY неща, защото цялата верига е построена от нулата. Това би трябвало да бъде доста лесно, ако го настройвате на макет, но е доста предизвикателно да го запоите върху печатна платка.

Консумативи

(x1) RGB LED лента

(x1) Arduino Uno/Nano (препоръчва се Mega)

(x1) TL072 или TL082 (TL081/TL071 също са добре)

(x3) TIP120 NPN транзистор (TIP121, TIP122 или N-Channel MOSFETs като IRF540, IRF 530 също са добре)

(x1) 10kOhm потенциометър линеен

(x3) 100kOhm 1/4watt резистори

(x1) 10uF електролитен кондензатор

(x1) 47nF керамичен кондензатор

(x2) 3,5 мм аудио конектор - женски

(x2) 9V батерия

(x2) 9V конектор за захващане на батерията

Стъпка 1: Разбиране на видовете RGB LED ленти

Разбиране на видовете RGB LED ленти
Разбиране на видовете RGB LED ленти

Има два основни вида LED ленти, „аналогов“и „цифров“.

Лентите от аналогов тип (фиг. 1) имат всички светодиоди, свързани паралелно и затова действа като един огромен трицветен светодиод; можете да настроите цялата лента на всеки цвят, който искате, но не можете да контролирате цветовете на отделните светодиоди. Те са много лесни за използване и сравнително евтини.

Лентите от цифров тип (фиг. 2) работят по различен начин. Те имат чип за всеки светодиод, за да използвате лентата, която трябва да изпратите цифрово кодирани данни към чиповете. Това обаче означава, че можете да управлявате всеки светодиод поотделно! Поради допълнителната сложност на чипа, те са по -скъпи.

Ако ви е трудно физически да идентифицирате разликите между лентите от аналогов и цифров тип,

  1. Анологичен тип използва 4 пина, 1 общ положителен и 3 отрицателни, т.е. по един за всеки цвят на RGB.
  2. Цифров тип използване 3 пина, положителни, данни и земя.

Ще използвам ленти от аналогов тип, защото

  1. Има много малко или никакви инструкции, които учат как да направят музикално реактивна лента от аналогов тип. Повечето от тях се фокусират върху цифровия тип и е по-лесно да ги накарат да реагират на музика.
  2. Наоколо лежаха няколко ленти от аналогов тип.

Стъпка 2: Усилване на аудио сигнала

Усилване на аудио сигнала
Усилване на аудио сигнала
Усилване на аудио сигнала
Усилване на аудио сигнала
Усилване на аудио сигнала
Усилване на аудио сигнала

Аудиосигналът, който се изпраща през аудио жака, е

аналогов сигнал, който се колебае в рамките на +200mV и -200mV. Това е проблем, защото искаме да измерим аудио сигнала с един от аналоговите входове на Arduino, тъй като аналоговите входове на Arduino могат да измерват само напрежения между 0 и 5V. Ако се опитаме да измерим отрицателните напрежения в аудио сигнала от, Arduino ще прочете само 0V и в крайна сметка ще изрежем долната част на сигнала.

За да го разрешим, трябва да усилим и компенсираме аудио сигналите, така че да попаднат в диапазон от 0-5V. В идеалния случай сигналът трябва да има амплитуда от 2.5V, която да се колебае около 2.5V, така че минималното му напрежение да е 0V, а максималното му напрежение е 5V.

Усилване

Усилвателят е първата стъпка във веригата, той увеличава амплитудата на сигнала от около + или - 200mV до + или - 2.5V (в идеалния случай). Другата функция на усилвателя е да защитава аудио източника (нещото, което генерира аудио сигнала на първо място) от останалата част на веригата. Изходящият усилен сигнал ще генерира целия си ток от усилвателя, така че всяко натоварване, положено по -късно във веригата, няма да бъде "усетено" от аудио източника (телефонът/iPod/лаптопът в моя случай). Направете това, като настроите един от оп-усилвателите в пакета TL072 или TL082 (фиг. 2) в конфигурация на неинвертиращ усилвател.

Информационният лист на TL072 или TL082 казва, че той трябва да се захранва с +15 и -15V, но тъй като сигналът никога няма да бъде усилен над + или -2.5V, добре е да пуснете оп -усилвателя с нещо по -ниско. Използвах две деветволтови батерии, свързани последователно, за да създам + или - 9V захранване.

Свържете вашите +V (щифт 8) и –V (щифт 4) към оп-усилвателя. Свържете сигнала от моно жака към неинвертиращия вход (щифт 3) и свържете заземяващия щифт на жака към 0V референцията на вашето захранване (за мен това беше кръстовището между двете 9V батерии последователно). Свържете 100kOhm резистор между изхода (щифт 1) и инвертиращия вход (щифт 2) на оп-усилвателя. В тази схема използвах 10 kOhm потенциометър, свързан като променлив резистор, за да настроя усилването (количеството, което усилвателят усилва) на моя неинвертиращ усилвател. Свържете този 10K линеен конусен пот между инвертиращия вход и 0V референцията.

DC Offset

DC компенсиращата верига има два основни компонента: делител на напрежение и кондензатор. Делителят на напрежението е направен от два 100k резистора, свързани последователно от 5V захранването на Arduino към земята. Тъй като резисторите имат същото съпротивление, напрежението на кръстовището между тях е равно на 2.5V. Този 2.5V преход е свързан към изхода на усилвателя чрез 10uF кондензатор. Тъй като напрежението от страната на усилвателя на кондензатора се повишава и намалява, това води до натрупване на заряд за момент и отблъскване от страната на кондензатора, прикрепен към кръстовището 2.5V. Това води до напрежение на кръстовището 2.5V да се колебае нагоре и надолу, центрирано около 2.5V.

Както е показано на схемата, свържете отрицателния проводник на 10uF кондензатор към изхода на усилвателя. Свържете другата страна на капачката към кръстовището между два 100k резистора, свързани последователно между 5V и земята. Също така добавете 47nF кондензатор от 2.5V към земята.

Стъпка 3: Разлагане на сигнала в сума от стационарни синусоиди - теория

Разлагане на сигнала в сума от стационарни синусоиди - теория
Разлагане на сигнала в сума от стационарни синусоиди - теория

Аудиосигналът, изпратен през всеки 3,5 мм жак, е в

обхват от 20 Hz до 20 kHz. Семплира се при 44,1 kHz и всяка проба е кодирана на 16 бита.

За да деконструираме основните елементарни честоти, които съставляват аудио сигнала, прилагаме преобразуване на Фурие към сигнала, който разлага сигнала на сума от стационарни синусоиди. С други думи, анализът на Фурие преобразува сигнал от първоначалната му област (често време или пространство) в представяне в честотната област и обратно. Но изчисляването му директно от определението често е твърде бавно, за да бъде практично.

Фигурите показват как изглежда сигналът във времева и честотна област.

Тук алгоритъмът за бързо преобразуване на Фурие (FFT) е доста полезен!

По дефиниция, FFT бързо изчислява такива трансформации, като факторизира DFT матрицата в продукт на редки (предимно нулеви) фактори. В резултат на това той успява да намали сложността на изчисляването на DFT от O (N2), което възниква, ако просто се приложи определението за DFT, към O (N log N), където N е размерът на данните. Разликата в скоростта може да бъде огромна, особено за дълги масиви от данни, където N може да бъде в хиляди или милиони. При наличието на закръглена грешка, много алгоритми на FFT са много по-точни от оценката на DFT директно или косвено.

С прости думи, това просто означава, че алгоритъмът FFT е по -бърз начин за изчисляване на преобразуването на Фурие на всеки сигнал. Това обикновено се използва на устройства с ниска изчислителна мощност.

Препоръчано: