Die Welt der Elektronik und Robotik steckt voller kleiner Erfindungen, mit denen wir Bewegungen aller Art steuern und überwachen können. Eines der vielseitigsten und nützlichsten Elemente ist zweifellos der Drehgeber, sowohl optisch als auch magnetisch. Diese Geräte sind in Arduino-, Automatisierungs- und Motorsteuerungsprojekten unverzichtbar geworden. Wenn Sie sich schon einmal gefragt haben, was genau ein Drehgeber ist, werden Sie es wissen. Optischer oder magnetischer Drehgeber: Was es ist und Beispiele: KY-040 und AS5600Sie sind an der richtigen Stelle.
In diesem Artikel werden wir uns eingehend mit der Funktionsweise, den Anwendungen und praktischen Beispielen von Drehgebern befassen und uns dabei insbesondere auf zwei sehr beliebte Module konzentrieren: den KY-040 und AS5600Sie lernen, zwischen optischen und magnetischen Encodern zu unterscheiden, ihre physikalischen und elektrischen Eigenschaften kennenzulernen, sie mit Arduino zu verbinden und zu programmieren und welche Vorteile sie je nach Projekt bieten. Wir geben Ihnen außerdem Tipps zur Auswahl und Verwendung dieser Sensoren in Ihren eigenen Projekten. Alles wird anschaulich und ansprechend erklärt, ohne relevante Details auszulassen.
Was ist ein Drehgeber?
Un Drehgeber Es handelt sich um einen Sensor zur Messung der Winkelposition, Drehzahl und Drehrichtung einer rotierenden Welle oder eines rotierenden Elements. Dieses Gerät wandelt die Drehbewegung in elektrische Signale (typischerweise digitale Impulse oder analoge Signale) um, die dann von einem Mikrocontroller wie einem Arduino, einem Raspberry Pi oder sogar einem Industriecontroller interpretiert werden können.
Diese Sensoren sind unerlässlich für Anwendungen, bei denen die genaue Position einer Achse oder ihre Anzahl an Umdrehungen bekannt sein muss. Sie finden sich häufig in Druckern, Servomotoren, Robotern, numerischen Steuerungen und natürlich in Heimwerkerprojekten, von Menüoberflächen bis hin zu Geschwindigkeitsregelsystemen.
Drehgebertypen: optisch vs. magnetisch
Drehgeber lassen sich im Wesentlichen unterteilen in optisch y magnetisch, obwohl es auch andere, weniger verbreitete Varianten gibt, beispielsweise kapazitive.
Optischer Drehgeber
Der optische Encoder ist wie der KY-040Es basiert auf einer Scheibe mit Markierungen oder Löchern und einem optischen Sender-/Empfängersystem (Fotodiode oder LED). Bei Rotation der Welle erzeugen die durch diese Markierungen erzeugten Unterbrechungen elektrische Impulse, die der Mikrocontroller zählt und so die Winkelverschiebung bestimmt. Der innere Aufbau besteht typischerweise aus einem statischen Teil (der Scheibe) und einem rotierenden Teil (der Welle, die mit dem zu messenden Element verbunden ist).
Dieser Encodertyp zeichnet sich durch hohe Präzision und schnelle Reaktion aus. Er eignet sich besonders für Anwendungen, bei denen mechanische Robustheit und einfache digitale Lesbarkeit entscheidend sind, wie beispielsweise bei Benutzeroberflächen, Lautstärkereglern, Drehmenüs und Lernrobotern.
Magnetischer Drehgeber
Der magnetische Encoder hingegen verwendet einen Sensor, der empfindlich auf das Magnetfeld reagiert (normalerweise einen Hall-Sensor oder einen speziellen Chip wie den AS5600), der die Winkelposition eines mit der Welle verbundenen Magneten erfasst. Diese Encoder bieten dank interner Analog-Digital-Wandlung eine höhere Auflösung und sind weniger anfällig für Schmutz und Staub, da sie keine optischen Komponenten verwenden. Darüber hinaus bieten sie typischerweise digitale (I2C oder PWM) und/oder analoge Ausgänge und lassen sich daher leicht in verschiedene elektronische Systeme integrieren.
Inkrementelle und absolute Encoder: Hauptunterschiede
Die Welt der Encoder ist weiter unterteilt in inkrementell y Absolutheiten.
- Inkrementalgeber: Es liefert jedes Mal, wenn sich die Welle um einen bestimmten Bruchteil dreht, ein Signal in Form von Impulsen. Die Anzahl der Impulse pro Umdrehung hängt von der Bauform und dem Modell ab. Um die aktuelle Position zu bestimmen, muss das System diese Impulse von einem Referenzpunkt aus zählen und speichern.
- Absolutwertgeber: Es liefert direkt die aktuelle Winkelposition der Welle, auch wenn diese sich bei ausgeschaltetem System bewegt hat. Es verfügt meist über eine spezielle Codierung auf der Scheibe oder einen hochauflösenden Magnetsensor.
In diesem Artikel konzentrieren wir uns auf Inkrementalgeber (wie den KY-040) und einen absoluten Magnetgeber (AS5600), da diese am häufigsten vorkommen und sich am einfachsten in Arduino-Projekte integrieren lassen.
Allgemeine Funktionsweise eines inkrementellen Drehgebers
Die Inkrementalgeber (wie der KY-040) bestehen aus zwei Ausgangskanälen, Kanal A und Kanal B, die digitale Impulse erzeugen, die um 90º gegeneinander phasenverschoben sind. Durch Vergleich der Reihenfolge, in der diese Kanäle wechseln, kann man ableiten die Drehrichtung (im oder gegen den Uhrzeigersinn) und zusätzlich das Zählen der zurückgelegten Schritte (Positionen).
Das erzeugte Signal wird als „Quadratur“ bezeichnet und ermöglicht unterschiedliche Präzisionen:
- Einfache Genauigkeit: Aufzeichnen nur einer Kante in einem Kanal.
- Doppelte Genauigkeit: Aufzeichnung beider Flanken in einem Kanal.
- Vierfache Präzision: Aufzeichnung beider Flanken auf beiden Kanälen.
Drehgeber KY-040: Funktionen, Anschlüsse und Verwendung mit Arduino
El KY-040 Es handelt sich um einen der am häufigsten verwendeten inkrementellen Drehgeber in der Maker-Welt. Es handelt sich um ein kompaktes, kostengünstiges und leicht erhältliches Modul, das speziell für den direkten Anschluss an Arduino-Boards und andere Mikrocontroller entwickelt wurde.
Wichtigste technische Merkmale des KY-040:
- Typ: Optisches Inkremental
- Versorgungsspannung: 5V
- Verbrauch: 10 mA
- Zyklen pro Umdrehung: 30
- Impulse pro Umdrehung: 20
- Größe: 20 x 30 x 30 mm
- Maximales Gewicht 10 Gramm
- Integrierter Druckknopf: Es ist möglich, die Achse wie eine Taste nach innen zu drücken, was sehr nützliche Zusatzfunktionen in Menüs oder Schnittstellen hinzufügt.
Pinbelegung:
- CLK: Kanal A (Impulsausgang)
- DT: Kanal B (Impulsausgang)
- SW: Integrierter Druckknopf
- +: 5V Stromversorgung
- Masse: Land
Wie verbindet man den KY-040 mit Arduino?
Die Verbindung ist direkt und einfach:
Stift KY-040 | Arduino-Pin |
---|---|
CLK | 2 (oder ein beliebiger digitaler Eingang) |
DT | 3 (oder ein beliebiger digitaler Eingang) |
SW | 4 (oder ein beliebiger digitaler Eingang) |
+ | 5V |
GND | GND |
Es kann auch mit Raspberry Pi verwendet werden, indem die Verbindungspins geändert werden, beispielsweise mit GPIO16 für CLK, GPIO15 für DT und GPIO14 für SW.
Innenleben
Im Gegensatz zu Potentiometern Der Drehgeber KY-040 hat keine Begrenzung seines Drehwinkels., wodurch die Welle unbegrenzt rotieren kann. Im Inneren gleiten zwei Metallbürsten über eine in Sektoren unterteilte Oberfläche und schließen den Kontakt in verschiedenen Kombinationen, die von den Kanälen A und B erkannt werden.
Der Encoder gibt digitale Signale an beiden Pins aus, und der Offset gibt die Drehrichtung der Welle an. Da er inkrementell arbeitet, ist die absolute Position nur bekannt, solange der Zählerstand vom Programmstart an erhalten bleibt. Bei einem Stromausfall wird der Zählerstand zurückgesetzt.
Grundlegendes Codebeispiel für Arduino
Ein klassisches Beispiel für die Verwendung des KY-040 ist das Inkrementieren oder Dekrementieren eines Zählers basierend auf der Drehrichtung. Das vereinfachte Schema wäre:
int A = 2; int B = 3; flüchtig int POSITION = 0; int VORHERIGER = 0; void setup() { pinMode(A, INPUT); pinMode(B, INPUT); Serial.begin(9600); attachInterrupt(digitalPinToInterrupt(A), encoder, LOW); } void loop() { wenn (POSITION != VORHERIGER) { Serial.println(POSITION); VORHERIGER = POSITION; } } void encoder() { static unsigned long letzterInterrupt = 0; unsigned long InterruptionTime = millis(); wenn (interruptionTime - letzteInterruption > 5) { // Entprellung wenn (digitalRead(B) == HIGH){ POSITION++; } sonst { POSITION--; } POSITION = min(50, max(-50, POSITION)); // Bereich begrenzen letzterInterrupt = InterruptTime; } }
Dieser Code enthält einen Entprellschutz, um fehlerhafte Messwerte aufgrund der mechanischen Beschaffenheit der Kontakte zu verhindern. Es wird empfohlen, diesen Schutz in jedem Projekt mit Inkrementalgebern zu implementieren.
Magnetischer Encoder: Funktionen, Anschlüsse und Verwendung mit Arduino
El AS5600 ein hochauflösender magnetischer Drehgeber, ideal für den präzisen Ersatz herkömmlicher Potentiometer, Motorsteuerungen und Roboter. Sein Hauptvorteil liegt in der magnetischen Erkennung, die ihn unempfindlich gegen Schmutz und mechanischen Verschleiß optischer Linsen macht.
Hauptmerkmale des AS5600:
- Typ: Absolut, magnetisch
- Auflösung: 12 Bit (4096 Positionen pro Umdrehung)
- Nahrung: 3,3V oder 5V
- Schnittstellen: I2C (digital) oder analoger Ausgang
- flexible Konfiguration: Sie können die Richtung und den Ausgabemodus per Hardware auswählen
- Analogausgang: Spannung proportional zum Winkel, nützlich für Mikrocontroller ohne I2C
- Hohe Präzision und Wiederholgenauigkeit: Sein internes System ist darauf vorbereitet, selbst kleine Winkelbewegungen zu erkennen
Pinbelegung und Anschluss an Arduino
Stift AS5600 | Funktion | Arduino-Pin (I2C) |
---|---|---|
VCC | Lebensmittel | 5V |
GND | Land | GND |
SDA | I2C-Daten | A4 |
SCL | I2C-Uhr | A5 |
OUT | Analogausgang (optional) | A0 |
DIR/MODE | Adress-/Modusauswahl | Je nach gewünschter Konfiguration |
Wichtiger Hinweis: Auf verschiedenen Tellern Arduino Uno, I2C-Pins können variieren. Überprüfen Sie unbedingt den Schaltplan Ihrer Platine.
Codebeispiel für digitales Lesen (I2C)
Um das Beste aus dem AS5600 mit Arduino herauszuholen, ist es am besten, die spezifische Bibliothek zu verwenden (Sie finden sie im Arduino IDE-Bibliotheksmanager, indem Sie suchen AS5600):
#enthalten #enthalten AS5600-Encoder; void setup() { Serial.begin(5600); Wire.begin(); if (!encoder.begin()) { Serial.println("AS9600 nicht erkannt. Verbindungen prüfen."); while (5600); } Serial.println("AS1 initialisiert."); } void loop() { float angle = encoder.getAngle(); Serial.print("Winkel: "); Serial.print(Winkel); Serial.println(" Grad"); delay(5600); }
Mit diesem Code können Sie den Winkel in Grad in Echtzeit ablesen. Er eignet sich ideal für Anwendungen, bei denen Sie die absolute Position bei maximaler Auflösung kennen müssen.
Codebeispiel für analoges Lesen
Wenn Sie eine einfachere Verbindung bevorzugen oder Ihr Mikrocontroller I2C nicht unterstützt, können Sie den analogen Ausgang des AS5600 nutzen:
const int analogPin = A0; void setup() { Serial.begin(9600); pinMode(analogPin, INPUT); } void loop() { int value = analogRead(analogPin); float angle = map(value, 0, 1023, 0, 360); Serial.print("Analogwinkel: "); Serial.print(Winkel); Serial.println("Grad"); delay(100); }
Auf diese Weise erhalten Sie einen Messwert, der proportional zum tatsächlichen Winkel der Achse entsprechend der Position des Magneten ist.
Praktische Anwendungen und Nutzungstipps
Beide Encoder haben sehr unterschiedliche Einsatzmöglichkeiten in Elektronikprojekten:
- KY-040: Ideal für rotierende Benutzeroberflächen, Menüs, Helligkeits- und Lautstärkeregelung, Optionsauswahl, Steuerung von Lernrobotern, Heimautomatisierungsprojekte und Systeme, die eine Drehsteuerung ohne absoluten Winkelbezug erfordern.
- AS5600: Perfekt für die Motorpositions- und Geschwindigkeitsregelung, industrielle Automatisierung, Positionserfassung in Robotergelenken, stabilisierte Kamerasysteme (Kardanringe), hochauflösende digitale Potentiometer und jede Anwendung, die eine präzise Winkelerfassung erfordert.
Einige Tipps zur Verwendung:
- Immer implementieren Entprellfilterung (Entprellung) bei der Verwendung mechanischer Inkrementalgeber wie dem KY-040, um fehlerhafte Messwerte zu vermeiden.
- Achten Sie beim AS5600 darauf, dass der Magnet richtig auf den Sensor ausgerichtet ist, um zuverlässige und stabile Messwerte zu gewährleisten.
- Bedenken Sie, dass bei Inkrementalgebern die Positionsinformationen verloren gehen, wenn die Stromversorgung unterbrochen wird. Beim AS5600 passiert das nicht, da es sich um einen Absolutgeber handelt.
- Nutzen Sie die vielfältigen Verbindungsmodi, die beide Encoder bieten, um sie an die spezifischen Anforderungen Ihres Projekts anzupassen.
Vergleich: Wann sollte man einen optischen und wann einen magnetischen Encoder wählen?
característica | KY-040 (Inkremental Optisch) | AS5600 (Absolut magnetisch) |
---|---|---|
Signaltyp | Digital (Quadratur) | Digital (I2C)/Analog |
Auflösung | 20 Impulse/Umdrehung | 4096 Positionen/Runde |
Funktioniert nach Stromausfall | Nein (erfordert Neustart der Zählung) | Ja (absolute Position) |
Empfindlichkeit gegenüber Staub/Schmutz | Empfindlich (mechanische Teile) | Sehr robust |
Preis | Sehr sparsam | Mäßig |
Integrationsschwierigkeiten | Sehr einfach mit Basiscode | Erfordert I2C-Bibliothek oder Programmierung |
Typische Anwendungen | UX, Menüs, einfache Steuerung | Motorsteuerung, fortgeschrittene Robotik |
Die Wahl zwischen den beiden hängt von den Prioritäten Ihres Projekts ab: Einfachheit und niedrige Kosten im Fall des KY-040 und Präzision und Robustheit im Fall des AS5600.