Beschreibung
KY-040 Drehencoder Modul 360° mit Drucktaster – Rotary Encoder für Arduino, ESP32 und Raspberry Pi
Produktbeschreibung
Das KY-040 Drehencoder Modul ist ein mechanischer, inkrementeller Drehgeber zur Erfassung von Drehbewegungen und zur Bedienung elektronischer Geräte.
Im Gegensatz zu einem herkömmlichen Potentiometer besitzt der KY-040 keinen festen Drehanschlag. Die Achse lässt sich um 360° und darüber hinaus kontinuierlich in beide Richtungen drehen.
Über zwei digitale Ausgangssignale (CLK und DT) kann ein Mikrocontroller sowohl die Drehrichtung als auch die einzelnen Drehschritte erkennen.
Zusätzlich verfügt der Drehencoder über einen integrierten Drucktaster, der durch Drücken auf die Encoderachse betätigt wird.
Damit eignet sich das Modul ideal für Menüsteuerungen, digitale Einstellregler, Lautstärkesteuerungen, Mikrocontroller-Projekte und individuelle Bedienpanels.
Die kompakte Leiterplatte besitzt einen 5-poligen Anschluss sowie zwei Befestigungsbohrungen. Ein passender Drehknopf ist im abgebildeten Set enthalten.
Hauptmerkmale
-
KY-040 mechanischer Drehencoder
-
Endlos drehbar – kein mechanischer Drehanschlag
-
Drehung in beide Richtungen
-
Inkrementelle Positionserfassung
-
Zwei digitale Encodersignale: CLK und DT
-
Erkennung der Drehrichtung
-
Integrierter Drucktaster
-
5-polige Anschlussschnittstelle
-
Digitale Signalausgabe
-
Geeignet für 3,3V- und 5V-Mikrocontroller bei passender Beschaltung
-
Kompakte Leiterplatte
-
Zwei Befestigungsbohrungen
-
Ideal für Arduino, ESP32 und Raspberry Pi
-
Inklusive Drehknopf gemäß Produktabbildung
Technische Daten
| Eigenschaft |
Spezifikation |
| Modell |
KY-040 |
| Produkttyp |
Mechanischer Drehencoder |
| Encoder-Typ |
Inkrementell |
| Drehbereich |
Endlos, 360° und mehr |
| Drehrichtung |
Im Uhrzeigersinn / gegen Uhrzeigersinn |
| Ausgangssignale |
CLK und DT |
| Ausgangstyp |
Digitale Kontaktsignale |
| Integrierter Taster |
Ja |
| Tasterausgang |
SW |
| Versorgung |
Typischerweise 3,3V oder 5V |
| Anzahl Anschlüsse |
5 |
| Anschlussbezeichnungen |
CLK, DT, SW, +, GND |
| Montage |
Leiterplatte mit 2 Befestigungsbohrungen |
| Achse |
Metall |
| Drehknopf |
Im abgebildeten Set enthalten |
| Schnittstelle |
Digitale GPIO-Signale, kein I²C oder SPI |
Hinweis: Die genaue Anzahl der Rastpositionen und Impulse pro Umdrehung ist in den vorliegenden Produktdaten nicht spezifiziert und kann je nach Encoder-Ausführung variieren.
Funktionsweise des Rotary Encoders
Der KY-040 erzeugt beim Drehen zwei digitale Signale, die zeitlich gegeneinander versetzt sind.
Diese Signale werden als Quadratursignale bezeichnet.
CLK – Signal A
Der CLK-Ausgang liefert die erste Signalfolge des Encoders.
DT – Signal B
Der DT-Ausgang liefert eine zweite, phasenverschobene Signalfolge.
Durch den Vergleich beider Signale erkennt der Mikrocontroller die Drehrichtung.
Je nach Drehrichtung führt eines der beiden Signale das andere zeitlich an.
Drehrichtungserkennung
| Bewegung |
Auswertung |
| Drehung im Uhrzeigersinn |
Zähler erhöhen |
| Drehung gegen Uhrzeigersinn |
Zähler verringern |
| Keine Drehung |
Zähler unverändert |
Die tatsächliche Zählrichtung hängt von der Anschlussbelegung und der verwendeten Software ab.
360°-Drehung – Was bedeutet das?
Der KY-040 lässt sich kontinuierlich in beide Richtungen drehen.
Anders als ein 270°-Potentiometer besitzt der Encoder keinen festen Anfangs- oder Endpunkt.
Dadurch können Werte beliebig erhöht oder reduziert werden.
Beispielsweise:
-
Lautstärke von 0 bis 100 einstellen
-
Menüeinträge auswählen
-
Drehzahl-Sollwert verändern
-
Helligkeit einstellen
-
Parameter in einem Display-Menü ändern
Wichtig: Der KY-040 ist ein inkrementeller Drehencoder. Er liefert keine absolute Winkelposition von 0–360°.
Nach einem Neustart kennt der Mikrocontroller die vorherige Drehposition nicht automatisch. Dafür müsste der Positionswert separat gespeichert oder eine Referenzierung durchgeführt werden.
Integrierter Drucktaster
Durch Drücken auf die Drehachse wird ein zusätzlicher mechanischer Taster betätigt.
Dieser ist unabhängig von der Drehbewegung nutzbar.
Typische Funktionen
Damit können Drehen und Drücken mit einem einzigen Bedienelement kombiniert werden.
Anschlussbelegung – KY-040
Das Modul besitzt fünf Anschlüsse.
| Anschluss |
Funktion |
| CLK |
Encodersignal A |
| DT |
Encodersignal B |
| SW |
Ausgang des integrierten Drucktasters |
| + |
Versorgungsspannung |
| GND |
Masse |
Die tatsächliche Reihenfolge ist anhand der Beschriftung auf der gelieferten Platine zu überprüfen.
Anschluss an Arduino UNO
| KY-040 |
Arduino UNO |
| CLK |
D2 |
| DT |
D3 |
| SW |
D4 |
| + |
5V |
| GND |
GND |
Die GPIO-Pins sind frei wählbar, sofern sie zur verwendeten Software passen.
Anschluss an ESP32
| KY-040 |
ESP32 |
| CLK |
GPIO 18 |
| DT |
GPIO 19 |
| SW |
GPIO 21 |
| + |
3,3V |
| GND |
GND |
Wichtig: Für ESP32-Anwendungen sollte das Modul mit 3,3V betrieben werden, damit keine unzulässigen 5V-Pegel an den GPIO-Eingängen anliegen.
Beispielcode für Arduino
Der folgende Beispielcode erkennt die Drehrichtung und liest den integrierten Drucktaster aus.
#define CLK 2
#define DT 3
#define SW 4
int counter = 0;
int lastCLK;
void setup() {
Serial.begin(115200);
pinMode(CLK, INPUT_PULLUP);
pinMode(DT, INPUT_PULLUP);
pinMode(SW, INPUT_PULLUP);
lastCLK = digitalRead(CLK);
}
void loop() {
int currentCLK = digitalRead(CLK);
if (currentCLK != lastCLK && currentCLK == LOW) {
if (digitalRead(DT) != currentCLK) {
counter++;
} else {
counter--;
}
Serial.print("Position: ");
Serial.println(counter);
}
lastCLK = currentCLK;
if (digitalRead(SW) == LOW) {
Serial.println("Taster gedrueckt");
delay(200);
}
}
Der Code ist ein einfaches Funktionsbeispiel. Für eine zuverlässige Auswertung bei schnellen Drehbewegungen sollte eine geeignete Entprellung beziehungsweise Encoder-Bibliothek eingesetzt werden.
KY-040 vs. Potentiometer vs. AS5600
| Eigenschaft |
KY-040 |
10K Potentiometer |
AS5600 |
| Sensortechnologie |
Mechanische Kontakte |
Widerstandsbahn |
Magnetisch |
| Messprinzip |
Inkrementelle Schritte |
Analoge Position |
Absoluter Winkel |
| Drehbereich |
Endlos |
Meist begrenzt |
360° |
| Ausgang |
Digitale Quadratursignale |
Analoge Spannung |
I²C / analog bzw. PWM, je nach Ausführung |
| Absoluter Winkel nach Neustart |
Nein |
Ja, innerhalb des Drehbereichs |
Ja |
| Integrierter Drucktaster |
Ja |
Modellabhängig |
Nein |
| Kontaktverschleiß |
Möglich |
Möglich |
Kontaktlose Winkelmessung |
| Typische Anwendung |
Menü- und Wertesteuerung |
Analoge Sollwertvorgabe |
Winkel- und Positionsmessung |
Der KY-040 ist besonders für die manuelle Bedienung geeignet. Für die präzise absolute Winkelmessung einer Welle sind magnetische Encoder wie der AS5600 oder MT6701 besser geeignet.
Typische Anwendungen
-
Arduino- und ESP32-Projekte
-
Raspberry-Pi-Bedienpanels
-
Menü- und Displaysteuerungen
-
Lautstärkeregler
-
Digitale Drehzahlvorgaben
-
DIY-Labornetzteile
-
CNC-Bedienpanels
-
3D-Drucker-Steuerungen
-
MIDI-Controller
-
Flight-Simulator-Panels
-
Robotik
-
Smart-Home-Steuerungen
-
Elektronische Messgeräte
-
Individuelle Bedienoberflächen
Montage und Verwendung
Das Modul besitzt zwei Befestigungsbohrungen zur mechanischen Montage.
Der Drehencoder kann beispielsweise hinter einer Frontplatte befestigt werden, sodass nur die Metallachse mit dem Drehknopf herausragt.
Für eine zuverlässige Bedienung sollte die Leiterplatte mechanisch stabil befestigt werden.
Wichtige Hinweise
-
Der KY-040 ist ein mechanischer, inkrementeller Drehencoder.
-
Er liefert keine absolute Winkelposition.
-
Die Achse ist endlos drehbar.
-
Der integrierte Drucktaster besitzt einen separaten Ausgang.
-
Mechanische Kontakte können prellen; eine Software-Entprellung wird empfohlen.
-
Die Ausgangssignale sind digitale Kontakte und keine analogen Spannungswerte.
-
Das Modul verwendet weder I²C noch SPI.
-
Bei ESP32 und anderen 3,3V-Mikrocontrollern die zulässigen GPIO-Spannungen beachten.
-
Der Encoder ist für manuelle Bedienelemente vorgesehen und nicht als hochauflösender Motor-Drehzahlsensor ausgelegt.
-
Die genaue Impulszahl pro Umdrehung ist von der gelieferten Ausführung abhängig.
Lieferumfang