Kazalo:

Ustvarjanje pesmi z Arduinom in enosmernim motorjem: 6 korakov
Ustvarjanje pesmi z Arduinom in enosmernim motorjem: 6 korakov

Video: Ustvarjanje pesmi z Arduinom in enosmernim motorjem: 6 korakov

Video: Ustvarjanje pesmi z Arduinom in enosmernim motorjem: 6 korakov
Video: Генерация электроэнергии с помощью электродвигателя постоянного тока #zaferyildiz #shorts #short 2024, November
Anonim
Ustvarjanje pesmi z Arduinom in enosmernim motorjem
Ustvarjanje pesmi z Arduinom in enosmernim motorjem

Pred dnevi sem med listanjem nekaj člankov o Arduinu opazil zanimiv projekt, ki je z uporabo koračnih motorjev, ki jih upravlja Arduino, ustvarjal kratke melodije. Arduino je uporabil pin PWM (Pulse Width Modulation) za zagon koračnega motorja pri določenih frekvencah, ki ustrezajo glasbenim notam. S časovnim razporedom, katere frekvence so se predvajale, se je iz koračnega motorja slišala jasna melodija.

Ko pa sem sam preizkusil, sem ugotovil, da se koračni motor, ki ga imam, ne more vrteti dovolj hitro, da bi ustvaril ton. Namesto tega sem uporabil enosmerni motor, ki ga je relativno enostavno programirati in povezati z Arduinom. Običajni IC L293D lahko uporabite za enostavno poganjanje motorja iz zatiča PWM Arduino, funkcija domačega tona () v Arduinu pa lahko ustvari potrebno frekvenco. Na moje presenečenje na spletu nisem našel primerov ali projektov z uporabo enosmernega motorja, zato je ta odziv moj odziv na to. Začnimo!

P. S. Predvidevam, da že imate nekaj izkušenj z Arduinom in poznate njegov programski jezik in strojno opremo. Vedeti morate, kaj so matrike, kaj je PWM in kako ga uporabljati ter kako delujeta napetost in tok, če naštejemo le nekaj stvari. Če še niste tam ali ste šele začeli uporabljati Arduino, ne skrbite: poskusite to stran za začetek z uradnega spletnega mesta Arduino in se vrnite, ko ste pripravljeni.:)

Zaloge

  • Arduino (uporabil sem UNO, vendar lahko uporabite drug Arduino, če želite)
  • Standardni 5V DC motor, po možnosti z ventilatorjem (glejte sliko v "Montaža vezja"
  • L293D IC
  • Toliko gumbov kot zapiskov v pesmi, ki jih želite predvajati
  • Ogledna plošča
  • Mostične žice

1. korak: Pregled

Tako deluje projekt: Arduino bo ustvaril kvadratni val pri določeni frekvenci, ki ga odda na L293D. L293D je priključen na zunanji napajalnik, ki ga uporablja za napajanje motorja na frekvenci, ki jo poda Arduino. Če preprečite vrtenje gredi enosmernega motorja, lahko slišite izklop in vklop motorja na frekvenci, ki proizvaja ton ali noto. Arduino lahko programiramo tako, da ob pritisku na gumbe predvaja note ali pa jih samodejno predvaja.

2. korak: Sestavljanje vezja

Sestavljanje vezja
Sestavljanje vezja
Sestavljanje vezja
Sestavljanje vezja

Če želite sestaviti vezje, preprosto sledite zgornjemu diagramu Fritzing.

Nasvet: Opomba iz motorja se najbolje sliši, ko se gred ne vrti. Na gred motorja sem namestil ventilator in z nekaj lepilnega traku držal ventilator pri mirujočem motorju (glej sliko). To je preprečilo obračanje gredi in ustvarilo jasen, slišen ton. Morda boste morali narediti nekaj prilagoditev, da dobite čist ton iz vašega motorja.

3. korak: Kako deluje vezje

Kako deluje vezje
Kako deluje vezje

L293D je IC, ki se uporablja za pogon razmeroma visokonapetostnih, visokotokovnih naprav, kot so releji in motorji. Arduino ne more poganjati večine motorjev neposredno iz svojega izhoda (in zadnji EMF iz motorja lahko poškoduje občutljivo digitalno vezje Arduina), zato lahko IC, kot je L293D, uporabite z zunanjim napajalnikom za enostavno pogon enosmernega motorja. Vnos signala v L293D bo isti signal poslal v motor DC, ne da bi tvegal poškodbe Arduina.

Zgoraj je izpis/funkcionalna shema L293D iz njegovega podatkovnega lista. Ker vozimo samo 1 motor (L293D lahko poganja 2), potrebujemo le eno stran IC. Pin 8 je napajanje, nožici 4 in 5 sta GND, nožica 1 je izhod PWM iz Arduina, nožici 2 in 7 pa nadzorujeta smer motorja. Ko je nožica 2 VISOKA in nožica 7 NIZKA, se motor vrti v eno smer, ko pa je nožica 2 NIZKA in nožica 7 VISKA, se motor vrti v drugo smer. Ker nam je vseeno, v katero smer se motor vrti, ni pomembno, ali sta nožici 2 in 7 NIZKI ali VISOKI, če se med seboj razlikujeta. Zatiči 3 in 6 se povežeta z motorjem. Če želite, lahko vse povežete na drugo stran (zatiči 9-16), vendar se zavedajte, da se zatiči za napajanje in PWM zamenjajo.

Opomba: Če uporabljate Arduino, ki nima dovolj zatičev za vsak gumb, lahko uporabite omrežje uporov, da povežete vsa stikala z enim analognim zatičem, na primer v tem navodilu. Kako to deluje, je zunaj obsega tega projekta, če pa ste kdaj uporabljali DAC R-2R, se vam to zdi znano. Upoštevajte, da bo za uporabo analognega zatiča potrebno prepisati velike dele kode, saj knjižnice Button ni mogoče uporabljati z analognimi zatiči.

4. korak: Kako deluje koda

Za lažje rokovanje z vsemi gumbi sem uporabil knjižnico, ki jo je Madleech poimenoval "Button". Najprej sem vključil knjižnico. Nato sem v vrsticah 8-22 določil frekvence za note, potrebne za predvajanje Twinkle, Twinkle, Little Star (primer pesmi), pin, ki ga bom uporabil za pogon L293D, in gumbe.

V nastavitveni funkciji sem inicializiral serijsko številko, gumbe in nastavil gonilniški zatič L293D na izhodni način.

Nazadnje sem v glavni zanki preveril, ali je bil pritisnjen gumb. Če je, Arduino predvaja ustrezno noto in natisne ime zapiska na serijski monitor (uporabno, če želite vedeti, katere opombe so na vaši plošči). Če se sprosti nota, arduino ustavi vsak zvok z noTone ().

Na žalost zaradi načina strukturiranja knjižnice nisem mogel najti načina, da bi preveril, ali je bil gumb pritisnjen ali sproščen na manj podroben način kot uporaba 2 pogojev na opombo. Druga pomanjkljivost te kode je, da če bi hkrati pritisnili dva gumba in nato sprostili enega od njiju, bi se obe opombi ustavili, ker noTone () ustavi ustvarjanje zapiskov, ne glede na to, kateri zapis je sprožil.

5. korak: Programiranje pesmi

Namesto gumbov za predvajanje not lahko tudi programirate Arduino, da samodejno predvaja melodijo. Tukaj je spremenjena različica prve skice, ki igra Twinkle, Twinkle, Little Star na motorju. Prvi del skice je enak - opredeljuje notne frekvence in tonePin. Do novega dela pridemo pri bpm = "100". Nastavil sem utripe na minuto (bpm), nato pa z nekaj matematike ugotovil, koliko milisekund na utrip je enako bpm -ju. Za to sem uporabil tehniko, imenovano dimenzijska analiza (ne skrbite - ni tako težko, kot se sliši). Če ste kdaj obiskovali gimnazijski tečaj kemije, ste za pretvorbo med enotami zagotovo uporabili dimenzijsko analizo. Plovci () so namenjeni zagotavljanju, da se nič v enačbi ne zaokroži do konca za natančnost.

Ko imamo število ms/utrip, sem ga ustrezno razdelil ali pomnožil, da sem našel milisekundne vrednosti različnih dolžin not, ki jih najdemo v glasbi. Nato naredim niz vsake note v kronološkem vrstnem redu in še eno s trajanjem vsake note. Pomembno je, da se indeks vsake note ujema z indeksom njenega trajanja, sicer bo vaša melodija zvenela. Za primer sem dal opombe za Twinkle, Twinkle, Little Star, lahko pa poskusite katero koli pesem ali zaporedje not, ki jih želite.

Prava čarovnija se zgodi v funkciji zanke. Za vsako noto predvajam ton nekaj časa, ki sem ga navedel v matriki beat_values. Namesto da bi tukaj uporabil zakasnitev, ki bi povzročila, da se ton ne predvaja, sem zabeležil čas od začetka programa s funkcijo millis () in ga odšteval od trenutnega časa. Ko čas preseže čas, ki sem ga določil za zadnjo beležko v matriki beat_values, zapisek ustavim. Zamuda po for zanki je namenjena dodajanju vrzeli med beležkami, kar zagotavlja, da se naslednje opombe z enako frekvenco ne bodo združile.

6. korak: Povratne informacije

To je to za ta projekt. Če česa ne razumete ali imate kakršne koli predloge, se obrnite na mene. Ker je to moj prvi Instructables, bi bil zelo hvaležen za pripombe in predloge, kako izboljšati to vsebino. Se vidimo naslednjič!

Priporočena: