Talaan ng mga Nilalaman:

Mga Timer ng Arduino: 8 Mga Proyekto: 10 Hakbang (na may Mga Larawan)
Mga Timer ng Arduino: 8 Mga Proyekto: 10 Hakbang (na may Mga Larawan)

Video: Mga Timer ng Arduino: 8 Mga Proyekto: 10 Hakbang (na may Mga Larawan)

Video: Mga Timer ng Arduino: 8 Mga Proyekto: 10 Hakbang (na may Mga Larawan)
Video: ТЕПЕРЬ НЕ ПРОПАДУ 10-ть самоделок ВЫРУЧАТ ГДЕ УГОДНО! 2024, Nobyembre
Anonim
Mga Timer ng Arduino: 8 Mga Proyekto
Mga Timer ng Arduino: 8 Mga Proyekto

Ang Arduino Uno o Nano ay maaaring makabuo ng tumpak na mga digital signal sa anim na nakalaang mga pin sa pamamagitan ng paggamit ng tatlong built-in na timer. Nangangailangan lamang sila ng ilang mga utos upang mai-set up at gumamit ng walang mga CPU cycle upang tumakbo!

Ang paggamit ng mga timer ay maaaring maging intimidating kung nagsimula ka mula sa buong ATMEGA328 buong datasheet, na may 90 mga pahina na nakatuon sa kanilang paglalarawan! Maraming mga built-in na utos ng Arduino ang gumagamit na ng mga timer, halimbawa ng millis (), pagkaantala (), tono (), AnalogWrite () at ng librong servo. Ngunit upang magamit ang kanilang buong lakas, kakailanganin mong i-set up ang mga ito sa pamamagitan ng mga rehistro. Ibinabahagi ko rito ang ilang mga macros at pagpapaandar upang gawing mas madali at mas malinaw ito.

Matapos ang isang napakaikling pangkalahatang ideya ng mga timer, sundin ang 8 mga cool na proyekto na umaasa sa pagbuo ng signal sa mga timer.

Hakbang 1: Kinakailangan na Mga Sangkap

Mga Kinakailangan na Bahagi
Mga Kinakailangan na Bahagi

Upang magawa ang lahat ng 8 mga proyekto na kakailanganin mo:

  • Isang Arduino Uno o katugma
  • Isang prototype na kalasag na may mini protoboard
  • 6 na mga kable ng jumper ng tinapay
  • 6 maikling jumper jumpers (gawin ang iyong sarili mula sa 10cm solid core hookup wire)
  • 2 lead ng buwaya
  • 1 puting 5mm LED
  • isang resistor na 220 Ohm
  • isang risistor na 10kOhm
  • isang 10kOhm potentiometer
  • 2 ceramic 1muF capacitor
  • 1 electrolytic 10muF capacitor
  • 2 diode, 1n4148 o katulad
  • 2 micro servo motors na SG90
  • 1 8Ohm speaker
  • 20m ng manipis (0.13mm) na enameled wire

Hakbang 2: Pangkalahatang-ideya ng Mga Timer ng Arduino para sa Pagbuo ng Signal

Ang Timer0 at timer2 ay 8-bit timer, nangangahulugang maaari silang mabilang mula 0 hanggang 255 nang higit pa. Ang Timer1 ay isang 16-bit timer, kaya maaari itong bilangin hanggang sa 65535. Ang bawat timer ay may dalawang nauugnay na output pin: 6 at 5 para sa timer0, 9 at 10 para sa timer1, 11 at 3 para sa timer2. Ang timer ay nadagdagan sa bawat pag-ikot ng Arduino na orasan, o sa isang rate na nabawasan ng isang prescale factor, na alinman sa 8, 64, 256 o 1024 (pinapayagan din ang 32 at 128 para sa timer2). Nagbibilang ang mga timer mula 0 hanggang sa 'TOP' at pagkatapos ay muli (mabilis na PWM) o pababa (wastong phase na PWM). Ang halaga ng 'TOP' sa gayon ay tumutukoy sa dalas. Ang mga output pin ay maaaring itakda, i-reset, o i-flip sa halaga ng Pagrehistro ng Paghahambing ng Output, sa gayon ang mga tumutukoy sa cycle ng tungkulin. Ang timer1 lamang ang may kakayahang malayang itakda ang dalas at ang mga cycle ng tungkulin para sa parehong mga output pin.

Hakbang 3: LED Blink

Image
Image
LED Blink
LED Blink
LED Blink
LED Blink

Ang pinakamababang dalas na maaaring maabot sa mga timer na 8-bit ay 16MHz / (511 * 1024) = 30, 6Hz. Kaya upang makagawa ng isang LED blink na may 1Hz, kailangan namin ng timer1, na maaaring umabot sa mga frequency ng 256 beses na mas maliit, 0.12 Hz.

Ikonekta ang isang LED gamit ang anode nito (mahabang binti) upang i-pin9 at ikonekta ang katod nito gamit ang isang resistor na 220 Ohm sa lupa. I-upload ang code. Ang LED ay magpapikit sa eksaktong 1Hz na may duty cycle na 50%. Ang pag-andar ng loop () ay walang laman: ang timer ay inisyal sa pag-setup () at hindi na kailangan ng karagdagang pansin.

Hakbang 4: LED Dimmer

Image
Image
LED Dimmer
LED Dimmer
LED Dimmer
LED Dimmer

Ang pulso-lapad na modulasyon ay isang mabisang paraan upang makontrol ang tindi ng isang LED. Sa isang tamang driver, ito rin ang ginustong pamamaraan upang makontrol ang bilis ng mga electromotor. Dahil ang signal ay alinman sa 100% o 100% off, walang lakas na nasayang sa isang paglaban sa serye. Talaga, ito ay tulad ng pag-flash ng LED nang mas mabilis kaysa sa sinusundan ng mata. Ang 50Hz ay nasa sapat na prinsipyo, ngunit maaari pa rin itong kumislap nang kaunti at kapag lumipat ang LED o ang mga mata, maaaring magresulta ang isang nakakainis na hindi tuloy-tuloy na 'trail'. Gamit ang isang prescale na 64 na may isang 8-bit timer, nakakakuha kami ng 16MHz / (64 * 256) = 977Hz, na nababagay sa layunin. Pinipili namin ang timer2, upang ang timer1 ay mananatiling magagamit para sa iba pang mga pagpapaandar, at hindi kami makagambala sa pagpapaandar ng Arduino time (), na gumagamit ng timer0.

Sa halimbawang ito ang cycle ng tungkulin, at sa gayon ang tindi, ay kinokontrol ng isang potensyomiter. Ang isang pangalawang LED ay maaaring makontrol nang nakapag-iisa sa parehong timer sa pin 3.

Hakbang 5: Digital-to-Analog Converter (DAC)

Image
Image
Digital-to-Analog Converter (DAC)
Digital-to-Analog Converter (DAC)
Digital-to-Analog Converter (DAC)
Digital-to-Analog Converter (DAC)

Ang Arduino ay walang tunay na analog output. Ang ilang mga module ay kumukuha ng isang analog boltahe upang makontrol ang isang parameter (ipakita ang kaibahan, threshold ng pagtuklas atbp). Sa isang capacitor at resistor lamang, maaaring magamit ang timer1 upang lumikha ng isang analog boltahe na may resolusyon na 5mV o mas mahusay.

Ang isang low-pass filter ay maaaring 'average' ang signal ng PWM sa isang analog boltahe. Ang isang kapasitor ay konektado sa pamamagitan ng isang risistor sa isang PWM pin. Ang mga katangian ay natutukoy ng dalas ng PWM at ng mga halaga ng risistor at kapasitor. Ang resolusyon ng mga 8-bit timer ay magiging 5V / 256 = 20mV, kaya pinili namin para sa Timer1 upang makakuha ng 10-bit na resolusyon. Ang RC circuit ay isang first-order low-pass filter at magkakaroon ito ng kaunting ripple. Ang time-scale ng RC circuit ay dapat na mas malaki kaysa sa panahon ng PWM signal upang mabawasan ang ripple. Ang panahon na nakukuha namin para sa isang 10-bit na katumpakan ay 1024 / 16MHz = 64mus. Kung gumagamit kami ng isang 1muF capacitor at isang 10kOhm risistor, RC = 10ms. Ang ripple ng rurok sa rurok ay hanggang sa 5V * 0.5 * T / (RC) = 16mV, na itinuturing na sapat dito.

Tandaan na ang DAC na ito ay may napakataas na output impedance (10kOhm), kaya't ang boltahe ay mahuhulog nang malaki kung kumukuha ito ng kasalukuyang. Upang maiwasan iyon, maaari itong buffered sa isang opamp, o maaaring pumili ng ibang kumbinasyon ng R at C, halimbawa 1kOhm na may 10muF.

Sa halimbawa, ang output ng DAC ay pinapatnubayan ng isang potensyomiter. Ang isang pangalawang independiyenteng DAC channel ay maaaring patakbuhin na may timer1 sa pin 10.

Hakbang 6: Metronome

Image
Image
Metronome
Metronome
Metronome
Metronome

Ang isang metronom ay tumutulong upang subaybayan ang ritmo kapag nagpe-play ng musika. Para sa napakaikling pulso, ang output ng arduino timer ay maaaring direktang pakainin sa isang tagapagsalita, na makakapagdulot ng malinaw na maririnig na mga pag-click. Sa isang potensyomiter, ang kontrol ng dalas ay maaaring makontrol mula 40 hanggang 208 beats bawat minuto, sa 39 na hakbang. Kailangan ang timer1 para sa kinakailangang katumpakan. Ang halaga ng 'TOP', na tumutukoy sa dalas, ay binago sa loob ng pag-andar ng loop (), at nangangailangan iyon ng pansin! Nakikita mo dito na ang WGM mode ay naiiba sa iba pang mga halimbawa na naayos ang dalas: ang mode na ito, na may TOP na itinakda ng rehistro ng OCR1A, ay may dobleng buffering at pinoprotektahan laban sa nawawalang TOP at pagkuha ng isang mahabang glitch. Gayunpaman, nangangahulugan ito na magagamit lamang namin ang 1 output pin.

Hakbang 7: Sound Spectrum

Image
Image
Spectrum ng Tunog
Spectrum ng Tunog
Spectrum ng Tunog
Spectrum ng Tunog

Ang mga tao ay maaaring makarinig ng higit sa 3 mga order ng lakas ng mga frequency ng tunog, mula sa 20Hz hanggang 20kHz Ang halimbawang ito ay bumubuo ng buong spectrum na may potensyomiter. Ang isang 10muF capacitor ay inilalagay sa pagitan ng speaker at ng Arduino upang harangan ang kasalukuyang DC. Gumagawa ang Timer1 ng square square. Ang mode ng pagbuo ng Waveform dito ay Phase-correct PWM. Sa mode na iyon, ang counter ay nagsisimulang magbilang nang paatras kapag umabot ito sa tuktok, na nagreresulta sa mga pulso na naayos na ang kanilang ibig sabihin, kahit na nag-iiba ang siklo ng tungkulin. Gayunpaman, nagreresulta din ito sa isang panahon na (halos) doble, at nangyari lamang na sa prescale 8, saklaw ng timer1 ang buong naririnig na spectrum, nang hindi kinakailangan na baguhin ang prescale. Dito rin, dahil ang halaga ng TOP ay binabago nang on-the-go, ang paggamit ng OCR1A bilang tuktok ay binabawasan ang mga glitches.

Hakbang 8: Mga Servo Motors

Image
Image
Mga Servo Motors
Mga Servo Motors
Mga Servo Motors
Mga Servo Motors

Mayroong malakas na mga silid-aklatan ng servo, ngunit kung mayroon ka lamang dalawang servos na drive, maaari mo ring gawin ito nang direkta sa timer1, at sa gayon mabawasan ang CPU, paggamit ng memorya, at maiwasan ang mga nakakagambala. Ang tanyag na SG90 servo ay tumatagal ng isang 50Hz signal, at ang haba ng pulso ang nag-code sa posisyon. Akma para sa timer1. Ang dalas ay naayos, kaya ang parehong mga output sa pin9 at pin 10 ay maaaring magamit upang patnubayan ang mga servo nang nakapag-iisa.

Hakbang 9: Dobler ng Boltahe at Inverter

Doble ng Boltahe at Inverter
Doble ng Boltahe at Inverter
Doble ng Boltahe at Inverter
Doble ng Boltahe at Inverter
Doble ng Boltahe at Inverter
Doble ng Boltahe at Inverter

Minsan ang iyong proyekto ay nangangailangan ng isang boltahe na mas mataas sa 5V o isang negatibong boltahe. Maaari itong magpatakbo ng isang MOSFET, upang magpatakbo ng isang elemento ng piezo, upang mapagana ang isang opamp, o i-reset ang isang EEPROM. Kung ang kasalukuyang gumuhit ay sapat na maliit, hanggang sa ~ 5mA, ang isang singil na bomba ay maaaring ang pinakasimpleng solusyon: 2 diode lamang at dalawang capacitor na konektado sa isang pulsed signal mula sa isang timer payagan na doble ang arduino 5V hanggang 10V. Sa pagsasagawa, mayroong 2 patak ng diode, kaya magiging mas katulad ng 8.6V sa pagsasanay para sa nagdodoble, o -3.6V para sa inverter.

Ang dalas ng square square ay dapat na sapat upang mag-bomba ng sapat na singil sa pamamagitan ng mga diode. Ang isang 1muF capacitor ay gumagalaw ng 5muC ng pagbabago kapag ang boltahe ay nagbabago sa pagitan ng 0 at 5V, kaya para sa isang kasalukuyang 10mA, ang dalas ay dapat na hindi bababa sa 2kHz. Sa pagsasagawa, ang isang mas mataas na dalas ay mas mahusay, dahil binabawasan nito ang ripple. Sa pagbibilang ng timer2 mula 0 hanggang 255 nang walang prescale, ang dalas ay 62.5kHz, na gumagana nang maayos.

Hakbang 10: Wireless Power Transfer

Image
Image
Wireless Power Transfer
Wireless Power Transfer
Wireless Power Transfer
Wireless Power Transfer

Hindi bihira na singilin ang isang matalinong relo nang walang mga kable, ngunit ang pareho ay madaling maging bahagi ng isang proyekto ng Arduino. Ang isang coil na may mataas na signal ng dalas ay maaaring maglipat ng kuryente sa isa pang kalapit na likaw sa pamamagitan ng induction, nang walang kontak sa kuryente.

Ihanda muna ang mga coil. Gumamit ako ng isang papel na roll ng 8.5cm diameter at enameled wire na 0.13mm diameter upang gumawa ng 2 coil: ang pangunahing may 20 liko, ang pangalawang may 50 liko. Ang self-inductance ng ganitong uri ng coil na may N windings at isang radius R ay ~ 5muH * N ^ 2 * R. Kaya't para sa N = 20 at R = 0.0425 ay nagbibigay ng L = 85muH, na kinumpirma ng bahagi ng tester. Gumagawa kami ng isang senyas na may dalas na 516kHz, na nagreresulta sa isang impedance na 2pi * f * L = 275Ohm. Ito ay sapat na mataas na ang Arduino ay hindi nag-o-overcurrent.

Upang mapatakbo nang epektibo ang coil, nais naming gumamit ng isang tunay na mapagkukunan ng AC. Mayroong isang trick na maaaring gawin: ang dalawang output ng isang timer ay maaaring patakbuhin sa kabaligtaran phase, sa pamamagitan ng pag-invert ng isa sa mga output. Upang gawin itong mas katulad sa isang alon ng sine, ginagamit namin ang wastong Phase na PWM. Sa ganitong paraan, sa pagitan ng pin 9 isang 10, kahalili ng boltahe sa pagitan ng parehong 0V, pin 9 + 5V, parehong 0V, pin 10 + 5V. Ang epekto ay ipinapakita sa larawan mula sa isang saklaw ng saklaw (na may isang presyong 1024, ang saklaw ng laruan na ito ay walang gaanong bandwidth).

Ikonekta ang pangunahing likaw sa pin 9 at 10. Ikonekta ang isang LED sa pangalawang likaw. Kapag ang pangalawang likaw ay inilapit sa pangunahing, ang mga ilaw ng LED ay maliwanag.

Inirerekumendang: