Inkrementalgeber Auswertung4
TJ posted in Atmel, C, Software on Dezember 5th, 2008
Die Zeit der Taster oder sogar Bedienkreuze ist schon lange vorbei.
Seit vielen Jahren werden in Radios, Navis, Handys,etc. so genannte Inkrementalgeber (encoder) eingesetzt. Mit Knopf oder ohne (Taste). Immer öfter werden diese kleinen Dinger auch im Hobbybereich interessant und verwendet. Die Ansteuerung in der Firmware ist zwar recht einfach, jedoch möchte ich euch den Weg erleichtern, so dass keiner das Rad zweimal erfinden muss.
Es ist empfehlenswert die im Datenblatt angegebene Beschaltung mit Entprellung und Strombegrenzung aufzubauen, falls keine vorhanden ist: 10k gegen Vcc, 10k zum µC-Pin und 100nF gegen GND. Die Abfrage gestaltet sich per Interrupt am sinnvollsten, denn wenn man den Flankenwechsel detektiert hat sollte sofort der Level des anderen Signals abgefragt werden. Meist bekommt man vom Hersteller nur so ein winziges Diagramm:
Es ist ja schon aussagekräftig, allerdings dauert es ein paar Minuten bis man mit der richtigen Sichtweise darauf schaut. Es gibt vier Fälle, je zwei pro Drehrichtung. Man lässt Signal A per Levelchange Interrupt Triggern und fragt danach Signal B ab. Hier ein Beispiel: Signal A steigende Flanke. Wenn dann Signal B low ist, dann war es eine ClockWise Rotation. (Zeitpunkt zwischen T2 und T3, C.W.) Hier die ISR:
Immer daran denken: Variablen auf die in der ISR zugegriffen werden soll als volatile deklarieren!
Tags: Atmel, avr, Inkrementalgeber