2012-09-06 3 views
5

Ich habe versucht this sketch von arduino.cc zur Verfügung gestellt. (Ich habe eine MPU6050 GY-521 breakout board.)Verwenden Sie einen Kreisel/Beschleunigungsmesser mit Arduino

Ich denke, es funktioniert gut. Es gibt eine merkwürdige Menge von Zahlen, die ich nicht verstehen kann. Es sagt, dass das Rohwerte sind.

Wie kann ich sie in sinnvolle Werte umwandeln?

Der Ausgang ist wie folgt. Selbst wenn das Ganze still steht, gibt es wechselnde Werte! Ist das sinnvoll? Wie soll es dann verstanden werden?

(Was ich nur wissen, ist, dass der Temperaturwert ist sinnvoll: D)

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: 260, 120, 15572 
temperature: 31.047 degrees Celsius 
gyro x,y,z : -24, -234, -240, 

MPU-6050 
Read accel, temp and gyro, error = 0 
accel x,y,z: 304, 12, 15608 
temperature: 31.000 degrees Celsius 
gyro x,y,z : -7, -234, -232, 

MPU-6050 
Read accel, temp and gyro, error = 0 
accel x,y,z: 160, 100, 15716 
temperature: 31.000 degrees Celsius 
gyro x,y,z : -8, -241, -248, 

MPU-6050 
Read accel, temp and gyro, error = 0 
accel x,y,z: 192, 56, 15712 
temperature: 31.000 degrees Celsius 
gyro x,y,z : -36, -212, -222, 

MPU-6050 
Read accel, temp and gyro, error = 0 
accel x,y,z: 212, 100, 15440 
temperature: 30.906 degrees Celsius 
gyro x,y,z : -32, -253, -240, 
+1

Sie sind bereits sinnvoll. Sie geben Ihnen wahrscheinlich die Beschleunigung in Bezug auf die Gravitation (ca. 9,8 m/s^2) in X-, Y- und Z-Richtung. –

+0

@ H2CO3 Ich habe den Beitrag bearbeitet (wegen dem, was Sie gesagt haben). Bitte beachten Sie den bearbeiteten Post. Irgendeine Idee?? – Anubis

+2

@Anibis Beschleunigungssensoren sind so - selbst wenn sie konstant gehalten werden, gibt es kleine fehlerhafte Signale. Und der große Z-Wert ist auf die Gravitation zurückzuführen (die vertikal ist, dh parallel zur Z-Achse). –

Antwort

11

Sie müssen an den datasheet zu suchen, um die rohen Werte sinnvoll diejenigen zu übersetzen. Geben Sie für Tabellen wie diese für das Gyroskop:

gyro table

Wenn Sie die Standardwerte verwendet, FS_SEL0 sein wird. Das ist die Empfindlichkeitseinstellung. Um also Ihre rohen Gyroskopwerte in Grad pro Sekunde zu übersetzen, teilen Sie sie durch 131. Sie können sehen, dass Ihre Zahlen unter 2 Grad pro Sekunde herauskommen, was eine vernünftige Fehlerspanne ist.

Für die Standard-Beschleunigungssensor-Empfindlichkeit teilen Sie durch 16,384, um den Wert in g (die von der Erde ausgeübte Kraft) zu erhalten. Sie erhalten in der Größenordnung von 0,01 g für die x- und y-Achse und 0,95 g für die z-Achse, was innerhalb einer vernünftigen Fehlerspanne liegt, wenn der Chip mit der zur Erde gerichteten z-Achse stillsteht.

+3

Vielen Dank Karl! Ich habe dieses Modul gekauft, seit ich herausgefunden habe, dass es praktisch ist, Quad-Copter zu bauen (ich werde einen bauen). Aber ansonsten weiß ich nichts darüber, sie zu benutzen. Ich habe nur mit dem angegebenen Beispielcode getestet (dieser Code ist riesig, ich kann nichts verstehen :(). Ich weiß, dass es [diese Bibliothek] gibt (https://github.com/jrowberg/i2cdevlib/tree/master/Arduino/MPU6050), viele sagen, es ist sehr nützlich.Wenn Sie mir beim Schreiben einer einfachen (verständlichen) Skizze helfen können, werde ich dankbar sein. _ (Ich fand [diese Seite] (http://www.instructables.com/ ID/Accelerometer-Gyro-Tutorial /) hilfreich.) _ – Anubis

0
mpu.setFullScaleGyroRange(0); //0 = +/- 250 degrees/sec | 1 = +/- 500 degrees/sec | 2 = +/- 1000 degrees/sec | 3 = +/- 2000 degrees/sec 
    mpu.setFullScaleAccelRange(0); //0 = +/- 2g | 1 = +/- 4g | 2 = +/- 8g | 3 = +/- 16g 
+2

Bitte fügen Sie Erklärungen zu Ihren Antworten hinzu, um zukünftigen Benutzern zu helfen –

+0

Während dieser Code die Frage beantworten kann, bietet zusätzlicher Kontext, warum und/oder wie dieser Code die Frage beantwortet langfristiger Wert. Code-only-Antworten werden abgeraten. – Ajean