Hallo, ich habe mal eine Frage zu einer Implementierung eines Jogdial Dekoders wie sie hier gemacht wurde: http://www.mikrocontroller.net/articles/Drehgeber#Beispielcode_in_VHDL So wie ich das sehe, wird dort pro Signal A bzw. B die fallende und steigende Flanke ausgewertet. Wenn eine Flanke erkannt wurde, wird der Pegel des anderen Signals betrachtet. Je nachdem welche Flanke erkannt wurde und welchen Pegel das entpsrechend andere Signal hatte, wird die Drehrichtung bestimmt. Soweit so gut. Was mich jetzt aber wundert ist, wenn ich die Flankenerkennung für beide Signale A und B mache, wird doch von einem Rastpunkt zum nächsten zwei mal die gleiche Drehrichtung erkannt. Also wenn ich z.B. im Uhrzeigersinn Drehe wird erst die Flanke von Signal A erkannt. Dann, dass der Pegel von B '0' ist -> up_down und ce wird gesetzt und wir haben somit eine Drehbewegung im Uhrzeigersinn. Noch im gleichen Rastpunkt wird die steigende Flanke von Signal B erkannt, der Pegel von A ist '1' und es wird wieder up_down und ce gesetzt -> eine weitere Drehung im Uhrzeigersinn. Das gleiche auch für die Drehung gegen den Uhrzeigersinn. Soll das so sein? Oder ha ich da irgendwo nen Denkfehler? Wenn ich nen Counter dahinter habe dann will ich doch, dass der pro Rastpunkt auch nur um eins hoch- bzw runtergezählt wird. Grüße, Thomas
Thomas schrieb: > wird doch von einem Rastpunkt zum nächsten zwei mal die gleiche > Drehrichtung erkannt. Was, wenn der Encoder keine Rastungen (oder ganz andere) hat? > Soll das so sein? Ja. Die Rastungen sind ja leidiglich mechanische "Hilfsmittel", ein industrieller Drehgeber für eine Motorposition hat z.B. keine Rastungen. Oder irgendwelche Hifi-Geräte haben x Rastungen bei y Schritten pro Umdrehung. Das Eine (Schritte) hat mit dem Anderen (Rastung) nicht zwingend was zu tun... > Wenn ich nen Counter dahinter habe dann will ich doch, dass der pro > Rastpunkt auch nur um eins hoch- bzw runtergezählt wird. Dann brauchst du auch keine aufwendige 4-fach Auswertung...
Lothar Miller schrieb: > Das Eine (Schritte) hat mit dem Anderen (Rastung) nicht > > zwingend was zu tun... Ich bevorzuge im Zweifel solche Drehgeber, die keine harten Rastungen haben, weil die nämlich genau zum dem ungewünschten Schwingen neigen, was zum Prellproblem führt. Unverständlicherweise sitzen nämlich die Rastpunkte bei den meisten Billigtypen genau an den Grenzen, statt in der Mitte zwischen zwei Stellungen, was mechanisch aufwändiger ist.
Thomas schrieb: > Soll das so sein? Oder ha ich da irgendwo nen Denkfehler? Der VHDL Core da wertet eben gerade nicht die Flanken aus, sondern die Übergänge zwischen gültigen Zuständen. Alles was dazwischen passiert und eventuell prellt, stört nicht. Ich hab diesen VHDL Code im industriellen Umfeld im Einsatz, der läuft vollkommen zuverlässig. Vor jedem Eingang noch ein Minimal-Spike-Filter, wie im Datenblatt des HCTL2032 auf Seite 13 beschrieben: http://www.avagotech.com/docs/AV02-0096EN
Dieser spike Filter mit 3 FFs ist aber sehr willkürlich. Mit welcher Frequenz tastest Du den ab? Wenn man das auf die erreichbare Drehfrequenz anpasst, reicht ein FF, ansonsten ist das doch willkürlich.
Natürlich ist das willkürlich und ein FF reicht in der Regel aus. Ich hab dac vor Jahren so übernommen und es tut anstandslos seinen Dienst. Abtastung erfolgt mit 30...50MHz, die Geber-Frequenzen können schon mal in die 100kHz Bereiche gehen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.