Arduino RPM Zähler mit einem optischen Sensor
Der Aufbau eines RPM (Revolutionen pro Minute)-Konters ist ein klassisches und nützliches Arduino-Projekt. Dieser Guide führt Sie durch die Schaffung eines optisches Tachometer mit einer IR-LED, einem IR-Phototransistor und einem 16×2 LCD-Display. Das Ergebnis ist ein einfacher, präziser Drehzahlzähler, der für Motoren, Lüfter oder Propeller geeignet ist.
Projektübersicht
Dieser Arduino RPM-Zähler arbeitet durch Unterbrechen eines Infrarotstrahls mit einem rotierenden Objekt (wie einem Propeller). Jede Unterbrechung wird vom Arduino erkannt, gezählt und in einen RPM-Wert umgewandelt, der auf einem LCD-Bildschirm angezeigt wird.
Schlüsselmerkmale:
Echtzeit-PM-Messung
Optische (kontaktlose) Erfassung
LCD-Ausgang zum einfachen Lesen
Einfache und kostengünstige Komponenten
Artikelliste
Sie benötigen folgende Komponenten:
1 × Arduino Board
1 × 16×2 LCD-Display (HD44780 kompatibel)
1 × 10kΩ Potentiometer (LCD Kontrastkontrolle)
1 × 10kΩ Widerstand
1 × IR-LED
1 × IR-Fototransistor
Pulloverdrähte
Verdrahtungsanleitung
Folgen Sie diesen Schritten sorgfältig, um die Schaltung zu montieren. Jeder Unterabschnitt erklärt genau, wo jeder Draht gehen sollte, um Verwirrung zu vermeiden.
Stromverteilung
Verbinden Sie die Arduino 5V Stift zum Brotbrett positive Schiene.
Verbinden Sie die Arduino GND Stift zum Brotbrett Boden.
Stellen Sie sicher, dass alle Komponenten (LCD, Potentiometer, IR LED und Fototransistor) diese gemeinsame Masse teilen.
LCD und Potentiometer Anschlüsse (16×2 Parallel LCD)
LCD Pin 1 (VSS) Zurück zur Übersicht
LCD Pin 2 (VDD) • 5V
LCD Pin 3 (VO) → Mittlerer Stift des 10k Ω Potentiometer
Potentiometer-Seitenstifte → 5V und Ground (verwendet, um LCD-Kontrast einzustellen)
LCD Pin 4 (RS) → Arduino Digital Pin 7
LCD Pin 5 (RW) → Ground (LCD auf Schreibmodus eingestellt)
LCD Pin 6 (E) → Arduino Digital Pin 8)
LCD Pin 11 (D4) → Arduino Digital Pin ANHANG
LCD Pin 12 (D5) → Arduino Digital Pin 10.
LCD Pin 13 (D6) → Arduino Digital Pin 11)
LCD Pin 14 (D7) → Arduino Digital Pin 12
LCD Backlight
Pin 15 (A) → 5V durch einen Widerstand
Pin 16 (K) → Boden
IR LED (Transmitter)
Anode (Längerleitung) → Arduino Digitaler Stift 13
Cathode (kurtere Führung) Zurück zur Übersicht
Die IR-LED bleibt kontinuierlich ON, um einen Infrarotstrahl auf den Fototransistor zu übertragen.
IR Phototransistor (Empfänger)
Sammler (Kurzleiter) → Arduino Digitaler Stift 2
Emitter (langer Blei) Zurück zur Übersicht
Legen Sie den Fototransistor unmittelbar der IR-LED zugewandt, so dass der Strahl durch das rotierende Objekt unterbrochen wird.
Schlussüberprüfungen
Alles sicher stellen Erdverbindungen sind häufig.
Doppel-Check-Pin-Nummern vor der Schaltung.
Einstellen des Potentiometers, bis der Text auf dem LCD deutlich sichtbar ist.
Tipp: Digitaler Stift 2 wird verwendet, weil er unterstützt Hardware unterbricht, die Arduino erlaubt, Strahlunterbrechungen genau zu zählen und RPM zuverlässig zu berechnen.
Arduino Code
Laden Sie die folgende Skizze auf Ihr Arduino Board hoch:
/*
* Optical Tachometer
*
* Uses an IR LED and IR phototransistor to implement an optical tachometer.
* The IR LED is connected to pin 13 and runs continuously.
* Digital pin 2 (interrupt 0) is connected to the IR detector.
*/
#include
int ledPin = 13; // IR LED connected to digital pin 13
volatile byte rpmcount;
unsigned int rpm;
unsigned long timeold;
// Initialize the LCD with the interface pins
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
void rpm_fun() {
// This interrupt runs every time the IR beam is cut
rpmcount++;
}
void setup() {
lcd.begin(16, 2); // Initialize the LCD
// Attach interrupt to digital pin 2 (interrupt 0)
attachInterrupt(0, rpm_fun, FALLING);
// Turn on IR LED
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, HIGH);
rpmcount = 0;
rpm = 0;
timeold = 0;
}
void loop() {
// Update RPM every second
delay(1000);
// Temporarily stop interrupts during calculation
detachInterrupt(0);
rpm = 30 * 1000 / (millis() - timeold) * rpmcount;
timeold = millis();
rpmcount = 0;
// Display RPM on LCD
lcd.clear();
lcd.print("RPM=");
lcd.print(rpm);
// Re-enable interrupt
attachInterrupt(0, rpm_fun, FALLING);
}
Die RPM-Berechnung verstehen
Dieses Projekt geht davon aus zwei Unterbrechungen pro Revolution, wie bei der Verwendung eines Motors mit einem Zweiblattpropeller.
Deshalb verwendet die RPM-Berechnung diese Formel:
rpm = 30 * 1000 / (millis() - timeold) * rpmcount;
Anpassung für Ihr Setup
Eine Unterbrechung pro Revolution:
Ersatz30mit60Mehr Klingen oder Markierungen:
Teil60durch die Anzahl der Unterbrechungen pro Volldrehung und aktualisieren Sie die Formel entsprechend.
Diese Flexibilität ermöglicht es Ihnen, das Projekt an verschiedene Motoren und rotierende Objekte anzupassen.
Anmerkungen
Stellen Sie sicher, dass IR LED und Fototransistor für zuverlässige Messwerte richtig ausgerichtet sind.
Verwenden Sie reflektierendes Band oder eine geschlitzte Scheibe für eine gleichmäßigere Strahlunterbrechung.
Dieses Projekt kann durch Protokollierung von RPM-Daten oder Hinzufügen von seriellen Ausgängen erweitert werden.
Fertig zu bauen?
Dieser Arduino RPM Zähler ist eine großartige Grundlage für Motorsteuerungsprojekte, Robotik und mechanische Diagnostik. Aufbauen Sie die Komponenten, laden Sie den Code hoch und starten Sie die Messung RPM mit Vertrauen.