IMU MPU6050 Erdbeschleunigung nicht gleich 1

#7937783
Lesenswert?

Salü

Ich habe vier MPU6050-IMU-Boards (https://www.bastelgarage.ch/mpu-6050-3-achsen-beschleunigungssensor-mit-gyroskop) und lese die Beschleunigungsdaten über ein Multiplexer (TCA9548A) per Arduino Mega aus.

Nun habe ich folgendes Problem: Wie in der angehängten Grafik zu sehen habe ich die Magnitude der Daten (nur Beschleunigung, kein Gyro) pro Sensor mittels |a| = sqrt(ax^2 + ay^2 + az^2) dargestellt und diese ist nicht immer eins. Die vier Sensoren wurden dazu auf einem Breadboard gleich ausgerichtet und jeweils das gesamte Board um 90° in die Vertikale gedreht und danach wieder in die Horizontale gebracht. Die X-Achse entspricht dabei den gemessenen Datenpunkten und wurde über rund 50 Sekunden (30Hz) aufgenommen. Mich erstaunt des Weiteren, dass die Magnitude sich überhaupt ändern kann (sollte ja gleich bleiben während den Ruhephasen). Ich hatte auch schon Messungen da war die Magnitude zu Beginn 0.5 oder 1.6. Auch etliche DIY PCB's mit MPU6050 haben bei mir dieses Problem.

Im Datenblatt (https://invensense.tdk.com/wp-content/uploads/2015/02/MPU-6000-Datasheet1.pdf) steht bei Zero-G Output die initial Calibration Tolerance (X,Y = +-50mg, Z = +- 80mg) aber das reimt sich in meinem Kopf nicht zusammen mit den Messergebnissen.

Das Ziel ist es diesen Magnitudenfehler zu verkleinern (< 3%).

Alle konstruktive Hilfe ist herzlich willkommen und wird geschätzt.

Angehängte Dateien:
(Firma: 1984now) #7937799
Lesenswert?

Oliver W. schrieb:

steht bei Zero-G Output die initial Calibration Tolerance (X,Y = +-50mg, Z = +- 80mg) aber das reimt sich in meinem Kopf nicht zusammen mit den Messergebnissen.

Wieso nicht? Der Einzelfehler der Komponenten beträgt 5% bzw. 8%. Dein Messwert liegt ca. 5% neben dem Erwartungswert. Passt doch gut.

Das Ziel ist es diesen Magnitudenfehler zu verkleinern (< 3%).

You got what you paid for.

#7937842
Lesenswert?

Rainer W. schrieb:

Hast du den Sensor kalibriert?

Im Datenblatt und in folgender Datei (https://invensense.tdk.com/wp-content/uploads/2015/02/MPU-6000-Register-Map1.pdf) habe ich kein Register zur Kalibrierung gefunden. Ich sehe daher keine andere Lösung als den Sensor im Post-Processing zu kalibrieren (mit Referenzwinkel & Ausrichtung), oder?

Lothar M. schrieb:

Wie sieht es denn aus, wenn du die Rohdaten der 3 Achsen anschaust?

Sind weiter oben gegeben.

Moderator (Firma: Titel) Persönliche Seite #7937847
Lesenswert?

Oliver W. schrieb:

Lothar M. schrieb:

Wie sieht es denn aus, wenn du die Rohdaten der 3 Achsen anschaust?

Sind weiter oben gegeben.

Wenn ich ikm Datenblatt nach Offest suche, dann finde ich Infos zum Layout der Leiterplatte. Mir scheint, dass die bei der verlinkten Platine nicht eingehalten wurden. Besonders die Sache mit den "11.4.2 Exposed Die Pad Precautions" sieht spannend aus. Ich könnte mir vorstellen, dass das Pad hier entgegen der Layout Rules angelötet wurde. Oder wohin führen die 4 Vias unter dem Chip?

#7937901
Lesenswert?

Oliver W. schrieb:

Ich sehe daher keine andere Lösung als den Sensor im Post-Processing zu kalibrieren

Eine Kalibrierung stellt Abweichungen gegenüber einem Normal fest.

In der Verarbeitung musst du die bei der Kalibrierung bestimmten Abweichungen einrechnen. Bei so einem Sensor hast du sowohl Offset- als auch Skalierungsfehler und die können sich auch noch z.B. mit der Temperatur ändern.

Oliver W. schrieb:

Im Datenblatt und in folgender Datei (https://invensense.tdk.com/wp-content/uploads/2015/02/MPU-6000-Register-Map1.pdf) habe ich kein Register zur Kalibrierung gefunden.

Wieso soll der Sensor Register dafür besitzen? Das passiert in deiner Software.

#7937906
Lesenswert?

Rainer W. schrieb:

Hast du den Sensor kalibriert?

Guter Hinweis!

Oliver W. schrieb:

Im Datenblatt und in folgender Datei (https://invensense.tdk.com/wp-content/uploads/2015/02/MPU-6000-Register-Map1.pdf) habe ich kein Register zur Kalibrierung gefunden.

Passende Antwort dazu. Statt erstmal danach zu suchen oder zu fragen.

Beim Schießen wirst du deine Waffe auch erst /einschießen/ müssen, um gute Ergebnisse zu erzielen.

#7937912
Lesenswert?

Norbert schrieb:

0g kann man in Bremen beim ZARM kalibrieren.

Da hat nicht jeder Zugriff drauf, ist auch gar nicht nötig.

Für einen Beschleunigungssensor mit vernachlässigbarer Querempfindlichkeit der Kanäle reicht es, ihn langsam in alle möglichen Orientierungen zu bringen. Die von den verarbeiteten Vektoren beschriebene Oberfläche ist eine Kugel mit Mittelpunkt im Ursprung. Die Ausgabewerte des Sensors liegen allerdings erstmal anders. Für eine Relativkalibrierung der Kanäle reicht des örtliche Schwerefeld als Normal. Der sich aus den Messdaten ergebende Körper muss erst in den Ursprung verschoben werden (Offset-Korrektur) und anschließen die Kanäle so skaliert werden, dass eine Kugel daraus wird. Für viele Anwendungen reicht diese einfache Methode bereits.

#7937914
Lesenswert?

Das Ding wird im Werk kalibriert. Anderswo wäre es auch schwierig. Man müsste sich dann zunächst mal eine Mechanik basteln (z. B. eine Zentrifuge), die exakte Beschleunigungen produziert und ihrerseits kalibriert ist – kann das jemand hier?

Der Hersteller verspricht bestimmte maximale Abweichungen vom wahren physikalischen Wert, und damit muss man leben.

Man kann zwar die Ausgabe so umrechnen, dass 1,0 herauskommt, aber das ist ja nur ein einziger Punkt der Kurve. Über den Rest ist damit gar nichts gesagt, wenn man die Interna und deren Funktion nicht kennt.

#7937983
Lesenswert?

Rolf schrieb:

Anderswo wäre es auch schwierig. Man müsste sich dann zunächst mal eine Mechanik basteln (z. B. eine Zentrifuge), die exakte Beschleunigungen produziert und ihrerseits kalibriert ist – kann das jemand hier?

Die Sin- und Cos-Funktionen sind dir bekannt, nehme ich an. Da kommen alle Zwischenwert zwischen -1 und +1 drin vor. Um die zu nutzen, musst man lediglich den Sensor z.B. im Schwerefeld der Erde unterschiedlich orientieren. Damit wäre der Bereich +/- 1 g abgedeckt.

: Bearbeitet durch User
#7938225
Lesenswert?

Εrnst B. schrieb:

Schau mal hier:

https://www.eevblog.com/forum/projects/counterfeit-mpu6050-chips-from-china/

Tatsächlich. Ich habe mir die MPU6050 Chips bestellt und gleichzeitig ein paar MPU-6050 Boards um das Prototyping voranzutreiben. Die Chips ab Rolle sind 4x4mm gross und entsprechen damit den Daten im Datenblatt. Die Chips auf den Boards sind 3x3mm gross (siehe Bild, Chips auf 4x4mm Raster).

Angehängte Dateien:
#7938231
Lesenswert?

Lothar M. schrieb:

Wenn ich ikm Datenblatt nach Offest suche, dann finde ich Infos zum Layout der Leiterplatte. Mir scheint, dass die bei der verlinkten Platine nicht eingehalten wurden. Besonders die Sache mit den "11.4.2 Exposed Die Pad Precautions" sieht spannend aus. Ich könnte mir vorstellen, dass das Pad hier entgegen der Layout Rules angelötet wurde. Oder wohin führen die 4 Vias unter dem Chip?

Korrekt, die Vias auf dem Board sind mit dem Pad verbunden und wurden angelötet.

Notiz: Auf meinen eigenen PCB's habe ich kein Pad auf dem PCB und habe das Problem der Ungenauigkeit trotzdem.

Ich danke für den Input.

Moderator (Firma: Titel) Persönliche Seite #7938272
Lesenswert?

Rainer W. schrieb:

Oliver W. schrieb:

Im Datenblatt ... habe ich kein Register zur Kalibrierung gefunden.

Wieso soll der Sensor Register dafür besitzen?

Er hast zumindest Register für eine Werkskalibirerung. Wenn die aus "Kostengründen" oder weil als "nicht kalibierbarer Ausschuss" im Werk nicht beschrieben wurden, dann könnte das zu Abweichungen führen...

Oliver W. schrieb:

MPU6050-IMU

Mir würde bei einer Neuentwicklung das hier zu denken geben:

1
MPU-6050 Produktstatus: Obsolete 
2
Recommended Alternate Part No. : ICM-42670-P 
3
(Interchangeability is not guaranteed.)

Könnte natürlich auch sein, dass diese Abkündigung irgendwelche chinesischen "Second-Source" Hersteller reizt.

Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren