Gast
#5547152
Guten Tag,
ich habe vor mir einen Multiturn-Absolutwertdrehgeber, der sein
Messsignal graycodiert ausgibt. Ich versuche nun, die Multi- und die
Singleturndaten auszulesen und mittels eines Atmegas auf einem kleinen
Display auszugeben.
Die elektrische Anbindung des Sensors funktioniert bereits und in einem
entsprechenden Register des µC wird das Sensortelegramm richtig (noch
graycodiert) abgelegt. Geprüft habe ich dieses mit hilfe eines
Oszilloskops. Daher möchte ich hier einen Fehler zunächst ausschließen.
Das Telegramm besteht aus:
12 Bit Multiturninformation
18 Bit Singleturninformation
3 Bit Fehlerstatus.
Die drei Worte separiere ich aus dem Telegramm und wandele sie
anschließend in binäre Informationen um. Diese Umwandlung scheint auch
einwandfrei zu funktionieren, wie sich an nachgerechneten Einzelwerten
zeigen lässt.
Soweit scheint die Funktion gegeben zu sein.
Mein Problem:
Die primär interessanten Singleturnwerte verhalten sich jedoch
uneindeutig:
Drehe ich die Achse einmal vollständig herum, so wächst der graycodierte
Wert von 0 bis ca. 262000 an. Im Graycode zeigt sich das durch die
Wertfolge [000xxx001,...,100xxx000]. Die x sind Platzhalter für die
restlichen 12 Bit.
Überschreite ich den Rotationsanfangspunkt jedoch (>=360°), so fällt
dieser Wert nicht auf 0 zurück (wie zu erwarten), sondern wird von
262000 wieder von 262000 herab gezählt. Bei 0 wiederholt sich der
Vorgang, und der Sensor zählt wieder bis 262000 hinauf. Es entsteht eine
winkelabhängige "Dreiecksfunktion". Ein Nullwert wird immer erst nach 2
Vollumdrehungen erreicht.
Hat einer von euch schon einmal ein solches Verhalten gesehen und kann
mir sagen, wie ich hiermit umgehen kann? Ich würde einen Überlauf bei
>=360° erwarten, so dass der Zähler wieder bei 0 beginnt und ich somit
eine eindeutige Winkelzuordnung durchführen kann.
Ich hoffe sehr auf einen guten Tipp von euch.
MfG Maybert