Kazalo:

Arduino časovniki: 8 projektov: 10 korakov (s slikami)
Arduino časovniki: 8 projektov: 10 korakov (s slikami)

Video: Arduino časovniki: 8 projektov: 10 korakov (s slikami)

Video: Arduino časovniki: 8 projektov: 10 korakov (s slikami)
Video: Измерьте ток до 500A с помощью шунтирующего резистора с помощью Arduino 2024, Junij
Anonim
Arduino Timers: 8 projektov
Arduino Timers: 8 projektov

Arduino Uno ali Nano lahko s pomočjo treh vgrajenih časovnikov ustvari natančne digitalne signale na šestih namenskih zatičih. Za nastavitev potrebujejo le nekaj ukazov in za delovanje ne uporabljajo ciklov procesorja!

Uporaba časovnikov je lahko zastrašujoča, če začnete s celotnim podatkovnim listom ATMEGA328, ki ima 90 strani, namenjenih njihovemu opisu! Več vgrajenih ukazov Arduino že uporablja časovnike, na primer millis (), delay (), tone (), AnalogWrite () in servo knjižnico. Če želite v celoti izkoristiti njihovo moč, jih morate nastaviti prek registrov. Tukaj delim nekaj makrov in funkcij, da bo to lažje in preglednejše.

Po zelo kratkem pregledu časovnikov sledite 8 kul projektom, ki temeljijo na ustvarjanju signala s časovniki.

Korak: Potrebne komponente

Potrebne komponente
Potrebne komponente

Za izdelavo vseh 8 projektov boste potrebovali:

  • Arduino Uno ali združljiv
  • Prototipni ščit z mini protoboardom
  • 6 mostičnih kablov za mizo
  • 6 kratkih mostov za mizo (naredite sami iz 10 -centimetrske priključne žice)
  • 2 krokodilski vodi
  • 1 bela 5 mm LED
  • 220 ohmski upor
  • 10kOhm upor
  • potenciometer 10kOhm
  • 2 keramična 1mF kondenzatorja
  • 1 elektrolitski kondenzator 10 μF
  • 2 diodi, 1n4148 ali podobno
  • 2 mikro servo motorja SG90
  • 1 8Ohm zvočnik
  • 20 m tanke (0,13 mm) emajlirane žice

2. korak: Pregled časovnikov Arduino za ustvarjanje signalov

Timer0 in timer2 sta 8-bitna časovnika, kar pomeni, da lahko štejeta največ od 0 do 255. Timer1 je 16-bitni časovnik, zato lahko šteje do 65535. Vsak časovnik ima dva povezana izhodna zatiča: 6 in 5 za timer0, 9 in 10 za timer1, 11 in 3 za timer2. Časovnik se poveča pri vsakem ciklu ure Arduino ali s hitrostjo, ki se zmanjša za faktor prednamer, ki je bodisi 8, 64, 256 ali 1024 (32 in 128 sta dovoljena tudi za timer2). Časovniki štejejo od 0 do 'TOP' in nato znova (hiter PWM) ali navzdol (fazno korekten PWM). Vrednost „TOP“tako določa frekvenco. Izhodni zatiči lahko nastavijo, ponastavijo ali obrnejo vrednost registra primerjave izhodov, zato ti določijo obratovalni cikel. Samo časovnik 1 lahko neodvisno nastavi frekvenco in delovne cikle za oba izhodna zatiča.

3. korak: utripanje LED

Image
Image
Utripa LED
Utripa LED
Utripa LED
Utripa LED

Najnižja frekvenca, ki jo je mogoče doseči z 8-bitnimi merilniki časa, je 16MHz/(511*1024) = 30, 6Hz. Torej, da LED utripa z 1Hz, potrebujemo timer1, ki lahko doseže 256 -krat manjše frekvence, 0,12 Hz.

Priključite LED z njeno anodo (dolga noga) na pin9 in njeno katodo z 220 ohmskim uporom povežite z maso. Naložite kodo. LED bo utripala pri natančno 1 Hz z obratovalnim ciklom 50%. Funkcija loop () je prazna: časovnik se inicializira pri setup () in ne potrebuje dodatne pozornosti.

4. korak: LED zatemnilnik

Image
Image
LED zatemnilnik
LED zatemnilnik
LED zatemnilnik
LED zatemnilnik

Pulzna širina modulacije je učinkovit način za uravnavanje jakosti LED. Z ustreznim gonilnikom je tudi najprimernejša metoda za regulacijo hitrosti elektromotorjev. Ker je signal 100% vklopljen ali 100% izklopljen, se pri zaporednem uporu ne izgublja moč. V bistvu je tako, kot da utripa LED hitreje, kot lahko sledi oko. 50 Hz načeloma zadostuje, vendar se zdi, da še vedno nekoliko utripa, in ko se LED ali oči premaknejo, lahko nastane nadležna neprekinjena "sled". S prednastavitvijo 64 z 8-bitnim časovnikom dobimo 16MHz/(64*256) = 977Hz, kar ustreza namenu. Izberemo timer2, tako da timer1 ostane na voljo za druge funkcije in ne posegamo v funkcijo Arduino time (), ki uporablja timer0.

V tem primeru se delovni cikel in s tem intenzivnost uravnava s potenciometrom. Drugo LED lahko neodvisno regulirate z istim časovnikom na zatiču 3.

5. korak: Digitalno-analogni pretvornik (DAC)

Image
Image
Digitalno-analogni pretvornik (DAC)
Digitalno-analogni pretvornik (DAC)
Digitalno-analogni pretvornik (DAC)
Digitalno-analogni pretvornik (DAC)

Arduino nima pravega analognega izhoda. Nekateri moduli vzamejo analogno napetost za regulacijo parametra (kontrast zaslona, prag zaznavanja itd.). S samo enim kondenzatorjem in uporom lahko timer1 uporabite za ustvarjanje analogne napetosti z ločljivostjo 5 mV ali boljšo.

Nizkoprepustni filter lahko signal PWM 'povpreči' na analogno napetost. Kondenzator je preko upora priključen na pin PWM. Značilnosti so določene s frekvenco PWM in vrednostmi upora in kondenzatorja. Ločljivost 8-bitnih časovnikov bi bila 5V/256 = 20mV, zato se odločimo za Timer1, da dobimo 10-bitno ločljivost. RC vezje je nizkoprepustni filter prvega reda in bo imel nekaj valov. Časovno območje vezja RC mora biti veliko večje od obdobja signala PWM, da se zmanjša valovanje. Obdobje, ki ga dobimo za 10-bitno natančnost, je 1024/16MHz = 64mus. Če uporabljamo 1muF kondenzator in 10kOhm upor, je RC = 10ms. Največji val valov je največ 5V*0,5*T/(RC) = 16mV, kar tukaj velja za zadostno.

Upoštevajte, da ima ta DAC zelo visoko izhodno impedanco (10 kOhm), zato bo napetost občutno padla, če črpa tok. Da bi se temu izognili, ga lahko puferiramo z opampom ali pa izberemo drugo kombinacijo R in C, na primer 1 kOhm z 10muF.

V tem primeru je izhod DAC usmerjen s potenciometrom. Drugi neodvisni kanal DAC je mogoče zagnati s časovnikom 1 na zatiču 10.

6. korak: Metronom

Image
Image
Metronom
Metronom
Metronom
Metronom

Metronom pomaga spremljati ritem pri predvajanju glasbe. Za zelo kratke impulze lahko izhod časovnika arduino posredujete neposredno v zvočnik, kar bo proizvedlo jasno slišne klike. S potenciometrom lahko frekvenco utripov nastavite od 40 do 208 utripov na minuto v 39 korakih. Timer1 je potreben za zahtevano natančnost. Vrednost 'TOP', ki določa frekvenco, se spremeni znotraj funkcije zanke (), kar zahteva pozornost! Tukaj vidite, da se način WGM razlikuje od drugih primerov s fiksno frekvenco: ta način, pri katerem je TOP nastavljen v registru OCR1A, ima dvojno pufranje in ščiti pred manjkajočim TOP -om in dolgotrajno napako. Vendar to pomeni, da lahko uporabimo samo 1 izhodni pin.

7. korak: Zvočni spekter

Image
Image
Zvočni spekter
Zvočni spekter
Zvočni spekter
Zvočni spekter

Ljudje lahko slišijo več kot 3 velikosti zvočnih frekvenc, od 20Hz do 20kHz Ta primer ustvarja celoten spekter s potenciometrom. Med zvočnikom in Arduinom je nameščen kondenzator 10 μF, ki blokira enosmerni tok. Timer1 proizvaja kvadratni val. Način generiranja valovne oblike tukaj je Phase-correct PWM. V tem načinu števec začne šteti nazaj, ko doseže vrh, kar povzroči, da imajo impulzi fiksno povprečje, tudi če se obratovalni cikel spreminja. Posledica pa je tudi obdobje, ki je (skoraj) dvojno, in zgodi se le, da pri predrazmerju 8 časovnik 1 pokriva celoten zvočni spekter, ne da bi bilo treba spreminjati predrazmerje. Tudi tukaj, ker se vrednost TOP spreminja na poti, uporaba OCR1A kot vrha zmanjšuje napake.

8. korak: Servo motorji

Image
Image
Servo motorji
Servo motorji
Servo motorji
Servo motorji

Obstajajo zmogljive servo knjižnice, če pa imate na voljo le dva servomotorja, lahko to storite tudi neposredno s timer1 in tako zmanjšate procesor, porabo pomnilnika in se izognete prekinitvam. Priljubljeni servomotor SG90 sprejema signal 50Hz, dolžina impulza pa kodira položaj. Idealno za merilnik časa 1. Frekvenca je fiksna, zato lahko oba izhoda na pin9 in pin 10 uporabite za neodvisno krmiljenje servomotorjev.

9. korak: Napetostni podvojitelj in pretvornik

Napetostni podvojitelj in pretvornik
Napetostni podvojitelj in pretvornik
Napetostni podvojitelj in pretvornik
Napetostni podvojitelj in pretvornik
Pretvornik napetosti in pretvornik
Pretvornik napetosti in pretvornik

Včasih vaš projekt zahteva napetost, ki je višja od 5 V, ali negativno napetost. Morda je treba zagnati MOSFET, zagnati piezo element, napajati opamp ali ponastaviti EEPROM. Če je trenutna poraba dovolj majhna, do ~ 5 mA, je lahko najpreprostejša rešitev polnilna črpalka: samo 2 diodi in dva kondenzatorja, priključena na impulzni signal iz časovnika, omogočata podvojitev arduino 5V na 10V. V praksi obstajata 2 diodni kapljici, zato bo v praksi bolj podobna 8,6 V za podvojitev ali -3,6 V za pretvornik.

Frekvenca kvadratnega vala bi morala zadoščati za črpanje zadostnega naboja skozi diode. Kondenzator 1muF premakne 5muC spremembe, ko se napetost spremeni med 0 in 5V, zato mora biti za tok 10mA frekvenca najmanj 2kHz. V praksi je višja frekvenca boljša, saj zmanjšuje valovanje. S števcem 2, ki šteje od 0 do 255 brez prednastavitve, je frekvenca 62,5 kHz, kar dobro deluje.

10. korak: Brezžični prenos energije

Image
Image
Brezžični prenos energije
Brezžični prenos energije
Brezžični prenos energije
Brezžični prenos energije

Ni nenavadno, da se pametna ura polni brez kablov, vendar je lahko zlahka del projekta Arduino. Tuljava z visokofrekvenčnim signalom lahko prek indukcije brez električnega stika prenaša moč na drugo bližnjo tuljavo.

Najprej pripravite tuljave. Za izdelavo 2 tuljav sem uporabil papirnato rolo premera 8,5 cm in emajlirano žico s premerom 0,13 mm: primarno z 20 zavoji, sekundarno s 50 zavoji. Samoinduktivnost te vrste tuljave z N navitji in polmerom R je ~ 5muH * N^2 * R. Torej za N = 20 in R = 0,0425 daje L = 85muH, kar je bilo potrjeno s preizkuševalnikom komponent. Proizvajamo signal s frekvenco 516kHz, kar ima za posledico impedanco 2pi*f*L = 275Ohm. To je dovolj visoko, da Arduino ne prehaja v prekomerni tok.

Za najučinkovitejše delovanje tuljave bi radi uporabili pravi vir izmeničnega toka. Obstaja trik, ki ga je mogoče izvesti: oba izhoda časovnika lahko izvajate v nasprotni fazi, tako da obrnete enega od izhodov. Za še večjo podobnost sinusnemu valu uporabljamo PWM s fazno korekcijo. Na ta način se med zatiči 9 in 10 napetost izmenično spreminja med 0V, pin 9 +5V, oba 0V, pin 10 +5V. Učinek je na sliki prikazan iz sledi obsega (pri predrazmerju 1024 ta obseg igrač nima veliko pasovne širine).

Priključite primarno tuljavo na nožici 9 in 10. Na sekundarno tuljavo priključite LED. Ko se sekundarna tuljava približa primarni, LED sveti močno.

Priporočena: