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.
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):

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
undinterval
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 FunktioncountPulse()
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.
- Mit
- 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