Forum: Mikrocontroller und Digitale Elektronik Lagewinkel mit Gyro bestimmen (Probleme)


von Dennis (Gast)


Lesenswert?

Hallo,

ich versuche mich gerade in einer kleinen Lageerkennung meines Boards. 
Ihc möchte den absoluten Winkel der Schiefstellung ermitteln (liegt in 
der Anfangslage auf dem Tische -> 0°. Am Anfang wird der Offset des 
Gyros kalibriert. Dann frage ich alle 12ms Senkunden meine Gyrosensoren 
ab und rechne das in Grad um.

meine Formel
1
lageX = (lageX + (double)(gyroX*0.012*0.0695));


gyroX (int16_t) ist meine aktuelle Drehrate (Offset abgezogen)
0.012 ist meine 12ms Abfragzeit für den Weg (Integration)
0.0695 ist mein LSB pro Grad Wert aus dem Datenblatt (2000°/sek ->14.375 
LSB/Grad (Sensor: ITG 3205)

Die Addition habe ich eingefügt, damit ich meinen komplette 
Winkeländerung zur Anfangslage bekomme

Meine Idee war nun das Board mit der Hand in Schieflage zu bringen und 
wieder zurück zu bewegen, damit ich als lageX wieder 0° erhalte. 
Allerdings läuft mir der lageX Wert ohne Bewegung langsam nach oben weg 
(nach 5sek ungefähr 100).
Ich bekomme zwar eine Änderung des Wertes bei Bewegungen, aber ich 
bekomme den Wert nicht wieder gegen 0 und es ist ja so auch nicht 
gewollt

Achja, ich frage die Messwerte über USB ab...

von gyro (Gast)


Lesenswert?

also die Berechnung läuft auch auf dem PC?
Dann nimm doch statt int_16 auch einen double her, wenn du eh in double 
rechnest :)

Du kannst dir auch mal die Drehraten in der Anfangslage plotten, um zu 
sehen, wie stark das Gyro rauscht.

von drift (Gast)


Lesenswert?

> um zu sehen, wie stark das Gyro rauscht.
Rauschen ist nicht das schlimmste Problem, eher der Drift den diese 
Gyros ueblicherweise zeigen. Komplett eliminieren wird man ihn 
vermutlich nicht so einfach koennen, bei Lagebestimmung sollte es nicht 
gut sein einfach mit einem Hochpass den Drift zu entfernen, den wenn 
jemand das Ding langsam genug dreht schluckt er einen zu grossen Teil 
der Drehung.

Wirklich Abhilfe schafft nur ein Beschleunigungssensor, dessen Daten 
kann man z.B. zusammen mit dem Gyro in einen Kalman Filter einfliessen 
lassen.

von Dennis (Gast)


Lesenswert?

Ich lasse mir nur die Werte auf dem Rechner plotten...

Ich habe den Fehler gefunden, kurz nach dem abschicken...es war ein 
Problem in der Offsetberechnung

Nun funktioniert es, aber die 0-Lage driftet über 1 Minute um cirka 100 
Grad. Ich habe es noch nicht Temperaturkompensiert oder einen 
Beschleunigungssensor zur Hilfe genommen, aber der Drift erscheint mir 
als zu hoch. Da muss ich nochmal suchen...

von Blueberry (Gast)


Lesenswert?

NUR mit einem Gyro wirst Du das Problem IMMER haben dass der Winkel 
wegdriftet. Das liegt leider daran dass Du den Drehratenfehler den Du 
immer haben wirst aufsummierst.
Auch der Offset ist leider alles andere als stabil.
Mach mal nochmal eine Messung und hauch das Ding mal an. Ich könnte 
wetten dass Du innerhalb von ein paar Sekunden bei 100 Grad Fehler bist.

Wie gesagt, ohne Beschleunigungssensoren und eine Sensordatenfussion 
wird das nichts.
Stichwörter: Kalmanfilter, DCM(Direction Cosine Matrix).

von Norbert S. (norberts)


Lesenswert?

Hi,

5000 Messungen sind das in einer Minute. Bei jeder Messung musst Du nur 
0,02° daneben liegen, um auf 100° Fehler zu kommen.

Ausserdem haut das mit den 0,0695 nicht hin. Ich komme da auf 0,13913.

So einen Gyro über eine Minute integrieren kannst Du vergessen, ich 
würde sagen der Drift ist normal.

Gruß,
Norbert

von wusel (Gast)


Lesenswert?

> 1 Minute um cirka 100 Grad.

Das ist ein normaler Wert.

von Sven B. (scummos)


Lesenswert?

Du kannst einen Magnetsensor nehmen, über den kriegst du die absolute 
Drehrichtung. Driftet dann auch nicht. Die sind auch relativ günstig zu 
haben (zwei Euro).
Funktioniert halt dann nicht auf dem Mars oder in der Nähe starker 
nicht-konstanter Magnetfelder. ;)

von drift (Gast)


Lesenswert?

>aber der Drift erscheint mir als zu hoch.
100deg/min -> 1.66... deg/sec.
Das ist nicht Weltklasse aber ganz ok fuer solche Gyros.
Die Dinger sind absolut nicht temperaturstabil und kompensieren kann man 
das nicht komplett, ein bisschen Drift bleibt ueber. Genug um 
Integration ueber mehrere Minuten unbrauchbar zu machen.

von Troll (Gast)


Lesenswert?

Wie hoch ist denn die Drift, wenn man nur eine Messung pro sekunde 
addiert?

von Dennis (Gast)


Lesenswert?

drift schrieb:
> Wirklich Abhilfe schafft nur ein Beschleunigungssensor, dessen Daten
> kann man z.B. zusammen mit dem Gyro in einen Kalman Filter einfliessen
> lassen.

Das kommt später, ich mache das Schritt für SChritt

Norbert S. schrieb:
> Ausserdem haut das mit den 0,0695 nicht hin. Ich komme da auf 0,13913.

Wieso? 1/14,375?


Ich habe die ganze Zeit nur mit der Y-Achse gearbeitet. Nun habe ich mir 
auch mal die X-Achse plotten lassen und der Drift ist 4mal-langsamer als 
der Drift der Y-Achse. Sehr interessant, ich untersuche das mal 
weiter...

von Norbert S. (norberts)


Lesenswert?

Dennis schrieb:
> Norbert S. schrieb:
>> Ausserdem haut das mit den 0,0695 nicht hin. Ich komme da auf 0,13913.
>
> Wieso? 1/14,375?

2000/14375 = 0,13913

Oder?

Gruß,
Norbert

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.