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.
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.
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!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.