IMU MPU6050 Erdbeschleunigung nicht gleich 1

OP #7937783

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)

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.

OP

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

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?

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.

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.

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.

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.

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.

OP

Ε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:
OP

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

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

Eine eigene Frage? Dieser Thread ist über ein Jahr alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.