Sisällysluettelo:

Arduino -ajastimet: 8 projektia: 10 vaihetta (kuvilla)
Arduino -ajastimet: 8 projektia: 10 vaihetta (kuvilla)

Video: Arduino -ajastimet: 8 projektia: 10 vaihetta (kuvilla)

Video: Arduino -ajastimet: 8 projektia: 10 vaihetta (kuvilla)
Video: How to use up to 10 push button switch with 1 Arduino input pin ANPB-V1 2024, Kesäkuu
Anonim
Arduino -ajastimet: 8 projektia
Arduino -ajastimet: 8 projektia

Arduino Uno tai Nano voivat tuottaa tarkkoja digitaalisia signaaleja kuudelle erilliselle nastalle käyttämällä kolmea sisäänrakennettua ajastinta. Ne vaativat vain muutaman komennon, eivätkä suorita suorittimia.

Ajastimien käyttö voi olla pelottavaa, jos aloitat ATMEGA328: n täydestä tietolomakkeesta, jossa on 90 sivua niiden kuvaukselle! Useat sisäänrakennetut Arduino-komennot käyttävät jo ajastimia, esimerkiksi millis (), delay (), tone (), AnalogWrite () ja servokirjasto. Mutta jotta voit käyttää niiden kaikkia voimia, sinun on määritettävä ne rekisterien kautta. Jaan tässä joitain makroja ja toimintoja, jotka tekevät tästä helpompaa ja avoimempaa.

Erittäin lyhyen katsauksen jälkeen ajastimista seuraa 8 hienoa projektia, jotka perustuvat signaalien luomiseen ajastimien kanssa.

Vaihe 1: Tarvittavat komponentit

Pakolliset osat
Pakolliset osat

Kaikkien 8 projektin toteuttamiseen tarvitset:

  • Arduino Uno tai yhteensopiva
  • Prototyyppinen kilpi, jossa on mini protoboard
  • 6 leipälevyn hyppykaapelia
  • 6 lyhyttä leipälautahyppääjää (tee itsesi 10 cm: n kiinteästä ytimen kytkentäjohdosta)
  • 2 krokotiilijohtoa
  • 1 valkoinen 5 mm LED
  • 220 ohmin vastus
  • 10 khm: n vastus
  • 10 kOhm: n potentiometri
  • 2 keraamista 1 muF kondensaattoria
  • 1 elektrolyyttinen 10muF kondensaattori
  • 2 diodia, 1n4148 tai vastaava
  • 2 mikroservomoottoria SG90
  • 1 8 ohmin kaiutin
  • 20 m ohutta (0,13 mm) emaloitu lanka

Vaihe 2: Yleiskatsaus Arduino -ajastimista signaalin luomiseen

Ajastin0 ja ajastin2 ovat 8-bittisiä ajastimia, mikä tarkoittaa, että ne voivat laskea enintään 0-255. Ajastin1 on 16-bittinen ajastin, joten se voi laskea jopa 65535. Kullakin ajastimella on kaksi siihen liittyvää ulostulonappia: 6 ja 5 ajastimelle0, 9 ja 10 ajastimelle1, 11 ja 3 ajastimelle2. Ajastin kasvaa jokaisen Arduino -kellosyklin aikana tai nopeudella, jota pienennetään esiasteikkokertoimella, joka on joko 8, 64, 256 tai 1024 (32 ja 128 ovat myös sallittuja ajastimelle2). Ajastimet laskevat nollasta arvoon "TOP" ja sitten uudestaan (nopea PWM) tai alaspäin (vaihe oikea PWM). "TOP" -arvo määrittää siten taajuuden. Lähtötapit voivat asettaa, nollata tai kääntää lähdön vertailurekisterin arvon, joten ne määrittävät käyttöjakson. Vain ajastin1 pystyy asettamaan itsenäisesti taajuuden ja käyttöjaksot molemmille lähtötapoille.

Vaihe 3: LED vilkkuu

Image
Image
LED vilkkuu
LED vilkkuu
LED vilkkuu
LED vilkkuu

Pienin taajuus, joka voidaan saavuttaa 8-bittisellä ajastimella, on 16 MHz/(511*1024) = 30, 6 Hz. Jotta LED vilkkuu 1 Hz: llä, tarvitsemme ajastimen1, joka voi saavuttaa 256 kertaa pienemmät taajuudet, 0,12 Hz.

Kytke LED -valo anodineen (pitkä jalka) nastaan 9 ja katodi 220 ohmin vastuksen kanssa maahan. Lataa koodi. LED vilkkuu täsmälleen 1 Hz: llä 50%: n toimintajaksolla. Silmukka () -toiminto on tyhjä: ajastin alustetaan asennuksessa () eikä tarvitse lisätoimenpiteitä.

Vaihe 4: LED -himmennin

Image
Image
LED -himmennin
LED -himmennin
LED -himmennin
LED -himmennin

Pulssileveysmodulaatio on tehokas tapa säätää LED-valon voimakkuutta. Oikealla ohjaimella se on myös edullinen tapa säätää sähkömoottorien nopeutta. Koska signaali on joko 100% päällä tai 100% pois päältä, virtaa ei tuhlata sarjaresistanssiin. Pohjimmiltaan se on kuin LED -valon vilkkuminen nopeammin kuin silmä voi seurata. 50 Hz on periaatteessa riittävä, mutta se saattaa silti näyttää välkkyvän hieman ja kun LED tai silmät liikkuvat, seurauksena voi olla ärsyttävä, jatkuva "polku". Käyttämällä esiasetusta 64 ja 8-bittistä ajastinta saadaan 16MHz/(64*256) = 977Hz, mikä sopii tarkoitukseen. Valitsemme ajastimen2, jotta ajastin1 pysyy käytettävissä muille toiminnoille, emmekä häiritse Arduino time () -toimintoa, joka käyttää ajastinta0.

Tässä esimerkissä käyttöjaksoa ja siten voimakkuutta säädetään potentiometrillä. Toinen LED voidaan säätää itsenäisesti samalla ajastimella nastassa 3.

Vaihe 5: Digitaalinen-analoginen muunnin (DAC)

Image
Image
Digitaalinen-analoginen muunnin (DAC)
Digitaalinen-analoginen muunnin (DAC)
Digitaalinen-analoginen muunnin (DAC)
Digitaalinen-analoginen muunnin (DAC)

Arduinolla ei ole todellista analogista lähtöä. Jotkut moduulit käyttävät analogista jännitettä parametrin säätämiseen (näytön kontrasti, tunnistuskynnys jne.). Vain yhdellä kondensaattorilla ja vastuksella ajastimella 1 voidaan luoda analoginen jännite, jonka resoluutio on 5 mV tai parempi.

Alipäästösuodatin voi "keskittää" PWM-signaalin analogiseen jännitteeseen. Kondensaattori on kytketty vastuksen kautta PWM -nastaan. Ominaisuudet määräytyvät PWM -taajuuden sekä vastuksen ja kondensaattorin arvojen mukaan. 8-bittisten ajastimien resoluutio olisi 5V/256 = 20mV, joten valitsemme Timer1: n 10-bittisen resoluution saamiseksi. RC-piiri on ensimmäisen asteen alipäästösuodatin ja siinä on jonkin verran aaltoilua. RC-piirin aika-asteikon tulisi olla paljon suurempi kuin PWM-signaalin jakso aaltoilun vähentämiseksi. 10-bittisen tarkkuuden aika on 1024/16MHz = 64mus. Jos käytämme 1 mF kondensaattoria ja 10 kOhm: n vastusta, RC = 10 ms. Huippu-huippu-aaltoilu on korkeintaan 5 V*0,5*T/(RC) = 16 mV, mikä katsotaan tässä riittäväksi.

Huomaa, että tällä DAC: llä on erittäin suuri lähtöimpedanssi (10 kOhm), joten jännite laskee merkittävästi, jos se ottaa virtaa. Tämän välttämiseksi se voidaan puskuroida opampilla tai valita toinen R: n ja C: n yhdistelmä, esimerkiksi 1 kOhm 10 mF: n kanssa.

Esimerkissä DAC -lähtöä ohjataan potentiometrillä. Toinen itsenäinen DAC -kanava voidaan ajaa ajastimella 1 nastassa 10.

Vaihe 6: Metronomi

Image
Image
Metronomi
Metronomi
Metronomi
Metronomi

Metronomi auttaa seuraamaan rytmiä musiikkia toistettaessa. Hyvin lyhyille pulsseille arduino -ajastimen lähtö voidaan syöttää suoraan kaiuttimeen, mikä tuottaa selvästi kuuluvia napsautuksia. Potentiometrillä syketaajuutta voidaan säätää 40 - 208 lyöntiä minuutissa 39 vaiheessa. Ajastin 1 tarvitaan vaaditun tarkkuuden saavuttamiseksi. Taajuutta määrittävä TOP -arvo muuttuu silmukan () funktion sisällä, ja se vaatii huomiota! Näet tässä, että WGM -tila eroaa muista esimerkeistä, joilla on kiinteä taajuus: tässä tilassa, jossa OCR1A -rekisterin asettama TOP, on kaksinkertainen puskurointi ja se suojaa TOP: n puuttumiselta ja pitkiltä häiriöiltä. Tämä tarkoittaa kuitenkin, että voimme käyttää vain yhtä lähtötappia.

Vaihe 7: Äänispektri

Image
Image
Äänen spektri
Äänen spektri
Äänen spektri
Äänen spektri

Ihminen voi kuulla yli 3 suuruusluokkaa äänitaajuuksia, 20 Hz - 20 kHz. Tämä esimerkki tuottaa koko spektrin potentiometrillä. Kaiuttimen ja Arduinon väliin asetetaan 10 muF: n kondensaattori DC -virran estämiseksi. Ajastin1 tuottaa neliöaallon. Aaltomuodon luontitila on tässä vaiheessa oikea PWM. Tässä tilassa laskuri alkaa laskea taaksepäin, kun se saavuttaa huipun, mikä johtaa pulsseihin, joiden keskiarvo on kiinteä, vaikka käyttöjakso vaihtelee. Se johtaa kuitenkin myös (lähes) kaksinkertaiseen jaksoon, ja sattuu vain, että esiasetuksella 8 ajastin 1 kattaa koko kuultavan taajuuden ilman tarvetta muuttaa esiasetusta. Myös täällä, koska TOP: n arvoa muutetaan liikkeellä ollessa, OCR1A: n käyttäminen yläosana vähentää häiriöitä.

Vaihe 8: Servomoottorit

Image
Image
Servomoottorit
Servomoottorit
Servomoottorit
Servomoottorit

Tehokkaita servokirjastoja on, mutta jos sinulla on vain kaksi servoa ajettavana, voit myös tehdä sen suoraan ajastimella1 ja siten vähentää suorittimen, muistin käyttöä ja välttää keskeytyksiä. Suosittu SG90 -servo ottaa 50 Hz: n signaalin, ja pulssin pituus koodaa sijainnin. Ihanteellinen ajastimelle 1. Taajuus on kiinteä, joten molempia nastan 9 ja nastan 10 ulostuloja voidaan käyttää servojen ohjaamiseen itsenäisesti.

Vaihe 9: Jännitteen kaksinkertaistin ja invertteri

Jännitteen tuplaaja ja invertteri
Jännitteen tuplaaja ja invertteri
Jännitteen tuplaaja ja invertteri
Jännitteen tuplaaja ja invertteri
Jännitteen tuplaaja ja invertteri
Jännitteen tuplaaja ja invertteri

Joskus projektisi vaatii yli 5 V: n jännitteen tai negatiivisen jännitteen. Se voi olla ajaa MOSFETia, pietsoelementtiä, syöttää virtaa opampille tai nollata EEPROM. Jos virrankulutus on riittävän pieni, jopa ~ 5 mA, latauspumppu voi olla yksinkertaisin ratkaisu: vain 2 diodia ja kaksi kondensaattoria, jotka on kytketty ajastimen pulssisignaaliin, mahdollistavat arduinon 5V - 10V kaksinkertaistamisen. Käytännössä on 2 diodipisaraa, joten se on käytännössä enemmän kuin 8,6 V kaksinkertaistimessa tai -3,6 V invertterissä.

Neliöaallon taajuuden pitäisi olla riittävä pumppaamaan riittävästi varausta diodien läpi. 1muF kondensaattori siirtää 5muC muutosta, kun jännite muuttuu välillä 0-5V, joten 10mA virran taajuuden on oltava vähintään 2kHz. Käytännössä suurempi taajuus on parempi, koska se vähentää aaltoilua. Kun ajastin2 laskee 0–255 ilman esiasetusta, taajuus on 62,5 kHz, mikä toimii hyvin.

Vaihe 10: Langaton voimansiirto

Image
Image
Langaton voimansiirto
Langaton voimansiirto
Langaton voimansiirto
Langaton voimansiirto

Ei ole harvinaista ladata älykello ilman kaapeleita, mutta sama voi helposti olla osa Arduino -projektia. Korkean taajuuden signaalilla varustettu kela voi siirtää virtaa toiseen lähellä olevaan kelaan induktiolla ilman sähkökontaktia.

Valmistele ensin kelat. Käytin paperirullaa, jonka halkaisija oli 8,5 cm, ja emaloitua lankaa, jonka halkaisija oli 0,13 mm, ja tehdä 2 kelaa: ensisijainen 20 kierrosta, toissijainen 50 kierrosta. Tämäntyyppisen kelan, jossa on N-käämiä ja säde R, itseinduktanssi on ~ 5muH * N^2 * R. Näin = 20 ja R = 0,0425 antaa L = 85muH, mikä varmistettiin komponenttitesterillä. Tuotamme signaalin, jonka taajuus on 516 kHz, jolloin impedanssi on 2pi*f*L = 275Ohm. Tämä on riittävän korkea, jotta Arduino ei mene ylivirtaan.

Jotta kela toimisi mahdollisimman tehokkaasti, haluaisimme käyttää todellista vaihtovirtalähdettä. On olemassa temppu, joka voidaan tehdä: ajastimen kaksi lähtöä voidaan ajaa vastakkaisessa vaiheessa kääntämällä yksi lähtöistä. Jotta se olisi vieläkin samanlainen kuin siniaalto, käytämme vaiheen oikeaa PWM: ää. Tällä tavalla jännite vaihtelee nastan 9 ja 10 välillä 0V, nasta 9 +5V, molemmat 0V, nasta 10 +5V. Tehoste näkyy kuvassa laajuusjäljellä (1024 esiasetuksella tällä lelualueella ei ole paljon kaistanleveyttä).

Liitä ensiökäämi nastoihin 9 ja 10. Liitä LED toisiokäämiin. Kun toisiokäämi tuodaan lähelle ensisijaista, LED -valo syttyy kirkkaasti.

Suositeltava: