Un tachimetro è un dispositivo che misura l'RPM o la velocità angolare di un corpo rotante. Si differenzia dal tachimetro e dal contachilometri in quanto questi dispositivi si occupano della velocità lineare o tangenziale del corpo mentre il tachimetro, noto anche come 'tachimetro', si occupa del più fondamentale RPM.
Di Ankit Negi
Il contagiri è composto da un contatore e un timer che lavorano insieme forniscono gli RPM.Nel nostro progetto faremo lo stesso, utilizzando il nostro Arduino e alcuni sensori configureremo sia un contatore che un timer e svilupperemo il nostro pratico e facile tachimetro .
Prerequisiti
Il contatore non è altro che un dispositivo o una configurazione che può contare qualsiasi evento che si verifica regolarmente come il passaggio di un punto nel disco durante la rotazione. Inizialmente i contatori sono stati costruiti utilizzando la disposizione meccanica e collegamenti come ingranaggi, cricchetti, molle ecc.
Ma ora stiamo usando un contatore con sensori ed elettronica più sofisticati e altamente precisi. Il timer è un elemento elettronico in grado di misurare l'intervallo di tempo tra gli eventi o misurare il tempo.
Nel nostro Arduino Uno ci sono timer che non solo tengono traccia del tempo, ma mantengono anche alcune delle funzioni importanti di Arduino. In Uno abbiamo 3 timer denominati Timer0, Timer1 e Timer2. Questi timer hanno le seguenti funzioni: • Timer0- Per funzioni Uno come delay (), millis (), micros () o delaymicros ().
• Timer1- Per il funzionamento della libreria servo.
• Timer2: per funzioni come tone (), notone ().
Insieme a queste funzioni, questi 3 timer sono anche responsabili della generazione dell'uscita PWM quando il comando analogWrite () viene utilizzato nel pin designato PMW.
Concetto di interruzioni
In Arduino Uno è presente uno strumento nascosto che può darci accesso a un intero lotto di funzionamento noto come Timer Interrupts.Interrupt è un insieme di eventi o istruzioni che vengono eseguiti quando vengono chiamati interrompendo il funzionamento corrente del dispositivo, cioè non importa quale codici che il tuo Uno stava eseguendo prima, ma una volta che un interrupt è chiamato Arduino, esegui le istruzioni menzionate in Interrupt.
Ora Interrupt può essere chiamato a determinate condizioni definite dall'utente utilizzando una sintassi Arduino incorporata.Useremo questo Interrupt nel nostro progetto che rende il nostro tachimetro più risoluto e più preciso rispetto agli altri progetti Tachometer presenti sul web.
Componenti necessari per questo progetto tachimetro utilizzando Arduino
• Sensore effetto hall (Fig.1)
• Arduino Uno
• Piccolo magnete
• Cavi jumper
• Oggetto rotante (albero motore)
Configurazione del circuito
• La configurazione per la creazione è la seguente:
• Nell'albero di cui si vuole misurare la velocità di rotazione è montato un piccolo magnete mediante colla a caldo o nastro isolante.
• Il sensore ad effetto Hall ha un rilevatore nella parte anteriore e 3 pin per i collegamenti.
• I pin Vcc e Gnd sono collegati rispettivamente ai pin 5V e Gnd di Arduino. Il pin di uscita del sensore è collegato al pin digitale 2 di Uno per fornire il segnale di ingresso.
• Tutti i componenti sono fissati in una scheda di montaggio e il rilevatore Hall è puntato sulla scheda.
Programmazione
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
}
Carica il codice.
Conosci il codice
Il nostro contagiri utilizza il sensore a effetto Hall Il sensore a effetto Hall si basa sull'effetto Hall che prende il nome dal suo scopritore Edwin Hall.
L'effetto Hall è un fenomeno di generazione di tensione attraverso un conduttore che trasporta corrente quando viene introdotto un campo magnetico perpendicolare al flusso di corrente. Questa tensione generata a causa di questo fenomeno aiuta nella generazione del segnale in ingresso.Come accennato Interrupt verrà utilizzato in questo progetto, per chiamare Interrupt dobbiamo impostare alcune condizioni. Arduino Uno ha 2 condizioni per chiamare gli interrupt-
RISING- Quando viene utilizzato, gli interrupt vengono chiamati ogni volta che il segnale di ingresso passa da LOW ad HIGH.
FALING: quando viene utilizzato, gli interrupt vengono chiamati quando il segnale passa da HIGH a LOW.
Abbiamo utilizzato RISING, ciò che accade è che quando il magnete posizionato nell'albero o l'oggetto rotante si avvicina al rilevatore di Hall viene generato il segnale di ingresso e viene chiamato Interrupt, Interrupt avvia la funzione Interrupt Service Routine (ISR), che include l'incremento il valore dei conteggi e quindi il conteggio avviene.
Abbiamo utilizzato la funzione millis () di Arduino e previoustime (variabile) in corrispondenza per impostare il timer.
L'RPM quindi viene infine calcolato utilizzando la relazione matematica-
RPM = Conteggi / Tempo impiegato Convertendo i millisecondi in minuti e il riarrangiamento si ottiene la formula = 60 * 1000 / (millis () - previoustime) * conta.
Il ritardo (1000) determina l'intervallo di tempo dopo il quale il valore di RPM verrà aggiornato sullo schermo, è possibile regolare questo ritardo in base alle proprie esigenze.
Questo valore di RPM ottenuto può essere ulteriormente utilizzato per calcolare la velocità tangenziale dell'oggetto rotante utilizzando la relazione- v = (3.14 * D * N) / 60 m / s.
Il valore di RPM può essere utilizzato anche per calcolare la distanza percorsa da una ruota o da un disco in rotazione.
Invece di stampare i valori sul monitor seriale, questo dispositivo può essere reso più utile collegando un display LCD (16 * 2) e una batteria per un migliore utilizzo.
Precedente: Circuito del driver del motore passo-passo con IC 555 Avanti: Circuito misuratore di capacità digitale con Arduino