- Componente necesare:
- Explicația circuitului:
- Generator de semnal folosind IC 555 Timer:
- Poarta de declanșare Schmitt:
- Explicație a codului de contorizare a frecvenței Arduino:
Aproape fiecare hobbyist electronic trebuie să se confrunte cu un scenariu în care el sau ea trebuie să măsoare frecvența semnalului generat de un ceas, un contor sau un cronometru. Putem folosi osciloscopul pentru a face treaba, dar nu toți ne permitem un osciloscop. Putem cumpăra echipamente pentru măsurarea frecvenței, dar toate aceste dispozitive sunt costisitoare și nu sunt pentru toată lumea. Având în vedere acest lucru, vom proiecta un contor de frecvență simplu, dar eficient, utilizând poarta de declanșare Arduino Uno și Schmitt.
Acest contor de frecvență Arduino este rentabil și poate fi realizat cu ușurință, vom folosi ARDUINO UNO pentru măsurarea frecvenței semnalului, UNO este inima proiectului aici.
Pentru a testa măsuratorul de frecvență, vom face un generator de semnal fals. Acest generator de semnal fictiv va fi realizat utilizând un cip cu temporizator 555. Circuitul cu temporizator generează o undă pătrată care va fi furnizată UNO pentru testare.
Cu totul la locul nostru, vom avea un contor de frecvență Arduino și un generator de unde pătrate. Arduino poate fi, de asemenea, utilizat pentru a genera alte tipuri de forme de undă, cum ar fi undă sinusoidală, undă de dinte de ferăstrău etc.
Componente necesare:
- 555 timer IC și poarta de declanșare Schmitt 74LS14 sau poarta NU.
- Rezistor 1K Ω (2 bucăți), rezistor 100Ω
- Condensator 100nF (2 bucăți), condensator 1000µF
- 16 * 2 LCD,
- Oală de 47KΩ,
- Breadboard și niște conectori.
Explicația circuitului:
Diagrama circuitului măsurării frecvenței utilizând Arduino este prezentată în figura de mai jos. Circuitul este simplu, un LCD este interfațat cu Arduino pentru a afișa frecvența măsurată a semnalului. „Wave Input” se îndreaptă către Circuitul Generatorului de Semnal, de unde alimentăm semnal către Arduino. O poartă de declanșare Schmitt (IC 74LS14) este utilizată pentru a se asigura că numai undele dreptunghiulare sunt alimentate către Arduino. Pentru filtrarea zgomotului, am adăugat câteva condensatoare la putere. Acest contor de frecvență poate măsura frecvențe de până la 1 MHz.
Circuitul generatorului de semnal și declanșatorul Schmitt au fost explicate mai jos.
Generator de semnal folosind IC 555 Timer:
În primul rând vom vorbi despre generatorul de unde pătrate bazat pe IC 555 sau ar trebui să spun 555 Astable Multivibrator. Acest circuit este necesar, deoarece, cu Frecvenometrul în poziție, trebuie să avem un semnal a cărui frecvență ne este cunoscută. Fără acel semnal nu vom putea niciodată să spunem funcționarea frecvenței. Dacă avem un pătrat cu frecvență cunoscută, putem folosi semnalul pentru a testa Arduino Uno Frequency Meter și îl putem regla pentru ajustări pentru precizie, în cazul unor abateri. Imaginea generatorului de semnal utilizând 555 Timer IC este prezentată mai jos:
Circuitul tipic de 555 în modul Astable este dat mai jos, din care am derivat circuitul generator de semnal dat mai sus.
Frecvența semnalului de ieșire depinde de rezistențele RA, RB și condensatorul C. Ecuația este dată ca, Frecvența (F) = 1 / (Perioada de timp) = 1,44 / ((RA + RB * 2) * C).
Aici RA și RB sunt valori ale rezistenței, iar C este valoarea capacității. Punând valorile rezistenței și capacității în ecuația de mai sus, obținem frecvența undei pătrate de ieșire.
Se poate vedea că RB din diagrama de mai sus este înlocuit de un pot în circuitul generatorului de semnal; acest lucru se face astfel încât să putem obține unda pătrată cu frecvență variabilă la ieșire pentru o mai bună testare. Pentru simplitate, se poate înlocui potul cu un rezistor simplu.
Poarta de declanșare Schmitt:
Știm că toate semnalele de testare nu sunt unde pătrate sau dreptunghiulare. Avem unde triunghiulare, unde dentare, unde sinusoidale și așa mai departe. Pentru ca UNO să poată detecta doar undele pătrate sau dreptunghiulare, avem nevoie de un dispozitiv care să poată modifica orice semnale către undele dreptunghiulare, astfel folosim Schmitt Trigger Gate. Poarta de declanșare Schmitt este o poartă logică digitală, proiectată pentru operații aritmetice și logice.
Această poartă oferă IEȘIRE pe baza nivelului de tensiune INPUT. Un declanșator Schmitt are un nivel de tensiune THERSHOLD, când semnalul INPUT aplicat la poartă are un nivel de tensiune mai mare decât THRESHOLD al porții logice, OUTPUT devine HIGH. Dacă nivelul semnalului de tensiune INPUT este mai mic decât THRESHOLD, IEȘIREA porții va fi scăzută. De obicei nu obținem declanșatorul Schmitt separat, avem întotdeauna o poartă NU după declanșatorul Schmitt. Schmitt Trigger de lucru este explicat aici: Schmitt Trigger Gate
Vom folosi cipul 74LS14, acest cip are 6 porți Schmitt Trigger. Aceste șase porți sunt conectate intern așa cum se arată în figura de mai jos.
Adevărul Masa poarta Inverted Schmitt Trigger este arată în figura de mai jos, cu aceasta trebuie să program ONU pentru inversoare perioadele pozitive și negative de timp la bornele sale.
Acum vom alimenta orice tip de semnal către poarta ST, vom avea undă dreptunghiulară de perioade de timp inversate la ieșire, vom transmite acest semnal către UNO.
Explicație a codului de contorizare a frecvenței Arduino:
Codul pentru această măsurare a frecvenței utilizând arduino este destul de simplu și ușor de înțeles. Aici explicăm funcția pulseIn , care este în principal responsabilă de măsurarea frecvenței. Uno are o funcție specială pulseIn , care ne permite să determinăm durata stării pozitive sau a stării negative a unei anumite unde dreptunghiulare:
Htime = pulseIn (8, HIGH); Ltime = pulseIn (8, LOW);
Funcția dată măsoară timpul pentru care nivelul înalt sau scăzut este prezent la PIN8 al Uno. Deci, într-un singur ciclu de undă, vom avea durata pentru nivelurile pozitive și negative în micro secunde. Funcția pulseIn măsoară timpul în micro secunde. Într-un semnal dat, avem timp ridicat = 10mS și timp redus = 30ms (cu frecvență 25 HZ). Deci, 30000 vor fi stocate în număr întreg Ltime și 10000 în Htime. Când le adăugăm împreună vom avea Durata ciclului și, inversând-o, vom avea Frecvența.
Codul complet și videoclipul pentru acest contor de frecvență care utilizează Arduino sunt prezentate mai jos.