Als Inkrementalgeber werden Sensoren zur Erfassung von Lageänderungen (linear) oder Winkeländerungen (rotierend) bezeichnet, die Wegstrecke und Wegrichtung bzw. Winkelveränderung und Drehrichtung erfassen können. Weitere Bezeichnungen rotierender Geber sind Inkrementaldrehgeber, Drehimpulsgeber oder allgemeiner Drehgeber. Gegenüber kontinuierlich arbeitenden Messsystemen wie Servo-Potentiometern besitzen Inkrementalgeber eine Maßverkörperung mit sich wiederholenden, periodischen Teilstrichen. Die Messung beruht auf einer Richtungsbestimmung und einer Zählung (Digitale Messtechnik). Inkrementalgeber müssen (im Gegensatz zu Absolutwertgebern) nach dem Einschalten gegebenenfalls referenziert werden, da Änderungen der Position in ausgeschaltetem Zustand nicht erfasst werden.
Funktionsweiße und Zählung eines Inkrementalgebers
Inkrementalgeber können mit Schleifkontakten, photoelektrisch oder magnetisch arbeiten. Sie liefern am Ausgang immer zwei um 90 Grad gegeneinander phasenverschobene Signale anhand derer sich Drehrichtung und -winkel bestimmen lassen. Damit gibt es 4 verschiedene Zustände an den PINs A und B und über diese 4 Zustände lässt sich sowohl die Drehrichtung wie auch die Schritte zählen. Folgt auf ein EIN-AUS ein EIN-EIN Signal, wird nach rechts gedreht. Folgt auf ein EIN-AUS Signal ein AUS-AUS Signal wird nach links dreht usw.
Inkrementalgeber und Encoder Anschluss an den Arduino:
- Die meisten Inkrementalgeber haben 5 Anschlüsse
- CLK: Arduino PIN 3
- DT: Arduino PIN 2
- SW: Arduino PIN 4
- +: VCC 5 Volt vom Arduino
- GND: - 5 Volt vom Arduino
Ardublock Software
Es gibt 2 Möglichkeiten einen Inkrementalgeber mit Ardublock zu Programmieren. Wenn du die Ardublock Maxi oder experimentell Version verwendest, kannst du auf fertige Blöcke zurückgreifen. Über eine Variable kannst du nun die Position bzw. die Schritte auslesen und speichern. Vorwärts und Rückwärts, genauso wie positive und native Zahlen, errechnet Ardublock automatisch. Über den Block "Set Position", wird der Wert des Encoders überschrieben.
Dies kann zum Beispiel wichtig werden wenn nur bis zu einer bestimmten Zahl gezählt werden soll. Dafür sind die beiden unteren "falls" Blöcke verantwortlich. Mit diesen wird nun nicht mehr als 50 und nicht weniger als 0 gezählt.
Wer eine andere Version von Ardublock verwendet, wie zum Beispiel die Ardublock Version von LetsgoING, der muss auf die CODE Blöcke zurück greifen.
- "Code im globalen Bereich einfügen"
- #include <Encoder.h>
- Encoder myEnc(2, 3);
- Loop
- long newPosition = myEnc.read(); if (newPosition != oldPosition) { oldPosition = newPosition;}
Nun ist die Position bzw. die Schritte des Encoders in der Variablen (newPosition) gespeichert und kann über eine Lila Klammer abgefragt werden.
Hier das ganze Beispiel: