Taula de continguts:
- Pas 1: components necessaris
- Pas 2: Visió general dels temporitzadors Arduino per a la generació de senyals
- Pas 3: LED parpelleja
- Pas 4: regulador de llum LED
- Pas 5: convertidor digital a analògic (DAC)
- Pas 6: metrònom
- Pas 7: espectre de so
- Pas 8: servomotors
- Pas 9: duplicador de tensió i inversor
- Pas 10: transferència d'alimentació sense fils
Vídeo: Temporitzadors Arduino: 8 projectes: 10 passos (amb imatges)
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:12
L'Arduino Uno o Nano poden generar senyals digitals precisos en sis pins dedicats mitjançant els tres temporitzadors integrats. Només requereixen unes quantes ordres per configurar i no fan servir cicles de CPU per executar-se.
Utilitzar els temporitzadors pot ser intimidant si es parteix del full de dades complet ATMEGA328, que té 90 pàgines dedicades a la seva descripció. Diverses ordres Arduino incorporades ja utilitzen els temporitzadors, per exemple millis (), delay (), tone (), AnalogWrite () i la servoteca. Però per utilitzar tota la seva potència, els haureu de configurar a través dels registres. Comparteixo aquí algunes macros i funcions per fer-ho més fàcil i transparent.
Després d'una breu descripció general dels temporitzadors, seguiu 8 projectes interessants que depenen de la generació de senyal amb els temporitzadors.
Pas 1: components necessaris
Per fer els vuit projectes necessitareu:
- Un Arduino Uno o compatible
- Un prototip d’escut amb mini protoborda
- 6 cables de pont de taula
- 6 ponts de taula curts (fes-te a partir de filferro de connexió de nucli sòlid de 10 cm)
- 2 cables de cocodril
- 1 LED blanc de 5 mm
- una resistència de 220 Ohm
- una resistència de 10kOhm
- un potenciòmetre de 10kOhm
- 2 condensadors ceràmics 1muF
- 1 condensador electrolític de 10 muF
- 2 díodes, 1n4148 o similar
- 2 micro servomotors SG90
- 1 altaveu de 8 Ohm
- 20 m de filferro esmaltat fi (0,13 mm)
Pas 2: Visió general dels temporitzadors Arduino per a la generació de senyals
El temporitzador 0 i el temporitzador 2 són temporitzadors de 8 bits, és a dir, que poden comptar de 0 a 255 com a màxim. El temporitzador 1 és un temporitzador de 16 bits, de manera que pot comptar fins a 65535. Cada temporitzador té dos pins de sortida associats: 6 i 5 per al temporitzador0, 9 i 10 per al temporitzador1, 11 i 3 per al temporitzador2. El temporitzador s'incrementa a cada cicle de rellotge d'Arduino o a una velocitat reduïda per un factor de prescala, que és 8, 64, 256 o 1024 (32 i 128 també estan permesos per al temporitzador2). Els temporitzadors compten de 0 a "TOP" i després de nou (PWM ràpid) o cap avall (PWM de fase correcta). El valor de "TOP" determina així la freqüència. Els pins de sortida es poden configurar, restablir o capgirar al valor del registre de comparació de sortida, de manera que aquests determinen el cicle de treball. Només el temporitzador 1 té la capacitat de configurar independentment la freqüència i els cicles de treball per a tots dos pins de sortida.
Pas 3: LED parpelleja
La freqüència més baixa que es pot arribar amb els temporitzadors de 8 bits és de 16 MHz / (511 * 1024) = 30, 6 Hz. Per tant, per fer parpellejar un LED amb 1Hz, necessitem el temporitzador 1, que pot assolir freqüències 256 vegades més petites, 0,12 Hz.
Connecteu un LED amb el seu ànode (pota llarga) al pin9 i connecteu el càtode amb una resistència de 220 Ohm a terra. Pengeu el codi. El LED parpellejarà exactament a 1Hz amb un cicle de treball del 50%. La funció loop () està buida: el temporitzador s’inicialitza a setup () i no necessita cap més atenció.
Pas 4: regulador de llum LED
La modulació d’amplada de pols és una manera eficaç de regular la intensitat d’un LED. Amb un conductor adequat, també és el mètode preferit per regular la velocitat dels electromotors. Com que el senyal està 100% encès o 100% de descompte, no es gasta energia en una resistència de sèrie. Bàsicament, és com parpellejar el LED més ràpid del que l’ull pot seguir. 50Hz és, en principi, suficient, però pot semblar que parpelleja una mica i, quan el LED o els ulls es mouen, pot resultar un molest “rastre” no continu. Utilitzant una escala prèvia de 64 amb un temporitzador de 8 bits, obtenim 16 MHz / (64 * 256) = 977 Hz, que s’adapti a l’objectiu. Seleccionem el temporitzador2, de manera que el temporitzador1 continua disponible per a altres funcions i no interferim amb la funció Arduino time (), que utilitza el temporitzador0.
En aquest exemple, el cicle de treball, i per tant la intensitat, està regulat per un potenciòmetre. Un segon LED es pot regular independentment amb el mateix temporitzador al pin 3.
Pas 5: convertidor digital a analògic (DAC)
L'Arduino no té una sortida analògica real. Alguns mòduls prenen una tensió analògica per regular un paràmetre (contrast de visualització, llindar de detecció, etc.). Amb només un condensador i resistència, el timer1 es pot utilitzar per crear una tensió analògica amb una resolució de 5 mV o millor.
Un filtre de pas baix pot "fer mitjana" el senyal PWM a una tensió analògica. Un condensador està connectat mitjançant una resistència a un pin PWM. Les característiques estan determinades per la freqüència PWM i els valors de la resistència i del condensador. La resolució dels temporitzadors de 8 bits seria de 5V / 256 = 20mV, de manera que optem per Timer1 per obtenir una resolució de 10 bits. El circuit RC és un filtre de pas baix de primer ordre i tindrà una certa ondulació. L'escala de temps del circuit RC hauria de ser molt més gran que el període del senyal PWM per reduir l'ondulació. El període que obtenim per a una precisió de 10 bits és de 1024 / 16MHz = 64mus. Si fem servir un condensador de 1muF i una resistència de 10kOhm, RC = 10ms. La ondulació de pic a pic és com a màxim de 5V * 0,5 * T / (RC) = 16mV, cosa que aquí es considera suficient.
Tingueu en compte que aquest DAC té una impedància de sortida molt alta (10kOhm), de manera que la tensió caurà significativament si treu corrent. Per evitar-ho, es pot emmagatzemar amb un opamp o es pot triar una altra combinació de R i C, per exemple 1kOhm amb 10muF.
A l'exemple, la sortida DAC es dirigeix amb un potenciòmetre. Es pot executar un segon canal DAC independent amb el temporitzador 1 al pin 10.
Pas 6: metrònom
Un metrònom ajuda a fer un seguiment del ritme quan es reprodueix música. Per a polsos molt curts, la sortida del temporitzador arduino es pot alimentar directament a un altaveu, que produirà clics clarament audibles. Amb un potenciòmetre, la freqüència de batecs es pot regular de 40 a 208 batecs per minut, en 39 passos. Es necessita el temporitzador 1 per obtenir la precisió necessària. El valor de "TOP", que determina la freqüència, es modifica dins de la funció loop () i això requereix atenció. Aquí veieu que el mode WGM difereix dels altres exemples que tenen una freqüència fixa: aquest mode, amb TOP configurat pel registre OCR1A, té una memòria intermèdia doble i protegeix contra la falta de TOP i obté un error llarg. Tanmateix, això significa que només podem utilitzar 1 pin de sortida.
Pas 7: espectre de so
Els humans poden escoltar més de 3 ordres de magnitud de les freqüències de so, de 20Hz a 20kHz. Aquest exemple genera l'espectre complet amb un potenciòmetre. Es posa un condensador de 10 µF entre l'altaveu i l'Arduino per bloquejar el corrent continu. El temporitzador 1 produeix una ona quadrada. El mode de generació de formes d’ona aquí és PWM de fase correcta. En aquest mode, el comptador comença a comptar cap enrere quan arriba a la part superior, cosa que dóna lloc a impulsos que tenen la mitjana fixa, fins i tot quan el cicle de treball varia. Tanmateix, també es tradueix en un període (gairebé) doble, i passa que amb la prescala 8, el temporitzador 1 cobreix tot l’espectre audible, sense necessitat de canviar la prescala. També aquí, ja que el valor de TOP s'està canviant a la marxa, utilitzant OCR1A com a part superior es redueixen els errors.
Pas 8: servomotors
Hi ha servobiblioteques potents, però si només teniu dos servos per conduir, també podeu fer-ho directament amb el temporitzador1 i, per tant, reduir la CPU, l’ús de memòria i evitar interrupcions. El popular servo SG90 pren un senyal de 50Hz i la longitud del pols codifica la posició. Ideal per al temporitzador1. La freqüència és fixa, de manera que ambdues sortides del pin9 i del pin 10 es poden utilitzar per dirigir els servos de forma independent.
Pas 9: duplicador de tensió i inversor
De vegades, el vostre projecte requereix una tensió superior a 5 V o una tensió negativa. Pot ser executar un MOSFET, executar un element piezoelèctric, alimentar un opamp o restablir una EEPROM. Si el consum actual és prou petit, fins a uns 5 mA, una bomba de càrrega podria ser la solució més senzilla: només dos díodes i dos condensadors connectats a un senyal de pols des d’un temporitzador permeten duplicar l’arduino de 5V a 10V. A la pràctica, hi ha 2 gotes de díode, de manera que s’assemblarà més a 8,6 V a la pràctica per al duplicador o a -3,6 V per a l’inversor.
La freqüència de l’ona quadrada hauria de ser suficient per bombar prou càrrega a través dels díodes. Un condensador de 1 µF mou 5 µC de canvi quan la tensió varia entre 0 i 5 V, de manera que per a un corrent de 10 mA, la freqüència ha de ser com a mínim de 2 kHz. A la pràctica, és millor una freqüència més alta, ja que redueix l’ondulació. Amb el timer2 comptant de 0 a 255 sense preescala, la freqüència és de 62,5 kHz, que funciona bé.
Pas 10: transferència d'alimentació sense fils
No és estrany carregar un rellotge intel·ligent sense cables, però el mateix pot formar part d’un projecte Arduino. Una bobina amb senyal d'alta freqüència pot transferir energia a una altra bobina propera mitjançant inducció, sense contacte elèctric.
Primer prepareu les bobines. Vaig fer servir un rotlle de paper de 8,5 cm de diàmetre i filferro esmaltat de 0,13 mm de diàmetre per fer 2 bobines: la primària amb 20 voltes, la secundària amb 50 voltes. L’autoinductància d’aquest tipus de bobines amb N bobinats i un radi R és de ~ 5muH * N ^ 2 * R. Així doncs, per a N = 20 i R = 0,0425 es dóna L = 85muH, cosa que es va confirmar amb el provador de components. Produïm un senyal amb una freqüència de 516 kHz, donant lloc a una impedància de 2pi * f * L = 275 Ohm. Això és prou alt perquè l'Arduino no entri en sobrecorrent.
Per fer funcionar la bobina de la manera més eficaç, ens agradaria utilitzar una font de corrent altern. Es pot fer un truc: les dues sortides d’un temporitzador es poden executar en fase oposada invertint una de les sortides. Per fer-ho encara més semblant a una ona sinusoïdal, fem servir el PWM de fase correcte. D'aquesta manera, entre el pin 9 i el 10, la tensió alterna entre 0V, pin 9 + 5V, ambdós 0V, pin 10 + 5V. L’efecte es mostra a la imatge a partir d’un traç d’objectiu (amb una escala prèvia 1024, aquest abast de joguina no té massa amplada de banda).
Connecteu la bobina primària als pins 9 i 10. Connecteu un LED a la bobina secundària. Quan la bobina secundària s’acosta a la primària, el LED s’il·lumina amb força.
Recomanat:
20 temporitzadors de rentat de segona mà per a COVID-19: 6 passos (amb imatges)
20 Temporitzador de rentat de segona mà per a COVID-19: a mesura que es propaga el COVID-19 a nivell mundial, hauríem de protegir-nos no només recollint menys i usant màscara facial, sinó també rentant-nos les mans amb més freqüència. No és eficaç contra els virus si no No renteu-vos les mans correctament. Com rentar-nos les mans correctament? W
Projectes Arduino amb panell LED 16x16 RGB: 5 passos (amb imatges)
16x16 RGB LED Panel Arduino Projects: Hola a tothom, publico aquest projecte perquè m'agradaria que tothom tingués un lloc senzill on jugar amb un d'aquests fantàstics panells LED 16x16 RGB. He agafat idees d'altres projectes i les he modificat per a aquest projecte. Et dóna
Dub Siren Synth - 555 temporitzadors: 14 passos (amb imatges)
Dub Siren Synth - 555 temporitzadors: Dub Siren! Home: ni tan sols sabia que existien fins que un amic de DJ em va demanar que en fes un. Vaig haver de fer una mica d’excavació (en realitat, molta excavació, no hi ha molt a la xarxa sorprenentment) per conèixer la història de la sirena de dub i no va
Circuit dimmer LED - 555 projectes temporitzadors: 5 passos
Circuit dimmer LED | 555 projectes temporitzadors: trobeu la descripció completa del projecte & Tot el material útil, incloent diagrama de circuits / maquinari esquemàtic / codis de llista de components / full de dades d’algoritmes / configuració de pins, etc. A ►► https://circuits-diy.com/how-to-make-simple-led-d
10 projectes bàsics d'Arduino per a principiants. Feu almenys 15 projectes amb un sol tauler: 6 passos
10 projectes bàsics d'Arduino per a principiants. Feu almenys 15 projectes amb una sola placa !: Arduino Project & Taula de tutoria; Inclou 10 projectes bàsics d’Arduino. Tots els codis font, el fitxer Gerber i molt més. Cap SMD! Soldadura fàcil per a tothom. Components fàcils de desmuntar i reemplaçar. Podeu fer almenys 15 projectes amb un sol bo