Forum: Mikrocontroller und Digitale Elektronik Encoder 1 step, 2 step , 4 step


von Manuel M. (hutschafu)


Lesenswert?

Hallo zusammen,

kann mich einer aufklären was es mit den drei verschiedenen 
Auswerteroutinen 1 step encoder, 2 step encoder und 4 step encoder auf 
sich hat, siehe Link?

https://www.mikrocontroller.net/articles/Drehgeber

Ich komme nicht dahinter was es hier für Unterschiede gibt? Mehr als 
simplen gray code von encodern mit A und B Signal kann ich nicht finden!

von Wolfgang (Gast)


Lesenswert?

Manuel M. schrieb:
> Ich komme nicht dahinter was es hier für Unterschiede gibt?

Eine 1 Step Encoder Routine zählt bei gleichmäßigem während einer 
Periode des AB-Signals um vier weiter, ein 2 Step Encoder Routine um 
zwei und eine 4 Step Endoder Routine um eins.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Wolfgang schrieb:
> Eine 1 Step Encoder Routine zählt bei gleichmäßigem während einer
> Periode des AB-Signals um vier weiter, ein 2 Step Encoder Routine um
> zwei und eine 4 Step Endoder Routine um eins.

Völlig richtig. Man kann auch sagen, 1-Step reagiert auf jede vom 
Encoder gelieferte Flanke, 2 Step nur auf fallende Flanken und 4 Step 
nur auf komplette A-B Phasendurchgänge.

von Volker S. (vloki)


Lesenswert?

Manuel M. schrieb:
> Ich komme nicht dahinter was es hier für Unterschiede gibt?

Die Unterschiede liegen bei den Encodern.
Bei einem Encodern auf einer Motorwelle will man normalerweise die best 
mögliche Winkelauflösung und die bekommt man natürlich indem man jede 
Flanke zählt. Das ist dann wohl 1step.

Bei den Drehgeber die man mit der Hand dreht und die Rastpunkte haben, 
macht es keinen Sinn eine größere Auflösung zu haben, als die der 
Rastpunkte.

Jetzt gibt es von diesen welche, die den Zustand zwischen den Rastpunkte 
umschalten. Die haben dann zwei Flanken oder eine pro Spur. -> 2 step.

Dann gibt es auch welche, die zwischen den Rasten einen kurzen Impuls 
ausgeben. Das sind dann zwei Flanken pro Spur, also 4 insgesamt. -> 4 
step

von Reiner W. (reiner_w)


Lesenswert?

Manuel M. schrieb:
> Ich komme nicht dahinter was es hier für Unterschiede gibt? Mehr als..

Also da wurde ja schon das Wesentliche gesagt. Was vielleicht die Sache 
etwas verwirrend macht, ist die Tatsache, dass der ominöse (nennen wir 
ihn Encodermode) nicht im Datenblatt steht.
Da werden üblicherweise diesbezüglich 2 Kenngrößen angegeben:

1. Number of detent - Das sind die Anzahl der Raststellen pro 
Umdrehung
2. Number of pulses - Das ist die Anzahl der kompletten 
Graycode-Perioden pro Umdrehung (häufig auch resolution genannt). 
Innerhalb einer Graycode-Periode kann man 4 stati unterscheiden und 
somit zählen. Man kann somit auch sagen,
ein pulse hat 4 counts (kein offizieller Encodertermini)

Beispiel der ALPS EC11J0920404 hat 18 Number of detent und *9 Number 
of pulses*

Will man nun eigentlich die Rasten statt der stati(counts) zählen, muss 
man wissen, wieviel counts denn innerhalb 2er Rasten anfallen.
Und da ist klar,
Wenn Number of detent = Number of pulses hab ich also eine komplette 
Periode also 4 counts innerhalb von 2 Rasten.
Wenn Number of detent = 2 x Number of pulses kann ich also nur 2 
counts zwischen 2 Rasten auswerten.
Oder ganz allgemein:

Ok, was nützt das nun, einen Encodermode einzuführen?
- man kann den Encodertyp unmittelbar vom Datenblatt ablesen
- man kann die Ausleseroutine so formulieren, dass durch Angabe der 
Datenblatt-Kenngrößen detent/pulses sichergestellt ist, dass immer in 
Rasten gezählt wird. Ädert sich der Encodertyp, sind nur 2 #defines 
anzupassen, die dazu noch im Datenblatt stehen.
Dazu muss z.B. die beliebte Ausleseroutine von Peter Dannegger nur 
geringfügig modifiziert werden:
1
//(Codeauszug)
2
3
#define NUMBER_OF_DETENT 18  //ALPS EC11 s.o.
4
#define NUMBER_OF_PULSES 9   // s.o
5
#define ENCODER_MODE  (4 * NUMBER_OF_PULSES / NUMBER_OF_DETENT)
6
7
//...
8
if (0 == slast % (1 << encoderMode){ // only the right state 0,1,2->1,2,4
9
   counterValue += (s & 2) - 1; 
10
}
11
12
//...

Reiner

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.