Drehencoder und ihre Verwendung mit Arduino-Platinen

Veröffentlicht von

Sie können zahlreiche Projekte mit Komponenten wie Tasten oder Slider Inputs steuern. Was aber, wenn für Ihren Build ein Knopf erforderlich ist? Wenn für Ihr Projekt ein Drehwinkelgeber benötigt wird, stehen zwei Möglichkeiten zur Auswahl: entweder ein Potentiometer oder ein Drehgeber.

 Potentiometer, die den Widerstand je nach Knopfposition variieren, sind einfacher und häufig eine solide Wahl. Aber sie können (bislang) nur im oder gegen den Uhrzeigersinn gedreht werden. Wenn Sie etwas benötigen, das sich kontinuierlich in beide Richtungen drehen kann, ist ein Drehgeber die optimale Wahl. Wenn Sie sich zwischen den beiden nicht entscheiden können, hilft Ihnen vielleicht unser Vergleich von Encodern und Potentiometern, die richtige Antwort zu finden.

Encoder werden in zwei grundlegenden Ausführungen angeboten:

1. Inkrementelle Encoder nutzen eine Reihe von Impulsen in einer Quadraturanordnung, um anzuzeigen, wie weit und in welche Richtung sich eine Welle dreht.

2. Absolut-Encoder kennen grundsätzlich ihre Winkelposition.

In diesem Artikel geht es hauptsächlich um inkrementelle Encoder – dieser Encodertyp wird am häufigsten verwendet. Auch Encoder mit einzelnem Ausgang (auch bekannt als Tachometer) sind erhältlich, aber diese sind erheblich weniger nützlich, da sie nicht die Richtung einer Welle anzeigen, sondern nur, wie weit sie sich gedreht hat. In unserem Artikel werden die verschiedenen Encodertypen genauer besprochen. Heute geht es um die Grundlagen der Funktionsweise eines inkrementellen Encoders und die Herstellung einer Verbindung mit einer Arduino-Platine.

Quadratur-Encoder erklärt

Bildunterschrift: Quadratur-Diagramm für Encodersignale A und B. Ein steigende Flanke bei B und ein niedriges Signal bei A bedeutet eine Verschiebung nach rechts in diesem Muster. Eine absteigende Flanke bei A mit B hoch bedeutet eine Verschiebung nach links.

Im Mittelpunkt der meisten Encoders liegen die Ausgänge A und B, die kontinuierlich und schrittweise pulsieren. Diese Ausgänge sind bei Bedarf mit Leistung und Masse kombiniert. Die Ausgänge A und B sind „quadratur-verschlüsselt“, was bedeutet, dass jedes Signal einen Arbeitszyklus von 50 % hat (Hälfte der Zeit ein, Hälfte der Zeit aus). Und so funktioniert es:

- Jeder Arbeitszyklus ist um 90° zum anderen phasenverschoben; ein Ausgang ändert sich nach Ablauf der halben Dauer, die der andere zum Ändern des Zustands braucht.

- Ein angeschlossener Mikrocontroller oder eine spezielle Platine wandelt diese Impulse in ein Drehungsinkrement um, und die Impulsfolge gibt an, in welche Richtung sich die Welle gedreht hat.

Wie im obigen Diagramm dargestellt, verschiebt sich die Position in diesem Muster nach rechts, wenn das Signal B steigt, während sich A in einem niedrigen Zustand befindet. Wenn allerdings das Signal B steigt, während sich A bereits in einem hohen Zustand befindet, findet eine Verschiebung nach links statt. Zusammen mit den Ansteigen und Abfallen des Signals A ergeben sich vier verschiedene Zustände für jede Linie:

Dasselbe Signalmuster ist für Signal A verfügbar, sodass man acht mögliche Übergänge und vier in jeder Richtung erhält. Wenn dieses Muster in einem Zyklus wiederholt wird, verfügen Sie über die Grundlagen für einen Quadratur-Drehgeber.

1. B steigend, A niedrig

2. B absteigend, A hoch

3. B steigend, A hoch

4. B absteigend, A niedrig

Encoder-Verwendung mit Arduino

 Wir werden zwei Encodertypen mit dem Arduino verbinden:

- Kontakt-Encoder: kleiner, in der Regel als Schnittstellengerät verwendet.

- Optischer Encoder (LPD3806-600BM-G5-24C): größere Ausführung mit Lagerträger, im Allgemeinen zur Messung der Motordrehzahl.

Führen Sie folgende Schritte aus, wenn Sie den kleineren Encoder verwenden:

1. Verbinden Sie die mittlere Leitung mit der Masse.

2. Befestigen Sie einen äußeren Anschluss an D2 und den anderen an D3; es ist keine positive Spannung notwendig.

Führen Sie beim größeren Encoder diese Schritte aus:

1.  Schließen Sie das rote Netzkabel an +5 V und das schwarze Kabel an Masse an.

2. Verdrahten Sie die Leitungen A und B (grün und weiß) an Arduino D2 und D3.

3. Beachten Sie, dass Verbindungen, Spannungsanforderungen und Farbschemata je nach Ihrer Umsetzung variieren.

Arduino Encodercode

Bild: Jeremy S. Cook

Wenn Sie verstanden haben, wie die A und B Leitungen eines Encoders mit der Drehung Impulse liefern, muss diese Eingabe in einen Code übersetzt werden, um einen nützlichen Ausgang zu erhalten. Dieser Schritt ist in der Theorie einfach, in der Praxis jedoch kompliziert. Sie können den Beispielcode hier finden (zusammen mit einem 3D-bedruckbaren Oberteil, um die Prüfung zu vereinfachen). Das Oberteil ist zwar nicht perfekt, aber direktional genau und zeigt, wie ein Encoder funktioniert. Wenn der Mikrocontroller von Arduino einen Übergang zwischen hoch und niedrig an einer Linie erfasst, vergleicht er die Zustände der beiden Linien und addiert oder subtrahiert ein Inkrement.

Stellen Sie sicher, D2 und D3 auszuwählen, da diese in zahlreichen Arduino-Platinen die einzigen beiden Eingänge für den ATmega328 sind, die eine Unterbrechung erzeugen können. Wenn ein Übergang hier erkannt wird, geht er also sofort in eine Lese-Routine über, anstatt darauf zu warten, dass die Logik des Programms ihn aufruft.

Denken Sie auch an den Millis()-Debounce-Code, der einen Eingang wiedergibt, der sich zwischen Zuständen bei einem Übergang schnell ändert und eventuell für eine kurze Zeit rasch verbunden und getrennt wird. Während dieser Code bei einigen Anwendungen gut funktioniert und Ihnen helfen kann, die Funktionsweise von Encodern zu verstehen, ist es nicht einfach, Ablesungen mit 100%iger Genauigkeit zu erhalten.

Der einfache Weg: Encoder-Bibliothek

Der Arduino-Encodercode hilft Ihnen dabei, die Funktionsweise von Encodern zu verstehen. Wenn Sie allerdings nur einen in Ihrem Projekt nutzen möchten, können Sie von der benutzerfreundlichen Bibliothek von Paul Stoffregen profitieren. Erste Schritte:

1. Laden Sie die Encoder-Bibliothek von GitHub herunter.

2. Navigieren Sie im Arduino-IDE zu Sketch ==> Include Library (Bibliothek einfügen) ==> Add .ZIP Library (.ZIP Bibliothek hinzufügen) und fügen „Encoder-master.zip“ hinzu.

3. Nach der Installation sehen Sie unter File (Datei) ==> Examples (Beispiele) ==> Encoder, dass vier Programme aufgeführt sind. Laden Sie das Beispiel „Basic“ hoch und übertragen Sie es auf Ihre Arduino-Platine.

4. Schließen Sie Ihren Encoder so an, dass der positive und negative Pol wie zuvor verbunden sind, aber dieses Mal verlegen Sie die Signaladern A und B zu D5 und D6.

5. Öffnen Sie den seriellen Monitor bei 9600 Baud und Sie werden das genaue Positionsinkrement und -dekrement sehen.

Wie beim optischen Encoder sollte sich die Position ohne Tüftelarbeit ändern. Sie können den seriellen Plotter auch bei derselben Baudrate öffnen. Anstatt nur die Positionsnummern anzuzeigen, wird automatisch eine Grafik der Werte erstellt.

Egal, ob Sie diese als kundenspezifische Schnittstelle oder zur Messung von Drehzahl und Distanz nutzen – Encoder bieten eine hervorragende Drehwinkelgebermethode für Ihr Arduino-Projekt. Die Einstellung von Encodern ist etwas arbeitsaufwendiger als bei anderen Gerätetypen, aber die Ergebnisse lohnen sich.

Neue Beiträge

Leider ergab Ihre Suche kein Ergebnis

Aktuelles über Elektronikkomponenten­

Wir haben unsere Datenschutzbestimmungen aktualisiert. Bitte nehmen Sie sich einen Moment Zeit, diese Änderungen zu überprüfen. Mit einem Klick auf "Ich stimme zu", stimmen Sie den Datenschutz- und Nutzungsbedingungen von Arrow Electronics zu.

Wir verwenden Cookies, um den Anwendernutzen zu vergrößern und unsere Webseite zu optimieren. Mehr über Cookies und wie man sie abschaltet finden Sie hier. Cookies und tracking Technologien können für Marketingzwecke verwendet werden.
Durch Klicken von „RICHTLINIEN AKZEPTIEREN“ stimmen Sie der Verwendung von Cookies auf Ihrem Endgerät und der Verwendung von tracking Technologien zu. Klicken Sie auf „MEHR INFORMATIONEN“ unten für mehr Informationen und Anleitungen wie man Cookies und tracking Technologien abschaltet. Das Akzeptieren von Cookies und tracking Technologien ist zwar freiwillig, das Blockieren kann aber eine korrekte Ausführung unserer Website verhindern, und bestimmte Werbung könnte für Sie weniger relevant sein.
Ihr Datenschutz ist uns wichtig. Lesen Sie mehr über unsere Datenschutzrichtlinien hier.