Arduino omdrejningstællerkredsløb til præcise aflæsninger

Arduino omdrejningstællerkredsløb til præcise aflæsninger

Et omdrejningstæller er en enhed, der måler omdrejningstal eller vinkelhastighed for et roterende legeme. Det adskiller sig fra speedometer og kilometertæller, da disse enheder beskæftiger sig med kroppens lineære eller tangentielle hastighed, mens omdrejningstæller aka 'tach' beskæftiger sig med mere grundlæggende RPM.



Af Ankit Negi

Omdrejningstæller er sammensat af en tæller og en timer, begge disse arbejder sammen giver RPM. I vores projekt skal vi gøre det samme ved hjælp af vores Arduino og nogle sensorer vil vi opsætte både en tæller og en timer og udvikle vores praktiske og nemme tak .





Forudsætninger

Tæller er intet andet end en enhed eller opsætning, der kan tælle enhver bestemt regelmæssig forekommende begivenhed som at sende en prik i disken, mens den er i rotation. Oprindeligt blev tællerne bygget ved hjælp af det mekaniske arrangement og forbindelser som tandhjul, skralde, fjedre osv.

Men nu bruger vi tællere, der har mere sofistikerede og meget præcise sensorer og elektronik. Timer er et elektronisk element, der er i stand til at måle tidsintervallet mellem begivenheder eller måle tid.



I vores Arduino Uno er der timere, der ikke kun holder styr på tiden, men som også opretholder nogle af Arduinos vigtige funktioner. I Uno har vi 3 timere ved navn Timer0, Timer1 og Timer2. Disse timere har følgende funktioner - • Timer0- For Uno-funktioner som forsinkelse (), millis (), mikro () eller forsinkelsesmikro ().

• Timer1- Til arbejde på servobibliotek.

• Timer2 - Til funktioner som tone (), ikke nogen ().

Sammen med disse funktioner er disse 3 timere også ansvarlige for at generere PWM-output, når kommandoen analogWrite () bruges i den PMW-udpegede pin.

Begrebet afbrydelser

I Arduino Uno er der et skjult værktøj til stede, som kan give os adgang til en hel del funktion, kendt som Timer Interrupts. Interrupt er et sæt begivenheder eller instruktioner, der udføres, når de kaldes for at afbryde enhedens aktuelle funktion, dvs. uanset hvad koder, som din Uno udførte før, men når en afbrydelse kaldes Arduino, udfør den instruktion, der er nævnt i afbrydelsen.

magnet på motorakslen

Nu kan Interrupt kaldes i en bestemt tilstand, der er defineret af brugeren ved hjælp af en indbygget Arduino Syntax. Vi bruger denne Interrupt i vores projekt, der gør vores omdrejningstæller mere resolut såvel som mere præcis end det andet omdrejningstællerprojekt, der findes rundt på nettet.

Komponenter, der kræves til dette Tachometer-projekt ved hjælp af Arduino

• Hall-effektsensor (fig.1)

hall effekt sensormodul

• Arduino Uno

Arduino UNO bestyrelse

• Lille magnet

lille magnet

• Jumpertråde

• Roterende genstand (motoraksel)

DC-motor

Opsætning af kredsløb

• Opsætningen til oprettelse er som følger-

• I akslen, hvis rotationshastighed skal måles, er der udstyret med en lille magnet ved hjælp af limpistol eller elektrisk tape.

• Hall Effect-sensor har en detektor foran og 3 ben til tilslutning.

• Vcc- og Gnd-stifterne er tilsluttet henholdsvis 5V og Gnd-stift i Arduino. Sensorens udgangsstift er tilsluttet den digitale pin 2 på Uno for at levere indgangssignalet.

• Alle komponenter er fastgjort i et monteringskort, og Hall-detektor påpeges fra kortet.

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
}

Upload koden.

Kend koden

Vores omdrejningstæller bruger Hall Effect Sensor Hall Effect sensor er baseret på Hall-effekt opkaldt efter opdageren Edwin Hall.

Hall-effekt er fænomenet med generering af spænding over en strømførende leder, når et magnetfelt indføres vinkelret på strømmen. Denne spænding genereret på grund af dette fænomen hjælper med generering af indgangssignaler. Som nævnt vil Interrupt blive brugt i dette projekt, for at ringe til Interrupt er vi nødt til at indstille en eller anden tilstand. Arduino Uno har to betingelser for at opfordre til Interrupts-

RISING- Når dette bruges, kaldes Interrupt hver gang når indgangssignalet går fra LAV til HØJ.

FALING - Når dette bruges, kaldes Interrupt, når signalet går fra HIGH til LOW.

Vi har brugt RISING, hvad der sker er, at når magneten anbragt i skaftet eller det roterende objekt kommer tæt på Hall-detektoren Indgangssignal genereres, og Interrupt kaldes på, Interrupt initierer Interrupt Service Routine (ISR) -funktionen, som inkluderer inkrement i tællingsværdien og dermed tælling finder sted.

Vi har brugt millis () - funktionen af ​​Arduino og previoustime (variabel) i korrespondance til opsætning af timeren.

RPM beregnes således endelig ved hjælp af den matematiske relation-

RPM = tæller / tid taget Konvertering af millisekunder til minutter og omlægning kommer til formlen = 60 * 1000 / (millis () - præioustime) * tæller.

Forsinkelsen (1000) bestemmer det tidsinterval, hvorefter RPM-værdien opdateres på skærmen, du kan justere denne forsinkelse efter dine behov.

Denne opnåede RPM-værdi kan yderligere bruges til at beregne den roterende objekts tangentialhastighed ved hjælp af forholdet v = (3.14 * D * N) / 60 m / s.

Værdien af ​​omdrejningstal kan også bruges til at beregne den tilbagelagte afstand med et roterende hjul eller en skive.

I stedet for at udskrive værdier til seriel skærm kan denne enhed gøres mere nyttig ved at tilslutte en LCD-skærm (16 * 2) og batteri for bedre brug.




Forrige: Stepper Motor Driver Circuit ved hjælp af IC 555 Næste: Digital kapacitansmåler kredsløb ved hjælp af Arduino