Hallo, ich habe den EC11B von ALPS (http://www3.alps.com/WebObjects/catalog.woa/E/PDF/Switch/Encoder/EC11/EC11.PDF) Ich habe nun sämtlice Codeschnipsel ausprobiert, die hier in dem Artikel und in Beiträgen angegeben sind; ich kriege ihn einfach nicht zuverlässig ausgelesen. Entweder inkrementiert der Code die Zählervariable dauernd, ohne dass man den Drehgeber überhaupt anfasst (bei Peter Danneggers Code mit der Graycode-Tabelle), oder er reagiert auf keine Drehung. Der Code, der funktionierte, produzierte immer Sprünge von 2 Zahlen auf einmal (da er wohl davon ausging, dass es zwei Graycode-Zustände pro Rasterung gibt). Meine selbst geschriebene Statemachine läuft relativ gut, allerdings inkrementiert sie ab und zu nicht wenn ich drehe. Das kann doch nicht so schwer sein, diese beiden Spuren richtig auszulesen... Stelle ich mich nur blöd an, oder ist der EC11B irgendwie anders? Wie kann man den denn zuverlässig auslesen? Danke und mfg Jan
Teste doch erstmal mit 2 Tastern, mit denen du den Encoder lt. Diagramm simulierst, ob dein Code korrekt arbeitet. Und dann schaust du dir umgedreht an, ob dein Encoder dass rausgibt, was im Diagramm ablesbar ist.
Jan wrote: > Hallo, > ich habe den EC11B von ALPS > (http://www3.alps.com/WebObjects/catalog.woa/E/PDF/Switch/Encoder/EC11/EC11.PDF) > Der Code, der funktionierte, produzierte immer Sprünge von 2 Zahlen auf > einmal (da er wohl davon ausging, dass es zwei Graycode-Zustände pro > Rasterung gibt). Was ja auch völlig normal und richtig bei dem Drehgeber ist. Der hat 30 Zustände aber nur 15 Rastungen. Einfach das Ergebnis durch 2 teilen und alles ist perfekt.
Jan wrote: ... > Der Code, der funktionierte, produzierte immer Sprünge von 2 Zahlen auf > einmal (da er wohl davon ausging, dass es zwei Graycode-Zustände pro > Rasterung gibt). Dasselbe Verhalten zeigt der Drehgeber von Pollin. Ich habe es damals so gelöst: Beitrag "Re: Drehimpulsgeber (wiedereinmal.)" Besser wäre es allerdings, Du arbeitest mit der funktionierenden Methode und passt die Lookup-Tabelle an den Drehgeber an. Ich nutze allerdings weiter meine Methode, da sie die relativ laberigen Pollin-Drehgeber nebenher noch entprellt, was die Zuverlässigkeit erhöht. > Das kann doch nicht so schwer sein, diese beiden Spuren richtig > auszulesen... Beitrag "Re: Drehimpulsgeber (wiedereinmal.)" > > Stelle ich mich nur blöd an, oder ist der EC11B irgendwie anders? > Wie kann man den denn zuverlässig auslesen? Beitrag "Re: Drehimpulsgeber von Pollin" > > Danke und mfg > Jan ...
@ Jan (Gast) >Der Code, der funktionierte, produzierte immer Sprünge von 2 Zahlen auf >einmal (da er wohl davon ausging, dass es zwei Graycode-Zustände pro >Rasterung gibt). Das ist auch so und steht auch im Artikel Drehgeber. MFG Falk
Hallo, für den Pollin Drehgeber benutze ich folgenden Code: ; TEST DES ENCODERS AUF VERDREHUNG **************************** READ_ENCODER MOVF PORTC,0 ;PORT C NACH W ANDLW B'00000011' XORWF ALT,0 ;VERGLEICHE ADDWF PCL,1 ;PROGRAMMZEIGER ÄNDERN 0 BIS 4 RETURN ;keine Änderung GOTO LINKS GOTO RECHTS GOTO WEITER RECHTS INCF COUNTER, F ; RECHTS: INCREMENT COUNTER GOTO WEITER LINKS DECF COUNTER, F ; LINKS: DECREMENT COUNTER WEITER MOVF PORTC,0 ;PORT C NACH W ANDLW B'00000011' ADDWF PCL,1 ;PROGRAMMZEIGER ÄNDERN 0 BIS 4 GOTO ENDE GOTO WEITER ;Drehgeber steht im Zwischenbereich GOTO WEITER ;Drehgeber steht im Zwischenbereich ;GOTO ENDE ;geht gleich mit ENDE weiter ENDE MOVWF ALT ; FÜR NÄCHSTEN VERGLEICH ALS ALT SPEICHERN Mit Sicherheit auch nicht die beste Lösung, da das Programm in der Mittelstellung des Drehgebers nicht weiter läuft. Mein Programm ist aber nicht Zeitkritisch, beziehungsweise hat die serielle Schnittstelle mehr priorität. Bisher funktioniert das ganze sehr zuverlässig. Wichtig ist das der Portpin 0 und 1 verwendet wird, sonnst funktioniert das mit dem Programmzeiger nicht. Kritik ist natürlich erlaubt!
Hannes: Hast du den Code auch in C? Oder wie passe ich denn die Tabelle, die den Graycode enthält, an den Drehgeber an? Viele Grüße Jan
Jan wrote: > Hannes: Hast du den Code auch in C? Nein, der AVR kann kein C. Deshalb habe ich mich entschlossen die Sprache des AVRs (Maschinencode, einszueins in ASM notierbar) zu benutzen. Das spart Missverständnisse mit dem Dolmetscher... ;-) > > > Oder wie passe ich denn die Tabelle, die den Graycode enthält, an den > Drehgeber an? Indem Du die Hälfte der Werte rausnimmst (auf 0 setzt). Du lässt also die Werte nur an den Flanken drin, die Du auswerten willst. Dazu solltest Du aber schon versuchen, bitweise zu denken... > > Viele Grüße > Jan ...
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.