Arduino takometerkrets för exakta avläsningar

Prova Vårt Instrument För Att Eliminera Problem





En varvräknare är en anordning som mäter varvtalet eller vinkelhastigheten hos en roterande kropp. Den skiljer sig från hastighetsmätare och vägmätare eftersom dessa enheter hanterar kroppens linjära eller tangentiella hastighet medan varvräknare aka 'tak' handlar om mer grundläggande varvtal.

Av Ankit Negi



Varvräknare består av en räknare och en timer som båda dessa arbetar tillsammans ger varvtalet. I vårt projekt kommer vi att göra detsamma, med vår Arduino och några sensorer kommer vi att ställa in både en räknare och en timer och utveckla vår praktiska och enkla upptagning .

Förutsättningar

Counter är inget annat än en enhet eller installation som kan räkna någon viss regelbunden händelse som att passera en punkt i skivan medan den är i rotation. Ursprungligen byggdes räknarna med hjälp av det mekaniska arrangemanget och länkar som kugghjul, spärrar, fjädrar etc.



Men nu använder vi räknare med mer sofistikerade och mycket exakta sensorer och elektronik. Timer är ett elektroniskt element som kan mäta tidsintervallet mellan händelser eller mäta tid.

I vår Arduino Uno finns tidtagare som inte bara håller reda på tiden utan också behåller några av Arduinos viktiga funktioner. I Uno har vi 3 timers som heter Timer0, Timer1 och Timer2. Dessa timers har följande funktioner - • Timer0- För Uno-funktioner som fördröjning (), millis (), mikro () eller fördröjningsmikro ().

• Timer1- För arbete i servobibliotek.

• Timer2- För funktioner som ton (), ingen ().

Tillsammans med dessa funktioner är dessa tre timers också ansvariga för att generera PWM-utgången när analogWrite () -kommandot används i den PMW-designade stiftet.

Begreppet avbrott

I Arduino Uno finns ett dolt verktyg som kan ge oss tillgång till en hel del funktioner som vi kallas Timer Interrupts. Interrupt är en uppsättning händelser eller instruktioner som utförs när de kallas för att avbryta enhetens nuvarande funktion, dvs. oavsett vad koder som din Uno körde tidigare men när en avbrott kallas Arduino utför du instruktionen som nämns i avbrottet.

magnet på motoraxeln

Nu kan Interrupt anropas i ett visst tillstånd som definieras av användaren med hjälp av en inbyggd Arduino Syntax. Vi kommer att använda denna Interrupt i vårt projekt som gör vår varvräknare mer beslutsam och mer exakt än det andra Varvräknare-projektet som finns på nätet.

Komponenter som krävs för detta takometerprojekt med Arduino

• Hall-effektsensor (bild 1)

hall-effekt sensormodul

• Arduino Uno

Arduino UNO styrelse

• Liten magnet

liten magnet

• Bygeltrådar

• Roterande föremål (motoraxel)

likströmsmotor

Kretsinställning

• Inställningen för att skapa är följande:

• I axeln vars rotationshastighet ska mätas är försedd med en liten magnet med limpistol eller tejp.

• Hall Effect-sensorn har en detektor framför och 3 stift för anslutningar.

• Vcc- och GND-stiften är anslutna till 5V respektive GND-stift på Arduino. Givarens utgångsstift är ansluten till Uno digitala stift 2 för att ge insignalen.

• Alla komponenter är fästa i ett monteringsbräda och Hall-detektorn pekas ut från 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
}

Ladda upp koden.

Känn koden

Vår varvräknare använder Hall Effect Sensor Hall Effect-sensorn är baserad på Hall-effekten uppkallad efter upptäckaren Edwin Hall.

Halleffekt är fenomen av generering av spänning över en strömbärande ledare när ett magnetfält införs vinkelrätt mot strömflödet. Denna spänning som genereras på grund av detta fenomen hjälper till att generera insignaler. Som nämnts kommer Interrupt att användas i detta projekt, för att ringa Interrupt måste vi ställa in något tillstånd. Arduino Uno har två villkor för att kräva avbrott-

RISING - När detta används används samtal till Interrupt varje gång insignalen går från LÅG till HÖG.

FALING - När detta används, kallas Interrupt när signalen går från HIGH till LOW.

Vi har använt RISING, vad som händer är att när magneten placerad i axeln eller det roterande föremålet kommer nära Hall-detektorn Ingångssignal genereras och Interrupt kallas in, Interrupt initierar Interrupt Service Routine (ISR) -funktionen, som inkluderar inkrement i räknarvärdet och därmed räknas.

Vi har använt millis () -funktionen för Arduino och previoustime (variabel) i korrespondens för att ställa in timern.

Varvtalet beräknas således slutligen med den matematiska relationen-

RPM = Counts / Time taken Omvandling av millisekunder till minuter och omläggning kommer vi till formeln = 60 * 1000 / (millis () - previoustime) * räknas.

Fördröjningen (1000) bestämmer tidsintervallet efter vilket värdet på RPM kommer att uppdateras på skärmen, du kan justera denna fördröjning efter dina behov.

Detta erhållna RPM-värde kan vidare användas för att beräkna tangentiell hastighet för det roterande objektet med hjälp av förhållandet v = (3.14 * D * N) / 60 m / s.

Värdet på RPM kan också användas för att beräkna avståndet med ett roterande hjul eller en skiva.

Istället för att skriva ut värden till seriell bildskärm kan denna enhet göras mer användbar genom att ansluta en LCD-skärm (16 * 2) och batteri för bättre användning.




Tidigare: Stegmotorförare med IC 555 Nästa: Digital kapacitansmätarkrets med Arduino