Forum: Mikrocontroller und Digitale Elektronik Drehgeber-Auswertung


von Peter (Gast)


Lesenswert?

Hallo,

ich bestimme derzeit mit einem optischen Encoder (500 Impulse) die 
Drehzahl meines Motors. Bei einer Abtastrate von 1ms bekomme ich somit 
derzeit mit einer Ein-Flankenauswertung eine maximale Auflösung von 
120U/min(Sprünge).
Das System erfordert allerdings jetzt ein Abtastrate von 100us. Kann mir 
jemand sagen, wie ich das realisieren kann, ohne dass die 
Drehzahlsprünge/Auflösung stark zunimmt?

von Falk B. (falk)


Lesenswert?

@ Peter (Gast)

>ich bestimme derzeit mit einem optischen Encoder (500 Impulse) die
>Drehzahl meines Motors. Bei einer Abtastrate von 1ms bekomme ich somit
>derzeit mit einer Ein-Flankenauswertung eine maximale Auflösung von
>120U/min(Sprünge).

Was meinst du mit Sprünge?

>Das System erfordert allerdings jetzt ein Abtastrate von 100us. Kann mir
>jemand sagen, wie ich das realisieren kann, ohne dass die
>Drehzahlsprünge/Auflösung stark zunimmt?

Mach es richtig. Siehe Drehgeber.

MfG
Falk

von Matthias L. (Gast)


Lesenswert?

>Einer Ein-Flankenauswertung
>von 1ms bekomme

Was denn nun? Flankenauswertung oder Abtastung alle 1ms???

>Abtastrate von 100us
Taste doch einfach alle 100µs ab und baue nen Quadraturencoder auf..

siehe Wiki: Drehgeber

Nachtrag:
Aaaah, Falk ist wieder unterwegs ;-)

von Peter D. (peda)


Lesenswert?

Wenn Du nur die Drehzahl wissen willst, gib einen Ausgang auf nen 
Timereingang und mach ne Frequenzmessung (2. Timer = Zeitbasis).


100µs sind beim AVR 2000 Zyklen bei 20MHz, also durchaus zu schaffen. 
Allerdings darf dann kein anderer Interrutp zu lange blockieren.
Man kann aber auch den Pin-Change Interrupt nehmen.


Peter

von Peter (Gast)


Lesenswert?

Ok, vielleicht hab ich mich ein bisschen schlecht ausgedrückt...

>Einer Ein-Flankenauswertung
>von 1ms bekomme

>Was denn nun? Flankenauswertung oder Abtastung alle 1ms???

Also ich werte derzeit in dem Zeitraum von 1ms die Flanke A des Encoders 
aus
und zähle die ansteigenden Flanken. Daüber lässt sich dann über eine 
einfache Multiplikation die Drehzahl ja berechnen.

>Abtastrate von 100us
Taste doch einfach alle 100µs ab und baue nen Quadraturencoder auf..

siehe Wiki: Drehgeber


Problem ist, dass ich selbst bei einer Impulsvervierfachung über 
Quadraturencoder bei kleinen Drehzahlen (<300U/min) innerhalb von 100us 
keinen Flankenänderung habe und somit nicht auswerten kann....

von Winfried (Gast)


Lesenswert?

Letzteres ist doch aber ein Widerspruch. Oben schreibst du, dass alles 
gut wäre, wenn du mit 100us abtastest und jetzt, dass das nicht 
funktioniert. Funktioniert es praktisch nicht, sollte aber theoretisch 
funktionieren? Dann musst du genaueren Einblick in deine Umsetzung 
geben. Es fehlen sowieso eine Menge an Randinformationen, z.B. ob du 
überhaupt mit einem Mikrocontroller arbeitest und wenn ja, mit was für 
einen.

von Jörg B. (manos)


Lesenswert?

Peter wrote:
> Problem ist, dass ich selbst bei einer Impulsvervierfachung über
> Quadraturencoder bei kleinen Drehzahlen (<300U/min) innerhalb von 100us
> keinen Flankenänderung habe und somit nicht auswerten kann....
Wenn Du innerhalb Deines Messfensters Zustände haben kannst in denen 
kein Messwert ermittelt werden kann musst Du entweder die 
Aufgabenstellung oder die Hardware überdenken.
Die Frage, die sich mir sowieso stellt ist ob bei so kurzen Messfenstern 
überhaupt das Zählen der Impulse Sinn macht. Evtl. bekommst Du mal einen 
Impuls, in der nächsten Messung zwei (obwohl es sich mit konstanter 
Geschwindigkeit dreht). In solch einem Fall würde ich eher einen Timer 
starten und die Takte zwischen zwei Flanken zählen.

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.