Sisukord:

Arduino taimerid: 8 projekti: 10 sammu (piltidega)
Arduino taimerid: 8 projekti: 10 sammu (piltidega)

Video: Arduino taimerid: 8 projekti: 10 sammu (piltidega)

Video: Arduino taimerid: 8 projekti: 10 sammu (piltidega)
Video: Исправлена проблема с драйвером USB для Windows 8.1 и Windows 10 - Robojax 2024, November
Anonim
Arduino taimerid: 8 projekti
Arduino taimerid: 8 projekti

Arduino Uno või Nano suudavad kolme sisseehitatud taimeriga genereerida kuuele spetsiaalsele tihvtile täpseid digitaalseid signaale. Nende seadistamiseks on vaja vaid mõningaid käske ja protsessor ei kasuta käivitamiseks ühtegi tsüklit!

Taimerite kasutamine võib olla hirmutav, kui alustate ATMEGA328 täielikust andmelehest, mille kirjeldusele on pühendatud 90 lehekülge! Mitmed sisseehitatud Arduino käsud kasutavad juba taimerit, näiteks millis (), delay (), tone (), AnalogWrite () ja servoteek. Kuid nende täieliku võimsuse kasutamiseks peate need seadistama registrite kaudu. Jagan siin mõningaid makrosid ja funktsioone, et muuta see lihtsamaks ja läbipaistvamaks.

Pärast väga lühikest ülevaadet taimeritest järgige 8 lahedat projekti, mis toetuvad taimeritega signaali genereerimisele.

Samm: nõutavad komponendid

Nõutavad komponendid
Nõutavad komponendid

Kõigi kaheksa projekti tegemiseks vajate:

  • Arduino Uno või ühilduv
  • Prototüübi kilp koos mini protoboardiga
  • 6 leivaplaadi hüppajakaablit
  • 6 lühikest leivaplaadi džemprit (valmistage end 10 cm tugeva südamikuga ühendustraadist)
  • 2 krokodillijuhet
  • 1 valge 5 mm LED
  • 220 oomi takisti
  • 10 kOhm takisti
  • 10 kOhm potentsiomeeter
  • 2 keraamilist 1muF kondensaatorit
  • 1 10mF elektrolüütiline kondensaator
  • 2 dioodi, 1n4148 vms
  • 2 mikro servomootorit SG90
  • 18 oomi kõlar
  • 20 m õhukest (0,13 mm) emailitud traati

Samm: ülevaade signaalide genereerimiseks mõeldud Arduino taimeritest

Taimer0 ja taimer2 on 8-bitised taimerid, mis tähendab, et neid saab lugeda kõige rohkem vahemikus 0 kuni 255. Taimer1 on 16-bitine taimer, nii et see võib loota kuni 65535. Igal taimeril on kaks seotud väljundnõela: 6 ja 5 taimerile0, 9 ja 10 taimerile1, 11 ja 3 taimerile2. Taimerit suurendatakse iga Arduino kella tsükli jooksul või kiirusega, mida vähendatakse eelseadistusteguriga, mis on kas 8, 64, 256 või 1024 (32 ja 128 on lubatud ka taimeril2). Taimerid loevad vahemikus 0 kuni TOP ja seejärel uuesti (kiire PWM) või allapoole (faasi õige PWM). „TOP” väärtus määrab seega sageduse. Väljundtihvtid võivad väljundvõrdlusregistri väärtust seadistada, lähtestada või ümber pöörata, nii et need määravad töötsükli. Ainult taimeril 1 on võimalik iseseisvalt määrata mõlema väljundtihvti sagedus ja töötsüklid.

Samm: LED vilgub

Image
Image
LED vilgub
LED vilgub
LED vilgub
LED vilgub

Madalaim sagedus, mida 8-bitiste taimeritega on võimalik saavutada, on 16 MHz/(511*1024) = 30, 6 Hz. Nii et LED -i vilkumiseks 1 Hz -ga vajame taimerit1, mis suudab saavutada 256 korda väiksemaid sagedusi, 0,12 Hz.

Ühendage LED oma anoodiga (pikk jalg) tihvtiga 9 ja ühendage selle katood 220 oomi takistiga maandusega. Laadige kood üles. Valgusdiood vilgub täpselt 1 Hz sagedusel 50%töötsükliga. Funktsioon loop () on tühi: taimer lähtestatakse seadistamisel () ja see ei vaja täiendavat tähelepanu.

Samm: LED -dimmer

Image
Image
LED dimmer
LED dimmer
LED dimmer
LED dimmer

Impulsi laiuse modulatsioon on tõhus viis LED-i intensiivsuse reguleerimiseks. Õige juhi korral on see ka eelistatud meetod elektromootorite kiiruse reguleerimiseks. Kuna signaal on kas 100% sisse lülitatud või 100% välja lülitatud, ei raisata võimsust jadatakistusele. Põhimõtteliselt on see nagu LED -i vilkumine kiiremini, kui silm suudab jälgida. 50 Hz on põhimõtteliselt piisav, kuid võib siiski tunduda, et see natuke vilgub ja kui valgusdiood või silmad liiguvad, võib tulemuseks olla tüütu mitte-pidev „rada”. Kasutades eelskaala 64 koos 8-bitise taimeriga, saame 16MHz/(64*256) = 977Hz, mis sobib eesmärgiga. Valime taimer2, nii et taimer1 jääb muude funktsioonide jaoks kättesaadavaks ja me ei sega Arduino time () funktsiooni, mis kasutab taimerit0.

Selles näites reguleerib töötsüklit ja seega ka intensiivsust potentsiomeeter. Teist LED -i saab sõltumatult reguleerida sama taimeriga tihvti 3 juures.

Samm 5: Digitaal-analoogmuundur (DAC)

Image
Image
Digitaal-analoogmuundur (DAC)
Digitaal-analoogmuundur (DAC)
Digitaal-analoogmuundur (DAC)
Digitaal-analoogmuundur (DAC)

Arduinol pole tõelist analoogväljundit. Mõned moodulid võtavad parameetri (ekraani kontrastsus, tuvastuslävi jne) reguleerimiseks analoogpinget. Vaid ühe kondensaatori ja takisti abil saab taimerit 1 luua analoogpinge eraldusvõimega 5 mV või paremini.

Madalpääsfilter suudab PWM-signaali „keskmistada” analoogpingeni. Kondensaator on takisti kaudu ühendatud PWM tihvtiga. Karakteristikud määratakse kindlaks PWM sageduse ning takisti ja kondensaatori väärtuste järgi. 8-bitiste taimerite eraldusvõime oleks 5V/256 = 20mV, seega valime 10-bitise eraldusvõime saamiseks Timer1. RC-ahel on esimese astme madalpääsfilter ja sellel on mõningane pulsatsioon. RC-ahela ajaskaala peaks olema palju suurem kui PWM-signaali periood, et vähendada pulsatsiooni. Periood, mille saame 10-bitise täpsusega, on 1024/16MHz = 64mus. Kui kasutame 1muF kondensaatorit ja 10kOhm takisti, on RC = 10ms. Piik-tipp-lainetus on maksimaalselt 5 V*0,5*T/(RC) = 16 mV, mida peetakse siin piisavaks.

Pange tähele, et sellel DAC -l on väga kõrge väljundtakistus (10 kOhm), nii et pinge langeb oluliselt, kui see voolu võtab. Selle vältimiseks võib selle puhverdada opampiga või valida mõne muu R ja C kombinatsiooni, näiteks 1 kOhm 10 mF.

Näites juhitakse DAC väljundit potentsiomeetriga. Teist sõltumatut DAC -kanalit saab käivitada taimeriga 1 tihvtil 10.

Samm: metronoom

Image
Image
Metronoom
Metronoom
Metronoom
Metronoom

Metronoom aitab muusika mängimisel rütmi jälgida. Väga lühikeste impulsside korral saab arduino taimeriväljundi otse kõlarisse juhtida, mis annab selgelt kuuldavaid klõpse. Potentsiomeetri abil saab löögisagedust reguleerida 40 kuni 208 lööki minutis, 39 sammuga. Taimer1 on vajalik nõutava täpsuse saavutamiseks. Sagedust määrava väärtuse „TOP” muudetakse funktsiooni loop () sees ja see nõuab tähelepanu! Siin näete, et WGM -režiim erineb teistest fikseeritud sagedusega näidetest: sellel režiimil, mille OCR1A register on määranud TOPi, on kahekordne puhverdus ja see kaitseb puuduva TOP -i ja pika tõrke eest. See aga tähendab, et saame kasutada ainult ühte väljundnõela.

7. samm: helispekter

Image
Image
Helispekter
Helispekter
Helispekter
Helispekter

Inimene kuuleb üle 3 suurusjärgu helisagedusi, vahemikus 20 Hz kuni 20 kHz. See näide genereerib potentsiomeetriga kogu spektri. Kõlarite ja Arduino vahele pannakse alalisvoolu blokeerimiseks 10 µF kondensaator. Taimer1 tekitab ruutlaine. Lainekuju genereerimise režiim on siin faasikorrektne PWM. Selles režiimis hakkab loendur tippu jõudes tagasi lugema, mille tulemuseks on impulsside keskmine fikseerimine, isegi kui töötsükkel on erinev. Selle tulemuseks on aga ka periood (peaaegu) kahekordne ja lihtsalt juhtub, et eelseadistusega 8 katab taimer1 kogu kuuldava spektri, ilma et oleks vaja muuta eelseadistust. Ka siin, kuna TOP-i väärtust muudetakse liikvel olles, vähendab OCR1A kasutamine ülaosana tõrkeid.

Samm: servomootorid

Image
Image
Servomootorid
Servomootorid
Servomootorid
Servomootorid

Seal on võimsad servoteegid, kuid kui teil on sõita ainult kaks servot, võiksite seda teha ka otse taimeriga1 ja seega vähendada protsessorit, mälu kasutamist ja vältida katkestusi. Populaarne SG90 servo võtab 50 Hz signaali ja impulsi pikkus kodeerib positsiooni. Ideaalne taimeriks1. Sagedus on fikseeritud, nii et mõlemat pin9 ja pin 10 väljundit saab kasutada servode iseseisvaks juhtimiseks.

9. samm: pinge kahekordistaja ja inverter

Pinge kahekordistaja ja inverter
Pinge kahekordistaja ja inverter
Pinge kahekordistaja ja inverter
Pinge kahekordistaja ja inverter
Pinge kahekordistaja ja inverter
Pinge kahekordistaja ja inverter

Mõnikord nõuab teie projekt pinget, mis on kõrgem kui 5 V, või negatiivset pinget. See võib olla MOSFET -i käivitamine, pieso -elemendi käivitamine, opamp -i toide või EEPROM -i lähtestamine. Kui voolutugevus on piisavalt väike, kuni ~ 5 mA, võib laadimispump olla lihtsaim lahendus: vaid 2 dioodi ja kaks taimeriga impulsisignaaliga ühendatud kondensaatorit võimaldavad arduino 5V kuni 10V kahekordistada. Praktikas on diooditilku 2, seega on see kahekordistaja jaoks praktiliselt rohkem 8,6 V või muunduri puhul -3,6 V.

Ruutlaine sagedus peaks olema piisav piisava laengu pumpamiseks läbi dioodide. 1 µF kondensaator liigutab 5 mC muutust, kui pinge muutub vahemikus 0 kuni 5 V, nii et 10 mA voolu korral peab sagedus olema vähemalt 2 kHz. Praktikas on parem kõrgem sagedus, kuna see vähendab pulsatsiooni. Kui taimer2 loeb 0 kuni 255 ilma eelseadistamiseta, on sagedus 62,5 kHz, mis töötab hästi.

Samm: traadita jõuülekanne

Image
Image
Juhtmevaba jõuülekanne
Juhtmevaba jõuülekanne
Traadita jõuülekanne
Traadita jõuülekanne

Nutikella laadimine ilma kaabliteta pole haruldane, kuid sama võib kergesti kuuluda Arduino projekti. Kõrgsagedusliku signaaliga mähis võib induktsiooni kaudu edastada võimsuse teisele läheduses olevale mähisele ilma elektrilise kontaktita.

Esmalt valmistage rullid ette. Kasutasin kahe rulli valmistamiseks 8,5 cm läbimõõduga paberirulli ja 0,13 mm läbimõõduga emailitud traati: esmane 20, teine 50 pööret. Seda tüüpi mähiste N-mähiste ja raadiusega R iseinduktiivsus on ~ 5muH * N^2 * R. Seega N = 20 ja R = 0,0425 annab L = 85muH, mis kinnitati komponenditestriga. Toodame signaali sagedusega 516 kHz, mille tulemuseks on takistus 2pi*f*L = 275Ohm. See on piisavalt kõrge, et Arduino ei läheks ülevoolu.

Spiraali kõige tõhusamaks käitamiseks tahaksime kasutada tõelist vahelduvvooluallikat. On üks trikk, mida saab teha: taimeri kahte väljundit saab käivitada vastupidises faasis, pöörates ühe väljundi ümber. Selleks, et muuta see siinuslainele veelgi sarnasemaks, kasutame faasikorrektset PWM-i. Sel moel pinge 9 ja 10 vahel vaheldub pinge nii 0V, pin 9 +5V, mõlemad 0V, pin 10 +5V vahel. Efekt on pildil näidatud skaalajäljest (1024 eelseadistusega ei ole sellel mänguasjaskaalal palju ribalaiust).

Ühendage esmane mähis tihvtidega 9 ja 10. Ühendage sekundaarmähisega LED. Kui sekundaarmähis tuuakse primaarile lähedale, süttib LED eredalt.

Soovitan: