Drehgeber -> Up/Down
Drehgeber oder auch Inkrementaldrehgeber sind, obwohl sie etwas
schwer (leider) beschaffbar sind, für Bastler recht attraktiv.
Gerade die Bedienung für den Benutzer, aber auch der Implementierungsaufwand für
Mikrocontroller sind ziemlich angenehm.
Dumm nur, wenn man bereits ein Gerätchen hat, das nur über Up/Down-Taster
verfügt und auch noch für jeden Schritt einzeln drücken muss.
Im
DSE-FAQ wird das Thema angesprochen, der Aufbau mit Logikbausteinen sieht
ehrlich gesagt geisteskrank aus und ich denke, niemand wird sich so etwas
freiwillig antun wollen.
Ein kleiner Mikrocontroller kann das doch auch erledigen!
Ein PIC12F629 liegt herum - 8 Beinchen, 5 davon kann man ohne Probleme als I/Os
verwenden: perfekt!
Die äußere Beschaltung hält sich dank interner Pull-Ups relativ gering. Mit
entsprechendem Programmer ist nicht einmal R1 für MCLR notwendig.
Das Bild zeigt die Version mit der Low-aktiven Ausgängen, nützlich um LEDs
nutzlos blinken zu lassen oder Taster, die gegen GND geschaltet wurden, zu
ersetzten.

Die Software ist recht einfach gestrickt, ein bisschen Hintergrundwissen über die Drehgeber schadet in dem Zusammenhang wahrscheinlich nicht ;)
Eigentlich alle Drehgeber haben eine Maske, die dem
Gray-Code
entspricht:
![]()
Das schöne gegenüber dem Binär-Code ist, dass sich beim hoch zählen immer nur
eine Datenleitung ändert. Ein undefiniertes Signal wie beim Binärcode ist also
viel schwieriger zu erreichen. Der Nachteil darin liegt, dass eigentlich alle
Computer auf dem Binärsystem basieren und man erst herumrechnen muss, bis mal
etwas brauchbares hat.
Beim Drehgeber sieht das nun folgendermaßen aus: Jeder Schritt
am Drehgeber stellt eine Flanke am Diagramm dar.
Das Umrechnen vom Gray- auf das Binärsystem ergibt sich eine kleine
Besonderheit: wenn man die zwei Leitungen vertauscht, kommt statt 0, 1, 2, 3
nicht 0, 2, 1, 3 heraus, sondern statt 0, 1, 2, 3 "nur" 3, 2, 1, 0. Deshalb ist
es auch relativ egal, wie herum man den Drehgeber an den IC anschließt. Je nach
Anschluss ist entweder GP5 oder GP4 der Ausgang von Up bzw. Down.
In der Software wird der Wert eines Eingangs direkt in eine
Variable geschoben; wenn der zweite Eingang high ist, wird auf die Variable ein
XOR mit 3 angewendet - schon hat man einen dezimalen Wert. Im Folgenden wird die
Differenz zwischen dem aktuellen Wert der Variable mit dem letzten geprüft.
Wenn eine Positionsänderung festgestellt wird, wird der Ausgang der
entsprechenden Richtung aktiviert und nach etwa 20ms wieder abgeschaltet.
Im ganzen ergibt dies schlanke 81 Words auf dem Controller, was in der
kostenpflichtigen Version auf 75 Words reduziert werden könnte. Die Performance
des ICs reicht bei internem Takt (ca. 4MHz) auch für etwas beherztere Drehungen,
wobei der größte Performancefresser die Pausen darstellen. Je nach Endgerät
können die Pausen noch etwas reduziert werden.
Da die Downloadseite etwas buggy ist, gibt es die Dateien direkt auf dieser Seite.
Download:
drehgeb.zip 2KB
letzte Änderung 27.08.2006