Arduino turtellerkrets for presise målinger

Prøv Instrumentet Vårt For Å Eliminere Problemer





Et turteller er en enhet som måler turtallet eller vinkelhastigheten til et roterende legeme. Det skiller seg fra speedometer og kilometerteller da disse enhetene håndterer kroppens lineære eller tangentielle hastighet mens turteller a.k.a. 'tach' håndterer mer grunnleggende RPM.

Av Ankit Negi



Turteller er sammensatt av en teller og en tidtaker som begge disse jobber sammen gir RPM. I prosjektet vårt skal vi gjøre det samme, ved hjelp av Arduino og noen sensorer vil vi sette opp både en teller og en tidtaker og utvikle vår praktiske og enkle tach .

Forutsetninger

Teller er ikke annet enn en enhet eller et oppsett som kan telle en bestemt regelmessig hendelse som å sende en prikk i platen mens den er i rotasjon. Opprinnelig ble tellerne bygget ved hjelp av det mekaniske arrangementet og koblinger som tannhjul, skralle, fjærer etc.



Men nå bruker vi teller som har mer sofistikerte og svært presise sensorer og elektronikk. Timer er et elektronisk element som er i stand til å måle tidsintervallet mellom hendelser eller måle tid.

I vår Arduino Uno er det tidtakere som ikke bare holder styr på tiden, men som også opprettholder noen av de viktige funksjonene til Arduino. I Uno har vi 3 tidtakere kalt Timer0, Timer1 og Timer2. Disse tidtakerne har følgende funksjoner - • Timer0 - For Uno-funksjoner som forsinkelse (), millis (), mikro () eller forsinkelsesmikro (().

• Timer1- For arbeid i servobiblioteket.

• Timer2- For funksjoner som tone (), ikke tone ().

I tillegg til disse funksjonene er disse 3 tidtakerne også ansvarlige for å generere PWM-utgangen når analogWrite () -kommandoen brukes i PMW-utpekt pin.

Begrepet avbrudd

I Arduino Uno er det et skjult verktøy som kan gi tilgang til mye funksjon for oss, kjent som Timer Interrupts. Interrupt er et sett med hendelser eller instruksjoner som utføres når de kalles for å avbryte den nåværende funksjonen til enheten, dvs. uansett hva koder som din Uno utførte før, men når en Interrupt heter Arduino, utfører du instruksjonen nevnt i Interrupt.

magnet på motorakselen

Nå kan Interrupt kalles i en viss tilstand som er definert av brukeren ved hjelp av en innebygd Arduino Syntax. Vi vil bruke denne Interrupt i vårt prosjekt som gjør turtelleren vår mer resolutt og mer presis enn det andre Turteller-prosjektet som er tilstede på nettet.

Komponenter som kreves for dette Turteller-prosjektet ved bruk av Arduino

• Hall-effektsensor (fig.1)

hall effekt sensor modul

• Arduino Uno

Arduino UNO-styre

• Liten magnet

liten magnet

• Jumperwirer

• Roterende gjenstand (motoraksel)

DC-motor

Kretsoppsett

• Oppsettet for å lage er som følger-

• I akselen hvis rotasjonshastighet skal måles, er den utstyrt med en liten magnet ved hjelp av limpistol eller elektrisk tape.

• Hall Effect-sensoren har en detektor foran og 3 pinner for tilkobling.

• Vcc- og GND-pinnene er koblet til henholdsvis 5V og GND-pinne av Arduino. Utgangspinnen til sensoren er koblet til den digitale pinnen 2 på Uno for å gi inngangssignalet.

• Alle komponentene er festet i et monteringsbrett og Hall-detektor blir pekt ut fra brettet.

Programmering

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
}

Last opp koden.

Kjenn koden

Vårt turteller bruker Hall Effect Sensor Hall Effect sensor er basert på Hall-effekten oppkalt etter oppdageren Edwin Hall.

Hall Effect er fenomenet generering av spenning over en strømførende leder når et magnetfelt innføres vinkelrett på strømmen. Denne spenningen som genereres på grunn av dette fenomenet, hjelper til med å generere inngangssignaler. Som nevnt vil Interrupt bli brukt i dette prosjektet, for å ringe til Interrupt må vi sette opp en tilstand. Arduino Uno har to betingelser for å ringe til Interrupts-

RISING- Når dette brukes, blir Interrupt anropet hver gang inngangssignalet går fra LAV til HØY.

FALING - Når dette brukes, kalles Interrupt når signalet går fra HØY til LAV.

Vi har brukt RISING, det som skjer er at når magneten som er plassert i akselen eller den roterende gjenstanden kommer nær Hall-detektoren Inngangssignal genereres og Interrupt kalles inn, initierer Interrupt Interrupt Service Routine (ISR) -funksjonen, som inkluderer inkrement i tellerverdien og dermed finner teller sted.

Vi har brukt millis () -funksjonen til Arduino og previoustime (variabel) i korrespondanse for å sette opp timeren.

RPM blir således endelig beregnet ved hjelp av den matematiske relasjonen -

RPM = teller / tid det tar Konvertering av millisekunder til minutter og omlegging får vi til formelen = 60 * 1000 / (millis () - previoustime) * teller.

Forsinkelsen (1000) bestemmer tidsintervallet etter hvilket verdien av RPM skal oppdateres på skjermen, du kan justere denne forsinkelsen etter dine behov.

Denne verdien av RPM oppnådd kan videre brukes til å beregne tangensialhastigheten til det roterende objektet ved hjelp av forholdet v = (3.14 * D * N) / 60 m / s.

Verdien av turtall kan også brukes til å beregne avstanden som et roterende hjul eller en plate roterer.

I stedet for å skrive ut verdier til seriell skjerm, kan denne enheten gjøres mer nyttig ved å koble til en LCD-skjerm (16 * 2) og batteri for bedre bruk.




Forrige: Stepper Motor Driver Circuit ved hjelp av IC 555 Neste: Digital kapasitansmålerkrets ved hjelp av Arduino