Gyrosensor - Bräuchte Hilfe bei Winkelbestimmung
Hallo,
ich werkel derzeit im Rahmen eines Uniprojektes an einem "autonomen Fahrzeug", allerdings bin ich in Sachen Sensorik noch nicht sonderlich bewandert...Das System ist mit einer SPS bestückt.
Nun habe ich ein kleines Problem mit der Berechnung des Winkels bzw. der Winkeländerung pro Zyklus. Momentan bestimmt das Fahrzeug seine Orientierung über den Vergleich der zurückgelegten Strecke an seinen Antriebsrädern (Odometrie), ich möchte das ganze jetzt allerdings über einen Gyrosensor machen.
Link zum Datenblatt (Bezeichnung vom Sensor: NGS1):
http://www.sensor-technik.de/dbdownl...nger_105_1.pdf
Angeblich soll der Sensor die Drehrate bestimmen, also die Winkelgeschwindigkeit um die Hochachse (das Fahrzeug soll nur auf Ebenen Flächen fahren)
Das Signal vom Gyrosensor wird analog ausgegeben und als
Integer (−32.768 bis 32.767) verarbeitet. Der Gyrosensor soll einen Messbereich von +-50 °/s haben.
Aufgrund der kurzen Zykluszeit von 3,5 ms nehme ich die Geschwindigkeit jeweils als konstant an. Somit müsste meine Winkeländerung sich jeweils zu:
omega * t = phi
Meine Berechnung sieht so aus:
winkel_wert = 0.0035 * (winkel_integer + offset) * 50 / 32767
winkel = winkel + winkel_wert
winkel_integer ist der digitalisierte Ausgang vom Gyrosensor, also mein "Rohwert". Der Offset ist notwendig, weil wenn der Sensor komplett in Ruhe liegt er um -4000 leicht schwankt und ich ihn somit auf 0 lege.
Jetzt habe ich aber das Problem, dass ich je nachdem wie schnell ich den Sensor drehe unterschiedliche Winkelwerte kriege. Z.B:
ich drehe den Sensor LANGSAM um 45° ich kriege etwas mit 20° ausgegeben. Ich drehen ihn SCHNELL um 45° ich komme in den Bereich um 75°-85°.
Meine Überlegung bis jetzt war dazu folgende: Wenn ich den Sensor schnell drehe, ist die Zeit die ich für eine 45°-Drehung brauche kürzer, dafür ist die Winkelgeschwindigkeit höher. Drehe ich ihn langsam brauche ich mehr Zeit für die Drehung habe aber eine geringere Geschwindigkeit und somit müsste doch das ganze unabhängig von der Drehgeschwindigkeit sein?!
Wo könnte mein Denkfehler liegen, was habe ich evtl übersehen oder nicht verstanden? Ich freu mich über jede Anwort! :)
Viele Grüße
chmbw
PS:
Sollte ich irgendwelche Infos / Angaben vergessen haben, entschuldigt bitte und ich liefer sie sofort nach.
Liste der Anhänge anzeigen (Anzahl: 1)
Da sind einige Tricks um diesen Drift zu minimalisieren : Beim Stillstand soll der Winkelaenderung null sein. Die gemessene Drift kan dan weiter als Offset verwendet werden. Problem : Diese Drift ist meistens auch Temperaturabhangig.
Der Bandbreite von 40 Hz bedeutet das diesen Gyro eine Messverzogerung hat von ca 25 ms : bei Aenderung von Drehrate wird die ausgegebene Werte ca 25 ms Verzogerung haben. Was mir wundert ist die Auflosung von 0.6°/s, und die max Wert von 50°/s. Das bedeutet dan nur eine 7bit Auflosung. Die Integerwert von 16 bit muss dan schlagartige Sprungen machen. Das kan ein Grund sein von die Schlechte Ergebnissen bei verschiedene Drehraten.
Eine fixzeit für die Integration ist absolut notwendig. Da muss du eine 25 ms Interruptbasis machen und dort integrieren. Das darf nicht in die Hauptschleife sein, da diese Durchlauf nicht immer das gleiche Zeitinterfall hat.
Hier ein Bild von die Messungen von mein Balance Roboter