Sisällysluettelo:

Kappaleiden tekeminen Arduinolla ja tasavirtamoottorilla: 6 vaihetta
Kappaleiden tekeminen Arduinolla ja tasavirtamoottorilla: 6 vaihetta

Video: Kappaleiden tekeminen Arduinolla ja tasavirtamoottorilla: 6 vaihetta

Video: Kappaleiden tekeminen Arduinolla ja tasavirtamoottorilla: 6 vaihetta
Video: Gadget-kätkön tekeminen Arduinolla 2024, Heinäkuu
Anonim
Kappaleiden tekeminen Arduinolla ja tasavirtamoottorilla
Kappaleiden tekeminen Arduinolla ja tasavirtamoottorilla

Toissapäivänä, kun selailin joitain Arduinoa käsitteleviä artikkeleita, huomasin mielenkiintoisen projektin, jossa käytettiin Arduinon ohjaamia askelmoottoreita lyhyiden melodioiden luomiseen. Arduino käytti PWM (Pulse Width Modulation) -tappia käyttääkseen askelmoottoria tietyillä taajuuksilla, jotka vastasivat nuotteja. Ajoituksella, mitkä taajuudet toistettiin, askelmoottorista kuului selkeä melodia.

Kuitenkin, kun kokeilin sitä itse, huomasin, että minulla oleva askelmoottori ei voi pyöriä tarpeeksi nopeasti sävyn luomiseksi. Sen sijaan käytin tasavirtamoottoria, joka on suhteellisen helppo ohjelmoida ja liittää Arduinoon. Yleistä L293D -IC: tä voidaan käyttää moottorin ohjaamiseen helposti Arduinon PWM -nastasta, ja Arduinon alkuperäinen ääni () -toiminto voi tuottaa tarvittavan taajuuden. Yllätyksekseni en löytänyt esimerkkejä tai projekteja tasavirtamoottorin käytöstä verkossa, joten tämä Instructables on minun vastaukseni korjaamaan se. Aloitetaan!

P. S. Oletan, että sinulla on jo jonkin verran kokemusta Arduinosta ja tunnet sen ohjelmointikielen ja laitteiston. Sinun pitäisi tietää muutamia asioita, mitä taulukot ovat, mikä PWM on ja miten sitä käytetään, ja miten jännite ja virta toimivat. Jos et ole vielä paikalla tai juuri aloittanut Arduinon, älä huoli: kokeile tätä aloitussivua Arduinon viralliselta verkkosivustolta ja palaa aina kun olet valmis.:)

Tarvikkeet

  • Arduino (käytin UNO: ta, mutta voit käyttää toista Arduinoa, jos haluat)
  • Vakio 5 V DC -moottori, mieluiten sellainen, johon voidaan liittää tuuletin (katso kuva "Piirin kokoaminen")
  • L293D IC
  • Niin monta painikkeita kuin muistiinpanot kappaleessa, jonka haluat toistaa
  • Leipälauta
  • Hyppyjohdot

Vaihe 1: Yleiskatsaus

Projekti toimii näin: Arduino tuottaa neliöaallon tietyllä taajuudella, jonka se lähettää L293D: lle. L293D on kytketty ulkoiseen virtalähteeseen, jota se käyttää moottorin virransyöttöön Arduinon antamalla taajuudella. Kun estät tasavirtamoottorin akselin pyörimisen, moottorin voidaan kuulla sammuvan ja käynnistyvän taajuudella, joka tuottaa äänen tai nuotin. Voimme ohjelmoida Arduinon toistamaan muistiinpanoja, kun painikkeita painetaan, tai toistamaan ne automaattisesti.

Vaihe 2: Piirin kokoaminen

Piirin kokoaminen
Piirin kokoaminen
Piirin kokoaminen
Piirin kokoaminen

Kokoa piiri noudattamalla yllä olevaa Fritzing -kaaviota.

Vinkki: Moottorin huomautus kuuluu parhaiten, kun akseli ei pyöri. Laitoin tuulettimen moottorin akselille ja pidin tuuletinta paikallaan moottorin käydessä teipillä (katso kuva). Tämä esti akselin pyörimisen ja tuotti selkeän, kuultavan äänen. Saatat joutua tekemään säätöjä saadaksesi puhtaan äänen moottoriltasi.

Vaihe 3: Kuinka piiri toimii

Kuinka piiri toimii
Kuinka piiri toimii

L293D on IC, jota käytetään suhteellisen suurjännitteisten, suurvirtaisten laitteiden, kuten releiden ja moottoreiden, ohjaamiseen. Arduino ei pysty käyttämään useimpia moottoreita suoraan ulostulostaan (ja moottorin taka -EMF voi vahingoittaa Arduinon herkkiä digitaalipiirejä), joten L293D: n kaltaista IC: tä voidaan käyttää ulkoisen virtalähteen kanssa DC -moottorin ohjaamiseksi helposti. Signaalin syöttäminen L293D -laitteeseen lähettää saman signaalin tasavirtamoottorille vaarantamatta Arduinon vaurioitumista.

Yllä on pinout/toiminnallinen kaavio L293D: stä sen lomakkeesta. Koska ajamme vain 1 moottoria (L293D voi ajaa 2), tarvitsemme vain IC: n toisen puolen. Nasta 8 on teho, nastat 4 ja 5 ovat GND, nasta 1 on PWM -lähtö Arduinosta, ja nastat 2 ja 7 ohjaavat moottorin suuntaa. Kun nasta 2 on KORKEA ja nasta 7 on MATALA, moottori pyörii yhteen suuntaan ja kun tappi 2 on MATALA ja nasta 7 on KORKEA, moottori pyörii toiseen suuntaan. Koska emme välitä siitä, mihin suuntaan moottori pyörii, ei ole väliä, ovatko nastat 2 ja 7 MATALAT vai KORKEAT, kunhan ne eroavat toisistaan. Nastat 3 ja 6 kytketään moottoriin. Voit halutessasi kytkeä kaiken toiselle puolelle (nastat 9-16), mutta muista, että virta- ja PWM-nastat vaihtavat paikkaa.

Huomautus: Jos käytät Arduinoa, jossa ei ole tarpeeksi nastoja kullekin painikkeelle, voit käyttää vastusverkkoa kytkeäksesi kaikki kytkimet yhteen analogiseen nastaan, kuten tässä ohjeessa. Tämä ei kuulu tämän projektin piiriin, mutta jos olet koskaan käyttänyt R-2R DAC -laitetta, sinun pitäisi löytää se tuttu. Huomaa, että analogisen nastan käyttäminen edellyttää suurten osien koodin kirjoittamista uudelleen, koska Button -kirjastoa ei voi käyttää analogisten nastojen kanssa.

Vaihe 4: Kuinka koodi toimii

Kaikkien painikkeiden käsittelyn helpottamiseksi käytin madleechin kirjastoa Button. Laitoin ensimmäisenä kirjastoon. Seuraavaksi määritin riveillä 8-22 Twinkle, Twinkle, Little Star (esimerkkikappale) toistamiseen tarvittavien nuottien taajuudet, L293D: n ajamiseen käytettävän nastan ja painikkeet.

Alustin asetustoiminnossa sarjan, painikkeet ja asetin L293D: n ohjaimen nastan tulostustilaan.

Lopuksi tarkistin pääsilmukassa, onko painiketta painettu. Jos on, Arduino soittaa vastaavan nuotin ja tulostaa muistiinpanon nimen Serial Monitorille (hyödyllistä tietää, mitkä nuotit ovat leipäpöydälläsi). Jos nuotti vapautetaan, arduino lopettaa äänen ilman noTone ().

Valitettavasti kirjaston rakenteen vuoksi en löytänyt tapaa tarkistaa, onko painiketta painettu tai vapautettu vähemmän verbose -tavalla kuin käyttämällä kahta ehtoa muistiinpanoa kohti. Toinen virhe tässä koodissa on, että jos painat kahta painiketta samanaikaisesti ja vapautat sitten yhden niistä, molemmat nuotit pysäytetään, koska noTone () estää kaikkien muistiinpanojen luomisen riippumatta siitä, mikä nuotti sen laukaisi.

Vaihe 5: Kappaleen ohjelmointi

Sen sijaan, että käyttäisit painikkeita muistiinpanojen toistamiseen, voit myös ohjelmoida Arduinon soittamaan melodian automaattisesti puolestasi. Tässä on muutettu versio ensimmäisestä luonnoksesta, joka toistaa moottorissa Twinkle, Twinkle, Little Star. Luonnoksen ensimmäinen osa on sama - määritellään nuotin taajuudet ja tonePin. Pääsemme uuteen osaan bpm = "100". Asetan lyönnit minuutissa (bpm) ja käytän sitten matematiikkaa selvittääksesi millisekuntien lukumäärän lyöntiä kohden, jonka lyönnit vastaavat. Tätä varten käytin tekniikkaa, jota kutsutaan dimensioanalyysiksi (älä huoli - se ei ole niin vaikeaa kuin miltä se kuulostaa). Jos olet koskaan käynyt lukion kemian kurssin, käytit ehdottomasti dimensioanalyysiä yksiköiden välillä muuntamiseen. Kellukkeet () varmistavat, että mitään yhtälöstä ei pyöristetä loppuun asti tarkkuuden vuoksi.

Kun meillä on ms/beat -määrä, jaoin tai kerroin sen sopivasti löytääkseni musiikissa esiintyvien eri nuotin kestojen millisekuntiarvot. Teen sitten jokaisen muistiinpanon kronologisessa järjestyksessä ja toisen jokaisen nuotin keston. On erittäin tärkeää, että jokaisen nuotin indeksi vastaa sen keston indeksiä, muuten melodia soi. Laitan muistiinpanoja Twinkle, Twinkle, Little Star tähän esimerkkinä, mutta voit kokeilla mitä tahansa haluamaasi kappaletta tai muistiinpanoja.

Todellinen taikuus tapahtuu silmukkafunktiossa. Toistan jokaiselle nuotille sävyn jonkin aikaa, jonka määritin beat_values -taulukossa. Sen sijaan, että olisin käyttänyt viivettä täällä, mikä aiheuttaisi äänen toistamisen, tallensin ohjelman aloittamisesta kuluneen ajan millis () -funktiolla ja vähensin sen nykyisestä ajasta. Kun aika ylittää ajan, jonka määritin muistiinpanon beat_values -matriisin viimeiseksi, lopetan nuotin. For -silmukan jälkeinen viive lisää aukkoa nuottien väliin varmistaen, että seuraavat saman taajuuden nuotit eivät sekoitu keskenään.

Vaihe 6: Palaute

Siinäpä tämä projekti. Jos et ymmärrä jotain tai sinulla on ehdotuksia, älä epäröi ottaa minuun yhteyttä. Koska tämä on ensimmäinen opetusohjelmani, arvostan suuresti kommentteja ja ehdotuksia tämän sisällön parantamisesta. Nähdään ensi kerralla!

Suositeltava: