www.mikrocontroller.net

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


Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Alex P. (drdatensalat)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.