Raspberry Pi - Rotary Encoder
Dieses Tutorial erklärt Ihnen, wie Sie den inkrementellen Rotary Encoder mit Raspberry Pi verwenden. Hier ist, was wir behandeln werden:
- Wie der Rotary Encoder funktioniert
- Der Unterschied zwischen einem Rotary Encoder und einem Potentiometer (ein anderer Typ von Drehregler)
- Wie Sie den Rotary Encoder physisch mit einem Raspberry Pi verbinden
- Wie Sie Code für den Raspberry Pi schreiben, um die Richtung und Position vom Rotary Encoder zu lesen.
Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables Sensor-Kit (30 Sensoren/Displays) | |
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Über den Rotary Encoder
Ein sich drehender Knopf, der Bewegung in ein Signal umwandelt, wird Rotary Encoder genannt. Er zeigt Ihnen, wie viel sich etwas gedreht hat und wo es sich befindet. Es gibt zwei Haupttypen:
- Inkrementeller Encoder: Dieser verwendet schnelle Signale, um zu messen, wie viel sich etwas verändert hat.
- Absoluter Encoder: Diese Art bietet einen eindeutigen Code für jede Position, sodass Sie genau wissen, wo sich etwas befindet, auch wenn der Strom ausfällt.
Dieser Leitfaden konzentriert sich auf den inkrementellen Encoder.
Rotary Encoder Modul Pinout

Ein Rotary Encoder Modul hat 4 Pins:
- CLK Pin (Output A): ist das Hauptsignal, das uns sagt, wie viel Rotation stattgefunden hat. Wann immer Sie den Knopf um eine Raste (Klick) in jede Richtung drehen, gibt der CLK Pin ein Signal aus, das einen vollständigen Zyklus abschließt (LOW → HIGH → LOW).
- DT Pin (Output B): funktioniert wie der CLK Pin, gibt aber ein Signal aus, das dem CLK Signal um 90 Grad nachläuft. Er hilft uns, die Drehrichtung (im Uhrzeigersinn oder gegen den Uhrzeigersinn) zu bestimmen.
- SW Pin: ist der Ausgang des Druckknopfs im Encoder. Er ist normalerweise offen. Wenn wir einen Pull-up-Widerstand an diesem Pin verwenden, wird der SW Pin HIGH sein, wenn der Knopf nicht gedrückt wird, und LOW, wenn er gedrückt wird.
- VCC Pin (+): muss mit VCC verbunden werden (zwischen 3,3 und 5 Volt)
- GND Pin: muss mit GND (0V) verbunden werden
Rotary Encoder vs Potentiometer
Sie könnten den Rotary Encoder mit dem Potentiometer verwechseln, aber sie sind unterschiedliche Komponenten. Hier ist ein Vergleich zwischen ihnen:
- Rotary Encoder ist wie die moderne Version des Potentiometers, aber sie können mehr Dinge tun.
- Rotary Encoder kann sich im vollen Kreis ohne Stopp drehen, während Potentiometer sich nur etwa drei Viertel des Kreises drehen können.
- Rotary Encoder gibt Impulse aus, während Potentiometer die analoge Spannung ausgeben.
- Rotary Encoder ist praktisch, wenn Sie nur herausfinden müssen, wie viel sich der Knopf bewegt hat, nicht genau wo er ist. Potentiometer ist nützlich, wenn Sie wirklich genau wissen müssen, wo sich ein Knopf befindet.
Wie der Rotary Encoder funktioniert

Im Inneren des Encoders befindet sich eine Scheibe mit Schlitzen, die mit einem Pin namens C verbunden ist, der wie eine gemeinsame Masse ist. Es gibt zwei weitere Pins, A und B.
- Wenn Sie den Knopf drehen, berühren die Pins A und B den gemeinsamen Masse-Pin C, aber in einer bestimmten Reihenfolge, je nachdem, in welche Richtung Sie den Knopf drehen (im Uhrzeigersinn oder gegen den Uhrzeigersinn).
- Diese Berührungen erzeugen zwei Signale. Sie unterscheiden sich etwas im Timing, weil ein Pin die Masse vor dem anderen berührt. Zwei Signale sind 90 Grad außer Sync miteinander. Dies wird Quadratur-Kodierung genannt.
- Wenn Sie den Knopf im Uhrzeigersinn drehen, berührt Pin A die Masse vor Pin B. Wenn Sie den Knopf gegen den Uhrzeigersinn drehen, berührt Pin B die Masse vor Pin A.
- Durch Überwachung, wann jeder Pin die Masse berührt oder verlässt, können wir herausfinden, in welche Richtung sich der Knopf dreht. Wir tun dies, indem wir prüfen, was mit Pin B passiert, wenn sich Pin A ändert.

Wenn A den Zustand von LOW zu HIGH ändert:
- Wenn B LOW ist, wird der Knopf im Uhrzeigersinn gedreht.
- Wenn B HIGH ist, wird der Knopf gegen den Uhrzeigersinn gedreht.
※ Notiz:
Pin A und B sind mit CLK und DT Pins verbunden. Je nach Hersteller kann die Reihenfolge jedoch unterschiedlich sein. Die unten bereitgestellten Codes sind mit dem Rotary Encoder von DIYables getestet
Wie man für Rotary Encoder programmiert
- Prüfen Sie das Signal vom CLK Pin
- Wenn sich der Zustand von LOW zu HIGH ändert, prüfen Sie den Zustand des DT Pins.
- Wenn der Zustand des DT Pins HIGH ist, wird der Knopf gegen den Uhrzeigersinn gedreht, erhöhen Sie den Zähler um 1
- Wenn der Zustand des DT Pins LOW ist, wird der Knopf im Uhrzeigersinn gedreht, verringern Sie den Zähler um 1
Verdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Um Ihren Verdrahtungsaufbau zu vereinfachen und zu organisieren, empfehlen wir die Verwendung eines Schraubklemmenblock-Shields für Raspberry Pi. Dieses Shield gewährleistet sicherere und besser verwaltbare Verbindungen, wie unten gezeigt:

Raspberry Pi Code – Rotary Encoder
Der folgende Raspberry Pi Code macht:
- Erkennt die Richtung und Menge der Drehung des Encoders.
- Wenn erkannt wird, dass der Knopf um eine Raste (Klick) im Uhrzeigersinn gedreht wurde, erhöhe den Zähler um eins.
- Wenn erkannt wird, dass der Knopf um eine Raste (Klick) gegen den Uhrzeigersinn gedreht wurde, verringere den Zähler um eins.
- Erkennt, ob der Button gedrückt wird.
Schnelle Schritte
- Stellen Sie sicher, dass Sie Raspbian oder ein anderes Raspberry Pi-kompatibles Betriebssystem auf Ihrem Pi installiert haben.
- Stellen Sie sicher, dass Ihr Raspberry Pi mit demselben lokalen Netzwerk wie Ihr PC verbunden ist.
- Stellen Sie sicher, dass Ihr Raspberry Pi mit dem Internet verbunden ist, wenn Sie einige Bibliotheken installieren müssen.
- Wenn Sie Raspberry Pi zum ersten Mal verwenden, siehe Raspberry Pi einrichten
- Verbinden Sie Ihren PC über SSH mit dem Raspberry Pi unter Verwendung des integrierten SSH-Clients unter Linux und macOS oder PuTTY unter Windows. Siehe PC mit Raspberry Pi über SSH verbinden.
- Stellen Sie sicher, dass Sie die RPi.GPIO Bibliothek installiert haben. Falls nicht, installieren Sie sie mit folgendem Befehl:
- Erstellen Sie eine Python-Script-Datei rotary_encoder.py und fügen Sie folgenden Code hinzu:
- Speichern Sie die Datei und führen Sie das Python-Script aus, indem Sie folgenden Befehl im Terminal ausführen:
- Drehen Sie den Knopf im Uhrzeigersinn, dann gegen den Uhrzeigersinn
- Drücken Sie den Knopf
- Schauen Sie sich das Ergebnis im Terminal an.
Code-Erklärung
Schauen Sie sich die zeilenweisen Kommentare im Code an
Raspberry Pi Rotary Encoder Anwendungen
Mit Rotary Encoder können wir folgende Anwendungen durchführen, aber nicht darauf begrenzt:
- Raspberry Pi - Rotary Encoder steuert Position des Servo Motors
- Raspberry Pi - Rotary Encoder steuert Helligkeit der LED
- Raspberry Pi - Rotary Encoder steuert Geschwindigkeit des Stepper Motors
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.