Forum: Digitale Signalverarbeitung / DSP / Machine Learning AMS AS5600 Problem bei Sensorauswertung 0..5V


von Richard (nbger)


Angehängte Dateien:

Lesenswert?

Ich betreibe einen AS5600 Winkelsensor an einem Arduino am 
Analog-Eingang.
Der Sensor liefert 0..5V je nach Winkel; der Arduino macht daraus 
0..1024 (10 Bit A/D-Wandler)
Ansich ganz einfach und schnell aufgebaut, aber der Teufel steckt im 
Detail!
Ich habe jetzt aber ein Problem bei der Auswertung gefunden, welches 
sporadisch auftritt.
Liest man den Analogwert zufällig genau beim Überlauf 1024->0, dann 
bekommt man schon mal einen komplett falschen Wert. Das tritt bei mir 
alle paar tausend Umdrehungen auf.

Ich hab ein Bild angehängt. Darin ist der eingelesene Analogwert 0..1024 
und eine Drehzahl U/Min zu sehen, welche ich aus der Winkeländerung pro 
Abtasttakt berechne. An der rot markierten Stelle lese ich einen 
Zwischenwert, der meine Auswertung durcheinanderbringt.
In diesem Beispiel gebe ich eine festen PWM-Wert vor, so dass sich der 
Fehler nicht weiter auswirkt. Wenn ich aber über PID regle, dann gibt es 
einen richtigen Ruck im Antrieb.

von Forumbeobachter (Gast)


Lesenswert?

Du könntest einen Beobachter implementieren: Sofern die Abweichung aus 
Messwert und Schätzwert z.B größer gleich +/-45° => Fehlerhafter 
Messwert => Keine Messwertrückkopplung innerhalb des Beobachters.

von Richard (nbger)


Lesenswert?

Forumbeobachter schrieb:
> Du könntest einen Beobachter implementieren: Sofern die Abweichung aus
> Messwert und Schätzwert z.B größer gleich +/-45° => Fehlerhafter
> Messwert => Keine Messwertrückkopplung innerhalb des Beobachters.

ja, so etwas ähnliches hab ich mir auch gedacht, um wenigstens die 
groben Fehler auszublenden.
Aber es kann ja auch kleinere Abweichungen geben, je nachdem wie man die 
Abtastung des Wandlers trifft.
Schlimm würde es bei einer Positionsregelung werden, wenn man auf der 0 
Position steht und der Wert zwischen 0 und 1024 wackelt. Da könnte jeder 
beliebige Wert entstehen und den Regler stimulieren.
Da wäre der digitale Signalaustausch über I2C sicherer!

Ich werde das Problem aber erstmal vernachlässigen, denn es tritt nur in 
meinem Versuchsaufbau auf. In der finalen Anwendung geht es ums 
Positionieren auf einen Sollwinkel. Der max. Drehwinkel der Mechanik ist 
kleiner 360 Grad. Ich werde die Magnete so justieren, dass ich nie über 
die 1024->0 Grad Grenze laufe.
Allerdings für eine reine Drehzahlmessung eines rund laufenden Motors 
ist die Lösung vorläufig fehlerbehaftet!

von ok (Gast)


Lesenswert?

Richard R. schrieb:
> Schlimm würde es bei einer Positionsregelung werden, wenn man auf der 0
> Position steht und der Wert zwischen 0 und 1024 wackelt.

Der AS5600 hat da eine Hysterese, da wackelt nix, außer deine Position 
wackelt tatsächlich.

Als Sanity-check würde ich die Annahme, dass sich die Geschwindigkeit 
nicht schlagartig ändern kann verwenden.

Das filtert die großen Fehlmessungen aus, während "nur leicht falsche" 
Messungen eh den Regler nicht aus dem Tritt bringen sollten.

Beitrag #6374496 wurde von einem Moderator gelöscht.
Beitrag #6406156 wurde von einem Moderator gelöscht.
Beitrag #6440054 wurde von einem Moderator gelöscht.
Beitrag #6579700 wurde von einem Moderator gelöscht.
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.