Turinys:
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
Sveiki bičiuliai, Tai yra antroji mano kito pamokomo dalyko dalis (tai buvo daug sunku). Iš esmės šiame projekte aš panaudojau savo „Arduino“ADC ir laikmačius, kad garso signalą paversčiau PWM signalu.
Tai daug lengviau nei mano ankstesnis „Instructable“, čia yra mano pirmojo „Instructable“nuoroda, jei norite pamatyti. nuoroda
Norėdami suprasti garso signalo teoriją, bitų spartą, bitų gylį, atrankos dažnį, galite perskaityti teoriją mano paskutinėje pamokoje apie Instructable. Nuoroda yra aukščiau.
1 žingsnis: dalykai, kurių mums reikia šiam projektui (reikalavimai)
1. „Arduino“lenta (galime naudoti bet kurią lentą (328, 2560), ty „Mega“, „Uno“, „Mini“ir kt., Bet su konkrečiais skirtingais kaiščiais)
2. Kompiuteris su „Arduino Studio“.
3. Breadboard arba Perfboard
4. Laidų prijungimas
5. TC4420 („Mosfet“tvarkyklė ar pan.)
6. „Mosfet“maitinimas (N arba P kanalas, prašome atitinkamai prijungti laidą) (aš naudoju N kanalą)
7. Garsiakalbis arba „Flyback“transformatorius (taip, jūs perskaitėte teisingai!)
8. Tinkamas maitinimo šaltinis (0-12V) (naudojau savo ATX maitinimo šaltinį)
9. Šilumos kriauklė (aš išgelbėjau savo seną kompiuterį).
10. Stiprintuvas (įprastas muzikos stiprintuvas) arba stiprintuvo grandinė.
2 žingsnis: ADC teorija į PWM
Taigi šiame projekte aš panaudojau įmontuotą „Arduino“ADC, kad galėčiau imti garso signalo duomenis.
ADC (analoginis-skaitmeninis keitiklis), kaip apibrėžta pavadinime, ADC konvertuoja analoginį signalą į skaitmeninius pavyzdžius. Ir „Arduino“su maksimaliu 10 bitų gyliu. Tačiau šiam projektui naudosime 8 bitų atranką.
Naudodami „Arduino“ADC, turime nepamiršti ADC_reference Voltage.
„Arduino Uno“siūlo 1.1 V, 5 V (vidinė nuoroda, kurią galima nustatyti apibrėžiant kodu) arba išorinė nuoroda (kurią turime taikyti išoriškai AREF kaiščiui).
Remiantis mano patirtimi, norint gauti gerą ADC rezultatą, kaip etaloninė įtampa turėtų būti naudojama mažiausiai 2,0 V įtampa. Kadangi 1.1V neblogai sekėsi bent jau man. (Asmeninė patirtis)
*SVARBU**SVARBU ** SVARBU ** SVARBU ** SVARBU*
Turime naudoti sustiprintą garso signalą iš stiprintuvo arba stiprintuvo grandinės, kurios maksimali įtampa (maks. Įtampa) yra 5 V
Kadangi mūsų projektui nustatiau vidinę 5 V įtampos atskaitos vertę. Aš naudoju sustiprintą signalą, naudodamas įprastą stiprintuvą (muzikos stiprintuvą), kurio dažniausiai yra mūsų buityje, arba galite jį pasigaminti patys.
Taigi dabar pagrindinė dalis. Atrankos dažnis, tai yra, kiek mėginių mūsų ADC paima per sekundę, tuo didesnis konversijos koeficientas, tuo geresnis bus išvesties rezultatas, panašesnė bus išvesties banga, palyginti su įvestimi.
Taigi šiame projekte naudosime 33,33 Khz atrankos dažnį, nustatydami ADC laikrodį 500 kHz. Norėdami suprasti, kaip tai yra, turime pamatyti ADC laiko puslapį „Atmega“(328p) lusto duomenų lape.
Matome, kad mums reikia 13,5 ADC laikrodžio ciklo, kad užbaigtume vieną pavyzdį su automatiniu atranka. Esant 500Khz dažniui, tai reiškia 1/500Khz = 2uS vienam ADC ciklui, o tai reiškia, kad 13,5*2uS = 27uS reikalingi mėginiui užbaigti, kai naudojamas automatinis mėginių ėmimas. Suteikiant 3uS daugiau mikrovaldikliui (saugiai pusei), vienam mėginiui iš viso pagaminama 30uS.
Taigi 1 mėginys esant 30uS reiškia 1/30uS = 33,33 KSamples/S.
Norėdami nustatyti atrankos dažnį, kuris priklauso nuo „Arduino“TIMER0, nes ADC automatinis atrankos paleidiklis priklauso nuo to, kaip mūsų atveju, kaip jūs taip pat matote kode ir duomenų lape, mes padarėme OCR0A = 60 (Kodėl taip ???)
Nes pagal duomenų lape pateiktą formulę.
dažnis (arba čia mėginio dažnis) = „Arduino“/prescaler laikrodžio dažnis*OCR0A vertė (mūsų atveju)
Norimas dažnis arba mėginių dažnis = 33,33KHz
Laikrodžio dažnis = 16MHz
Prescaler vertė = 8 (mūsų atveju)
OCR0A vertė = norime rasti ??
kuris tiesiog suteikia OCR0A = 60, taip pat mūsų „Arduino“kode.
TIMER1 naudojamas garso signalo nešiklio bangai, ir aš nesileisiu į tai tiek daug.
Taigi, tai buvo trumpa ADC sąvokos su PWM su „Arduino“teorija.
3 žingsnis: schema
Prijunkite visus komponentus, kaip parodyta schemoje. Taigi, jūs turite dvi galimybes:-
1. Prijunkite garsiakalbį (prijungtas prie 5 V)
2. Prijunkite „Flyback“transformatorių (prijungtas prie 12 V)
Esu bandžiusi abu. Ir abu veikia gana gerai.
*SVARBU**SVARBU ** SVARBU ** SVARBU ** SVARBU*Mums reikia naudoti sustiprintą garso signalą iš stiprintuvo arba stiprintuvo grandinės, kurios maksimali įtampa (maks. Įtampa) yra 5 V
Atsisakymas:-
*Rekomenduoju naudoti „Flyback Transformer“atsargiai, nes tai gali būti pavojinga, nes sukuria aukštą įtampą. Ir aš neprisiimsiu jokios žalos.*
4 žingsnis: galutinis testas
Taigi įkelkite nurodytą kodą į „Arduino“ir prijunkite sustiprintą signalą prie A0 kaiščio.
Ir nepamirškite visų įžeminimo kaiščių prijungti prie bendro pagrindo.
Ir tiesiog mėgaukitės muzikos klausymu.