INHOUDSOPGAWE:
- Stap 1: Vereiste komponente
- Stap 2: Oorsig van die Arduino -timers vir seinopwekking
- Stap 3: LED knipper
- Stap 4: LED -dimmer
- Stap 5: Digitaal-na-analoog-omskakelaar (DAC)
- Stap 6: Metronoom
- Stap 7: Klankspektrum
- Stap 8: Servomotors
- Stap 9: Spanningsverdubbelaar en omskakelaar
- Stap 10: Draadlose kragoordrag
Video: Arduino -timers: 8 projekte: 10 stappe (met foto's)
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:24
Die Arduino Uno of Nano kan akkurate digitale seine op ses toegewyde penne genereer deur die drie ingeboude timers te gebruik. Hulle benodig slegs 'n paar opdragte om op te stel en gebruik geen CPU -siklusse nie!
Die gebruik van die tydtellers kan intimiderend wees as u begin met die volledige datablad van ATMEGA328, met 90 bladsye wat toegewy is aan hul beskrywing! Verskeie ingeboude Arduino-opdragte gebruik reeds die tydtellers, byvoorbeeld millis (), delay (), tone (), AnalogWrite () en die servobiblioteek. Maar om hul volle krag te gebruik, moet u dit deur die registers opstel. Ek deel hier 'n paar makros en funksies om dit makliker en deursigtiger te maak.
Na 'n baie kort oorsig van die timers, volg 8 oulike projekte wat afhanklik is van seinopwekking met die timers.
Stap 1: Vereiste komponente
Om al 8 projekte te maak, benodig u:
- 'N Arduino Uno of versoenbaar
- 'N Prototipe skild met 'n mini protobord
- 6 springbordkabels
- 6 kortbroodspringers (maak jouself van 'n 10 cm -aansluitdraad met soliede kern)
- 2 krokodille lei
- 1 wit 5 mm LED
- 'n weerstand van 220 Ohm
- 'n weerstand van 10 kOhm
- 'n 10kOhm potensiometer
- 2 keramiek 1muF kapasitors
- 1 elektrolitiese 10muF kapasitor
- 2 diodes, 1n4148 of soortgelyk
- 2 mikro -servomotore SG90
- 1 8 Ohm luidspreker
- 20 m dun (0,13 mm) geëmailleerde draad
Stap 2: Oorsig van die Arduino -timers vir seinopwekking
Timer0 en timer2 is 8-bis-timers, wat beteken dat hulle hoogstens van 0 tot 255 kan tel. Timer1 is 'n 16-bis timer, sodat dit tot 65535 kan tel. Elke timer het twee gepaardgaande uitsetpenne: 6 en 5 vir timer0, 9 en 10 vir timer1, 11 en 3 vir timer2. Die timer word verhoog by elke Arduino -kloksiklus, of teen 'n tempo wat verminder word met 'n voorskaalfaktor, wat 8, 64, 256 of 1024 is (32 en 128 is ook toegelaat vir timer2). Die tydtellers tel van 0 tot 'TOP' en dan weer (vinnig PWM) of afwaarts (fase korrekte PWM). Die waarde van 'TOP' bepaal dus die frekwensie. Die uitsetpenne kan die waarde van die uitvoervergelykingregister instel, herstel of omdraai, sodat dié die dienssiklus bepaal. Slegs timer1 het die vermoë om die frekwensie en die werksiklusse vir beide uitvoerpenne onafhanklik in te stel.
Stap 3: LED knipper
Die laagste frekwensie wat met die 8-bis-timers bereik kan word, is 16MHz/(511*1024) = 30, 6Hz. Om 'n LED met 1Hz te laat knip, benodig ons timer1, wat frekwensies 256 keer kleiner kan bereik, 0,12 Hz.
Koppel 'n LED met sy anode (langbeen) aan pin9 en verbind sy katode met 'n 220 Ohm -weerstand met die grond. Laai die kode op. Die LED sal met presies 1 Hz knip met 'n werkstyd van 50%. Die lus () -funksie is leeg: die timer word by die opstelling () geïnitialiseer en het geen verdere aandag nodig nie.
Stap 4: LED -dimmer
Pulswydte modulasie is 'n effektiewe manier om die intensiteit van 'n LED te reguleer. Met die regte bestuurder is dit ook die voorkeurmetode om die snelheid van elektromotors te reguleer. Aangesien die sein 100% aan of 100% af is, word daar geen krag vermors aan 'n reeksweerstand nie. Eintlik is dit soos om die LED vinniger te flits as wat die oog kan volg. 50Hz is in beginsel voldoende, maar dit lyk asof dit nog steeds 'n bietjie flikker, en as die LED of die oë beweeg, kan 'n irriterende, nie-deurlopende 'roete' ontstaan. Deur 'n voorskaal van 64 met 'n 8-bis-timer te gebruik, kry ons 16MHz/(64*256) = 977Hz, wat by die doel pas. Ons kies timer2, sodat timer1 beskikbaar bly vir ander funksies, en ons belemmer nie die Arduino time () -funksie, wat timer0 gebruik nie.
In hierdie voorbeeld word die pligsiklus, en dus die intensiteit, gereguleer deur 'n potensiometer. 'N Tweede LED kan onafhanklik gereguleer word met dieselfde timer op pen 3.
Stap 5: Digitaal-na-analoog-omskakelaar (DAC)
Die Arduino het nie 'n ware analoog uitset nie. Sommige modules neem 'n analoog spanning om 'n parameter te reguleer (vertoningskontras, opsporingsdrempel, ens.). Met slegs een kondensator en weerstand kan timer1 gebruik word om 'n analoog spanning met 'n resolusie van 5mV of beter te skep.
'N Laagdeurlaatfilter kan die PWM-sein' gemiddelde 'tot 'n analoog spanning. 'N Kondensator word deur 'n weerstand aan 'n PWM -pen gekoppel. Die eienskappe word bepaal deur die PWM -frekwensie en die waardes van die weerstand en kapasitor. Die resolusie van die 8-bis-timers is 5V/256 = 20mV, daarom kies ons Timer1 om 'n resolusie van 10 bit te kry. Die RC-kring is 'n eerste-orde laagdoorlaatfilter en het 'n paar rimpels. Die tydskaal van die RC-kring moet baie groter wees as die tydperk van die PWM-sein om die rimpel te verminder. Die tydperk wat ons kry vir 'n 10-bis presisie is 1024/16MHz = 64mus. As ons 'n 1muF -kondensator en 'n 10kOhm -weerstand gebruik, is RC = 10ms. Die piek-tot-piek rimpel is hoogstens 5V*0,5*T/(RC) = 16mV, wat hier as voldoende beskou word.
Let daarop dat hierdie DAC 'n baie hoë uitsetimpedansie (10kOhm) het, sodat die spanning aansienlik sal daal as dit stroom trek. Om dit te vermy, kan dit met 'n opamp gebuffer word, of 'n ander kombinasie van R en C kan gekies word, byvoorbeeld 1kOhm met 10muF.
In die voorbeeld word die DAC -uitset gestuur met 'n potensiometer. 'N Tweede onafhanklike DAC -kanaal kan met timer1 op pen 10 uitgevoer word.
Stap 6: Metronoom
'N Metronoom help om tred te hou met die ritme tydens die speel van musiek. Vir baie kort pulse kan die arduino -timer -uitset direk na 'n luidspreker gevoer word, wat duidelik hoorbare kliek sal lewer. Met 'n potensiometer kan die maat van 40 tot 208 slae per minuut in 39 stappe gereguleer word. Timer1 is nodig vir die vereiste presisie. Die waarde van 'TOP', wat die frekwensie bepaal, word binne die lus () -funksie gewysig, en dit verg aandag! U sien hier dat die WGM -modus verskil van die ander voorbeelde met 'n vaste frekwensie: hierdie modus, met TOP ingestel deur die OCR1A -register, het 'n dubbele buffering en beskerm teen die mis van TOP en 'n lang fout. Dit beteken egter dat ons slegs 1 uitvoerpen kan gebruik.
Stap 7: Klankspektrum
Mense kan meer as 3 orde van grootte van klankfrekwensies hoor, van 20Hz tot 20kHz. Hierdie voorbeeld genereer die volle spektrum met 'n potensiometer. 'N Kondensator van 10 muF word tussen die luidspreker en die Arduino geplaas om die gelykstroom te blokkeer. Timer1 produseer 'n vierkantgolf. Die golfvormgenereringsmodus hier is Fase-korrekte PWM. In die modus begin die teller agteruit tel wanneer dit boontoe kom, wat lei tot pulse wat hul gemiddelde bepaal, selfs as die werksiklus wissel. Dit lei egter ook tot 'n tydperk wat (byna) dubbel is, en dit gebeur net dat timer1 met voorskaal 8 die volle hoorbare spektrum dek, sonder dat die voorskaal hoef te verander. Aangesien die waarde van TOP onderweg ook verander word, verminder OCR1A as top foute.
Stap 8: Servomotors
Daar is kragtige servobiblioteke, maar as u slegs twee servo's het om te bestuur, kan u dit net sowel direk met timer1 doen, en sodoende die CPU, geheueverbruik verminder en onderbrekings vermy. Die gewilde SG90 -servo neem 'n 50Hz -sein, en die polslengte kodeer die posisie. Ideaal vir timer 1. Die frekwensie is vas, sodat beide uitsette op pin9 en pin 10 gebruik kan word om die servo's onafhanklik te stuur.
Stap 9: Spanningsverdubbelaar en omskakelaar
Soms benodig u projek 'n spanning wat hoër is as 5V of 'n negatiewe spanning. Dit kan wees om 'n MOSFET uit te voer, 'n piëzo -element uit te voer, 'n opamp aan te skakel of 'n EEPROM terug te stel. As die stroomopname klein genoeg is tot ~ 5mA, kan 'n laaipomp die eenvoudigste oplossing wees: slegs 2 diodes en twee kondensators wat aan 'n gepulseerde sein van 'n timer gekoppel is, laat die arduino 5V tot 10V verdubbel. In die praktyk is daar 2 diode -druppels, dus dit sal in die praktyk meer wees as 8,6V vir die verdubbelaar, of -3,6V vir die omskakelaar.
Die frekwensie van die vierkantgolf moet voldoende wees om genoeg lading deur die diodes te pomp. 'N 1mUF -kondensator beweeg 5muC verandering wanneer die spanning wissel tussen 0 en 5V, dus vir 'n stroom van 10 mA moet die frekwensie minstens 2 kHz wees. In die praktyk is 'n hoër frekwensie beter, aangesien dit die rimpel verminder. Met timer2 wat van 0 tot 255 sonder voorafskaal tel, is die frekwensie 62,5 kHz, wat goed werk.
Stap 10: Draadlose kragoordrag
Dit is nie ongewoon om 'n slim horlosie sonder kabels te laai nie, maar dieselfde kan maklik deel uitmaak van 'n Arduino -projek. 'N Spoel met 'n hoëfrekwensie sein kan krag deur middel van induksie na 'n ander nabygeleë spoel oordra, sonder elektriese kontak.
Berei eers die spoele voor. Ek het 'n papierrol van 8,5 cm in deursnee en geëmailleerde draad van 0,13 mm in deursnee gebruik om 2 spoele te maak: die primêre met 20 draaie, die sekondêre met 50 draaie. Die selfinduktansie van hierdie tipe spoel met N-wikkelinge en 'n radius R is ~ 5muH * N^2 * R. Dus vir N = 20 en R = 0,0425 gee L = 85muH, wat met die komponenttoetser bevestig is. Ons lewer 'n sein met 'n frekwensie van 516 kHz, wat 'n impedansie van 2pi*f*L = 275Ohm tot gevolg het. Dit is hoog genoeg dat die Arduino nie oorstroom word nie.
Om die spoel die doeltreffendste te laat loop, wil ons 'n ware AC -bron gebruik. Daar is 'n truuk wat gedoen kan word: die twee uitsette van 'n timer kan in die teenoorgestelde fase uitgevoer word deur een van die uitsette om te keer. Om dit nog meer soortgelyk aan 'n sinusgolf te maak, gebruik ons die Fase-korrekte PWM. Op hierdie manier, tussen pen 9 en 10, wissel die spanning tussen beide 0V, pen 9 +5V, beide 0V, pen 10 +5V. Die effek word op die foto getoon vanuit 'n scope -spoor (met 'n voorskaal van 1024 het hierdie speelgoedomvang nie veel bandwydte nie).
Koppel die primêre spoel aan pen 9 en 10. Koppel 'n LED aan die sekondêre spoel. As die sekondêre spoel naby die primêr gebring word, brand die LED helder.
Aanbeveel:
N Cool laptop -touchpad -hack vir Arduino -projekte !: 18 stappe (met foto's)
N Prettige skootrekenaar -hack vir Arduino -projekte !: 'n Tydjie gelede, toe ek met 'n PS/2 -raakvlak met 'n Arduino -mikrobeheerder besig was, het ek agtergekom dat twee van die ingeboude verbindings as digitale insette gebruik kan word. In hierdie instruksies, laat ons leer hoe ons 'n PS/2 -touchpad se byvoeging kan gebruik
16x16 RGB LED -paneel Arduino -projekte: 5 stappe (met foto's)
16x16 RGB LED -paneel Arduino -projekte: Hallo almal, ek plaas hierdie projek, want ek wil hê dat almal 'n eenvoudige plek het om te speel met een van hierdie fantastiese 16x16 RGB LED -panele. Ek het idees uit ander projekte gekry en dit vir hierdie projek aangepas. Dit gee jou
Draadlose kommunikasie met behulp van NRF24L01 -transceivermodule vir Arduino -gebaseerde projekte: 5 stappe (met foto's)
Draadlose kommunikasie met behulp van NRF24L01-transceivermodule vir projekte wat op Arduino gebaseer is: Dit is my tweede instruksies oor die robotte en mikrobeheerders. Dit is regtig ongelooflik om u robot lewendig te sien werk soos verwag, en glo my, dit sal lekkerder wees as u u robot of ander draadlose dinge vinnig en
10 basiese Arduino -projekte vir beginners! Maak ten minste 15 projekte met 'n enkele bord !: 6 stappe
10 basiese Arduino -projekte vir beginners! Maak ten minste 15 projekte met 'n enkele bord !: Arduino -projek &Studieraad; Bevat 10 basiese Arduino -projekte. Alle bronkodes, die Gerber -lêer en meer. Geen SMD nie! Maklike soldeer vir almal. Maklik verwyderbare en vervangbare komponente. U kan ten minste 15 projekte met een bo
4 projekte in 1 met behulp van DFRobot FireBeetle ESP32 & LED Matrix Cover: 11 stappe (met foto's)
4 projekte in 1 met behulp van DFRobot FireBeetle ESP32 & LED Matrix Cover: Ek het daaraan gedink om 'n instruksie vir elke van hierdie projekte te doen - maar uiteindelik het ek besluit dat die grootste verskil die sagteware vir elke projek is, wat ek gedink het beter is om net te maak een groot instruksie! Die hardeware is dieselfde vir alle