Drehencoderauswertung aus Wiki-Beispiel gibt zu viele Schritte aus

Gast #1535848
Lesenswert?
• ▲
▼
Hallo,

ich habe eine Frage zur Auswertung eines Drehencoders mit einem FPGA.
Im Artikel Drehgeber ist ein Beispielcode in VHDL gegeben, welcher 
eigentlich auch funktioniert.
Ich habe jedoch einen Drehencoder, welcher Rastpunkte nur an den Stellen 
A=1, B=1 hat. Die Auswertung mit dem gegebenen VHDL-Code gibt dann pro 
mechanischem Schritt vier Schritte. Nun könnte ich zusätzlich einen 
Zähler implementieren, welcher das Clock-Enable nur jedes 4te mal auf 1 
setzt um so ein korrekt funktionierendes Verhalten zu bekommen.
Ich frage mich aber, ob es nicht sinnvoller ist, einen Zustandsautomaten 
zu entwickeln, der um einen mechanischen Schritt zu detektieren die 
korrekte Abfolge der 3 Zwischenschritte 01 00 10 auswertet.
Wäre dies sinnvoll? Wie könnte ein solcher Automat aussehen? Oder wie 
würdet ihr vorgehen um die korrekte Anzahl Schritte zu ermitteln?

mfg
Klaus
#1535957
Lesenswert?
• ▲
▼
@  Klaus (Gast)

>Im Artikel Drehgeber ist ein Beispielcode in VHDL gegeben, welcher
>eigentlich auch funktioniert.

Wo ist dann das Problem?

>Ich habe jedoch einen Drehencoder, welcher Rastpunkte nur an den Stellen
>A=1, B=1 hat. Die Auswertung mit dem gegebenen VHDL-Code gibt dann pro
>mechanischem Schritt vier Schritte.

Was vollkommen normal ist.

>Wäre dies sinnvoll?

Nein.

>Wie könnte ein solcher Automat aussehen? Oder wie
>würdet ihr vorgehen um die korrekte Anzahl Schritte zu ermitteln?

Nimm einen Zähler, welcher 2 Bit mehr hat und ignorier die unteren zwei 
Bit.

MfG
Falk
#1536635
Lesenswert?
• ▲
▼
Einfach noch ein paar Speicher in den Automaten des Decoders da einfügen 
und die Schritte speichern, dann kannst du Enable-Ausgänge für 1-fach, 
2-fach oder 4-fach Abtastung machen. Ich hab den Decoder aus dem Wiki 
auch so ergänzt, funktioniert astrein. Kann den Code allerdings nicht 
veröffentlichen, weil ich das auf Arbeit gemacht hab.
#1538667
Lesenswert?
• ▲
▼
Kleine Anmerkung:

Für die Auswertung von Winkelencodern mit 2 Kanälen werden beide Flanken 
beider Kanäle ausgewertet. Dadurch entsteht automatisch die 4-fache 
Auflösung des Encoders!
Wenn man dieses Signal durch 4 teilt (untere 2 Bit des Zählers 
ignorieren),
dann passt es wieder.

Alex

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