Un turometru este un instrument util pentru a număra RPM (rotațiile pe minut) unei roți sau a oricărui lucru care se învârte. Cel mai simplu mod de a face un turometru este să folosești un transmițător și un receptor IR. Când conexiunea dintre ele este întreruptă, știi că ceva se învârte și poți folosi codul pentru a calcula RPM, pe baza frecvenței întreruperii comunicării.
În acest articol, ne vom uita la cum să folosim un transmițător și un receptor IR pentru a face un tahometru folosind Arduino. Rezultatul este afișat pe un afișaj LCD 16x2.
Scopul acestui proiect este de a crea un sistem cu o singură intrare și o singură ieșire. La intrarea dispozitivului există un semnal care se schimbă de la un nivel ridicat (+5V) la unul scăzut (+0V) în cazul unei defecțiuni de comunicare. Conform acestui semnal, Arduino va crește valoarea contorului intern. Apoi se efectuează procesări și calcule suplimentare, iar când declanșatorul este întrerupt, RPM calculat va fi afișat pe LCD.
Pentru comunicare, vom folosi un fascicul IR de la un LED IR conectat printr-un rezistor cu rezistență scăzută, astfel încât să strălucească puternic. Ca receptor, vom folosi un fototranzistor, care se „închide” în absența luminii LED IR. Ventilatorul computerului va fi plasat între transmițătorul IR și receptor și va fi pornit. Un receptor IR conectat printr-un circuit tranzistor va genera întreruperi. Interfața LCD Arduino va fi folosită pentru a afișa rezultatul, astfel încât să putem afișa valoarea finală RPM pe LCD.
Elemente:
Tabla de paine
Rezistor trimmer 5 kΩ
Juperii
Conectori SIP
2x tranzistor 2N2222 NPN
LED infrarosu
Fototranzistor
Rezistor 10 ohmi
Rezistor 100 kΩ
Rezistor 15 kΩ sau 16 kΩ
ventilator al computerului
Lista detaliată a articolelor
Toate elementele utilizate în proiect sunt enumerate mai sus, dar voi descrie mai detaliat funcțiile elementelor principale.
Arduino UNO
Aceasta este placa Arduino pe care o vom folosi pentru a procesa impulsurile de întrerupere IR care ne indică când o lamă a ventilatorului computerului se află între receptor și senzor. Arduino va folosi aceste impulsuri împreună cu un temporizator pentru a calcula RPM-ul ventilatorului.
Display LCD 16×2
După ce Arduino a calculat RPM, această valoare va fi afișată pe afișaj într-un mod ușor de utilizat.
Rezistor trimmer 5 kΩ
Acest trimmer va fi folosit pentru a regla contrastul LCD-ului 16x2. Oferă o tensiune analogică în intervalul de la 0 la +5V, permițându-vă să reglați luminozitatea LCD-ului.
LED cu infraroșu și fototranzistor
Fototranzistorul se deschide când o lumină IR puternică cade pe el. Prin urmare, atunci când LED-ul IR este aprins, menține fototranzistorul deschis, dar dacă LED-ul IR este acoperit, de exemplu, de o lamă a ventilatorului, atunci fototranzistorul este închis.
2N3904 și 2N3906
Acești tranzistori sunt folosiți pentru a converti nivelul semnalului, pentru a furniza impulsuri de ieșire de la fototranzistor la Arduino, în care nu există alte tensiuni decât +0 și +5V.
schema circuitului
În diagramă, interfața de comunicare LCD este simplificată și are doar 2 linii de control și 4 linii de date.
Caracteristicile circuitului
Interfață cu afișaj LCD 16×2
2 pini de control și 4 pentru transferul de date sunt conectați de la Arduino la LCD. Acesta este ceea ce spune LCD-ului ce să facă și când.
Circuit de întrerupere a fasciculului IR
Semnalul de tăiere a fasciculului IR ajunge la al 2-lea pin digital al Arduino. Acest lucru întrerupe Arduino, permițându-i să numere pulsul și permițând tach-ului să primească date.
Biblioteca Arduino LCD
Pentru acest proiect, vom folosi biblioteca LCD Arduino. Practic, vom actualiza valoarea RPM pe a doua linie cu cea nouă.
Ca pregătire, priviți codul de mai jos, care folosește această bibliotecă pentru a afișa „Hello, World!” pe ecranul LCD. În turometru vom folosi cod similar, în special: „lcd.print(millis()/1000);”.
Înțelegeți funcțiile acestei biblioteci LCD cât mai detaliat posibil înainte de a continua. Nu este prea complicat și este bine documentat pe site-ul Arduino.
Numărarea RPM cu Arduino
Deoarece vom calcula RPM-ul unui ventilator de computer, trebuie să înțelegem că folosim o întrerupere a fasciculului IR pentru a calcula. Acest lucru este foarte convenabil, dar trebuie să ținem cont de faptul că ventilatorul computerului are 7 pale. Aceasta înseamnă că 7 întreruperi echivalează cu 1 revoluție.
Dacă urmărim întreruperi, trebuie să știm că fiecare a șaptea întrerupere înseamnă că tocmai a avut loc o revoluție completă. Dacă ținem evidența timpului necesar pentru o revoluție completă, atunci putem calcula cu ușurință RPM.
Timpul primei revoluții = P * (µS/rev)
RPM = RPM = 60.000.000 * (µS/min) * (1/P) = (60.000.000 / P) * (RPM)
Pentru a calcula RPM, vom folosi formula de mai sus. Formula este exactă, iar acuratețea depinde de cât de bine poate Arduino să țină evidența timpului dintre întreruperi și să numere numărul de rotații complete.
Ansamblu de circuit
În fotografia de mai jos puteți vedea toate piesele și jumperii necesare ca în diagramă.
Mai întâi conectați +5V și liniile de date/control LCD. Apoi LCD, potențiometru de contrast și LED de alimentare.
Circuitul pentru întreruperea fasciculului IR este asamblat. Încercați să păstrați o distanță între LED-ul IR și fototranzistor. Această fotografie arată distanța dintre LED-ul IR și fototranzistorul unde voi plasa ventilatorul computerului.
Destul de vorbit despre hardware! Să începem să facem firmware/software pentru a vedea cum funcționează dispozitivul!
Partea software
Există două părți principale ale codului, care sunt prezentate și detaliate mai jos:
Ciclul principal de reîmprospătare LCD
Actualizare timp de pauză
În ciclul principal, sunt numărate revoluțiile și actualizările LCD. Deoarece bucla principală este o buclă uriașă while(1), aceasta va rula întotdeauna, RPM va fi numărat, iar LCD-ul va fi actualizat de câteva ori pe secundă. Funcția din întrerupere numără timpul dintre întreruperile IR, astfel încât să puteți număra RPM în bucla principală.
Amintiți-vă că un ventilator de computer are 7 pale, așa că acest tahometru este proiectat să funcționeze numai cu astfel de ventilatoare. Dacă ventilatorul sau alt dispozitiv dă doar 4 impulsuri pe rotație, schimbați „(time*4)” în cod.
Iată un videoclip demonstrativ despre cum funcționează turometrul.
Cele două ventilatoare funcționează la aproximativ 3000rpm și 2600rpm, cu o eroare de aproximativ +/-100rpm.
Prezentare generală a tahometrului Arduino
Ventilatorul generează impulsuri de întrerupere, iar la ieșire vedem RPM. Deși acuratețea nu este de 100%, ci de aproximativ 95%, cu un cost de 10 USD, are sens să construim acest turometru pe Arduino.
Deci ce este acum?
Sistemele de întrerupere a fasciculului sunt utile nu numai pentru măsurătorile RPM, ci și ca alți senzori. De exemplu, vrei să știi dacă o ușă este deschisă sau închisă. Poate vrei să știi dacă ceva a intrat sub robot. Există multe aplicații de rupere a fasciculului, iar circuitul folosit aici este atât de simplu încât există multe modalități de a îmbunătăți și de a construi alte dispozitive uimitoare.
Concluzie
În general, consider acest proiect un succes... Dar este o chestiune de timp și experiență, oricum sistemul funcționează conform intenției și destul de fiabil și am obținut rezultatul așteptat. Sper că ți-a plăcut să citești acest articol și să înveți cum să-ți faci propriul tahometru Arduino!
Articol original în engleză (traducere: Alexandru Kasyanov pentru site-ul cxem.net)
Un turometru este un dispozitiv care este folosit pentru a măsura numărul de rotații ale unui obiect într-un anumit interval de timp. De obicei, valoarea este exprimată în rotații pe minut sau rpm. Anterior, tahometrele erau dispozitive pur mecanice, în care rotația era transmisă turometrului printr-o conexiune mecanică (cablu sau arbore), numărul de rotații pe minut era determinat cu ajutorul unui tren de viteze și afișat pe un cadran. După apariția electronicii moderne, tahometrele s-au schimbat foarte mult. Acest articol descrie un tahometru digital fără contact bazat pe Arduino. Viteza motorului poate fi de asemenea controlată folosind un circuit similar. Numărul de rotații pe minut și alte informații sunt afișate pe un afișaj cu cristale lichide de 16×2. Schema de circuit a tahometrului digital bazat pe Arduino este prezentată mai jos.
Schema de conexiuni
Senzor RPM
Un fototranzistor în infraroșu și un LED în infraroșu formează un senzor. Un fototranzistor în infraroșu este un tip de fototranzistor care răspunde numai la undele infraroșii. Utilizarea unui fototranzistor în infraroșu evită influența altor interferențe luminoase din mediu. Fototranzistorul și LED-ul infraroșu sunt dispuse în paralel. Rezistorul R2 limitează curentul prin dioda infraroșu. Banda de ghidaj reflectorizant este lipită de un obiect rotativ (ax, disc sau ventilator) în linie cu senzorul. Am folosit un ventilator de răcire 9V/100mA. Distanța dintre senzor și banda de ghidaj reflectorizant nu trebuie să depășească 1 cm. Când banda de ghidaj reflectorizant trece prin fața senzorului, undele infraroșii sunt reflectate înapoi la fototranzistor. Fototranzistorul conduce mai mult în acest moment și, ca rezultat, tensiunea peste R3 (rezistor 68K) crește rapid. Rezultatul va fi o formă de undă prezentată mai jos la emițătorul fototranzistorului. Numărul de rotații pe minut poate fi determinat prin calcularea numărului de impulsuri ascendente într-un interval de timp dat.
Calcularea numărului de rotații pe minut
Arduino este folosit pentru a calcula valoarea RPM și pentru a afișa această valoare pe LCD. Emițătorul fototranzistorului este conectat la pinul Interrupt 0 (pinul digital 2) al Arduino. Întreruperea Arduino este configurată pe o margine ascendentă declanșată. Ca rezultat, o întrerupere este gestionată pentru fiecare impuls în creștere din forma de undă a emițătorului. Numărul de întreruperi primite la un moment dat este calculat prin incrementarea unei variabile, prin intermediul unei rutine de serviciu de întrerupere. Timpul scurs în timpul ciclului de calcul este determinat folosind funcția millis(). Funcția millis() returnează numărul de mile de secunde care au trecut de la pornirea plăcii Arduino. Apelarea funcției millis() înainte și după ciclul de calcul și calcularea diferenței lor oferă timpul scurs în timpul ciclului de calcul. Valoarea (numărul de întreruperi/ori pe milisecundă)*60000 va determina numărul de rotații pe minut (RPM).
Controlul turației motorului
În circuit este inclus și un dispozitiv pentru controlul vitezei motorului cu un potențiometru. Tranzistorul Q1 este folosit pentru a controla motorul. Baza sa este conectată la pinul PWM 9 al Arduino printr-un rezistor de limitare a curentului R1. Potențiometrul de control al vitezei R4 este conectat la pinul analogic A0 al Arduino. Tensiunea de pe acest pin este convertită la o valoare între 0 și 1023 folosind funcția anlogRead. Această valoare este apoi împărțită la patru pentru a obține între 0 și 255. Această valoare este apoi scrisă în pinul PWM 9 folosind funcția anlogWrite. Rezultatul este o undă pătrată pe pinul 9 al cărei ciclu de lucru este proporțional cu valoarea scrisă cu funcția analogWrite. De exemplu, dacă valoarea este 255, ciclul de lucru va fi de 100%, iar dacă valoarea este 127, ciclul de lucru va fi în jur de 50%. D1 este o diodă flyback și C1 este un condensator de anulare a zgomotului (decuplator). RPM și ciclul de lucru sunt afișate pe ecranul LCD folosind biblioteca standard LiquidCrystal. Citiți acest articol: Interfață LCD pentru Arduino. Codul complet al programului pentru turometrul digital bazat pe Arduino este prezentat mai jos.
Cod program
#include
Note
Placa Arduino poate fi alimentată cu o tensiune de alimentare de 9V printr-o priză externă.
Cei 5V necesari pentru unele componente ale circuitului pot fi furnizați de la o sursă de 5V de pe placa Arduino.
Ventilatorul folosit folosește o tensiune de 9V/100mA. Tranzistorul 2N2222 poate gestiona doar până la 800mA. Țineți cont de acest lucru atunci când alegeți o încărcătură.
Afișajul cu cristale lichide folosit este JHD162A.
Potențiometrul R5 poate fi folosit pentru a regla contrastul LCD. Când este conectat, nu va apărea nimic pe afișaj. Reglați R5 până când pe afișaj apare o imagine. Tensiunea optimă pe glisorul potențiometrului R5 este în intervalul de la 0,4 la 1V.
Fototranzistorul în infraroșu și dioda în infraroșu au fost scoase din modulul de întrerupere foto LTH-1550.
Suprafața laterală a fototranzistorului trebuie acoperită cu bandă electrică.
Poziția senzorului este prezentată în figura de mai jos.
Un turometru este un dispozitiv care este folosit pentru a măsura viteza de rotație a unui obiect mecanic, cum ar fi o roată. Tahometrele sunt utilizate pe scară largă în automobile. Printre radioamatorii, a găsit aplicație în robotică, datorită căreia este posibilă măsurarea vitezei unui robot cu roți. Tahometrele în general au o varietate de utilizări, inclusiv măsurarea vitezei motoarelor de curent continuu pentru a se asigura că funcționează conform specificațiilor.
Tahometrul este un dispozitiv destul de simplu în esența sa, așa că îl puteți realiza cu ușurință singur pe baza Arduino.
Pentru a face un turometru cu propriile noastre mâini, va trebui să convertim viteza de rotație într-o formă care poate fi citită de om. Singura formă pe care Arduino o poate citi este tensiunea electrică. Este bine cunoscut faptul că dacă motorului i se aplică tensiune, atunci acest motor va începe să se rotească și, odată cu el, roata se va roti (dacă este atașată la arborele motorului), a cărei viteză este determinată de mărimea tensiunea aplicată. Cu toate acestea, este adevărat și invers: dacă rotim motorul singuri, putem obține tensiune la ambele capete ale bornelor acestui motor. Această tensiune poate fi aplicată la Arduino, iar Arduino va putea calcula viteza de rotație în funcție de cât de multă tensiune a fost aplicată motorului dat.
Mai jos este o diagramă de conexiuni pentru elementele unui turometru de casă bazat pe Arduino. Motorul aici este conectat la o rezistență și un LED. Rezistorul este folosit pentru a preveni generarea de curent în exces, care ar deteriora în mod normal Arduino. LED-ul este folosit pentru a indica faptul că motorul funcționează și, de asemenea, pentru a preveni curgerea inversă a curentului. Pentru a afișa viteza în acest caz, se folosește un indicator cu șapte segmente cu o singură cifră și se folosește un registru de microcircuit IC7447 pentru a controla acest indicator.
De îndată ce motorul începe să se rotească, o tensiune pozitivă va fi trimisă la intrarea analogică a Arduino. Arduino va converti această tensiune într-un cod digital. Deoarece folosim un afișaj cu șapte segmente, putem avea 10 valori, adică de la o valoare de la 0 la 9. Putem programa Arduino să împartă valoarea analogică pe care o primește la 9 diviziuni, ceea ce va oferi ieșirea dorită de la De la 0 la 9. Mai jos este codul pentru funcționarea unui turometru de casă pe Arduino.
intval=0; intbinVal; void setup() ( Serial.begin(9600); // setați portul serial pinMode(3,OUTPUT); pinMode(4,OUTPUT); pinMode(5,OUTPUT); pinMode(6,OUTPUT); pinMode(A2,INPUT); ); ) void loop() ( val = analogRead(A2); // citește intrarea analogică (tensiunea de la motor) Serial.println(val); // valoarea de depanare binVal=val/1024*9; switch(binVal)(case 0: digitalWrite(3,LOW); digitalWrite(4,LOW); digitalWrite(5,LOW); digitalWrite(6,LOW); break; cazul 1: digitalWrite(3,HIGH); digitalWrite(4,LOW); digitalWrite (5,LOW); digitalWrite(6,LOW); pauză; cazul 2: digitalWrite(3,LOW); digitalWrite(4,HIGH); digitalWrite(5,LOW); digitalWrite(6,LOW); pauză; cazul 3 : digitalWrite(3,HIGH); digitalWrite(4,HIGH); digitalWrite(5,LOW); digitalWrite(6,LOW); pauză; cazul 4: digitalWrite(3,LOW); digitalWrite(4,LOW); digitalWrite( 5,HIGH); digitalWrite(6,LOW); pauză; cazul 5: digitalWrite(3,HIGH); digitalWrite(4,LOW); digitalWrite(5,HIGH); digitalWrite(6,LOW); pauză; cazul 6: digitalWrite(3,LOW);digitalWrite(4,HIGH);digitalWrite(5,HIGH); digitalWrite(6,LOW); pauză; cazul 7: digitalWrite(3,HIGH); digitalWrite(4,HIGH); digitalWrite(5,HIGH); digitalWrite(6,LOW); pauză; cazul 8: digitalWrite(3,LOW); digitalWrite(4,LOW); digitalWrite(5,LOW); digitalWrite(6,HIGH); pauză; cazul 9: digitalWrite(3,HIGH); digitalWrite(4,LOW); digitalWrite(5,LOW); digitalWrite(6,HIGH); pauză; implicit: break; ) )
Tahometrul asamblat folosind un senzor de linie este ușor de conectat. Nu trebuie să faceți modificări structurale piesei a cărei viteză de rotație doriți să o măsurați: găuriți, efectuați tăieturi, instalați elemente suplimentare etc. Este suficient să puneți o linie contrastantă pe ea (neagră pe o suprafață deschisă sau albă pe una întunecată) și să aduceți senzorul de linie, veți obține imediat un rezultat precis, numărul de rotații pe minut. Schița nu trebuie ajustată, indiferent de culoarea liniei.
Noi vom avea nevoie:
Pentru a implementa proiectul, trebuie să instalăm biblioteca:
- biblioteca iarduino_4LED (pentru lucrul cu un indicator LED din patru cifre).
Cum să instalați biblioteci, puteți găsi pe pagina Wiki - Instalarea bibliotecilor în IDE-ul Arduino.
Video:
Schema de conexiuni:
Indicatorul LED este conectat la oricare doi pini Arduino (atât digital, cât și analogic), numerele sunt indicate în schiță. Senzorul de linie este conectat la orice intrare analogică, numărul este indicat în schiță.
În această lecție, indicatorul LED este conectat la pinii digitali 2 și 3, iar senzorul de linie este conectat la intrarea analogică A0.
Algoritm de lucru:
- Ieșirea informațiilor pe indicatorul LED se efectuează numai în momentul tranziției senzorului de linie de la un câmp deschis la un câmp întunecat.
- În prima linie a funcției de buclă, verificăm dacă senzorul de linie este pe un câmp întunecat, dacă da, atunci ...
- Afișăm numărul de rotații pe minut pe indicatorul LED (dacă milis overflow nu este fix) și salvăm timpul de tranziție
- Executăm bucla while până când senzorul de linie părăsește câmpul întunecat. Datorită acestui fapt, operația anterioară se efectuează doar 1 dată, pentru tot timpul în care senzorul se află pe câmpul întunecat.
- Dacă senzorul se află pe un câmp întunecat sau luminos mai mult de 6 secunde, atunci afișăm inscripția „STOP” (aceste linii pot fi eliminate dacă numărul de rotații al dispozitivului dvs. este sub 10 pe minut).
Cod program:
#includeUn turometru este un instrument util pentru a număra RPM (rotațiile pe minut) unei roți sau a oricărui lucru care se învârte. Cel mai simplu mod de a face un turometru este să folosești un transmițător și un receptor IR. Când conexiunea dintre ele este întreruptă, știi că ceva se învârte și poți folosi codul pentru a calcula RPM, pe baza frecvenței întreruperii comunicării.
În acest articol, ne vom uita la cum să folosim un transmițător și un receptor IR pentru a face un tahometru folosind Arduino. Rezultatul este afișat pe un afișaj LCD 16x2.
Scopul acestui proiect este de a crea un sistem cu o singură intrare și o singură ieșire. La intrarea dispozitivului există un semnal care se schimbă de la un nivel ridicat (+5V) la unul scăzut (+0V) în cazul unei defecțiuni de comunicare. Conform acestui semnal, Arduino va crește valoarea contorului intern. Apoi se efectuează procesări și calcule suplimentare, iar când declanșatorul este întrerupt, RPM calculat va fi afișat pe LCD.
Pentru comunicare, vom folosi un fascicul IR de la un LED IR conectat printr-un rezistor cu rezistență scăzută, astfel încât să strălucească puternic. Ca receptor, vom folosi un fototranzistor, care se „închide” în absența luminii LED IR. Ventilatorul computerului va fi plasat între transmițătorul IR și receptor și va fi pornit. Un receptor IR conectat printr-un circuit tranzistor va genera întreruperi. Interfața LCD Arduino va fi folosită pentru a afișa rezultatul, astfel încât să putem afișa valoarea finală RPM pe LCD.
Elemente:
Arduino UNO
LCD 16x2
Tabla de paine
Rezistor trimmer 5 kΩ
Juperii
Conectori SIP
2x tranzistor 2N2222 NPN
LED infrarosu
Fototranzistor
Rezistor 10 ohmi
Rezistor 100 kΩ
Rezistor 15 kΩ sau 16 kΩ
ventilator al computerului
Lista detaliată a articolelor
Toate elementele utilizate în proiect sunt enumerate mai sus, dar voi descrie mai detaliat funcțiile elementelor principale.
Arduino UNO
Aceasta este placa Arduino pe care o vom folosi pentru a procesa impulsurile de întrerupere IR care ne indică când o lamă a ventilatorului computerului se află între receptor și senzor. Arduino va folosi aceste impulsuri împreună cu un temporizator pentru a calcula RPM-ul ventilatorului.
Display LCD 16x2
După ce Arduino a calculat RPM, această valoare va fi afișată pe afișaj într-un mod ușor de utilizat.
Rezistor trimmer 5 kΩ
Acest trimmer va fi folosit pentru a regla contrastul LCD-ului 16x2. Oferă o tensiune analogică în intervalul de la 0 la +5V, permițându-vă să reglați luminozitatea LCD-ului.
LED cu infraroșu și fototranzistor
Fototranzistorul se deschide atunci când o lumină IR puternică cade pe el. Prin urmare, atunci când LED-ul IR este aprins, menține fototranzistorul deschis, dar dacă LED-ul IR este acoperit, de exemplu, de o lamă a ventilatorului, atunci fototranzistorul este închis.
2N3904 și 2N3906
Acești tranzistori sunt folosiți pentru a converti nivelul semnalului, pentru a furniza impulsuri de ieșire de la fototranzistor la Arduino, în care nu există alte tensiuni decât +0 și +5V.
schema circuitului
În diagramă, interfața de comunicare LCD este simplificată și are doar 2 linii de control și 4 linii de date.
Caracteristicile circuitului
Interfață cu afișaj LCD 16x2
2 pini de control și 4 pentru transferul de date sunt conectați de la Arduino la LCD. Acesta este ceea ce spune LCD-ului ce să facă și când.
Circuit de întrerupere a fasciculului IR
Semnalul de tăiere a fasciculului IR ajunge la al 2-lea pin digital al Arduino. Acest lucru întrerupe Arduino, permițându-i să numere pulsul și permițând tach-ului să primească date.
Biblioteca Arduino LCD
Pentru acest proiect, vom folosi biblioteca LCD Arduino. Practic, vom actualiza valoarea RPM pe a doua linie cu cea nouă.
Ca pregătire, priviți codul de mai jos, care folosește această bibliotecă pentru a afișa „Hello, World!” pe ecranul LCD. În turometru vom folosi cod similar, în special: „lcd.print(millis()/1000);”.
Înțelegeți funcțiile acestei biblioteci LCD cât mai detaliat posibil înainte de a continua. Nu este prea complicat și este bine documentat pe site-ul Arduino.
Numărarea RPM cu Arduino
Deoarece vom calcula RPM-ul unui ventilator de computer, trebuie să înțelegem că folosim o întrerupere a fasciculului IR pentru a calcula. Acest lucru este foarte convenabil, dar trebuie să ținem cont de faptul că ventilatorul computerului are 7 pale. Aceasta înseamnă că 7 întreruperi echivalează cu 1 revoluție.
Dacă urmărim întreruperi, trebuie să știm că fiecare a șaptea întrerupere înseamnă că tocmai a avut loc o revoluție completă. Dacă ținem evidența timpului necesar pentru o revoluție completă, atunci putem calcula cu ușurință RPM.
Timpul primei revoluții = P * (µS/rev)
RPM = RPM = 60.000.000 * (µS/min) * (1/P) = (60.000.000 / P) * (RPM)
Pentru a calcula RPM, vom folosi formula de mai sus. Formula este exactă, iar acuratețea depinde de cât de bine poate Arduino să țină evidența timpului dintre întreruperi și să numere numărul de rotații complete.
În fotografia de mai jos puteți vedea toate piesele și jumperii necesare ca în diagramă.
Mai întâi conectați +5V și liniile de date/control LCD. Apoi LCD, potențiometru de contrast și LED de alimentare.
Circuitul pentru întreruperea fasciculului IR este asamblat. Încercați să păstrați o distanță între LED-ul IR și fototranzistor. Această fotografie arată distanța dintre LED-ul IR și fototranzistorul unde voi plasa ventilatorul computerului.
Destul de vorbit despre hardware! Să începem să facem firmware/software pentru a vedea cum funcționează dispozitivul!
Partea software
Există două părți principale ale codului, care sunt prezentate și detaliate mai jos:
- Ciclul principal de reîmprospătare LCD
- Actualizați timpii de întrerupere
În ciclul principal, sunt numărate revoluțiile și actualizările LCD. Deoarece bucla principală este o buclă uriașă while(1), aceasta va rula întotdeauna, RPM va fi numărat, iar LCD-ul va fi actualizat de câteva ori pe secundă. Funcția din întrerupere numără timpul dintre întreruperile IR, astfel încât să puteți număra RPM în bucla principală.
Amintiți-vă că un ventilator de computer are 7 pale, așa că acest tahometru este proiectat să funcționeze numai cu astfel de ventilatoare. Dacă ventilatorul sau alt dispozitiv dă doar 4 impulsuri pe rotație, schimbați „(time*4)” în cod.
Cele două ventilatoare funcționează la aproximativ 3000rpm și 2600rpm, cu o eroare de aproximativ +/-100rpm.
Prezentare generală a tahometrului Arduino
Ventilatorul generează impulsuri de întrerupere, iar la ieșire vedem RPM. Deși acuratețea nu este de 100%, ci de aproximativ 95%, cu un cost de 10 USD, are sens să construim acest turometru pe Arduino.
Deci ce este acum?
Sistemele de întrerupere a fasciculului sunt utile nu numai pentru măsurătorile RPM, ci și ca alți senzori. De exemplu, vrei să știi dacă o ușă este deschisă sau închisă. Poate vrei să știi dacă ceva a intrat sub robot. Există multe aplicații de rupere a fasciculului, iar circuitul folosit aici este atât de simplu încât există multe modalități de a îmbunătăți și de a construi alte dispozitive uimitoare.
Concluzie
În general, consider acest proiect un succes... Dar este o chestiune de timp și experiență.Oricum, sistemul funcționează conform intenției și destul de fiabil și am obținut rezultatul așteptat. Sper că ți-a plăcut să citești acest articol și să înveți cum să-ți faci propriul tahometru Arduino!
Lista elementelor radio
Desemnare | Tip | Denumire | Cantitate | Notă | Magazin | Blocnotesul meu |
---|---|---|---|---|---|---|
Placa Arduino | Arduino Uno | 1 | La blocnotes | |||
T2, T3 | tranzistor bipolar | 2N2222 | 2 | 2N3904 și 2N3906 | La blocnotes | |
R1 | Rezistor | 10 ohmi | 1 | La blocnotes | ||
R2 | Rezistor | 100 kOhm | 1 | La blocnotes | ||
R3 | Rezistor | 16 kOhm | 1 |