Forum: FPGA, VHDL & Co. Drehencoderauswertung aus Wiki-Beispiel gibt zu viele Schritte aus


von Klaus (Gast)


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

von Falk B. (falk)


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

von Christian R. (supachris)


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.

von Alex P. (drdatensalat)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.