Arduino Tachometer-Schaltung für präzise Messwerte

Arduino Tachometer-Schaltung für präzise Messwerte

Ein Drehzahlmesser ist ein Gerät, das die Drehzahl oder Winkelgeschwindigkeit eines rotierenden Körpers misst. Es unterscheidet sich von Tachometer und Kilometerzähler, da diese Geräte die lineare oder tangentiale Geschwindigkeit des Körpers behandeln, während der Drehzahlmesser a.k.a. 'Drehzahlmesser' die Drehzahl grundlegender behandelt.

Von Ankit Negi



Der Drehzahlmesser besteht aus einem Zähler und einem Timer. Beide arbeiten zusammen und liefern die Drehzahl. In unserem Projekt werden wir dasselbe tun. Mit unserem Arduino und einigen Sensoren werden wir sowohl einen Zähler als auch einen Timer einrichten und unseren handlichen und einfachen Drehzahlmesser entwickeln .



Voraussetzungen

Der Zähler ist nichts anderes als ein Gerät oder eine Einrichtung, die ein bestimmtes regelmäßig auftretendes Ereignis wie das Übergeben eines Punkts auf der Disc während der Drehung zählen kann. Ursprünglich wurden die Zähler unter Verwendung der mechanischen Anordnung und der Verbindungen wie Zahnräder, Ratschen, Federn usw. gebaut.

Aber jetzt verwenden wir einen Zähler mit ausgefeilteren und hochpräziseren Sensoren und Elektronik. Timer ist ein elektronisches Element, das das Zeitintervall zwischen Ereignissen messen oder die Zeit messen kann.



In unserem Arduino Uno gibt es Timer, die nicht nur die Zeit verfolgen, sondern auch einige der wichtigen Funktionen von Arduino beibehalten. In Uno haben wir 3 Timer mit den Namen Timer0, Timer1 und Timer2. Diese Timer haben folgende Funktionen: • Timer0 - Für Uno-Funktionen wie delay (), millis (), micros () oder delaymicros ().

• Timer1 - Für die Arbeit der Servobibliothek.

• Timer2 - Für Funktionen wie Ton (), Notone ().



Zusammen mit diesen Funktionen sind diese 3 Timer auch für die Erzeugung des PWM-Ausgangs verantwortlich, wenn der Befehl analogWrite () im PMW-Pin verwendet wird.

Konzept der Interrupts

In Arduino Uno ist ein verstecktes Tool vorhanden, das uns Zugriff auf eine ganze Reihe von Funktionen bietet, die als Timer-Interrupts bezeichnet werden. Interrupt ist eine Reihe von Ereignissen oder Anweisungen, die ausgeführt werden, wenn die aktuelle Funktion des Geräts unterbrochen wird, dh was auch immer Codes, die Ihr Uno zuvor ausgeführt hat, aber sobald ein Interrupt Arduino heißt, führen Sie die im Interrupt erwähnte Anweisung aus.

Magnet auf Motorwelle

Jetzt kann Interrupt unter bestimmten vom Benutzer definierten Bedingungen mithilfe einer integrierten Arduino-Syntax aufgerufen werden. Wir werden diesen Interrupt in unserem Projekt verwenden, wodurch unser Drehzahlmesser entschlossener und präziser wird als das andere im Internet vorhandene Drehzahlmesserprojekt.

Komponenten, die für dieses Drehzahlmesserprojekt mit Arduino benötigt werden

• Hall-Effekt-Sensor (Abb.1)

Hall-Effekt-Sensormodul

• Arduino Uno

Arduino UNO Vorstand

• Kleiner Magnet

kleiner Magnet

• Überbrückungskabel

• Rotierendes Objekt (Motorwelle)

Gleichspannungs Motor

Schaltungsaufbau

• Das Setup zum Erstellen ist wie folgt:

• In der Welle, deren Drehzahl gemessen werden soll, ist ein kleiner Magnet mit Klebepistole oder Klebeband angebracht.

• Der Hall-Effekt-Sensor hat vorne einen Detektor und 3 Pins für Anschlüsse.

• Die Vcc- und Gnd-Pins sind mit dem 5V- bzw. Gnd-Pin von Arduino verbunden. Der Ausgangspin des Sensors ist mit dem digitalen Pin 2 des Uno verbunden, um das Eingangssignal bereitzustellen.

• Alle Komponenten sind in einer Montageplatine befestigt, und der Hallendetektor wird von der Platine aus angezeigt.

Programmierung

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
}

Laden Sie den Code hoch.

Kennen Sie den Code

Unser Drehzahlmesser verwendet einen Hall-Effekt-Sensor Der Hall-Effekt-Sensor basiert auf dem Hall-Effekt, der nach seinem Entdecker Edwin Hall benannt ist.

Der Hall-Effekt ist ein Phänomen der Spannungserzeugung über einem stromführenden Leiter, wenn ein Magnetfeld senkrecht zum Stromfluss angelegt wird. Diese aufgrund dieses Phänomens erzeugte Spannung hilft bei der Erzeugung des Eingangssignals. Wie bereits erwähnt, wird in diesem Projekt Interrupt verwendet. Um Interrupt aufzurufen, müssen einige Bedingungen festgelegt werden. Arduino Uno hat 2 Bedingungen für das Aufrufen von Interrupts-

RISING- Wenn dies verwendet wird, werden Interrupts jedes Mal aufgerufen, wenn das Eingangssignal von LOW nach HIGH wechselt.

FALING-Wenn dies verwendet wird, werden Interrupts aufgerufen, wenn das Signal von HIGH nach LOW geht.

Wir haben das RISING verwendet. Wenn der Magnet in der Welle oder im rotierenden Objekt in die Nähe des Hall-Detektors kommt, wird ein Eingangssignal erzeugt und Interrupt aufgerufen. Interrupt initiiert die ISR-Funktion (Interrupt Service Routine), die das Inkrementieren umfasst Der Zählwert und damit die Zählung erfolgt.

Wir haben die millis () -Funktion von Arduino und previoustime (variable) in Korrespondenz verwendet, um den Timer einzurichten.

Die Drehzahl wird somit schließlich unter Verwendung der mathematischen Beziehung berechnet.

RPM = Anzahl / Zeitaufwand Wenn wir die Millisekunden in Minuten umrechnen und neu ordnen, erhalten wir die Formel = 60 * 1000 / (Millis () - Vorzeit) * Anzahl.

Die Verzögerung (1000) bestimmt das Zeitintervall, nach dem der Drehzahlwert auf dem Bildschirm aktualisiert wird. Sie können diese Verzögerung an Ihre Bedürfnisse anpassen.

Dieser erhaltene Drehzahlwert kann weiter verwendet werden, um die Tangentialgeschwindigkeit des rotierenden Objekts unter Verwendung der Beziehung v = (3,14 · D · N) / 60 m / s zu berechnen.

Der Wert der Drehzahl kann auch verwendet werden, um die von einem rotierenden Rad oder einer rotierenden Scheibe zurückgelegte Strecke zu berechnen.

Anstatt Werte auf den seriellen Monitor zu drucken, kann dieses Gerät durch Anschließen eines LCD-Displays (16 * 2) und eines Akkus für eine bessere Verwendung nützlicher gemacht werden.




Zurück: Schrittmotortreiberschaltung mit IC 555 Weiter: Schaltung des digitalen Kapazitätsmessers mit Arduino