Circuit tahometru Arduino pentru citiri precise

Încercați Instrumentul Nostru Pentru Eliminarea Problemelor





Un tahometru este un dispozitiv care măsoară RPM sau viteza unghiulară a unui corp rotativ. Se diferențiază de vitezometru și contorometru, deoarece aceste dispozitive se ocupă de viteza liniară sau tangențială a corpului, în timp ce tahometrul, de asemenea, „tach” se referă la RPM mai fundamental.

De Ankit Negi



Tahometrul este compus dintr-un contor și un temporizator care lucrează împreună oferă RPM. În proiectul nostru vom face același lucru, folosind Arduino și câțiva senzori, vom configura atât un contor, cât și un temporizator și vom dezvolta tach-ul nostru la îndemână și ușor .

Condiții prealabile

Contorul nu este altceva decât un dispozitiv sau o configurare care poate conta orice anumit eveniment obișnuit, cum ar fi trecerea unui punct în disc în timpul rotației. Inițial, ghișeele au fost construite folosind aranjamentul mecanic și legăturile precum angrenaje, clichete, arcuri etc.



Dar acum folosim contor cu senzori și electronice mai sofisticate și extrem de precise. Timerul este un element electronic care este capabil să măsoare intervalul de timp dintre evenimente sau să măsoare timpul.

În Arduino Uno există temporizatoare care nu numai că țin evidența timpului, ci și mențin unele dintre funcțiile importante ale Arduino. În Uno avem 3 temporizatoare numite Timer0, Timer1 și Timer2. Aceste temporizatoare au următoarele funcții- • Timer0- Pentru funcții Uno precum delay (), millis (), micros () sau delaymicros ().

• Timer1- Pentru funcționarea servotecii.

• Timer2- Pentru funcții precum ton (), notone ().

Împreună cu aceste funcții, aceste 3 temporizatoare sunt, de asemenea, responsabile pentru generarea ieșirii PWM atunci când comanda analogWrite () este utilizată în pinul desemnat PMW.

Conceptul de întreruperi

În Arduino Uno este prezent un instrument ascuns care ne poate oferi acces la o mulțime de funcționări cunoscute sub numele de Timer Interrupts. Întreruperea este un set de evenimente sau instrucțiuni care sunt executate atunci când se numește întreruperea funcționării actuale a dispozitivului, adică indiferent de ce codurile pe care Uno le executa înainte, dar odată ce o întrerupere este numită Arduino executați instrucțiunea menționată în întrerupere.

magnet pe arborele motorului

Acum, întreruperea poate fi apelată la anumite condiții definite de utilizator utilizând o sintaxă Arduino încorporată. Vom folosi această întrerupere în proiectul nostru care face ca tahometrul nostru să fie mai hotărât și mai precis decât celălalt proiect de tahometru prezent în jurul web.

Componente necesare pentru acest proiect de tahometru folosind Arduino

• Senzor de efect Hall (Fig.1)

modul senzor de efect halat

• Arduino Uno

Placa Arduino UNO

• Magnet mic

magnet mic

• Firele jumperului

• Obiect rotativ (arborele motorului)

Motor DC

Configurare circuit

• Configurarea pentru crearea este după cum urmează-

• În arborele a cărui viteză de rotație urmează să fie măsurată este prevăzut cu un magnet mic folosind pistol de lipit sau bandă electrică.

• Senzorul de efect Hall are un detector în față și 3 pini pentru conexiuni.

• Pinii Vcc și Gnd sunt conectați la pinul 5V și respectiv Gnd al Arduino. Pinul de ieșire al senzorului este conectat la pinul digital 2 al Uno pentru a furniza semnalul de intrare.

• Toate componentele sunt fixate într-o placă de montare, iar detectorul Hall este arătat de pe placă.

Programare

int sensor = 2 // Hall sensor at pin 2
volatile byte counts
unsigned int rpm //unsigned gives only positive values
unsigned long previoustime
void count_function()
{ /*The ISR function
Called on Interrupt
Update counts*/
counts++
}
void setup() {
Serial.begin(9600)
//Intiates Serial communications
attachInterrupt(0, count_function, RISING) //Interrupts are called on Rise of Input
pinMode(sensor, INPUT) //Sets sensor as input
counts= 0
rpm = 0
previoustime = 0 //Initialise the values
}
void loop()
{
delay(1000)//Update RPM every second
detachInterrupt(0) //Interrupts are disabled
rpm = 60*1000/(millis() - previoustime)*counts
previoustime = millis() //Resets the clock
counts= 0 //Resets the counter
Serial.print('RPM=')
Serial.println(rpm) //Calculated values are displayed
attachInterrupt(0, count_function, RISING) //Counter restarted
}

Încărcați codul.

Cunoașteți codul

Tahometrul nostru folosește senzorul de efect Hall Senzorul de efect Hall se bazează pe efectul Hall numit după descoperitorul său Edwin Hall.

Efectul Hall este un fenomen de generare a tensiunii pe un conductor care transportă curent atunci când un câmp magnetic este introdus perpendicular pe fluxul de curent. Această tensiune generată datorită acestui fenomen ajută la generarea semnalului de intrare. După cum sa menționat, întreruperea va fi utilizată în acest proiect, pentru a apela întreruperea trebuie să setăm o anumită condiție. Arduino Uno are 2 condiții pentru apelarea întreruperilor-

RISING- Când se utilizează acest lucru, întreruperile sunt apelate de fiecare dată când semnalul de intrare trece de la LOW la HIGH.

FALING-Când se utilizează acest lucru, se întrerupe când semnalul trece de la HIGH la LOW.

Am folosit RISING, ceea ce se întâmplă este că atunci când magnetul plasat în arbore sau obiectul rotativ se apropie de detectorul Hall Se generează semnalul de intrare și se apelează întreruperea, întreruperea inițiază funcția de rutină de întrerupere a serviciului (ISR), care include creșterea în valoarea numărărilor și astfel are loc numărul.

Am folosit funcția millis () a Arduino și previoustime (variabilă) în corespondență pentru a configura cronometrul.

RPM-ul este astfel calculat în cele din urmă utilizând relația matematică-

RPM = Număruri / Timp necesar Conversia milisecundelor în minute și rearanjare ajungem la formula = 60 * 1000 / (milis () - timp anterior) * numărătoare.

Întârzierea (1000) determină intervalul de timp după care valoarea RPM va fi actualizată pe ecran, puteți regla această întârziere în funcție de nevoile dvs.

Această valoare a RPM obținută poate fi utilizată în continuare pentru a calcula viteza tangențială a obiectului rotativ folosind relația- v = (3,14 * D * N) / 60 m / s.

Valoarea RPM poate fi, de asemenea, utilizată pentru a calcula distanța parcursă de o roată sau disc rotativ.

În loc să imprimați valori pe monitorul serial, acest dispozitiv poate fi mai util prin conectarea unui afișaj LCD (16 * 2) și a bateriei pentru o utilizare mai bună.




Precedent: Circuitul driverului motorului pas cu pas folosind IC 555 Următorul: Circuit digital de măsurare a capacității folosind Arduino