Idee gesucht: Quadratur-Decoder immer richtig initialisieren

Persönliche Seite #3895841
Lesenswert?

Der Alps Rotary Encoder wackelt manchmal auf der B-Leitung, auch in der 
"Detent stability position" (siehe Bild).

An einem Quadratur-Decoder z.B. an einem STM32 wackelt der Zähler-Wert 
also manchmal zwischen "1 und 2" oder "2 und 3" usw., je nachdem wie das 
Signal beim Initialisieren war. Aber da ich das Signal "B" nicht 
"einfrieren" kann, kann ich beim Initialisieren keinen deterministischen 
Zustand herstellen, wo beim "shift right", also ">>=1" immer eine "nicht 
wackelne Zahl" heraus kommt.

Bei "zwischen 2 und 3" gibt ein ">>=1" einen stabilen Wert, aber
bei "zwischen 1 und 2" liefert ">>=1" mal 0 und mal 1.

Klar, kann ich den Wert von B abfragen und den Decoder entsprechend 
initialisieren. Aber wenn sich "B" zwischen "abfragen" und 
"initialisieren" ändert, wackelt's nach ">>=1" trotzdem noch.

Wie macht man das richtig?
Angehängte Dateien:
Persönliche Seite #3895891
Lesenswert?

Entweder ich stehe auf dem Schlauch oder das Problem ist noch unklar:

Der Quadratur-Decoder an einem STM32 liefert einen Zähler-Wert. Der 
Zähler zählt rauf und runter, je nach Drehrichtung.

Wenn ich am Quadratur-Decoder (das ist Hardware!) die Eingänge tausche, 
habe ich manchmal trotzdem noch Wackeln im LSBit.

Ich weiss also nie ob das linke oder das rechte Bild gilt.
Angehängte Dateien:
Persönliche Seite #3896052
Lesenswert?

Uwe Bonnes schrieb:
> Der Decoder kann Flanken auf beiden Signalen oder nur einer Flanke
> auswerten.

Für einen Quadratur-Decoder ist das ja korrekt initialisiert, also mit 
beiden Signalen und beiden Flanken. Das Problem ist: Ich weiss nach der 
Initialisierung nicht, ob das linke oder das rechte Bild (s.o.) gilt, 
also

1 2 3 4 5 … oder
0 1 2 3 4 …

Mit "TIM_GetCounter(TIM1) >> 1" möchte ich aber ein stabiles Signal 
haben und nicht mal einen mehr oder einen weniger.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren