Arduino UNO R4 - IR-Gabellichtschranke (Geschwindigkeitssensor)
In diesem Leitfaden lernen wir, wie man die IR-Gabellichtschranke mit dem Arduino UNO R4 verwendet. Im Detail lernen wir:
- Wie der U-förmige IR-Schlitzsensor ein Objekt zwischen seinen zwei Armen erkennt.
- Wie man den Geschwindigkeitssensor mit dem Arduino UNO R4 verbindet.
- Wie man ein Programm für den Arduino UNO R4 schreibt, um jedes Objekt zu zählen, das durch den Schlitz geht.
- Wie man ein Programm für den Arduino UNO R4 schreibt, um die Motordrehzahl (U/min) mit einer Encoderscheibe und einem Interrupt zu messen.

Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables STEM V4 IoT Starter-Kit (Arduino enthalten) | |
| 1 | × | DIYables STEM V4B IoT Starter-Kit (Arduino enthalten) | |
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Über die IR-Gabellichtschranke
Dieses kleine Modul hat eine U-Form. Man nennt es auch Gabellichtschranke oder Photointerrupter. Ein Arm enthält eine Infrarot-LED. Der andere Arm enthält einen NPN-Fototransistor. Sie liegen sich über einen 5.9 mm breiten Spalt gegenüber. Der Sensor sagt dem Arduino UNO R4 eine einfache Sache: Ist der Spalt leer, oder ist etwas darin?
| IR-Gabellichtschranke | |
|---|---|
| Sensortyp | Schlitz-Lichtschranke (IR-LED + NPN-Fototransistor) |
| Schlitzbreite | 5.9 mm |
| Betriebsspannung | 3.3V bis 5V DC |
| Ausgang | digital (TTL), LOW bei Unterbrechung, HIGH bei freiem Schlitz |
| Signalaufbereitung | eingebauter Schmitt-Trigger |
| Montage | M3-Schraubenlöcher an beiden Enden |
| Pins | 3 (VCC, GND, OUT) |
Häufige Anwendungen:
- Die Motordrehzahl (U/min) mit einer Encoderscheibe messen, wie ein Drehzahlmesser.
- Objekte oder Impulse zählen.
- Eine Strecke messen, indem man Radumdrehungen zählt.
- Einem Roboter die Raddrehzahl zurückmelden.
- Eine Endlage oder eine Startposition erkennen.
Pinbelegung

Das Modul hat drei Pins:
- VCC-Pin: mit 5V am Arduino UNO R4 verbinden (das Modul akzeptiert 3.3V bis 5V).
- GND-Pin: mit GND (0V) verbinden.
- OUT-Pin: digitaler Ausgang, mit einem Eingangspin des Arduino UNO R4 verbinden.
Die Pin-Reihenfolge kann von Charge zu Charge anders sein. Lesen Sie immer die Beschriftungen auf Ihrem Modul.
Wie es funktioniert

Die IR-LED leuchtet die ganze Zeit durch den Schlitz.
- Der Schlitz ist leer: Das Licht erreicht den Fototransistor, deshalb ist der OUT-Pin HIGH.
- Der Schlitz wird von etwas Undurchsichtigem blockiert (eine Karte, ein Finger, ein Zahn einer Encoderscheibe): Das Licht kann nicht hindurch, deshalb ist der OUT-Pin LOW.
Der eingebaute Schmitt-Trigger macht aus dem rohen Lichtpegel eine saubere 0 oder 1. Das Signal zittert nicht, deshalb brauchen Sie kein Software-Entprellen.
Zwei kleine Dinge, die Sie wissen sollten:
- Klares Plastik oder Glas kann IR-Licht durchlassen. Verwenden Sie undurchsichtige Objekte.
- Einige Module anderer Hersteller arbeiten umgekehrt. Wenn Ihre Platine "blockiert" meldet, obwohl der Schlitz leer ist, tauschen Sie im ersten Code einfach LOW und HIGH. Der RPM-Code zählt eine Flanke pro Schlitz, deshalb funktioniert er mit beiden Typen.
Verdrahtungsdiagramm
Es sind nur drei Drähte nötig: VCC an 5V, GND an GND und OUT an Pin 2 des Arduino UNO R4. Der UNO R4 ist ein 5-V-Board, daher ist 5-V-Versorgung hier in Ordnung, und das OUT-Signal bleibt auf einem sicheren Pegel.

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Siehe Der beste Weg, den Arduino Uno R4 und andere Komponenten mit Strom zu versorgen.
Wir nutzen Pin 2, weil er einen Interrupt auslösen kann. Der zweite Code braucht das.
Wie man die IR-Gabellichtschranke programmiert
Prüfen, ob der Schlitz blockiert ist (Polling):
- Legen Sie den Pin, der mit dem OUT-Pin verbunden ist, als Eingang fest:
- Lesen Sie den Pin. LOW bedeutet blockiert, HIGH bedeutet frei:
- Vergleichen Sie mit dem letzten Wert, damit Sie nur reagieren, wenn sich der Zustand ändert:
Schnelle Impulse zählen (Interrupt):
- Legen Sie einen Zähler an. Markieren Sie ihn als volatile, weil der Interrupt ihn ändert:
- Schreiben Sie eine winzige Funktion, die den Zähler um eins erhöht:
- Führen Sie diese Funktion jedes Mal aus, wenn das Signal von HIGH auf LOW fällt (ein Zahn tritt in den Schlitz ein):
- Kopieren Sie den Zähler einmal pro Sekunde bei angehaltenen Interrupts und setzen Sie ihn zurück, dann rechnen Sie die Impulse in U/min um:
Warum diese Formel? Bei einer Scheibe mit 20 Schlitzen ergibt eine volle Umdrehung 20 Impulse. Impulse in 1 Sekunde × 60 ergibt Impulse pro Minute. Teilen Sie durch 20, und Sie erhalten Umdrehungen pro Minute (U/min, RPM).
Arduino UNO R4 Code - Objekt im Schlitz erkennen
Dieser Sketch prüft den OUT-Pin immer wieder. Er gibt nur dann eine Zeile aus, wenn sich der Zustand ändert, und er erhöht einen Zähler um eins, jedes Mal wenn der Schlitz blockiert wird.
Schnelle Schritte
Folgen Sie diesen Anweisungen Schritt für Schritt:
- Falls Sie die Arduino Uno R4 WiFi/Minima zum ersten Mal verwenden, lesen Sie das Tutorial Einrichten der Umgebung für Arduino Uno R4 WiFi/Minima in der Arduino IDE.
- Verdrahten Sie die Bauteile gemäß dem bereitgestellten Diagramm.
- Verbinden Sie das Arduino Uno R4-Board über ein USB-Kabel mit Ihrem Computer.
- Starten Sie die Arduino IDE auf Ihrem Computer.
- Wählen Sie das passende Arduino Uno R4-Board (z. B. Arduino Uno R4 WiFi) und den COM-Port aus.
- Kopieren Sie den obigen Code und fügen Sie ihn in die Arduino IDE ein.
- Klicken Sie auf die Schaltfläche Hochladen, um den Code auf den Arduino UNO R4 zu übertragen.
- Öffnen Sie den Serial Monitor und stellen Sie 9600 Baud ein.
- Schieben Sie ein Stück Karte (oder Ihren Finger) in den Schlitz und ziehen Sie es wieder heraus. Machen Sie das einige Male.
- Sehen Sie sich das Ergebnis im Serial Monitor an.
Jeder Durchgang erzeugt zwei Zeilen: eine, wenn die Karte hineingeht, eine, wenn sie herauskommt. Solange sich nichts ändert, wird keine Zeile ausgegeben.
Arduino UNO R4 Code - Motordrehzahl messen (U/min)
Polling in loop() ist für langsame Objekte in Ordnung. Eine drehende Scheibe ist viel schneller, und loop() könnte einige Zähne verpassen. Deshalb zählt dieser Sketch die Impulse mit einem Interrupt auf der FALLING-Flanke, was genau einen Zählschritt pro Zahn ergibt. Jede Sekunde gibt er die Impulszahl und die Drehzahl in U/min aus.
Die Konstante SLOTS_PER_TURN ist auf 20 gesetzt. Das ist die übliche Encoderscheibe, die mit TT-Getriebemotoren geliefert wird. Wenn Ihre Scheibe eine andere Anzahl von Schlitzen hat, ändern Sie diesen Wert.
Die Encoderscheibe einrichten
- Befestigen Sie die Encoderscheibe an der Motorwelle oder am Rad.
- Platzieren Sie den Sensor so, dass die Zähne der Scheibe durch den Schlitz laufen.
- Achten Sie darauf, dass die Scheibe die Sensorarme nicht berührt.
- Sie können die Scheibe von Hand drehen oder den Motor einschalten. Der Motor braucht seine eigene Verdrahtung. Dazu lesen Sie das Tutorial Arduino UNO R4 - Gleichstrommotor.
Schnelle Schritte
- Behalten Sie die gleiche Verdrahtung wie zuvor.
- Kopieren Sie den RPM-Code oben und fügen Sie ihn in die Arduino IDE ein.
- Klicken Sie auf die Schaltfläche Hochladen.
- Öffnen Sie den Serial Monitor mit 9600 Baud.
- Drehen Sie die Scheibe und lassen Sie sie dann anhalten.
- Beobachten Sie die Drehzahl im Serial Monitor. Hier läuft der Motor mit etwa 300 U/min:
Prüfen Sie eine Zeile: 100 Impulse × 60 ÷ 20 = 300 U/min.
Möchten Sie wissen, wie weit sich ein Rad bewegt hat? Multiplizieren Sie die Anzahl der Umdrehungen mit dem Radumfang (π × Raddurchmesser).
※ Notiz:
- Halten Sie die Interrupt-Funktion kurz. Rufen Sie darin nicht Serial.print() auf.
- Jede Variable, die der Interrupt ändert, muss volatile sein.
- Möchten Sie ein Objekt in der Entfernung statt in einem Schlitz erkennen? Probieren Sie den Hindernisvermeidungssensor. Brauchen Sie einen Drehknopf, der auch die Drehrichtung angibt? Probieren Sie den Drehencoder.
Video Tutorial
Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.