Logo Ingenieurbüro Michael Schmidt

Interface für inkrementale Drehgeber

Da Potentiometer im digitalen Zeitalter fast ausgestorben sind und darüber hinaus der Winkelbereich in der Regel auf etwa 300Grad beschränkt ist, haben inkrementale Drehgeber heute in vielen Bereichen deren Aufgaben übernommen. Alternativ zwingen einen höchst unergonomische Up- und Down-Tasten dazu, minutenlang den verkrampften Finger draufzuhalten, oder noch schlimmer, Hunderte von Impulsen durch Antippen zu erzeugen. Glücklicherweise finden sich für die Sendereinstellung von Radios, als Laustärkeeinsteller oder zur Parametereinstellung von Meßgeräten immer häufiger wieder Drehknöpfe, hinter denen sich optisch, oder aber preiswerter, mechanisch abtastende Inkrementalgeber verbergen.

Ihnen ist gemeinsam, daß sie eben inkremental arbeiten, d.h. nach dem Ausschalten kann die Elektronik nicht abfragen, in welcher Position sich der Geber befindet. Der typische Signalverlauf der Geber heißt richtig 2-Bit-Gray-Code und wird auch für die Ansteuerung von Schrittmotoren benötigt. Per Definition ändert sich in jedem Schritt genau ein Bit. Die resultierenden vier möglichen Zustände des Codes werden je nach Drehrichtung in verschiedener Reihenfolge durchlaufen.

Gray-Code

Um die Drehrichtung zu erkennen, muß eine Elektronik oder ein angeschlossener Mikrocontroller sich jeweils den letzten Zustand merken. Nur so kann die Reihenfolge bestimmt werden. Dazu gibt es verschiedene mehr oder weniger sinnvolle Schaltungen. Die einfachste ist wohl diese:

Einfache Richtungserkennung

Die Schaltung "verschwendet" jedoch viele Informationen, da nur jede vierte Flanke einen Impuls erzeugt. Daraus ergibt sich eine entsprechend reduzierte Auflösung bezüglich des Drehwinkels. Außerdem kann die Drehrichtung in bestimmten Fällen auch falsch ausgewertet werden. Da im Beispiel das D-Flipflop nur mit der positiven Flanke an B die Drehrichtung speichert, gibt es manchmal einen Fehler.

Signal-Zeit-Plan der einfachen Schaltung

Reagiert die angeschlossene Schaltung auf die negative Flanke von CLK, so wird hier ein Impuls "in die falsche Richtung" erkannt. Muß man einen Wert durch Hin- und Herdrehen sehr genau einstellen, bringt einen das schnell um den Verstand!

Nachtrag:

Wenn man den Takt (CLK) vom Clockeingang des Flipflops abnimmt, also im obigen Beispiel nicht das Signal A, sondern B vom Drehgeber, laufen die Richtungsumschaltung und Flanke an CLK synchron.

Andere Schaltung einer einfachen Richtungserkennung

Das nützt natürlich nur, wenn die nachfolgende Schaltung auch auf die positive Flanke an CLK reagiert. Leider ist das Richtungssignal R/ /L hier immer noch um die Laufzeit des Flipflops verzögert. Für integrierte Zähler ist das ungeeignet und die Flanke wird falsch ausgewertet. Das Problem ist also letztendlich das gleiche.

Signal-Zeit-Plan dieser Variante

Alternativ können die Signale direkt von einem Mikrocontroller ausgewertet werden. Dieser ist dann, je nach dem welche maximale Drehgeschwindigkeit man vorsieht, ziemlich beschäftigt, da er die Signale ständig abtasten muß (Polling). Eine direkte Verbindung des Gebers mit dem Interrupteingang erlaubt dagegen nicht die hohe Auflösung. Der Interrupt kann immer nur auf eine Flanke des Codes reagieren.

Darf's etwas genauer sein?

Die höchste Winkelauflösung läßt sich nur erreichen, indem man mit jeder Flanke an A oder B einen Ausgangsimpuls erzeugt. Diese Impulse kann man z.B. mit einem Exklusiv-ODER-Gatter generieren.

Schaltung der Impulserzeugung

Die R-C-Kombination läßt das Signal immer etwas verzögert an den zweiten Eingang. Dadurch sind die Pegel kurzzeitig unterschiedlich, und es erscheint ein Eins-Impuls am Ausgang.

Signal-Zeit-Plan der Impulserzeugung

Die Impulsdauer beträgt hier etwa t ~ 0,5*R*C für die ansteigende und wesentlich länger für die abfallende Flanke. Bei Verwendung von TTL-LS-Gattern muß der Wert des Widerstands im Bereich 1kOhm bis 3,3kOhm liegen. Für HCMOS darf er auch hochohmiger werden.

Gleichzeitig sollte natürlich das Richtungssignal immer richtig sein. Nach einigem Rechnen ergab sich eine relativ übersichtliche Schaltung. Aus A und B werden mit zwei EXOR-Gattern die Hilfssignale "A ungleich B" (A<>B), und invertiert dazu "A gleich B" (A=B), erzeugt. Daraus lassen sich die Signale /SL und /SR ableiten, die ihrerseits ein RS-Flipflop ansteuern. Am Ausgang steht die Richtungsinformation zur Verfügung.

Wahrheitstafel zur Richtungserkennung

Die Gleichungen lauten:

Setzeingang:
SL = A' * (A<>B) v B' * (A=B)
Rücksetzeingang:
SR = A' * (A=B) v B' * (A<>B)

* = UND-, v = ODER-Verknüpfung

Signal-Zeit-Plan für die Setzeingänge

Die dazugehörige Schaltung ist ein Ausschnitt aus der weiter unten angegebenen Gesamtschaltung. Für die TTL-Gatter kommen z.B. LS- oder HCT-Typen in Frage.

Schaltplan einer Richtungsauswertung

Das oben rechts erzeugte Taktsignal /CLK ist hier active low. Wenn ein Zähler-IC angesteuert wird, so ist es wichtig, auf die Laufzeiten zu achten. Das Richtungssignal darf sich z.B. für den Zähler 74xx191 nur ändern, während das Taktsignal auf Eins liegt.

Die Logik läßt sich natürlich ebensogut in einen GAL-Baustein verpacken. Diese Lösung konnte hier, angesichts des hohen Stromverbrauchs von etwa 45mA, nicht zum Einsatz kommen. Die Halbleiterindustrie hat auch integrierte Bausteine entwickelt, die die gleiche Funktion erfüllen. Ein Beispiel sind die Bausteine LS7083 und LS7084 von LSI Computer Systems, Inc. (LSI/CSI), http://www.lsicsi.com. Sie sind aber schwer erhältlich.

Alternative mit Schrittmotor

Der eigentliche Grund für diese Schaltungsentwicklung war jedoch ein ganz anderer: Es wurde für einen Meßsender nach einer sehr feinfühligen Eingabemöglichkeit gesucht, die darüber hinaus stabil, verschleißfrei und preiswert sein sollte. Ein Anspruch an Serienreife bestand dagegen nicht. Die elektromechanischen Drehgeber fallen wegen ihrer endlichen Lebensdauer aus, und die optischen Winkel-Encoder waren mir schlicht zu teuer. In der Bastelkiste waren aber noch einige Schrittmotoren aus 5 1/4"-Diskettenlaufwerken vorhanden. (Ein weiterer Vorteil gegenüber den sehr leichten Drehgebern ist, daß das Gerät nun nicht mehr vom Tisch rutscht.) Diese Motoren tauchen regelmäßig bei Surplus-Händlern als Restposten auf und sind somit irgendwie immer verfügbar. Es sind in der Regel Hybrid-Schrittmotoren. Der Rotor besteht aus einem axialen Permanentmagneten, an dessen Enden mit Zähnen besetzte Kappen befestigt sind. Beide Kappen sind um eine halbe Zahnbreite gegeneinander versetzt, so daß sich Nord- und Südpole abwechseln.

Ein zerlegter Schrittmotor

Hybrid-Schrittmotoren sind heute am verbreitetsten und in den unterschiedlichsten Ausführungen erhältlich. Teilweise haben sie Schrittweiten von nur 3,6 und 1,8 Grad entsprechend 100 und 200 Schritten pro Umdrehung. Man darf sie nach meinen Erfahrungen keinesfalls aufschrauben. Selbst wenn man den Motor wieder zusammenbekommt, funktioniert er nicht mehr. Offenbar verlieren die Magneten Ihre Remanenz, wenn sich einmal ein Luftspalt aufgetan hat.

Da Motoren mit Permanentmagneten gewissermaßen reversibel zu betreiben sind, eignen sie sich auch als Drehgeber. Schließt man die Spulen an einen Oszillographen an, sieht man, daß auch bei langsamster Drehung nicht unerhebliche Spannungen abgegeben werden. Die Induktionsspannung verläuft bei gleichmäßiger Drehbewegung nahezu Sinusförmig. Bei einer Geschwindigkeit von 1/4 Umdrehung/Minute (vier Minuten für eine volle Drehung!) wurde eine Ausgangsspannung von uss = 20mV ohne Lastwiderstand gemessen.

Mit einem Schmitt-Trigger kann die gewünschte Signalfolge regeneriert werden. Der Bezugspunkt für die Spulen liegt etwa auf halber Betriebsspannung. Die Hysterese wird mit R9 und R10 experimentell so festgelegt, daß jeder Schritt einen Pegelwechsel hervorruft. Werte zwischen 100kOhm und 1MOhm kommen hier in Frage. Die Lastwiderstände R1 und R8 parallel zu den Spulen bedämpfen das Signal und setzen der Drehbewegung einen Widerstand entgegen. Bei dem angegebenen Wert von 10Ohm ist die Bremswirkung schon erheblich.

Schaltplan für die Signalaufbereitung

Die Schaltung hat Anschlüsse für Zwei- und Vierstrang-Motoren, wovon natürlich nur einer angeschlossen wird. Sollte die Signalfolge in die falsche Richtung "drehen", so sind die Spulenanschlüsse für A und B am Eingang zu vertauschen. Kommen HCT-Gatter zum Einsatz, können die Widerstände R13, R14, und in der oberen Schaltung R11 und R12, auch hochohmiger dimensioniert werden.

Die Gesamtschaltung finden Sie weiter unten zum Download.

Minimallösung

Wenn in der anzusteuernden Elektronik ohnehin ein Mikrocontroller werkelt, so kann man auf die Richtungsauswertung unter Umständen verzichten. Es reicht den Gray-Code aus den Schmitt-Triggern an zwei Portpins des Controllers zu führen. Zusätzlich generiert die unten abgebildete Schaltung ein Signal für den Interrupteingang. Dieser wird bei jeder Flanke kurz auf Low-Pegel gezogen. Der Controller sollte daraufhin die Signale A und B auswerten und natürlich speichern. Die Richtungserkennung wird damit in die Software verlagert.

Schaltplan de Minimallösung

Gegenüber der ersten Auswerte-Logik ist der Bauteilbedarf wesentlich geringer. Dafür wird jedoch ein weiterer Portpin des Prozessors benötigt.

Die Gesamtschaltung finden Sie weiter unten zum Download.

Industrielle Drehgeber

Die oben besprochenen optischen und elektromechanischen Geber findet man im Internet unter den verschiedensten Suchbegriffen. Je nach Hersteller und Anwendungsgebiet werden sie als Drehgeber, Drehimpulsgeber, Encoder, Dreh-Encoder, Winkel-Encoder und Inkrementalgeber bezeichnet. Hier einige Beispiele:
(Die Liste erhebt keinen Anspruch auf Vollständigkeit)

Download

Die beschriebenen Schaltungen stehen hier zum Download bereit:

Schaltung mit Richtungsauswertung sm_in1.pdf (22,7kByte)
Minimalschaltung zur Interrupterzeugung sm_in2.pdf (16,9kByte)

Links zum Thema

Zweiter Nachtrag:

Inzwischen gibt es auch Fotos. Zuerst die Schaltung entsprechend sm_in1.pdf:

Aufbau von sm_in1.pdf

Und der nächste Versuch, die Schaltung aus sm_in2.pdf:

Aufbau von sm_in2.pdf