Šiame projekte mes sukursime tonų generatorių naudodami „Arduino Uno“. Turėsime mygtukus, susietus su UNO, ir kiekvienas iš jų sukuria skirtingą tono intensyvumą. UNO sugeneruoto tono dažnis yra vienodas kiekviename vidiniame dažnyje. Tai garso intensyvumas, kuris keičiasi kiekvieną kartą paspaudus. Tai yra vienas iš paprasčiausių būdų pasigaminti fortepijoną su „Arduino Uno“. Taip pat patikrinkite šią fortepijono grandinę.
Tonus galima padidinti iki 20. Tai suteikia geriausią tono variantą ir daug sklandesnį pakeitimą. Tono intensyvumą keičia PWM (pulso pločio moduliacija). PWM pavyzdys pateiktas žemiau esančiame grafike.
PWM signalo dažnis arba signalo laikotarpis (Ton + Toff) visada yra pastovus. Kinta tik įjungimo ir išjungimo laiko santykis. Pavyzdžiui, antrame aukščiau esančio paveikslo grafike ĮJUNGIMO laikas yra 80%, o IŠJUNGIMO laikas - 20% visos trukmės.
Trečiame grafike ĮJUNGIMO laikas yra 50%, o IŠJUNGIMO laikas - 50% visos trukmės. Taigi pirmuoju atveju mes turime 80% muito koeficientą, o antruoju atveju - 20%.
Pasikeitus darbo santykiui, pasikeitė Vrms (šaknies vidutinė įtampos kvadratinė vertė), kai ši įtampa suteikiama garsiakalbiui, jis sukelia kitokį triukšmą, kai pasikeičia darbo santykis.
Mes ketiname užprogramuoti UNO kiekvienam mygtukui pateikti skirtingo darbo santykio PWM signalą. Taigi po ranka turime tono generatorių, kuris kiekvieną mygtuką paspaudžiant sukuria skirtingą toną.
Būtini komponentai
Aparatūra: „ Arduino Uno“, maitinimo šaltinis (5v), 1000 uF kondensatorius, 100 nF kondensatorius, „Buzzer“, mygtukai (8 vnt.).
Programinė įranga: „ AURDINO“ naktinė arba „Atmel“ studija 6.2
Grandinės schema ir darbo paaiškinimas
Tono generatoriaus grandinė parodyta žemiau esančioje diagramoje.
Norėdami filtruoti triukšmą iš maitinimo įtampos kondensatorių, jie yra išdėstyti per gnybtus, kaip parodyta diagramoje.
„Arduino Uno“ PWM gali būti pasiektas bet kuriame iš kaiščių, kuriuos PCB plokštėje simbolizuoja „~“. UNO yra šeši PWM kanalai. Tačiau mes negalime naudoti PWM kaiščių, nustatytų per PINS 0–7, nes PINS pirmenybė teikiama mygtukų sąsajai.
Yra priežastis pasirinkti PINS 0-7 kaip įvestį, nes PINS 0-7 reiškia mikrovaldiklio PORTD. Taigi pastaruoju atveju galime paimti visą PORTD BYTE.
Dabar norėdami gauti kitokį PWM darbo santykį, mes naudosime šią komandą.
analogWrite (9, VALUE); |
Iš aukščiau nurodytos sąlygos mes galime tiesiogiai gauti PWM signalą prie atitinkamo kaiščio. Pirmasis skliausteliuose pateiktas parametras yra PWM signalo kaiščio skaičiaus pasirinkimas. Antrasis parametras skirtas rašymo darbo santykiui.
„Arduino Uno“ PWM reikšmę galima pakeisti nuo 0 iki 255. Kai „0“ yra mažiausia į „255“, didžiausia. Kai darbo santykis yra 255, gausime 5 V PIN9. Jei muito koeficientas nurodomas kaip 125, PIN9 gausime 2,5 V. Mes paskirstysime 0–250 darbo santykį tarp 8 mygtukų, susietų UNO PORTD. Čia kiekvienam mygtukui pasirenku po 25 žingsnius, bet tai yra jūsų pasirinkimas.
Su tuo turėsime PWM signalą, kurio darbo santykis keičiasi su kiekvienu mygtuku. Tai suteikiant garsui, mes turime tonų generatorių. Šio „ Arduino“ pagrindu sukurto tonų generatoriaus veikimas žingsnis po žingsnio paaiškinamas toliau pateiktu C kodu.