Zum Inhalt springen
Arduino Drehzahlsensor Titel

Arduino Drehzahlsensor Tutorial – So misst du präzise Motor-Drehzahlen

    Ein Drehzahlsensor misst die Drehzahl eines rotierenden Objekts. Mit dem Arduino kannst du solche Sensoren nutzen, um beispielsweise die Umdrehungen eines Motors zu überwachen. In diesem Tutorial erfährst du, wie du den Sensor anschließt, auswertest und daraus Messwerte ableitest.

    1. Anwendungsgebiete

    Der Arduino Drehzahlsensor findet in vielen Bereichen Anwendung, unter anderem:

    • Motorgeschwindigkeitsüberwachung: Kontrolliere die Drehzahl von Elektromotoren in Roboterprojekten oder Fahrzeugen.
    • Fahrradcomputer: Messe die Umdrehungen der Räder zur Berechnung der Geschwindigkeit.
    • Fördertechnik: Erfasse Drehzahlen in Förderbändern oder Produktionsanlagen.
    • Windturbinen: Überwache die Drehzahl zur Effizienzsteigerung.

    Diese Einsatzmöglichkeiten machen den Drehzahlsensor zu einem vielseitigen Bauteil in zahlreichen DIY-Projekten.


    Sieh dir jetzt meinen neuen Arduino-Videokurs an: Jetzt ansehen!


    2. Bauteile

    Für dieses Projekt benötigst du folgende Komponenten:

    • Arduino-Board (z. B. Arduino Uno
    • Drehzahlsensor: Je nach Einsatzgebiet gibt es verschiedene Varianten. Häufig verwendet werden:
      • Hall-Effekt-Sensor: Misst magnetische Felder – in Kombination mit einem kleinen Magneten.
      • Optischer Sensor: Erkennt Umdrehungen anhand von reflektierenden Markierungen. Speziell kann man IR-Gabellichtschranken verwenden
    • Magnet (bei Hall-Sensoren)
    • Widerstände (z. B. 10 kΩ für Pullup-Konfiguration)
    • Breadboard und Verbindungskabel
    • Optional: LCD-Display oder Serieller Monitor zur Ausgabe der Drehzahl

    Info: Optischer Sensor

    Ein optischer Sensor arbeitet, indem er Lichtreflexionen oder Unterbrechungen eines Lichtstrahls erkennt. Oft kommen dabei auch sogenannte Lochscheiben (Disk Encoder) zum Einsatz. Diese rotierenden Scheiben besitzen regelmäßig verteilte Löcher oder transparente Abschnitte, durch die das Licht entweder hindurchscheint oder blockiert wird. So funktioniert der optische Sensor im Detail:

    • Funktionsweise:
      Eine LED sendet Licht aus, das entweder von einer reflektierenden Oberfläche zurückgeworfen wird oder durch die Löcher der Scheibe fällt. Ein Fototransistor oder eine Fotodiode erfasst das reflektierte Licht bzw. erkennt den Lichtdurchgang.
    • Signalgebung:
      Bei jeder Unterbrechung oder Änderung der Lichtintensität entsteht ein elektrisches Signal, das der Arduino zur Bestimmung der Umdrehungszahl verarbeiten kann.
    • Anwendung:
      Optische Sensoren eignen sich besonders gut, um präzise Umdrehungszahlen zu messen oder Positionen zu erfassen, da sie oft unempfindlich gegenüber elektromagnetischen Störungen sind.

    Info: Hall-Effekt-Sensor

    Ein Hall-Effekt-Sensor nutzt das Hall-Prinzip, um magnetische Felder zu detektieren. Die wichtigsten Punkte:

    • Funktionsweise:
      Der Sensor besteht aus einem Halbleiter, durch den Strom fließt. Wird ein Magnet in die Nähe gebracht, entsteht senkrecht zum Stromfluss eine Spannung (Hall-Spannung), die proportional zur Stärke des Magnetfelds ist.
    • Signalgebung:
      Bei Annäherung eines Magneten (z. B. an einer drehenden Scheibe) ändert sich die Hall-Spannung, was als digitales Signal interpretiert werden kann.
    • Anwendung:
      Ideal für Anwendungen, bei denen berührungslose Messungen erforderlich sind, z. B. bei der Erfassung von Motorumdrehungen oder als Sicherheitsschalter in Maschinen.

    Diese Info-Boxen bieten dir einen kompakten Überblick über die Funktionsweise beider Sensortypen, sodass du besser entscheiden kannst, welcher Sensor für dein Projekt optimal ist.

    3. Schaltplan

    Der Anschluss des Drehzahlsensors an den Arduino ist relativ einfach. Hier ein Beispiel für einen optischen Sensor (Gabellichtschranke):

    Arduino Drehzahlsensor Schaltplan

    Hinweis:

    • Verwende einen internen Pullup-Widerstand im Arduino oder schalte extern einen Widerstand ein, um stabile Signale zu erhalten.
    • Bei magnetischen Sensoren können die Anschlüsse leicht variieren.

    4. Code

    Im folgenden Beispielcode misst du die Umdrehungen pro Minute (RPM) mithilfe eines Interrupts. Jedes Mal, wenn der Sensor ein Signal liefert, wird ein Zähler hochgezählt. Anschließend berechnet der Arduino die Drehzahl basierend auf der Zeitspanne.

    // Arduino Drehzahlsensor Tutorial
    // Dieser Sketch misst die Drehzahl (RPM) mithilfe eines optischen Sensors
    
    volatile unsigned long pulseCount = 0;  // Zählt die Sensorpulse
    unsigned long previousMillis = 0;
    const unsigned long interval = 1000;    // Messintervall in Millisekunden (1 Sekunde)
    const byte sensorPin = 2;               // Interruptfähiger Pin
    
    // Anzahl Pulse pro Umdrehung (abhängig von deinem Sensor-Aufbau)
    const byte pulsesPerRevolution = 1;     
    
    void setup() {
      Serial.begin(115200);
      pinMode(sensorPin, INPUT_PULLUP);
      // Interrupt einrichten: Bei FALLING (Signalwechsel von HIGH zu LOW)
      attachInterrupt(digitalPinToInterrupt(sensorPin), countPulse, FALLING);
      Serial.println("Arduino Drehzahlsensor Tutorial");
    }
    
    void loop() {
      unsigned long currentMillis = millis();
      
      // Alle 1 Sekunde die Drehzahl berechnen
      if (currentMillis - previousMillis >= interval) {
        noInterrupts();               // Interrupts temporär deaktivieren
        unsigned long pulses = pulseCount;
        pulseCount = 0;               // Zähler zurücksetzen
        interrupts();                 // Interrupts wieder aktivieren
        
        // Berechnung: RPM = (Pulse pro Sekunde * 60) / Pulse pro Umdrehung
        unsigned long rpm = (pulses * 60) / pulsesPerRevolution;
        
        Serial.print("Drehzahl: ");
        Serial.print(rpm);
        Serial.println(" RPM");
        
        previousMillis = currentMillis;
      }
    }
    
    // Interrupt Service Routine: Jedes Mal wenn ein Puls registriert wird
    void countPulse() {
      pulseCount++;
    }

    5. Code-Erläuterungen

    • Globale Variablen:
      • volatile unsigned long pulseCount sorgt dafür, dass der Zähler in der ISR (Interrupt Service Routine) korrekt zählt.
      • previousMillis und interval steuern das Messintervall von einer Sekunde.
    • Setup-Funktion:
      • Die serielle Verbindung wird mit 115200 Baud initialisiert, sodass du die Ergebnisse im Seriellen Monitor verfolgen kannst.
      • pinMode(sensorPin, INPUT_PULLUP) aktiviert den internen Pullup-Widerstand für stabile Signale.
      • attachInterrupt() registriert die Funktion countPulse() als ISR, die bei einem FALLING-Signal (von HIGH zu LOW) ausgelöst wird.
    • Loop-Funktion:
      • Mit millis() wird die Zeit gemessen, um das Intervall von einer Sekunde einzuhalten.
      • Während der Berechnung werden Interrupts kurz deaktiviert, um einen konsistenten Zählerstand zu erhalten.
      • Die Drehzahl (RPM) wird aus den Pulse pro Sekunde errechnet und im Seriellen Monitor ausgegeben.
    • Interrupt Service Routine:
      • countPulse() erhöht den Zähler jedes Mal, wenn ein Puls vom Sensor registriert wird.

    7. Weitere Informationen

    Wenn du noch tiefer in das Thema einsteigen möchtest, findest du hier einige Tipps und Ressourcen:

    • Kalibrierung: Experimentiere mit verschiedenen Messintervallen und prüfe, ob dein Sensor stabile Signale liefert.
    • Sensorvarianten: Informiere dich über optische Sensoren oder magnetoresistive Sensoren, um für deinen Anwendungsfall das optimale Bauteil zu wählen.
    • Community und Foren: Arduino-Foren, Reddit oder Instructables bieten viele praktische Beispiele und Lösungen, falls du auf Probleme stößt.
    • Erweiterungsmöglichkeiten: Du könntest das Messergebnis beispielsweise auf ein LCD-Display ausgeben oder drahtlos an eine App senden.

    Wenn dir das Projekt gefallen hat und du von weiteren interessanten Projekten inspiriert werden willst, sieh dir doch mal mein neues E-Book »Arduino Projekte Volume 1« an!

    • Die beliebtesten Arduino-Projekte von StartHardware
    • Inklusive Schaltplan, Beschreibung und Code
    • Arduino-Schnellstart-Kapitel
    • Kompakter Programmierkurs


    0 0 votes
    Article Rating
    Abonnieren
    Benachrichtige mich bei

    Diese Seite verwendet Akismet, um Spam zu reduzieren. Erfahre, wie deine Kommentardaten verarbeitet werden..

    0 Comments
    Newest
    Oldest Most Voted
    Inline Feedbacks
    Alle Kommentare anzeigen
    0
    Ich würde mich über deine Meinung freuen.x