Innehållsförteckning:

Icke-adresserbar RGB LED Strip Audio Visualizer: 6 steg (med bilder)
Icke-adresserbar RGB LED Strip Audio Visualizer: 6 steg (med bilder)

Video: Icke-adresserbar RGB LED Strip Audio Visualizer: 6 steg (med bilder)

Video: Icke-adresserbar RGB LED Strip Audio Visualizer: 6 steg (med bilder)
Video: Материнская плата Gigabyte X570 Aorus Elite WiFi Gaming Распаковка и обзор 2024, November
Anonim
Image
Image

Jag har haft en 12v RGB LED-remsa runt mitt TV-skåp ett tag och den styrs av en tråkig LED-drivrutin som låter mig välja en av 16 förprogrammerade färger!

Jag lyssnar på mycket musik som håller mig motiverad men belysningen gör bara inte stämningen rätt. För att fixa det bestämde jag mig för att ta ljudsignalen som gavs till min högtalare via AUX (3,5 mm -uttag), bearbeta den och kontrollera RGB -remsan därefter.

Lysdioderna reagerar på musiken baserat på storleken på bas (låg), diskant (mitten) och hög frekvens.

Frekvensområdet - Färgen är följande:

Låg - Röd

Mitt - grönt

Hög - Blå

Detta projekt involverar många DIY -saker eftersom hela kretsen byggdes från grunden. Det här borde vara ganska enkelt om du sätter upp det på en brödbräda, men ganska utmanande att lödda det på ett kretskort.

Tillbehör

(x1) RGB LED -remsa

(x1) Arduino Uno/Nano (Mega rekommenderas)

(x1) TL072 eller TL082 (TL081/TL071 är också bra)

(x3) TIP120 NPN Transistor (TIP121, TIP122 eller N-Channel MOSFETs som IRF540, IRF 530 är också bra)

(x1) 10kOhm potentiometer linjär

(x3) 100kOhm 1/4watt motstånd

(x1) 10uF elektrolytkondensator

(x1) 47nF keramisk kondensator

(x2) 3,5 mm ljudkontakt - hona

(x2) 9V batteri

(x2) 9V batteriknappkontakt

Steg 1: Förstå typer av RGB LED -remsor

Förstå typer av RGB LED -remsor
Förstå typer av RGB LED -remsor

Det finns två grundläggande typer av LED -remsor, "analog" och "digital".

Remsor av analog typ (fig 1) har alla lysdioder anslutna parallellt och så fungerar det som en enorm trefärgad LED; du kan ställa in hela remsan till vilken färg du vill, men du kan inte styra de enskilda lysdiodens färger. De är mycket enkla att använda och ganska billiga.

Digitalremsorna (fig 2) fungerar på ett annat sätt. De har ett chip för varje LED, för att använda remsan måste du skicka digitalt kodad data till chipsen. Detta betyder dock att du kan styra varje LED individuellt! På grund av chipets extra komplexitet är de dyrare.

Om du har svårt att fysiskt identifiera skillnaderna mellan de analoga och digitala remsorna,

  1. Anolog-typ använder 4 stift, 1 vanligt positivt och 3 negativ, det vill säga en för varje färg av RGB.
  2. Digital typ använder 3 stift, plus, data och mark.

Jag kommer att använda remsor av analog typ, eftersom

  1. Det finns väldigt få eller inga instruktioner som lär hur man gör en musikreaktiv remsa av analog typ. Majoriteten av dem fokuserar på den digitala typen och det är lättare att få dem att reagera på musik.
  2. Jag hade några remsor av analog typ liggande.

Steg 2: Förstärka ljudsignalen

Förstärka ljudsignalen
Förstärka ljudsignalen
Förstärka ljudsignalen
Förstärka ljudsignalen
Förstärka ljudsignalen
Förstärka ljudsignalen

Ljudsignalen som skickas ut via ljuduttaget är

en analog signal som oscillerar inom +200mV och -200mV. Nu är detta ett problem, vi vill mäta ljudsignalen med en av Arduinos analoga ingångar eftersom Arduinos analoga ingångar bara kan mäta spänningar mellan 0 och 5V. Om vi försökte mäta de negativa spänningarna i ljudsignalen från, skulle Arduino bara läsa 0V och vi skulle sluta klippa botten av signalen.

För att lösa det måste vi förstärka och förskjuta ljudsignalerna så att de faller inom ett intervall på 0-5V. Helst ska signalen ha en amplitud på 2,5V som oscillerar runt 2,5V så att dess minsta spänning är 0V och dess maxspänning är 5V.

Förstärkning

Förstärkaren är det första steget i kretsen, den ökar signalens amplitud från cirka + eller - 200mV till + eller - 2,5V (helst). Förstärkarens andra funktion är att skydda ljudkällan (det som genererar ljudsignalen i första hand) från resten av kretsen. Den utgående förstärkta signalen kommer att hämta all sin ström från förstärkaren, så all belastning som läggs på den senare i kretsen kommer inte att "kännas" av ljudkällan (telefonen/iPod/bärbar dator i mitt fall). Gör detta genom att ställa in en av op-ampere i paketet TL072 eller TL082 (fig 2) i en icke-inverterande förstärkarkonfiguration.

Databladet för TL072 eller TL082 säger att det ska drivas med +15 och -15V, men eftersom signalen aldrig kommer att förstärkas över + eller -2.5V går det bra att köra op -amp med något lägre. Jag använde två nio -voltsbatterier i serie för att skapa en + eller - 9V strömförsörjning.

Anslut din +V (stift 8) och –V (stift 4) till op-amp. Koppla signalen från monokontakten till den icke-inverterande ingången (stift 3) och anslut jordkontakten på uttaget till 0V-referensen på din spänningsmatning (för mig var detta övergången mellan de två 9V-batterierna i serie). Anslut ett 100kOhm-motstånd mellan utgången (stift 1) och inverteringsingången (stift 2) på op-amp. I den här kretsen använde jag en 10 kOhm potentiometer kopplad som ett variabelt motstånd för att justera förstärkningen (mängden som förstärkaren förstärker) på min icke-inverterande förstärkare. Anslut denna 10K linjära koniska kruka mellan inverteringsingången och 0V -referensen.

DC -förskjutning

DC -förskjutningskretsen har två huvudkomponenter: en spänningsdelare och en kondensator. Spänningsdelaren är tillverkad av två 100k motstånd som är seriekopplade från Arduinos 5V -matning till jord. Eftersom motstånden har samma motstånd är spänningen vid korsningen mellan dem 2,5V. Denna 2,5V -koppling är bunden till förstärkarens utgång via en 10uF kondensator. När spänningen på förstärkarens sida av kondensatorn stiger och sjunker, orsakar den laddning för en stund att ackumuleras och stöta bort från sidan av kondensatorn som är ansluten till 2,5V -övergången. Detta gör att spänningen vid 2,5V -korsningen oscillerar upp och ner, centrerad kring 2,5V.

Som visas i schemat, anslut den negativa ledningen för en 10uF kondensator till utgången från förstärkaren. Anslut den andra sidan av locket till korsningen mellan två 100k motstånd i serie kopplade mellan 5V och jord. Lägg också till en 47nF kondensator från 2,5V till jord.

Steg 3: Sönderdelning av signalen till en summa av stationära sinusoider - teori

Sönderdelning av signalen till en summa av stationära sinusoider - teori
Sönderdelning av signalen till en summa av stationära sinusoider - teori

Ljudsignalen som skickas ut via ett 3,5 mm -uttag finns i

intervall från 20 Hz till 20 kHz. Det samplas vid 44,1 kHz och varje sampel kodas på 16 bitar.

För att dekonstruera de grundläggande elementära frekvenserna som utgör ljudsignalen, applicerar vi Fourier Transform på signalen, som bryter ner signalen till en summa av stationära sinusoider. Med andra ord konverterar Fourier -analys en signal från sin ursprungliga domän (ofta tid eller rum) till en representation i frekvensområdet och vice versa. Men att beräkna det direkt från definitionen är ofta för långsamt för att vara praktiskt.

Figurer visar hur signalen ser ut i tid och frekvensdomän.

Det är här Fast Fourier Transform (FFT) -algoritmen är ganska användbar!

Per definition, En FFT beräknar snabbt sådana transformationer genom att faktorisera DFT -matrisen till en produkt av glesa (mestadels noll) faktorer. Som ett resultat lyckas den minska komplexiteten för att beräkna DFT från O (N2), som uppstår om man bara tillämpar definitionen av DFT, till O (N log N), där N är datastorleken. Skillnaden i hastighet kan vara enorm, särskilt för långa datamängder där N kan vara i tusentals eller miljoner. I närvaro av avrundningsfel är många FFT-algoritmer mycket mer exakta än att utvärdera DFT-definitionen direkt eller indirekt.

Enkelt uttryckt betyder det bara att FFT -algoritmen är ett snabbare sätt att beräkna Fourier -transformen för vilken signal som helst. Detta används vanligtvis på enheter med låg datorkraft.

Rekommenderad: