Satura rādītājs:

Arduino taimeri: 8 projekti: 10 soļi (ar attēliem)
Arduino taimeri: 8 projekti: 10 soļi (ar attēliem)

Video: Arduino taimeri: 8 projekti: 10 soļi (ar attēliem)

Video: Arduino taimeri: 8 projekti: 10 soļi (ar attēliem)
Video: How to use ESP32 WiFi and Bluetooth with Arduino IDE full details with examples and code 2024, Jūnijs
Anonim
Arduino taimeri: 8 projekti
Arduino taimeri: 8 projekti

Izmantojot trīs iebūvētos taimerus, Arduino Uno vai Nano var ģenerēt precīzus digitālos signālus uz sešām speciāli piespraustām tapām. Viņu iestatīšanai ir nepieciešamas tikai dažas komandas, un to palaišanai neizmanto CPU ciklus!

Taimeru izmantošana var būt biedējoša, ja sākat ar pilnu ATMEGA328 datu lapu, kuras aprakstam ir veltītas 90 lapas! Vairākas iebūvētās Arduino komandas jau izmanto taimerus, piemēram, millis (), delay (), tone (), AnalogWrite () un servo bibliotēka. Bet, lai izmantotu visu savu jaudu, tie ir jāiestata reģistros. Šeit es dalos ar dažiem makro un funkcijām, lai padarītu to vieglāku un pārredzamāku.

Pēc ļoti īsa taimeru pārskata, sekojiet 8 foršiem projektiem, kas balstās uz signālu ģenerēšanu ar taimeriem.

1. darbība. Nepieciešamās sastāvdaļas

Nepieciešamās sastāvdaļas
Nepieciešamās sastāvdaļas

Lai realizētu visus 8 projektus, jums būs nepieciešams:

  • Arduino Uno vai saderīgs
  • Vairogu prototips ar mini protobordu
  • 6 maizes dēļa džemperu kabeļi
  • 6 īsi maizes dēļa džemperi (izveidojiet sevi no 10 cm cietā serdes savienojuma stieples)
  • 2 krokodila vadi
  • 1 balta 5 mm gaismas diode
  • 220 omu rezistors
  • 10 kOhm rezistors
  • 10 kOhm potenciometrs
  • 2 keramikas 1muF kondensatori
  • 1 elektrolītiskais 10muF kondensators
  • 2 diodes, 1n4148 vai līdzīgas
  • 2 mikro servomotori SG90
  • 1 8 omu skaļrunis
  • 20 m plānas (0,13 mm) emaljētas stieples

2. darbība. Arduino taimeru pārskats signālu ģenerēšanai

Taimeris0 un taimeris2 ir 8 bitu taimeri, kas nozīmē, ka tie var saskaitīt ne vairāk kā no 0 līdz 255. Taimeris1 ir 16 bitu taimeris, tāpēc to var saskaitīt līdz 65535. Katram taimerim ir divas saistītas izejas tapas: 6 un 5 taimerim0, 9 un 10 taimerim1, 11 un 3 taimerim2. Taimeris tiek palielināts katrā Arduino pulksteņa ciklā vai ar ātrumu, kas tiek samazināts par iepriekšēja mēroga koeficientu, kas ir 8, 64, 256 vai 1024 (32 un 128 ir atļauti arī taimerim2). Taimeri tiek skaitīti no 0 līdz “TOP” un pēc tam atkal (ātrs PWM) vai uz leju (pareizs fāzes PWM). Tādējādi “TOP” vērtība nosaka biežumu. Izejas tapas var iestatīt, atiestatīt vai apvērst pēc izvades salīdzināšanas reģistra vērtības, tāpēc tās nosaka darba ciklu. Tikai taimeris1 var neatkarīgi iestatīt frekvenci un darba ciklus abām izejas tapām.

3. darbība: LED mirgo

Image
Image
LED mirgo
LED mirgo
LED mirgo
LED mirgo

Zemākā frekvence, ko var sasniegt, izmantojot 8 bitu taimeri, ir 16 MHz/(511*1024) = 30, 6 Hz. Tātad, lai LED mirgo ar 1 Hz, mums ir nepieciešams taimeris1, kas var sasniegt 256 reizes mazākas frekvences, 0,12 Hz.

Pievienojiet gaismas diodi ar tās anodu (garo kāju) pie tapas 9 un pievienojiet katodu ar 220 omu rezistoru pie zemes. Augšupielādējiet kodu. Gaismas diode mirgos precīzi 1 Hz ar 50%darba ciklu. Cilpa () funkcija ir tukša: taimeris tiek inicializēts iestatīšanas () laikā un tam nav nepieciešama papildu uzmanība.

4. solis: LED dimmer

Image
Image
LED dimmeris
LED dimmeris
LED dimmeris
LED dimmeris

Impulsa platuma modulācija ir efektīvs veids, kā regulēt gaismas diodes intensitāti. Ar atbilstošu vadītāju tā ir arī vēlamā metode elektromotoru ātruma regulēšanai. Tā kā signāls ir ieslēgts vai 100% izslēgts, sērijas pretestībai netiek tērēta enerģija. Būtībā tas ir tāpat kā mirgot LED ātrāk nekā acs var sekot. 50 Hz principā ir pietiekams, taču šķiet, ka tas joprojām nedaudz mirgo, un, kad gaismas diode vai acis kustas, var rasties kaitinoša nepārtraukta “taka”. Izmantojot 64 iepriekšējo skalu ar 8 bitu taimeri, mēs iegūstam 16MHz/(64*256) = 977Hz, kas atbilst mērķim. Mēs izvēlamies taimeri2, lai taimeris1 būtu pieejams citām funkcijām, un mēs netraucējam Arduino time () funkcijai, kas izmanto taimeri0.

Šajā piemērā darba ciklu un līdz ar to intensitāti regulē potenciometrs. Otru gaismas diodi var regulēt neatkarīgi, izmantojot to pašu taimeri 3. tapā.

5. darbība: digitālā-analogā pārveidotājs (DAC)

Image
Image
Digitālā-analogā pārveidotājs (DAC)
Digitālā-analogā pārveidotājs (DAC)
Digitālā-analogā pārveidotājs (DAC)
Digitālā-analogā pārveidotājs (DAC)

Arduino nav patiesas analogās izejas. Daži moduļi izmanto analogo spriegumu, lai regulētu parametru (displeja kontrastu, noteikšanas slieksni utt.). Izmantojot tikai vienu kondensatoru un rezistoru, taimeri1 var izmantot, lai izveidotu analogo spriegumu ar 5 mV vai labāku izšķirtspēju.

Zemas caurlaidības filtrs var “vidēji noteikt” PWM signālu līdz analogam spriegumam. Kondensators caur rezistoru ir savienots ar PWM tapu. Raksturlielumus nosaka PWM frekvence un rezistora un kondensatora vērtības. 8 bitu taimeru izšķirtspēja būtu 5V/256 = 20mV, tāpēc mēs izvēlamies Timer1, lai iegūtu 10 bitu izšķirtspēju. RC ķēde ir pirmās kārtas zemas caurlaides filtrs, un tai būs neliela viļņošanās. Lai samazinātu pulsāciju, RC ķēdes laika skalai jābūt daudz lielākai par PWM signāla periodu. Periods, ko iegūstam 10 bitu precizitātei, ir 1024/16MHz = 64mus. Ja mēs izmantojam 1muF kondensatoru un 10kOhm rezistoru, RC = 10ms. Viļņošanās no maksimuma līdz maksimumam ir ne vairāk kā 5 V*0,5*T/(RC) = 16 mV, kas šeit tiek uzskatīts par pietiekamu.

Ņemiet vērā, ka šim DAC ir ļoti augsta izejas pretestība (10 kOhm), tāpēc spriegums ievērojami samazināsies, ja tas patērē strāvu. Lai no tā izvairītos, to var buferizēt ar opamp vai izvēlēties citu R un C kombināciju, piemēram, 1kOhm ar 10muF.

Piemērā DAC izeja tiek vadīta ar potenciometru. Otru neatkarīgu DAC kanālu var palaist ar taimeri 1 uz 10. tapas.

6. solis: metronoms

Image
Image
Metronoms
Metronoms
Metronoms
Metronoms

Metronoms palīdz izsekot ritmam, atskaņojot mūziku. Ļoti īsiem impulsiem arduino taimera izeju var ievadīt tieši skaļrunī, kas radīs skaidri dzirdamus klikšķus. Izmantojot potenciometru, sitienu biežumu var regulēt no 40 līdz 208 sitieniem minūtē 39 soļos. Taimeris 1 ir nepieciešams vajadzīgajai precizitātei. “TOP” vērtība, kas nosaka frekvenci, tiek mainīta cilpas () funkcijas iekšpusē, un tas prasa uzmanību! Šeit redzat, ka WGM režīms atšķiras no citiem piemēriem, kuriem ir fiksēta frekvence: šim režīmam ar TOP iestatīto OCR1A reģistru ir dubultā buferizācija un tas pasargā no TOP pazušanas un ilgstošas kļūmes. Tomēr tas nozīmē, ka mēs varam izmantot tikai 1 izejas tapu.

7. solis: skaņas spektrs

Image
Image
Skaņas spektrs
Skaņas spektrs
Skaņas spektrs
Skaņas spektrs

Cilvēki var dzirdēt vairāk nekā 3 lieluma skaņas frekvences, sākot no 20 Hz līdz 20 kHz. Šis piemērs ģenerē pilnu spektru ar potenciometru. Starp skaļruni un Arduino ir ievietots 10muF kondensators, lai bloķētu līdzstrāvu. Taimeris 1 rada kvadrātveida vilni. Viļņu formas ģenerēšanas režīms šeit ir fāzē pareizs PWM. Šajā režīmā skaitītājs sāk skaitīt atpakaļ, kad tas sasniedz augšdaļu, kā rezultātā tiek iegūti impulsi, kuru vidējais lielums ir fiksēts, pat ja darba cikls mainās. Tomēr tas arī rada periodu, kas ir (gandrīz) divkāršs, un vienkārši gadās, ka ar 8. iepriekšējo skalu taimeris1 aptver visu dzirdamo spektru, nemainot iepriekšējo mērogu. Arī šeit, tā kā TOP vērtība tiek mainīta, atrodoties ceļā, izmantojot OCR1A kā augšējo, tiek novērsti traucējumi.

8. solis: Servo motori

Image
Image
Servo Motors
Servo Motors
Servo Motors
Servo Motors

Ir jaudīgas servo bibliotēkas, taču, ja jums ir jābrauc tikai ar diviem servoservisiem, varat to darīt tieši ar taimeri1 un tādējādi samazināt CPU, atmiņas izmantošanu un izvairīties no pārtraukumiem. Populārais SG90 servo uztver 50 Hz signālu, un impulsa garums kodē pozīciju. Ideāli piemērots taimerim 1. Frekvence ir fiksēta, tāpēc abas izejas uz tapas 9 un tapas 10 var izmantot, lai neatkarīgi vadītu servos.

9. solis: sprieguma dubultnieks un invertors

Sprieguma dubultnieks un invertors
Sprieguma dubultnieks un invertors
Sprieguma dubultnieks un invertors
Sprieguma dubultnieks un invertors
Sprieguma dubultnieks un invertors
Sprieguma dubultnieks un invertors

Dažreiz jūsu projektam ir nepieciešams spriegums, kas ir augstāks par 5 V, vai negatīvs spriegums. Tas var būt MOSFET palaišana, pjezo elementa palaišana, opamp barošana vai EEPROM atiestatīšana. Ja strāvas patēriņš ir pietiekami mazs, līdz ~ 5 mA, uzlādes sūknis varētu būt vienkāršākais risinājums: tikai 2 diodes un divi kondensatori, kas savienoti ar taimera impulsa signālu, ļauj dubultot arduino no 5 V līdz 10 V. Praksē ir 2 diodes pilieni, tāpēc divkāršotājam tas būs vairāk kā 8,6 V vai invertoram -3,6 V.

Kvadrātveida viļņa frekvencei jābūt pietiekamai, lai caur diodēm sūknētu pietiekami daudz uzlādes. 1muF kondensators pārvieto 5muC izmaiņas, kad spriegums mainās no 0 līdz 5V, tāpēc 10mA strāvai frekvencei jābūt vismaz 2kHz. Praksē augstāka frekvence ir labāka, jo tā samazina pulsāciju. Ja taimeris2 skaita no 0 līdz 255 bez iepriekšējas skalas, frekvence ir 62,5 kHz, kas darbojas labi.

10. solis: bezvadu enerģijas pārnese

Image
Image
Bezvadu jaudas pārnese
Bezvadu jaudas pārnese
Bezvadu jaudas pārnese
Bezvadu jaudas pārnese

Nav nekas neparasts uzlādēt viedpulksteni bez kabeļiem, taču tas pats var viegli būt daļa no Arduino projekta. Spole ar augstfrekvences signālu var nodot jaudu citai tuvumā esošai spolei, izmantojot indukciju, bez elektriskā kontakta.

Vispirms sagatavojiet spoles. Es izmantoju 8,5 cm diametra papīra ruļļu un 0,13 mm diametra emaljētu stiepli, lai izveidotu 2 spoles: primāro ar 20 pagriezieniem, sekundāro ar 50 pagriezieniem. Šāda veida spoles pašinduktivitāte ar N tinumiem un rādiusu R ir ~ 5muH * N^2 * R. Tātad N = 20 un R = 0,0425 dod L = 85muH, kas tika apstiprināts ar komponentu testeri. Mēs ražojam signālu ar frekvenci 516 kHz, kā rezultātā pretestība ir 2pi*f*L = 275Ohm. Tas ir pietiekami augsts, lai Arduino nenonāktu pārslodzē.

Lai visefektīvāk darbinātu spoli, mēs vēlētos izmantot patiesu maiņstrāvas avotu. Ir triks, ko var izdarīt: abas taimera izejas var darbināt pretējā fāzē, apgriežot vienu no izejām. Lai padarītu to vēl līdzīgāku sinusoidālajam vilnim, mēs izmantojam fāzes pareizo PWM. Tādā veidā starp tapām 9 un 10 spriegums mainās starp 0V, 9 +5V, abiem 0V, 10 +5V. Efekts ir parādīts attēlā no tvēruma izsekošanas (ar 1024 iepriekšējo skalu, šai rotaļlietu skalai nav daudz joslas platuma).

Pievienojiet primāro spoli 9. un 10. tapai. Pievienojiet LED sekundārajai spolei. Kad sekundārā spole ir tuvināta primārajai, gaismas diode iedegas spilgti.

Ieteicams: