Wie man einen Kreisel/Beschleunigungsmesser liest

Ich habe kürzlich dieses Breakout-Board MPU6050 GY-521 gekauft . Ich habe es mit meinem Arduino Mega versucht, indem ich diese Arduino-Skizze von offizieller arduino.cc verwendet habe .
( MPU-6050 Datenblatt , InvenSence (Hersteller) Seite )

Mann, es gibt diese seltsame Ausgabe!!!

InvenSense MPU-6050
June 2012
WHO_AM_I : 68, error = 0
PWR_MGMT_2 : 0, error = 0

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 1944, 368, 15608
temperature: 30.576 degrees Celsius
gyro x,y,z : -34, -204, -247, 

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 1952, 364, 15304
temperature: 30.435 degrees Celsius
gyro x,y,z : -38, -216, -274, 

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 1864, 388, 15356
temperature: 30.482 degrees Celsius
gyro x,y,z : -34, -233, -278, 

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 1888, 324, 15260
temperature: 30.576 degrees Celsius
gyro x,y,z : -14, -220, -261, 

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 1904, 392, 15316
temperature: 30.624 degrees Celsius
gyro x,y,z : -34, -241, -238, 

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 1856, 308, 15604
temperature: 30.435 degrees Celsius
gyro x,y,z : -33, -252, -235, 

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 1892, 444, 15528
temperature: 30.624 degrees Celsius
gyro x,y,z : 20, -236, -251, 

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 1924, 356, 15520
temperature: 30.576 degrees Celsius
gyro x,y,z : -19, -224, -251, 

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 1844, 280, 15732
temperature: 30.529 degrees Celsius
gyro x,y,z : -1, -240, -249, 

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 2004, 372, 15396
temperature: 30.671 degrees Celsius
gyro x,y,z : -20, -252, -255, 

(Dies ist nur ein Teil davon, es gibt diesen König der Ausgabe kontinuierlich). Ich weiß es genau, nur die Temperaturanzeige ist aussagekräftig. Aber was sind diese Werte für Beschleunigungs- und Kreiselwerte?

OK, es heißt, das sind Rohwerte. Wenn ja, wie kann ich sie dann in sinnvolle Werte umwandeln? In der Hoffnung, dass es hilfreich sein kann (wie viele vorgeschlagen haben), möchte ich auch wissen, wie man die sogenannte Jeff RowbergBibliothek verwendet.

Ich hoffe, es gibt jemanden, der Erfahrung mit dem MPU-6050-Modul hat. Geben Sie mir nur einen Anfangspunkt. Ich habe keine Ahnung, wie man das Modul benutzt ... :(

Jede Hilfe wird sehr geschätzt. Vielen Dank !

Ich hatte ein ähnliches Problem, das in dieser Frage gelöst wurde electronic.stackexchange.com/questions/39024/…
Wow, das ist eine nette kleine IMU!

Antworten (2)

Die Messwerte des Beschleunigungsmessers scheinen sinnvoll zu sein. Das Datenblatt , Seite 13 gibt 4 verschiedene Empfindlichkeiten an:

2 g  
4 g  
8 g  
16 g  

mit bzw. Empfindlichkeitsskalierungsfaktoren:

16 384 counts/g  
8 192 counts/g  
4 096 counts/g  
2 048 counts/g  

Von der Z-Anzeige gehe ich davon aus, dass Sie die 2-g-Skala ausgewählt haben, dann ist 15 608 0,95 g, was Sie von einer Z-Achsen-Anzeige erwarten können, wenn Sie den Sensor mehr oder weniger horizontal halten. Die X- und Y-Ablesung sind wahrscheinlich auch auf die Schwerkraft zurückzuführen, wenn Sie das Teil nicht perfekt horizontal halten. Und Sie werden auch einen Fehler beim Lesen haben.



Ähnliches gilt für den Kreisel . Bei 131 Zählungen pro Grad/s können Sie diese Art von Messwert haben, wenn Sie das Teil in Ihren Händen halten.

Vielen Dank! Alle Ihre Annahmen sind richtig. Schlagen Sie mir dann vor, die obige Rohausgabe mit 1g/16384(bei Verwendung einer 2-g-Skala) zu multiplizieren, um den tatsächlichen Beschleunigungswert (für alle drei Achsen) zu erhalten? Wie geht man dann mit Kreiselwerten um?
Und was bedeutet LSBin der Einheit LSB/g?
Der Kreisel scheint sehr empfindlich zu sein, so dass das Halten in Ihren Händen möglicherweise eine Rotationsanzeige liefert, wenn Ihre Hände etwas zittern würden (zu viel Kaffee? :-)). LSB = Least Significant Bit, was ich mit „count“ übersetzt habe. Es zeigt die minimale Änderung an.
Im Allgemeinen enthalten "rohe" Messwerte von diesem Gerätetyp Offset- (Bias) und Skalierungsfaktorfehler. Schließlich möchten Sie diese Fehler kalibrieren, indem Sie den Offset-Wert subtrahieren und mit einem Skalierungsfaktor-Anpassungswert für jede Achse multiplizieren.
Der Link zum Datenblatt ist defekt. Kennen Sie zufällig den neuen Speicherort dieses Dokuments?

Ein Gyroskop gibt die Werte der Winkelgeschwindigkeit (Grad/Sek.) in den drei entsprechenden Achsen (jeweils Gier-, Nick- und Rollachse) an.

Aber welcher Rohwert auch immer zuerst von diesen Sensoren geliefert wird, sollte durch Skalierung in vernünftige Beschleunigungs- oder Winkelgeschwindigkeitswerte umgewandelt werden.

Das InvenSense-Datenblatt des MPU-6050 besagt, dass wir unterschiedliche Skalierungsfaktoren für unterschiedliche Bereiche von Kreiselwerten verwenden müssen. Ich werde erklären, wie man diese Skalierungsfaktoren am Ende verwendet.

Angular Velocity Limit  |   Sensitivity
----------------------------------------
250º/s                  |    131
500º/s                  |    65.5 
1000º/s                 |    32.8 
2000º/s                 |    16.4

In ähnlicher Weise ist für den Beschleunigungsmesser (der die Beschleunigung der X-, Y- und Z-Achse einschließlich der Schwerkraft angibt) die verwendete Einheit g ( 9.81 m s 2 ).

Skalierungsfaktoren für Beschleunigungsmesserwerte:

Acceleration Limit  |   Sensitivity
----------------------------------------
2g                  |    16,384
4g                  |    8,192  
8g                  |    4,096 
16g                 |    2,048 

Konvertieren der Rohdaten:

erforderlicher Wert = Rohwert richtige_Empfindlichkeit

Zum Beispiel haben Sie in den ersten Daten

accel x,y,z: 1944, 368, 15608
gyro x,y,z : -34, -204, -247

Die Beschleunigung scheint im Limit von 2g zu liegen. Skalierungsfaktor = 16384

impliziert a x = 1944 16384 g

Gyro scheint im Limit zu sein 250 º s . Skalierungsfaktor oder Empfindlichkeit = 131

impliziert Kreiselwert = 34 131 d e g r e e s s e c

Ich hoffe, das hilft. :)

Ich denke, diese Antwort bietet eine viel bessere Erklärung als die akzeptierte.
@ajmal Ich verstehe die Sensorwerte bis zu dem Punkt, den Sie beschrieben haben. Ich verstehe auch, dass Gyro standardmäßig eine leichte Drift hat. Aber ich verstehe nicht, wie man die Daten in der realen Weltpositionierung visualisiert. Ich habe viel über Euler-Winkel und Quartiere gelesen, aber ich verstehe die Kompromisse zwischen den Darstellungen und der Mathematik dahinter nicht. Jeder Vorschlag, wo ich anfangen soll.