Wie man einen Kreisel / Beschleunigungsmesser liest

10

Ich habe kürzlich dieses Breakout Board MPU6050 GY-521 gekauft . Ich habe es mit meinem Arduino Mega versucht, indem ich diese Arduino-Skizze verwendet habe, die von der offiziellen arduino.cc bereitgestellt wurde .
( MPU-6050 Datenblatt , InvenSence (Produzent) 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 diesem König der Ausgabe kontinuierlich). Ich weiß sicher, nur die Temperaturanzeige ist sinnvoll. Aber was sind diese Werte für Beschleunigung und Kreiselwerte?

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

Ich hoffe, es wird jemanden geben, der Erfahrung mit dem MPU-6050-Modul hat. Gib mir nur einen Punkt, um zu beginnen. Ich habe keine Ahnung, wie man das Modul benutzt ... :(

Jede Hilfe wird sehr geschätzt. Vielen Dank !

Anubis
quelle
1
Ich hatte ein ähnliches Problem, das in dieser Frage Electronics
Stackexchange.com/questions/39024/…
Wow-- das ist eine nette kleine IMU!
Scott Seidman

Antworten:

6

Die Anzeige des Beschleunigungsmessers scheint sinnvoll zu sein. Das Datenblatt , Seite 13 zeigt 4 verschiedene Empfindlichkeiten:

2 g  
4 g  
8 g  
16 g  

mit resp. Sensitivitätsskalenfaktoren:

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

Aus der Z-Messung 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-Messung erwarten können, wenn Sie den Sensor mehr oder weniger horizontal halten. Der X- und Y-Wert ist wahrscheinlich auch auf die Gravitation 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 des Lesens haben, wenn Sie das Teil in Ihren Händen halten.

stevenvh
quelle
Vielen Dank! Alle Ihre Annahmen sind richtig. Schlagen Sie mir dann vor, die Rohleistung mit 1g/16384(bei Verwendung einer 2g-Skala) zu multiplizieren , um den tatsächlichen Beschleunigungswert (für alle Achsen) zu erhalten? Wie gehe ich dann mit Kreiselmessungen um?
Anubis
Und was bedeutet das LSBin der Einheit LSB/g?
Anubis
Der Kreisel scheint sehr empfindlich zu sein, so dass das Halten in Ihren Händen eine Rotationsmessung ergeben kann, wenn Ihre Hände etwas zittern würden (zu viel Kaffee? :-)). LSB = Least Significant Bit, das ich als "count" übersetzt habe. Es zeigt die minimale Änderung an.
Stevenvh
Im Allgemeinen umfassen "rohe" Messwerte von diesem Gerätetyp Offset- (Bias-) und Skalierungsfaktorfehler. Schließlich möchten Sie diese Fehler kalibrieren, indem Sie den Versatzwert subtrahieren und mit einem Skalierungsfaktor-Anpassungswert für jede Achse multiplizieren.
Dave Tweed
Der Link zum Datenblatt ist unterbrochen. Kennen Sie zufällig den neuen Speicherort dieses Dokuments?
Rechtes Bein
11

Ein Gyroskop gibt die Werte der Winkelgeschwindigkeit (Grad / Sek.) In den drei jeweiligen Achsen (Gier-, Nick- bzw. Rollachse) an.

Der von diesen Sensoren zuerst angegebene Rohwert sollte jedoch durch Skalierung in sinnvolle Beschleunigungs- oder Winkelgeschwindigkeitswerte umgewandelt werden.

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

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

9.81ms2

Skalierungsfaktoren für Beschleunigungsmesserwerte:

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

Konvertieren der Rohdaten:

required_value=raw_valueproper_sensitivity

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 Grenzbereich von 2 g zu liegen. Skalierungsfaktor = 16384

ax=194416384g

Gyro scheint sich in der Grenze von . Skalierungsfaktor oder Empfindlichkeit = 131250ºs

impliziertgyro_value=34131degreessec

Ich hoffe, das hilft. :) :)

Sasebot
quelle
1
Ich bin der Meinung, dass diese Antwort eine viel bessere Erklärung liefert als die akzeptierte.
Chutsu
@ajmal Ich verstehe die Sensorwerte bis zu dem von Ihnen beschriebenen Punkt. Ich verstehe auch, dass der Kreisel standardmäßig eine leichte Abweichung aufweist. Aber ich verstehe nicht, wie man die Daten in der realen Positionierung visualisiert. Ich habe viel über Eulerwinkel und Quarternionen gelesen, aber ich verstehe die Kompromisse zwischen den Darstellungen und der Mathematik dahinter nicht. Irgendwelche Vorschläge, wo ich anfangen soll.
Seetharaman