Erhalten Sie kostenlose Lieferung auf allen Bestellungen über £20!

Arduino RPM Zähler mit einem optischen Sensor

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.

  1. 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.

  2. 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

  3. 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.

  4. 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.

  5. 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:
    Ersatz 30 mit 60

  • Mehr Klingen oder Markierungen:
    Teil 60 durch 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.

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.

Hinterlasse einen Kommentar