Comment lire un gyroscope / accéléromètre

10

J'ai récemment acheté cette carte de dérivation MPU6050 GY-521 . Je l'ai essayé avec mon Arduino Mega en utilisant ce croquis Arduino fourni par arduino.cc officiel .
( Fiche technique MPU-6050 , page InvenSence (producteur) )

Mec, ça donne cette sortie bizarre !!!

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, 

(Ce n'est qu'une partie de celui-ci, il donne ce roi de sortie en continu). Je suis sûr que seule la lecture de la température est significative. Mais quelles sont ces valeurs données pour les lectures d'accélération et de gyroscope ??

OK, ça dit que ce sont des valeurs brutes. Si c'est le cas, comment puis-je les convertir en valeurs significatives. En espérant que cela puisse être utile (comme beaucoup l'ont suggéré), j'aime aussi savoir comment utiliser la soi-disant Jeff Rowbergbibliothèque.

J'espère qu'il y aura quelqu'un d'expérience avec le module MPU-6050. Donnez-moi un point pour commencer. Je n'ai aucune idée de comment utiliser le module ... :(

Toute aide est grandement appréciée. Merci !

Anubis
la source
1
J'ai eu un problème similaire qui a été résolu dans cette question electronics.stackexchange.com/questions/39024/…
JDD
Wow - c'est un petit IMU astucieux!
Scott Seidman

Réponses:

6

La lecture de l' accéléromètre semble avoir du sens. La fiche technique , page 13 indique 4 sensibilités différentes:

2 g  
4 g  
8 g  
16 g  

avec resp. facteurs d'échelle de sensibilité:

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

D'après la lecture Z, je suppose que vous avez sélectionné l'échelle 2 g, puis 15608 est 0,95 g, ce que vous pouvez attendre d'une lecture de l'axe Z lorsque vous maintenez le capteur plus ou moins horizontal. Les lectures X et Y sont probablement également dues à la gravitation lorsque vous ne tenez pas la pièce parfaitement horizontale. Et vous aurez également une erreur de lecture.



Similaire pour le gyroscope . À 131 comptes par degré / s, vous pouvez avoir ce type de lecture si vous tenez la pièce entre vos mains.

stevenvh
la source
Merci! Toutes vos hypothèses sont correctes. Alors, me proposez-vous de multiplier la sortie brute par 1g/16384(lorsque vous utilisez l'échelle 2g) pour obtenir la lecture réelle de l'accélération (pour tous les axes)? Alors, comment gérer les lectures gyroscopiques?
Anubis
Et quel est le sens de LSBdans l'unité LSB/g?
Anubis
Le gyroscope semble être très sensible, de sorte que le tenir dans vos mains peut donner une lecture de rotation lorsque vos mains tremblent un peu (trop de café? :-)). LSB = bit le moins significatif, que j'ai traduit par "compte". Il indique le changement minimum.
stevenvh
En général, les lectures «brutes» de ce type d'appareil vont inclure des erreurs de décalage (biais) et de facteur d'échelle. Finalement, vous souhaiterez étalonner ces erreurs en soustrayant la valeur de décalage et en multipliant par une valeur d'ajustement du facteur d'échelle pour chaque axe.
Dave Tweed
Le lien vers la fiche technique est rompu. Connaissez-vous le nouvel emplacement de ce document?
Jambe droite du
11

Un gyroscope donne les valeurs de la vitesse angulaire (degrés / sec) dans les trois axes respectifs (axes de lacet, de tangage et de roulis respectivement).

Mais quelle que soit la valeur brute donnée en premier par ces capteurs, elle doit être convertie en valeurs d'accélération sensible ou de vitesse angulaire par mise à l'échelle.

La fiche technique InvenSense du MPU-6050 indique que nous devons utiliser différents facteurs d'échelle pour différentes plages de valeurs gyroscopiques. J'expliquerai finalement comment utiliser ces facteurs d'échelle.

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

De même, pour l'accéléromètre (qui donne l'accélération des axes x, y, z, y compris la gravité), l'unité utilisée est g ( ).9.81ms2

Facteurs d'échelle pour les valeurs de l'accéléromètre:

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

Conversion des données brutes:

required_value=raw_valueproper_sensitivity

Par exemple, dans les premières données, vous avez

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

L'accélération semble être dans la limite de 2g. Donc, facteur d'échelle = 16384

impliqueax=194416384g

Le gyro semble être dans la limite de . Donc, facteur d'échelle ou sensibilité = 131250ºs

impliquegyro_value=34131degreessec

J'espère que ça t'as aidé. :)

sasebot
la source
1
Je pense que cette réponse fournit une bien meilleure explication par rapport à celle acceptée.
chutsu
@ajmal Je comprends les valeurs du capteur jusqu'au point que vous avez décrit. Je comprends également que le gyroscope par défaut a une légère dérive. Mais je ne comprends pas comment visualiser les données dans le positionnement dans le monde réel. J'ai beaucoup lu sur les angles d'Euler, les quarternions, mais je ne comprends pas les compromis entre les représentations et les mathématiques derrière. Toute suggestion par où commencer.
seetharaman