Turinys:
- Prekės
- 1 žingsnis: apžvalga
- 2 žingsnis: grandinės surinkimas
- 3 žingsnis: Kaip veikia grandinė
- 4 žingsnis: kaip veikia kodas
- 5 žingsnis: dainos programavimas
- 6 žingsnis: grįžtamasis ryšys
Video: Dainų kūrimas naudojant „Arduino“ir nuolatinės srovės variklį: 6 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:46
Kitą dieną, naršydamas kai kuriuos straipsnius apie „Arduino“, pastebėjau įdomų projektą, kuriame buvo naudojamos „Arduino“valdomi žingsniniai varikliai trumpoms melodijoms kurti. „Arduino“naudojo PWM (impulso pločio moduliacijos) kaištį, kad paleistų žingsninį variklį tam tikrais dažniais, atitinkančiais muzikines natas. Laiku nustatant, kokie dažniai grojo, iš žingsninio variklio buvo galima išgirsti aiškią melodiją.
Tačiau kai pats išbandžiau, pastebėjau, kad mano turimas žingsninis variklis negali suktis pakankamai greitai, kad sukurtų toną. Vietoj to aš naudojau nuolatinės srovės variklį, kurį palyginti paprasta užprogramuoti ir prijungti prie „Arduino“. Įprastas L293D IC gali būti naudojamas lengvai varyti variklį iš „Arduino PWM“kaiščio, o „Arduino“vietinio tono () funkcija gali generuoti reikiamą dažnį. Mano nuostabai, internete neradau jokių pavyzdžių ar projektų, naudojančių nuolatinės srovės variklį, todėl ši instrukcija yra mano atsakas į tai. Pradėkime!
P. S. Manau, kad jūs jau turite tam tikrą patirtį su „Arduino“ir esate susipažinęs su jo programavimo kalba ir aparatine įranga. Turėtumėte žinoti, kas yra masyvai, kas yra PWM ir kaip jį naudoti, ir kaip veikia įtampa ir srovė. Jei dar nesate ar tik pradėjote „Arduino“, nesijaudinkite: išbandykite šį pradžios puslapį iš oficialios „Arduino“svetainės ir grįžkite, kai būsite pasiruošę.:)
Prekės
- „Arduino“(aš naudojau UNO, bet jei norite, galite naudoti kitą „Arduino“)
- Standartinis 5 V nuolatinės srovės variklis, pageidautina tas, prie kurio galima prijungti ventiliatorių (žr. Paveikslėlį „Grandinės surinkimas“)
- L293D IC
- Tiek daug mygtukų, kiek norimų paleisti dainos pastabų
- Bandomoji Lenta
- Trumpieji laidai
1 žingsnis: apžvalga
Projektas veikia taip: „Arduino“tam tikru dažniu sukurs kvadratinę bangą, kurią perduos L293D. „L293D“yra prijungtas prie išorinio maitinimo šaltinio, kurį jis naudoja varikliui maitinti tokiu dažniu, kokį nurodo „Arduino“. Neleidžiant nuolatinės srovės variklio velenui suktis, galima girdėti, kaip variklis išsijungia ir įsijungia tokiu dažniu, kuris skleidžia toną ar pastabą. Mes galime užprogramuoti „Arduino“groti užrašus paspaudus mygtukus arba automatiškai juos paleisti.
2 žingsnis: grandinės surinkimas
Norėdami surinkti grandinę, tiesiog sekite aukščiau pateiktą Fritzing diagramą.
Patarimas: Pastaba iš variklio geriausiai girdima, kai velenas nesisuka. Aš uždėjau ventiliatorių ant variklio veleno ir naudoju tam tikrą lipnią juostą, kad ventiliatorius nejudėtų, kol variklis veikia (žr. Paveikslėlį). Tai neleido velenui pasisukti ir sukėlė aiškų, girdimą toną. Jums gali tekti šiek tiek pakoreguoti, kad iš variklio gautumėte švarų toną.
3 žingsnis: Kaip veikia grandinė
L293D yra IC, naudojamas santykinai aukštos įtampos, didelės srovės įtaisams, tokiems kaip relės ir varikliai, valdyti. „Arduino“negali vairuoti daugumos variklių tiesiai iš savo išėjimo (o variklio galinis EMF gali sugadinti jautrią „Arduino“skaitmeninę grandinę), todėl tokį IC kaip L293D galima naudoti su išoriniu maitinimo šaltiniu, kad būtų galima lengvai valdyti nuolatinės srovės variklį. Įvedus signalą į L293D, tas pats signalas bus perduotas nuolatinės srovės varikliui, nerizikuojant sugadinti „Arduino“.
Viršuje yra „L293D“kontaktinė/funkcinė schema iš jos duomenų lapo. Kadangi vairuojame tik 1 variklį (L293D gali vairuoti 2), mums reikia tik vienos IC pusės. 8 kaištis yra galia, 4 ir 5 kaiščiai yra GND, 1 kaištis yra PWM išėjimas iš „Arduino“, o 2 ir 7 kaiščiai kontroliuoja variklio kryptį. Kai 2 kaištis yra AUKŠTAS, o 7 - ŽEMAS, variklis sukasi viena kryptimi, o kai 2 kaištis yra ŽEMAS, o 7 kaištis yra AUKŠTAS, variklis sukasi į kitą pusę. Kadangi mums nerūpi, kuria kryptimi sukasi variklis, nesvarbu, ar 2 ir 7 kaiščiai yra ŽEMI, ar AUKŠTI, jei jie skiriasi vienas nuo kito. 3 ir 6 kaiščiai jungiami prie variklio. Jei norite, galite viską prijungti prie kitos pusės (9-16 kaiščiai), tačiau atminkite, kad maitinimo ir PWM kaiščiai keičia vietas.
Pastaba: jei naudojate „Arduino“, kuriame nėra pakankamai kaiščių kiekvienam mygtukui, galite naudoti rezistorių tinklą, kad visus jungiklius prijungtumėte prie vieno analoginio kaiščio, kaip nurodyta šioje instrukcijoje. Kaip tai veikia, šis projektas neapima, tačiau jei kada nors naudojote R-2R DAC, turėtumėte jį pažinti. Atminkite, kad naudojant analoginį kaištį reikės perrašyti dideles kodo dalis, nes mygtukų bibliotekos negalima naudoti su analoginiais kaiščiais.
4 žingsnis: kaip veikia kodas
Kad būtų lengviau valdyti visus mygtukus, naudojau biblioteką, kurią madleech pavadino „Button“. Pirmą kartą įtraukiau biblioteką. Toliau 8–22 eilutėse aš apibrėžiau natų, reikalingų „Twinkle“, „Twinkle“, „Little Star“(pavyzdinei dainai), dažnį, kaištį, kurį naudosiu L293D, ir mygtukus.
Sąrankos funkcijoje inicijavau seriją, mygtukus ir nustatiau L293D tvarkyklės kaištį į išvesties režimą.
Galiausiai pagrindinėje kilpoje patikrinau, ar nebuvo paspaustas mygtukas. Jei yra, „Arduino“groja atitinkamą natą ir spausdina užrašo pavadinimą į serijinį monitorių (naudinga žinoti, kurios natos yra jūsų duonos lentoje). Išleidus natą, arduino sustabdo bet kokį garsą be noTone ().
Deja, dėl bibliotekos struktūros aš negalėjau rasti būdo patikrinti, ar mygtukas buvo paspaustas ar paleistas mažiau žodžiu, nei naudojant 2 sąlygas vienai pastabai. Kitas šio kodo trūkumas yra tas, kad jei vienu metu paspausite du mygtukus ir atleisite vieną iš jų, abi natos bus sustabdytos, nes noTone () sustabdo bet kokių užrašų generavimą, neatsižvelgiant į tai, kuri pastaba jį suaktyvino.
5 žingsnis: dainos programavimas
Užuot naudoję mygtukus pastaboms leisti, taip pat galite užprogramuoti „Arduino“automatiškai paleisti melodiją. Čia yra modifikuota pirmojo eskizo versija, kurioje ant variklio groja „Twinkle“, „Twinkle“, „Little Star“. Pirmoji eskizo dalis yra ta pati - natos dažnis ir tonas „Pin“. Prie naujos dalies pasiekiame bpm = "100". Aš nustatiau dūžių per minutę (bpm) skaičių, o paskui naudoju tam tikrą matematiką, kad išsiaiškinčiau, kiek milisekundžių per taktą lygios bpm. Norėdami tai padaryti, aš naudoju metodą, vadinamą matmenų analize (nesijaudinkite - tai nėra taip sunku, kaip skamba). Jei kada nors lankėte chemijos kursus vidurinėje mokykloje, jūs tikrai panaudojote matmenų analizę, kad konvertuotumėte tarp vienetų. Plūdės () yra skirtos užtikrinti, kad niekas lygtyje nebūtų suapvalintas iki galo, siekiant tikslumo.
Gavę ms/ritmo skaičių, aš jį atitinkamai padalinau arba padauginau, kad surastų muzikoje rastų skirtingų natų trukmių milisekundes reikšmes. Tada aš padarau masyvą kiekvienos natos chronologine tvarka, o kitą - su kiekvienos natos trukme. Labai svarbu, kad kiekvienos natos rodyklė atitiktų jos trukmės indeksą, kitaip jūsų melodija skambės. Čia kaip pavyzdį įdėjau „Twinkle“, „Twinkle“, „Little Star“užrašus, tačiau galite išbandyti bet kokią norimą dainą ar užrašų seką.
Tikroji magija vyksta ciklo funkcijoje. Kiekvienai natai groju toną, kurį nurodiau „beat_values“masyve. Užuot čia naudojęs atidėjimą, dėl kurio tonas nebūtų leidžiamas, aš įrašiau laiką nuo programos pradžios su funkcija „millis“() ir atėmiau jį iš dabartinio laiko. Kai laikas viršija laiką, kurį nurodžiau pastabai „beat_values“masyve, sustabdau užrašą. Vėlavimas po ciklo „for“yra skirtas pridėti tarpą tarp natų, užtikrinant, kad tolesnio to paties dažnio pastabos nesimaišytų.
6 žingsnis: grįžtamasis ryšys
Tai šiam projektui. Jei kažko nesuprantate arba turite pasiūlymų, nedvejodami susisiekite su manimi. Kadangi tai yra mano pirmosios instrukcijos, būčiau labai dėkingas už komentarus ir pasiūlymus, kaip pagerinti šį turinį. Pasimatysim kitą kartą!
Rekomenduojamas:
Kaip valdyti nuolatinės srovės variklį naudojant L298n ir Arduino: 5 žingsniai
Kaip valdyti nuolatinės srovės variklį naudojant L298n ir Arduino: Sveiki visi. Pristatome save. Mano vardas Dimitris ir aš esu iš Graikijos. Aš labai myliu „Arduino“, nes tai protinga lenta. Pasistengsiu kuo geriau tai apibūdinti, kad tai būtų patogu visiems. Taigi pradėkime
Paprastas nuolatinės srovės - nuolatinės srovės stiprinimo keitiklis naudojant 555: 4 žingsnius
Paprastas nuolatinės srovės - nuolatinės srovės stiprinimo keitiklis naudojant 555: dažnai grandinėje naudinga turėti aukštesnę įtampą. Pateikti „ +ve“ir „ve“bėgelius „op -amp“, vairuoti signalus ar net relę be papildomos baterijos. Tai paprastas 5V iki 12V nuolatinės srovės keitiklis, sukurtas naudojant 555 laikmatį
Nuo kintamosios srovės iki +15V, -15V 1A kintamasis ir 5V 1A nuolatinės srovės nuolatinės srovės maitinimo šaltinis: 8 žingsniai
Kintamosios srovės į +15V, -15V 1A kintamasis ir 5V 1A nuolatinio maitinimo šaltinis: maitinimo šaltinis yra elektros prietaisas, tiekiantis elektros energiją elektros apkrovai. Šiame modelio maitinimo šaltinyje yra trys kietojo kūno nuolatinės srovės maitinimo šaltiniai. Pirmasis maitinimas suteikia kintamą teigiamą 1,5–15 voltų išėjimą iki 1 ampero
97% efektyvus nuolatinės srovės ir nuolatinės srovės keitiklis [3A, reguliuojamas]: 12 žingsnių
97% efektyvus nuolatinės srovės ir nuolatinės srovės konverteris [3A, reguliuojamas]: maža nuolatinės srovės į nuolatinę srovę konverterio plokštė yra naudinga daugeliui programų, ypač jei ji gali tiekti srovę iki 3A (2A nuolat be aušintuvo). Šiame straipsnyje mes išmoksime sukurti nedidelę, efektyvią ir pigią „Buck“keitiklio grandinę. [
Kaip valdyti „Drone Quadcopter“bešepetį nuolatinės srovės variklį (3 laidų tipas) naudojant „HW30A“variklio greičio valdiklį ir „Arduino UNO“: 5 žingsniai
Kaip valdyti „Drone Quadcopter“bešepetį nuolatinės srovės variklį (3 laidų tipas) naudojant HW30A variklio greičio reguliatorių ir „Arduino UNO“: Aprašymas: HW30A variklio greičio reguliatorių galima naudoti su 4–10 NiMH/NiCd arba 2-3 ląstelių LiPo baterijomis. BEC veikia iki 3 LiPo ląstelių. Jis gali būti naudojamas valdyti bešepetėlių nuolatinės srovės variklio (3 laidų) greitį, maksimaliai iki 12 V nuolatinės srovės