Forum: Mikrocontroller und Digitale Elektronik Differenzieren Encoderwerte


von Stm M. (stmfresser)


Lesenswert?

Hallo,

ich wollte präzise rauscharme Drehgeschwindigkeit des Motors alle 10ms 
bilden. Der Motorencoder liefert mir pro Umdrehung 2000 Ticks. Bei 
schneller Drehung bekomme ich ordentliche Drehgeschwindigkeit. Bei 
langsamer Drehung habe ich das Problem weniger als fehlerbehaftete 10 
Ticks mit 10ms zu teilen bzw. 100 mal zu verstärken. Damit habe ich 
richtig verrauschte fehlerbehaftete Drehgeschwindigkeitswerte. Ich habe 
diese mit Tiefpass Filter geglättet. Die Werte nach den PT1 scheinen ok. 
Aber die Verzögerung ist viel zu groß.

Ich würde gern wissen, ob es einen Trick existiert bei hohen Takt Zahlen 
zu differenzieren. Und zwar Verzögerungsarm

Vielen Dank!


PS: Ich schreibe deutsch als Fremdsprache. Verzeihung für die mögliche 
Rechtschreibfehler

von Thorsten O. (Firma: mechapro GmbH) (ostermann) Benutzerseite


Lesenswert?

Nein, da gibt es keinen Trick. dV=dx/dt, wenn du dt klein machst und dx 
konstant bleibt wird dV entsprechend größer. Da helfen nur 
Tiefpassfilter mit den von dir beobachteten Nachteilen oder Geber mit 
höherer Auflösung.

Man kann auch zusätzlich einen Beschleunigungssensor verwenden und die 
Geschwindigkeit mittels Beobachter aus beiden Sensoren ableiten. Aber da 
ist ein Encoder mit höherer Auflösung meistens billiger und einfacher in 
der Handhabung.

Mit freundlichen Grüßen
Thorsten Ostermann

von Georg (Gast)


Lesenswert?

Stm Mc schrieb:
> weniger als fehlerbehaftete 10
> Ticks mit 10ms zu teilen

Da würde ich erst mal die eigentliche Fehlerursache beseitigen - Encoder 
arbeiten, richtig angeschlossen, praktisch fehlerfrei über Stunden und 
Tage. Damit werden Werkzeugmaschinen positioniert, wenn die so 
verrauscht wären, hättest du plötzlich einen Siebenzylinder im Auto.

Georg

von Stm M. (stmfresser)


Lesenswert?

Danke,

also dann bleibt nur einen Kalman Filter zu implementieren. Mit einem 
einzigen beobachtbaren Größe ist das Ganze hoffentlich beobachtbar.

von Stm M. (stmfresser)


Lesenswert?

Thorsten Ostermann schrieb:
> Nein, da gibt es keinen Trick. dV=dx/dt, wenn du dt klein machst und dx
> konstant bleibt wird dV entsprechend größer. Da helfen nur
> Tiefpassfilter mit den von dir beobachteten Nachteilen oder Geber mit
> höherer Auflösung.
>
> Man kann auch zusätzlich einen Beschleunigungssensor verwenden und die
> Geschwindigkeit mittels Beobachter aus beiden Sensoren ableiten. Aber da
> ist ein Encoder mit höherer Auflösung meistens billiger und einfacher in
> der Handhabung.
>
> Mit freundlichen Grüßen
> Thorsten Ostermann

Danke,

also dann bleibt nur einen Kalman Filter zu implementieren. Mit einem 
einzigen beobachtbaren Größe ist das Ganze hoffentlich beobachtbar.

von Stm M. (stmfresser)


Lesenswert?

Georg schrieb:
> Stm Mc schrieb:
>> weniger als fehlerbehaftete 10
>> Ticks mit 10ms zu teilen
>
> Da würde ich erst mal die eigentliche Fehlerursache beseitigen - Encoder
> arbeiten, richtig angeschlossen, praktisch fehlerfrei über Stunden und
> Tage. Damit werden Werkzeugmaschinen positioniert, wenn die so
> verrauscht wären, hättest du plötzlich einen Siebenzylinder im Auto.
>
> Georg

Fehlerursache hat nichts mit Kalibrierung oder Eichung zu tun. Es ist 
die Messunsicherheit da der Encoder keine unendliche Auflösung bietet 
lediglich pro Umdrehung 2000 Ticks.

von Thorsten O. (Firma: mechapro GmbH) (ostermann) Benutzerseite


Lesenswert?

Hallo Georg,

> Stm Mc schrieb:
>> weniger als fehlerbehaftete 10
>> Ticks mit 10ms zu teilen
>
> Da würde ich erst mal die eigentliche Fehlerursache beseitigen - Encoder
> arbeiten, richtig angeschlossen, praktisch fehlerfrei über Stunden und
> Tage. Damit werden Werkzeugmaschinen positioniert, wenn die so
> verrauscht wären, hättest du plötzlich einen Siebenzylinder im Auto.

Du hast das Problem nicht verstanden. Es geht um "Quantisierungsfehler", 
welche durch Differenzierung zur Geschwindigkeitsbestimmung verstärkt 
werden.

Mit freundlichen Grüßen
Thorsten Ostermann

[1] de.wikipedia.org/wiki/Quantisierungsfehler

von Georg (Gast)


Lesenswert?

Stm Mc schrieb:
> Es ist
> die Messunsicherheit da der Encoder keine unendliche Auflösung bietet
> lediglich pro Umdrehung 2000 Ticks.

Dann wendet man halt den üblichen "Trick" an (wie bei Frequenzmessung): 
unterhalb einer bestimmten Drehzahl zählt man nicht, wieviel Pulse in 
eine Zeiteinheit fallen, sondern misst mit der notwendigen Auflösung, 
welche Zeit für n Impulse benötigt werden. Notfalls bis herunter auf 
einen einzigen Decoderschritt, so kann man noch die Geschwindigkeit 
einer Schnecke mit der gewünschten Genauigkeit messen. Oder verstehe ich 
immer noch falsch?

Georg

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.