Turinys:

Ne adresuojamas RGB LED juostos garso vizualizatorius: 6 žingsniai (su paveikslėliais)
Ne adresuojamas RGB LED juostos garso vizualizatorius: 6 žingsniai (su paveikslėliais)

Video: Ne adresuojamas RGB LED juostos garso vizualizatorius: 6 žingsniai (su paveikslėliais)

Video: Ne adresuojamas RGB LED juostos garso vizualizatorius: 6 žingsniai (su paveikslėliais)
Video: ТИЛЛЬ ЛИНДЕМАНН: Сольные проекты и Коллаборации | Разбор и Интересные Факты 2024, Gruodis
Anonim
Image
Image

Jau kurį laiką aplink televizoriaus spintelę turėjau 12 V RGB LED juostą ir ją valdo nuobodi LED tvarkyklė, leidžianti pasirinkti vieną iš 16 iš anksto užprogramuotų spalvų!

Klausausi daug muzikos, kuri mane motyvuoja, tačiau apšvietimas tiesiog nesudaro tinkamos nuotaikos. Norėdami išspręsti šią problemą, nusprendėte priimti garso signalą, kuris buvo perduotas mano garsiakalbiui per AUX (3,5 mm lizdas), apdorokite jį ir atitinkamai valdykite RGB juostą.

Šviesos diodai reaguoja į muziką pagal žemųjų (žemųjų), aukštų (vidutinių) ir aukštų dažnių stiprumą.

Dažnių diapazonas - spalva yra tokia:

Žemas - raudonas

Vidurio - žalia

Aukštas - mėlynas

Šis projektas apima daugybę „pasidaryk pats“dalykų, nes visa grandinė buvo sukurta nuo nulio. Tai turėtų būti gana paprasta, jei nustatote jį ant duonos lentos, tačiau gana sunku jį lituoti ant PCB.

Prekės

(x1) RGB LED juostelė

(x1) „Arduino Uno“/„Nano“(rekomenduojama „Mega“)

(x1) TL072 arba TL082 (TL081/TL071 taip pat tinka)

(x3) TIP120 NPN tranzistorius (TIP121, TIP122 arba N kanalų MOSFET, tokie kaip IRF540, IRF 530, taip pat tinka)

(x1) 10 kOhm potenciometras tiesinis

(x3) 100 kOhm 1/4 vatų rezistoriai

(x1) 10uF elektrolitinis kondensatorius

(x1) 47nF keraminis kondensatorius

(x2) 3,5 mm garso jungtis - Moteris

(x2) 9 V baterija

(x2) 9 V akumuliatoriaus fiksavimo jungtis

1 žingsnis: supraskite RGB LED juostų tipus

RGB LED juostų tipų supratimas
RGB LED juostų tipų supratimas

Yra dvi pagrindinės šviesos diodų juostų rūšys: „analoginė“ir „skaitmeninė“.

Analoginio tipo (1 pav.) Juostelėse visi šviesos diodai yra sujungti lygiagrečiai, todėl jis veikia kaip vienas didžiulis trispalvis šviesos diodas; visą juostelę galite nustatyti bet kokia norima spalva, tačiau negalite valdyti atskirų šviesos diodų spalvų. Jie yra labai paprasti naudoti ir gana nebrangūs.

Skaitmeninio tipo (2 pav.) Juostelės veikia kitaip. Jie turi mikroschemą kiekvienam šviesos diodui, kad galėtumėte naudoti juostelę, kad nusiųstumėte skaitmeniškai koduotus duomenis į lustus. Tačiau tai reiškia, kad galite valdyti kiekvieną šviesos diodą atskirai! Dėl papildomo lusto sudėtingumo jie yra brangesni.

Jei jums sunku fiziškai nustatyti skirtumus tarp analoginių ir skaitmeninių juostų,

  1. Anologo tipo atveju naudojami 4 kaiščiai, 1 bendras teigiamas ir 3 neigiami, t. Y. Vienas kiekvienai RGB spalvai.
  2. Skaitmeninio tipo naudoti 3 kaiščiai, teigiami, duomenys ir įžeminimas.

Aš naudosiu analoginio tipo juosteles, nes

  1. Yra labai mažai instrukcijų, kurios moko, kaip sukurti muzikai reaguojančią analoginio tipo juostą. Dauguma jų sutelkia dėmesį į skaitmeninį tipą ir lengviau priversti juos reaguoti į muziką.
  2. Turėjau keletą analoginio tipo juostelių.

2 žingsnis: garso signalo stiprinimas

Garso signalo stiprinimas
Garso signalo stiprinimas
Garso signalo stiprinimas
Garso signalo stiprinimas
Garso signalo stiprinimas
Garso signalo stiprinimas

Garso signalas, siunčiamas per garso lizdą, yra

analoginis signalas, svyruojantis nuo +200 mV iki -200 mV. Dabar tai yra problema, nes norime išmatuoti garso signalą vienu iš „Arduino“analoginių įėjimų, nes „Arduino“analoginiai įėjimai gali matuoti tik 0–5 V įtampą. Jei bandytume išmatuoti neigiamą garso signalo įtampą, „Arduino“rodytų tik 0 V, o galiausiai nukirptume signalo apačią.

Norėdami tai išspręsti, turime sustiprinti ir kompensuoti garso signalus, kad jie patektų į 0–5 V diapazoną. Idealiu atveju signalo amplitudė turėtų būti 2,5 V, kuri svyruoja apie 2,5 V, kad jo minimali įtampa būtų 0 V, o maksimali - 5 V.

Amplifikacija

Stiprintuvas yra pirmasis grandinės žingsnis, jis padidina signalo amplitudę nuo maždaug + arba - 200 mV iki + arba - 2,5 V (idealiu atveju). Kita stiprintuvo funkcija yra apsaugoti garso šaltinį (tai, kas pirmiausia sukuria garso signalą) nuo likusios grandinės. Išeinantis sustiprintas signalas visą srovę gaus iš stiprintuvo, todėl bet kokia apkrova, kuri vėliau bus padaryta grandinėje, nebus „jaučiamas“garso šaltinio (mano atveju - telefono/„iPod“/nešiojamojo kompiuterio). Padarykite tai, nustatydami vieną iš stiprintuvų TL072 arba TL082 (2 pav.) Pakete nekeičiamo stiprintuvo konfigūracijoje.

TL072 arba TL082 duomenų lape teigiama, kad jis turėtų būti maitinamas +15 ir -15 V įtampa, tačiau kadangi signalas niekada nebus sustiprintas aukščiau nei + arba -2,5 V, gerai, kad operacinis stiprintuvas būtų paleistas naudojant kažką žemesnio. Norėdami sukurti + arba - 9 V maitinimo šaltinį, naudoju dvi devynių voltų baterijas, sujungtas nuosekliai.

Prijunkite savo +V (8 kaištis) ir –V (4 kaištis) prie stiprintuvo. Sujunkite signalą iš monofoninio lizdo į neinvertuojantį įėjimą (3 kaištis) ir prijunkite lizdo įžeminimo kaištį prie 0 V įtampos, esančios jūsų maitinimo šaltinyje (man tai buvo jungtis tarp dviejų 9 V baterijų nuosekliai). Prijunkite 100 kOhm rezistorių tarp op-amp išvesties (1 kaištis) ir apverstos įvesties (2 kontaktas). Šioje grandinėje aš naudoju 10 kOhm potenciometrą, prijungtą kaip kintamasis rezistorius, norėdamas sureguliuoti mano neinvertuojamo stiprintuvo stiprumą (stiprintuvo stiprinimo stiprumą). Prijunkite šį 10K linijinį kūginį puodą tarp apverstos įvesties ir 0 V atskaitos.

DC poslinkis

Nuolatinės srovės kompensavimo grandinę sudaro du pagrindiniai komponentai: įtampos daliklis ir kondensatorius. Įtampos skirstytuvas pagamintas iš dviejų 100 000 rezistorių, sujungtų nuosekliai iš „Arduino“5 V maitinimo šaltinio į žemę. Kadangi rezistoriai turi tą patį pasipriešinimą, įtampa sankryžoje tarp jų yra 2,5 V. Ši 2,5 V jungtis yra prijungta prie stiprintuvo išvesties per 10uF kondensatorių. Kai įtampa kondensatoriaus stiprintuvo pusėje kyla ir krinta, įkrovimas akimirksniu kaupiasi ir atsitraukia nuo kondensatoriaus pusės, pritvirtinto prie 2,5 V jungties. Dėl to įtampa 2,5 V sankryžoje svyruoja aukštyn ir žemyn, centre apie 2,5 V.

Kaip parodyta schemoje, prijunkite neigiamą 10uF kondensatoriaus laidą prie stiprintuvo išvesties. Prijunkite kitą dangtelio pusę prie jungties tarp dviejų 100 000 rezistorių, sujungtų nuosekliai tarp 5 V ir žemės. Taip pat pridėkite 47nF kondensatorių nuo 2,5 V prie žemės.

3 žingsnis: signalo skaidymas į stacionarių sinusoidų sumą - teorija

Signalo skaidymas į stacionarių sinusoidų sumą - teorija
Signalo skaidymas į stacionarių sinusoidų sumą - teorija

Garso signalas, siunčiamas per bet kurį 3,5 mm lizdą, yra

diapazonas nuo 20 Hz iki 20 kHz. Jis imamas 44,1 kHz dažniu ir kiekvienas mėginys yra užkoduotas 16 bitų.

Norėdami dekonstruoti pagrindinius elementinius dažnius, sudarančius garso signalą, signalui taikome Furjė transformaciją, kuri suskaido signalą į stacionarių sinusoidų sumą. Kitaip tariant, Furjė analizė paverčia signalą iš pradinio domeno (dažnai laiko ar erdvės) į vaizdą dažnio srityje ir atvirkščiai. Tačiau apskaičiuoti jį tiesiogiai iš apibrėžimo dažnai yra per lėta, kad būtų praktiška.

Skaičiai rodo, kaip signalas atrodo laiko ir dažnio srityje.

Čia greito Furjė transformacijos (FFT) algoritmas yra gana naudingas!

Pagal apibrėžimą, FFT greitai apskaičiuoja tokias transformacijas, faktorizuodamas DFT matricą į retų (dažniausiai nulio) veiksnių sandaugą. Dėl to jis sugeba sumažinti DFT apskaičiavimo iš O (N2) sudėtingumą, kuris kyla, jei tiesiog taikomas DFT apibrėžimas, O (N log N), kur N yra duomenų dydis. Spartos skirtumas gali būti didžiulis, ypač ilgų duomenų rinkinių atveju, kai N gali būti tūkstančiai ar milijonai. Esant apvalinimo klaidai, daugelis FFT algoritmų yra daug tikslesni nei tiesioginis ar netiesioginis DFT apibrėžimo įvertinimas.

Paprasčiau tariant, tai tik reiškia, kad FFT algoritmas yra greitesnis bet kokio signalo Furjė transformacijos apskaičiavimo būdas. Paprastai tai naudojama įrenginiuose, turinčiuose mažą skaičiavimo galią.

Rekomenduojamas: