Conectarea unui turometru la Arduino. Tahometru bazat pe Arduino. Ieșirea datelor pe afișajul LCD HD44780 folosind arduino

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.

Sistemele de încredere pentru monitorizarea și diagnosticarea mașinilor cu semnalele de intrare de măsurare corecte sunt foarte apreciate. Un turometru este un dispozitiv care măsoară rotațiile pe minut ale unui motor sau rotorului unei turbine. Acestea sunt folosite pentru a urmări vitezele pe care le avem în timpul procesului de antrenament, ceea ce ne va anunța dacă funcționează conform așteptărilor. Cu acest tip de unealtă evităm oprirea echipamentului și suntem capabili să facem întreținerea la momentul potrivit. Poate fi folosit și pentru a cunoaște distanțele parcurse de roți, roți dințate sau dungi. Această lucrare se bazează în principal pe implementarea unui dispozitiv în care controlul motorului poate fi observat și viteza acestuia poate fi măsurată cu ajutorul unui dotamometru digital. Motivul pentru acest tip de conversie este că este mult mai ușor să transmiteți și să decodați cu precizie o serie de impulsuri decât semnal analogic, mai ales dacă distanța pe care trebuie transmis semnalul este lungă și zgomotoasă. În aceste cazuri, un convertor frecvență-tensiune va fi plasat la capătul liniei de transmisie pentru a produce din nou un semnal analogic. Cea mai obișnuită aplicație a convertoarelor frecvență-tensiune este în măsurarea vitezei motorului, unde o serie de impulsuri proporționale cu viteza motorului sunt generate într-un semnal analogic care trebuie măsurat și, eventual, folosit și pentru a controla viteza. Liniaritatea acestei tensiuni este de obicei de 3% din scara maximă. Din acest motiv, nu interferează cu ecuația scalei de conversie. Intrarea analogică încarcă proba și o ține într-un condensator. Semnalul de ieșire eșantionat și stocat într-un condensator este intrarea către convertor. Convertorul generează apoi un rezultat digital la nivel analogic folosind aproximări succesive. Aceste registre sunt: ​​ Înregistrare de rezultate superioare  Înregistrare de rezultate scăzute  Registrul de control 0  Registrul de control 1 6 Biți 6-4: Neimplementat, citit ca ciclul de lucru al unui semnal periodic este lățimea relativă a laturii sale pozitive în raport cu perioada. La motoare, modularea lățimii impulsurilor este o tehnică utilizată pentru a controla viteza de rotație a inducției electrice sau motoare asincrone. Mentine cuplul constant si nu permite pierderi energie electrica. Alte sisteme de control al vitezei variază tensiune electrică, reducerea cuplului motorului; sau pastă rezistenta electrica, pierzând astfel energie sub formă de căldură în această rezistență. 10. Acum câteva săptămâni am deschis o serie de postări despre senzori, iar prima la care am ajuns a fost.

Î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 nivelul ridicat (+5V) la nivelul scăzut (+0V) atunci când comunicarea este întreruptă. Conform acestui semnal, Arduino va crește valoarea contorului intern. Apoi să fie efectuat prelucrare suplimentarăși calcul, iar când declanșatorul este întrerupt, RPM calculat va fi afișat pe afișajul LCD.

Un senzor foarte ieftin, care are aplicații interesante. Acest senzor este excelent pentru detectarea obstacolelor din fața ta și are mai multe aplicații în robotică. Am văzut deja că este folosit pentru a crea adepți roboți de linie, precum și în roboții de luptă de sumo pentru a evita să părăsească câmpul de luptă. În ambele cazuri, reflectorizant senzor optic folosit pentru a detecta liniile de marcare care definesc fie calea pe care trebuie să o urmeze robotul, fie limitele câmpului de luptă.

Conține două componente care sunt atașate la o inserție de plastic. Funcționarea sa este foarte asemănătoare cu cea a unui tranzistor, are un colector, un emițător și baza este cea care în acest caz este activată după primirea fasciculului de lumină infraroșu. Deci aceste două componente lucrează împreună. Vă rugăm să rețineți că culoarea și materialul obiectului pot afecta performanța senzorului. Există materiale care reflectă mai puțină lumină decât altele. Un exemplu în acest sens sunt obiectele negre, care nu sunt reflectoare bune, mai ales dacă suprafața lor nu este netedă.

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. Vom folosi un fototranzistor ca receptor, care se „închide” în absența luminii de la LED-ul IR. Un ventilator al 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. Pentru a scoate rezultatul va fi folosit LCD Arduino interfață astfel încât să putem afișa valoarea finală RPM pe LCD.

LED anod LED catod colector fototranzistor Emițător fototranzistor. Pentru acest proiect veți avea nevoie de următoarele componente. Schema de conectare arată astfel. După cum puteți vedea, este foarte circuit simplu. Senzorii cu efect Hall sunt utilizați pentru a detecta proximitatea unui magnet. Ele pot fi folosite și ca senzor de poziție, codificator, detectie de rotație.

Inițial, prima utilizare a acestei descoperiri s-a concentrat pe clasificarea periodică elemente chimice. Senzorii cu efect Hall au fost folosiți pentru a măsura câmpuri magnetice constante sau statice, dar au necesitat ca senzorul să fie în mișcare. Acest lucru a creat ceea ce astăzi numim în mod clasic un comutator cu efect Hall de ieșire digitală.

Elemente:

Placa de dezvoltare

Rezistor trimmer 5 kOhm

Jumperii

Conectori SIP

2x 2N2222 tranzistor NPN

LED infrarosu

Fototranzistor

Rezistor de 10 ohmi

Rezistor 100 kOhm

Rezistor 15 kOhm sau 16 kOhm

Ventilator calculator

Lista detaliată a articolelor

Toate elementele utilizate în proiect sunt enumerate mai sus, dar voi descrie mai detaliat funcțiile elementelor principale.

Evoluție continuă a tehnologiei traductoarelor Hall, ținând cont de progresia componentelor cu un singur element în componente ortogonale cu două elemente. Acest lucru a fost făcut pentru a reduce diferența de potențial Hall între terminale. Următoarea progresie a dus la crearea convertoarelor pătratice cu patru elemente. Aceste 4 elemente sunt dispuse ortogonal într-o configurație de punte. Toți acești senzori de siliciu sunt fabricați din compuși bipolari.

Acest lucru face posibilă reducerea diferenței de potențial de eroare la intrarea amplificatorului operațional. Toate erorile care apar în circuitele nestabilizate duc la erori de comutare sau diferențe de potențial sau erori de câștig la senzorul de ieșire liniar. Acest mecanism elimină diferențele tipice de potențial de interferență în elementele semiconductoare cu efect Hall. De asemenea, compensează temperatura și inducțiile cauzate de diferențele dintre potențialii paraziți.

Arduino UNO

Acest Placa Arduino, pe care îl vom folosi pentru a procesa impulsuri de la întreruperea fasciculului IR, care raportează prezența unei lame a ventilatorului computerului între receptor și senzor. Arduino va folosi aceste impulsuri împreună cu un temporizator pentru a calcula RPM-ul ventilatorului.

LCD 16×2

Odată ce Arduino a calculat RPM, această valoare va fi afișată pe afișaj într-un mod ușor de utilizat.

Toate aceste îmbunătățiri au ca rezultat senzori de încredere cu efect Hall. Viitorul va vedea senzori programabili pentru a crea senzori inteligenți. Senzorul cu efect Hall nu este activat atunci când nu există câmp magneticși este activat în prezența unui câmp magnetic, așa cum se arată în următoarele două figuri.

Câmpul magnetic al Pământului nu afectează senzorul cu efect Hall. Unii magneți de frigider pot furniza suficient câmp magnetic pentru a activa senzorul. Senzorul este inactiv în absența unui câmp magnetic. Prin urmare, nimic nu se întâmplă dacă este polul nord al magnetului care trece în fața părții de detectare.

Rezistor trimmer 5 kOhm

Acest trimmer va fi folosit pentru a regla contrastul LCD-ului 16x2. Oferă o tensiune analogică cuprinsă între 0 și +5V, permițându-vă să reglați luminozitatea afișajului LCD.

LED cu infraroșu și fototranzistor

Fototranzistorul se pornește când o lumină IR puternică îl lovește. Deci, atunci când LED-ul IR este aprins, menține fototranzistorul deschis, dar dacă LED-ul IR este acoperit de o lamă a ventilatorului, de exemplu, atunci fototranzistorul este închis.

Senzorul folosește un rezistor de tragere. Aceasta înseamnă că atunci când nu este activat, tensiunea pinului 3 al senzorului se potrivește cu tensiunea rezistorului. În caz contrar, tensiunea va fi aplicată de rezistența la tragere. Iată o mică previzualizare video a rezultatului.

Iată câteva exemple despre cum să implementați această componentă excelentă. Graficul de mai jos arată modificarea câmpului magnetic în funcție de distanță. În grafic, distanța este exprimată în miimi de inch. Prin urmare, senzorul este activat. Senzorul este dezactivat.

2N3904 și 2N3906

Acești tranzistori sunt utilizaț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.

Diagrama schematică


În circuit, interfața de comunicare cu afișajul LCD este simplificată și are doar 2 linii de control și 4 linii de date.

O unitate invizibilă sau sigilată poate fi realizată folosind un senzor cu efect Hall. Senzorul poate fi sigilat în recipiente pentru utilizare în medii precum apă, ulei etc. Este necesar doar ca recipientul să fie permeabil la câmpul magnetic.

Întreruperea rotației magnetice

Prin urmare, senzorul este activ. În fig. Senzorul de 5V este inactiv deoarece câmpul magnetic este blocat de un obstacol de fier. Senzorul poate fi inclus ca comutator in viteza de rotatie sau pozitionare. Între cele două ferestre, partea metalică blochează câmpul magnetic, astfel încât senzorul cu efect Hall este inactiv.

Caracteristicile schemei

Interfață LCD 16×2

2 pini de control și 4 pentru transferul de date sunt conectați de la Arduino la afișajul LCD. Acesta este ceea ce îi spune LCD-ului ce să facă și când să o facă.

Circuit de întrerupere a fasciculului IR

Semnalul de întrerupere a fasciculului IR trece la al 2-lea digital Pin Arduino. Acest lucru întrerupe Arduino, permițându-i să numere pulsul și permițând turometrului să primească datele.

Acesta este un principiu larg acceptat în pornirea auto și în procesele industriale în care cunoașterea exactă a poziției este un element critic. Senzorul de activare a câmpului magnetic rotativ din Fig. 7 este de obicei folosit pentru a măsura viteza de rotație pentru a sincroniza impulsurile cu poziția. Senzorul este activat prin rotirea magnetului. Senzorul se oprește când polul nord al magnetului trece prin fața senzorului.

Un magnet circular solid, așa cum este prezentat în FIG. 7A se numește inel magnetic. Inelul magnetic conține poli nord și sud alternați. Acest tip de magnet poate avea 2 poli magnetici cu 36 poli magnetici. Graficul de mai jos arată tranzitul dintre Polul Nord și Polul Sud la distanțe diferite.

Biblioteca LCD Arduino

Pentru acest proiect vom folosi biblioteca Arduino LCD. Practic, vom actualiza valoarea RPM de pe a doua linie la cea nouă.

Pentru a vă pregăti, aruncați o privire la 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);”.

Detectarea nivelului - mișcare

Rețineți că punctul de tranziție este într-adevăr similar, indiferent de distanța dintre senzor și magnet. Un magnet separat este suspendat deasupra senzorului. Senzorul este activat imediat ce ansamblul nu mai este la nivel. Un senzor cu efect Hall poate fi utilizat în combinație cu un electromagnet pentru a oferi un senzor de curent foarte eficient și izolat. Acesta poate fi folosit pentru a proteja componentele de daune cauzate de suprasarcină.

Singurele componente necesare sunt un senzor cu efect Hall și un toroid de ferită. Cunoscuți și ca debitmetru, debitmetrele folosesc de obicei senzori cu efect Hall. Ei măsoară fluxurile de lichid și gaz. Acestea din urmă sunt foarte apreciate la mijloc, spune „atmosfera explozivă”.


Înțelegeți funcțiile acestei biblioteci LCD cât mai detaliat posibil înainte de a merge mai departe. Nu este prea complicat și este bine documentat pe site-ul Arduino.

Calcularea RPM folosind Arduino

Deoarece vom calcula RPM-ul unui ventilator de computer, trebuie să înțelegem că folosim întreruperea fasciculului IR pentru calcul. 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.

Fără contact = fără scântei = fără explozii! Puteți folosi chiar și efectul de respingere al unui al doilea magnet pentru a evita utilizarea unui arc. O altă aplicație elementară este detectarea nivelului. După cum se arată în imaginea de mai jos, sistem hidraulic se mișcă până când ajunge într-o anumită poziție.

Acest lucru poate fi foarte util în aplicațiile de tip robotic în care precizia de poziție este extrem de importantă. Dinții unui angrenaj sunt de fapt un mediu în care conductivitatea magnetică se modifică în funcție de poziția roții. Graficul de mai jos arată foarte clar această schimbare a câmpului magnetic.

Dacă urmărim întreruperi, trebuie să știm că fiecare a șaptea întrerupere înseamnă că tocmai a avut loc o rotație completă. Dacă ținem evidența timpului necesar pentru a finaliza o revoluție, putem calcula cu ușurință RPM.

Timp de prima revoluție = P * (µS/revoluție)

RPM = rpm = 60.000.000 * (µS/min) * (1/P) = (60.000.000 / P) * (rpm)

Rețineți că senzorul cu efect Hall este plasat între dinte și magnet. Senzorii cu efect Hall pot fi utilizați și pentru a detecta și monitoriza cu precizie rotația motoarelor fără perii. În toate cazurile, trebuie să obțineți și acordul deținătorului original al drepturilor de autor.

Toate drepturile asupra materialului lor le aparțin. Contorul de impulsuri servește la numărarea impulsurilor electrice care provin de la senzori, adică la determinarea cantității pe baza unei unități de timp. Senzorii sunt de obicei tahografe cu motor sau senzori de poziție. Servo în roboți pentru a determina ruta și direcția.

Pentru a calcula RPM vom folosi formula de mai sus. Formula este precisă, 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 circuit

În fotografia de mai jos puteți vedea totul detaliile necesareși jumperi ca în diagramă.


Numărul de impulsuri poate fi folosit pentru a număra persoanele care intră într-o cameră sau într-un târg. Există contoare de energie care emit impulsuri proporționale cu wații consumați. În prezent, contoarele de apă și gaz pot avea și ieșiri de impulsuri pentru numărarea consumului.

Cum funcționează un contor de puls?

Există potențiometre cu un senzor de rotație intern pentru a le seta poziția. Numărul de impulsuri poate fi împărțit în cel puțin trei părți principale. Baza de timp poate fi corectată cu un anumit timp sau atemporalitate. Fiecare impuls crește contorul, crescând numărul stocat. Când timpul maxim de numărare a trecut, numărul este afișat pe afișaj sau pe alt dispozitiv de afișare. Contorul și cronometrul sunt resetate și numără impulsurile primite.

Mai întâi, conectați +5V și liniile de date/control ale afișajului LCD. Apoi afișaj LCD, potențiometru de contrast și LED de alimentare.


Se montează întreruperea circuitului fasciculului IR. Încercați să păstrați o anumită 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 discuții hardware! Să începem să facem firmware-ul/programul pentru a vedea cum funcționează dispozitivul!

Partea software

Există două părți principale ale codului, care sunt prezentate și detaliate mai jos:

Ciclu de reîmprospătare LCD de bază

Întreruperea timpului de actualizare

Ciclul principal numără rotațiile și actualizările afișajului LCD. Deoarece bucla principală este o buclă uriașă while(1), aceasta va funcționa î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 acele ventilatoare. Dacă ventilatorul sau alt dispozitiv produce doar 4 impulsuri pe rotație, schimbați codul în „(timp*4)”.

Iată un videoclip demonstrativ despre cum funcționează turometrul.

Cele două ventilatoare funcționează la aproximativ 3000 rpm și 2600 rpm, cu o eroare de aproximativ +/-100 rpm.

Revizuirea turometrului pe Arduino

Ventilatorul generează impulsuri de întrerupere, iar la ieșire vedem RPM. Deși acuratețea nu este de 100%, ci de aproximativ 95%, costul elementelor fiind de 10 USD, este logic să construiți acest tahometru pe Arduino.

Ce să faci acum?

Sistemele bazate pe întreruperea 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 trecut pe sub robot. Există multe utilizări pentru tăierea 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ță.. Într-un fel sau altul, 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 folosind Arduino!

Articol original pe engleză(traducere: Alexandru Kasyanov pentru site-ul cxem.net)

Senzor de viteză de rotațieF.C. -03

Modul senzor de viteză sau mișcare liniară. Tip modul FC-03. Este conceput pentru a controla parametrii mecanici ai pieselor mobile ale diferitelor mecanisme pentru uz casnic și educațional. Când este instalat pe platforme de bază de robotică mică, vă permite să asamblați sisteme de control al motoarelor și să stabiliți controlul asupra mișcării unui obiect.

Instalarea senzorului de viteză de rotație FC-03 pe șasiul unui robot cu roți.

Caracteristici

Alimentare 3,3 - 5 V
Lățimea liberă pentru discul cu fante 5 mm
Dimensiuni modul 38 x 14 x 7 mm
Orificiu de montare pentru șurub de 3 mm

ContacteFC-03



Contactele sunt marcate pe tablă.

VCC - sursa de alimentare.
GND- fir comun, alimentare negativă.
DO - ieșire semnal impuls.
AO - ieșire directă de la optocupler ITR9608.

Principiul de funcționare


Elementul de detectare al modulului este o pereche optică ITR9608. Într-o proeminență a carcasei există un LED infraroșu îndreptat către un fototranzistor situat în cealaltă proeminență. Dacă o placă opacă este introdusă în spațiul dintre proeminențe, radiația IR de la LED este blocată și fototranzistorul este închis. O astfel de componentă este uneori numită fotoîntrerupător, dar detectează doar întreruperea flux luminos. După cum se arată în diagramă, de la emițătorul tranzistorului semnalul intră în circuitul dispozitivului.

Lumina este blocată de o placă atașată la partea mobilă a mecanismului controlat. Folosind senzorul, mișcarea către pozițiile extreme ale planului în mișcare este determinată atunci când elementul structural asociat cu acesta intră în senzor. Ei măsoară parametrii de rotație ai diferitelor piese mecanice. Acesta este modul în care parametrii mecanici sunt convertiți cantități electriceși mai departe în valorile programului.

Senzorul de viteză de rotație FC-03 este utilizat pentru a măsura viteza de rotație. Nu poate fi folosit pentru a determina direcția de rotație. Pe arborele motorului sau cutia de viteze este instalat un disc cu găuri. Optocuplerul modulului are un slot de 5 mm lățime. Când discul se rotește, așa cum se arată în animație, găurile și secțiunile plăcii alternează constant în slot. Senzorul transformă alternanța elementelor discului în impulsuri electrice. Electronica modulului face ca semnalul senzorului să fie potrivit pentru percepția digitală cipuri logice sau microcontroler.

SistemF.C.-03




Semnalul de la ITR9608 merge la intrarea comparatorului LM393, de la ieșirea acestuia la pinul D0 și LED-ul indicator se stinge semnal digital constând din niveluri logice înalte și scăzute. Semnalul de ieșire A0 vine direct de la ITR9608 fără conversie în niveluri logice. Utilizarea comparatorului LM393 vă permite să obțineți margini netede ale impulsurilor și să creșteți ușor sarcina curentă a ieșirii senzorului, instalați un LED în circuit care indică starea ieșirii.

Indicaţie

Pe placă sunt 2 LED-uri. Unul arată activarea senzorului de viteză de rotație FC-03, celălalt arată absența unui obstacol în senzor. Când porniți dispozitivul pentru prima dată, ambele LED-uri ar trebui să se aprindă. La introducerea unei plăci metalice în spatiu liberîntrerupător, un LED ar trebui să se stingă.

Aplicație

Folosind senzorul, puteți măsura nu numai viteza de rotație, accelerația, ci și distanța parcursă de un robot cu roți și să înregistrați durata de viață a motorului. Este deosebit de important să se controleze viteza de rotație a roților atunci când fiecare roată este antrenată de propriul motor. Pentru deplasarea în linie dreaptă, vitezele de rotație ale tuturor roților trebuie să fie egale, iar la întoarcere, respectați algoritmul sistemului de control.


Pe măsură ce discul se rotește, un număr cunoscut de găuri traversează fanta senzorului într-o singură rotație. Numărând numărul de găuri, puteți determina 1 rotație a roții sau, de exemplu, 15,5 rotații. Măsurând numărul de rotații pe unitatea de timp, obținem frecvența de rotație a roții și, prin urmare, viteza obiectului. Pe baza semnalelor de la senzor și având valoarea exactă a intervalelor de timp, dispozitivul calculează parametrii de mișcare. Utilizarea unui microcontroler este relevantă aici.
Următorul program Arduino vă permite să determinați numărul de rotații pe minut și afișează rezultatele în fereastra terminalului serial.

#define PIN_DO 2 // Setați pinul folosit în Arduino
impulsuri int volatile nesemnate;
rpm plutitor;
nesemnat mult timpVechi;
#define HOLES_DISC 15

Număr de goluri ()
{
impulsuri++;
}

Void setup()
{
Serial.begin(9600);
pinMode(PIN_DO, INPUT);
impulsuri = 0;
timeOld = 0;

}

buclă goală ()
{
if (millis() - timeOld >= 1000)
{
detachInterrupt(digitalPinToInterrupt(PIN_DO));
rpm = (impulsuri * 60) / (HOLES_DISC);
Serial.println(rpm);

TimeOld = milis();
impulsuri = 0;
attachInterrupt(digitalPinToInterrupt(PIN_DO), counter, FALLING);