Cómo leer un giroscopio / acelerómetro

10

Recientemente compré esta placa de conexión MPU6050 GY-521 . Lo probé con mi Arduino Mega usando este boceto Arduino proporcionado por arduino.cc oficial .
( Hoja de datos MPU-6050 , página InvenSence (productor) )

Hombre, da esta salida extraña !!!

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, 

(Esto es solo una parte, le da a este rey de salida continuamente). Lo sé con certeza, solo la lectura de temperatura es significativa. ¿Pero cuáles son esos valores dados para las lecturas de aceleración y giroscopio?

OK, dice que esos son valores en bruto. Si es así, ¿cómo puedo convertirlos en valores significativos? Con la esperanza de que pueda ser útil (como muchos sugirieron), también me gusta saber cómo usar la llamada Jeff Rowbergbiblioteca.

Espero que haya alguien experimentado con el módulo MPU-6050. Solo dame un punto para comenzar. No tengo idea de cómo usar el módulo ... :(

Cualquier ayuda es muy apreciada. Gracias !

Anubis
fuente
1
Tuve un problema similar que se resolvió en esta pregunta electronics.stackexchange.com/questions/39024/…
JDD
Wow-- esa es una pequeña IMU ingeniosa!
Scott Seidman

Respuestas:

6

La lectura del acelerómetro parece tener sentido. La hoja de datos , página 13 indica 4 sensibilidades diferentes:

2 g  
4 g  
8 g  
16 g  

con resp. factores de escala de sensibilidad:

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

A partir de la lectura Z, supongo que tiene seleccionada la escala de 2 g, luego 15 608 es 0.95 g, que es lo que puede esperar de una lectura del eje Z cuando mantiene el sensor más o menos horizontal. La lectura de X e Y probablemente también se deba a la gravitación cuando no mantiene la parte perfectamente horizontal. Y también tendrá un error en la lectura.



Similar para el giroscopio . Con 131 conteos por grado / s, puede tener este tipo de lectura si tiene la parte en sus manos.

stevenvh
fuente
¡Gracias! Todos tus supuestos son correctos. Entonces, ¿me sugiere que multiplique por encima de la producción bruta por 1g/16384(cuando use una escala de 2 g) para obtener la lectura de aceleración real (para todos los ejes)? Entonces, ¿cómo lidiar con las lecturas de giroscopio?
Anubis
¿Y cuál es el significado de LSBen la unidad LSB/g?
Anubis
El giroscopio parece ser muy sensible, por lo que sostenerlo en sus manos puede dar una lectura de rotación cuando sus manos tiemblan un poco (¿demasiado café? :-)). LSB = bit menos significativo, que traduje como "cuenta". Indica el cambio mínimo.
stevenvh
En general, las lecturas "en bruto" de este tipo de dispositivo incluirán errores de compensación (sesgo) y de factor de escala. Eventualmente, querrá calibrar estos errores restando el valor de compensación y multiplicándolo por un valor de ajuste de factor de escala para cada eje.
Dave Tweed
El enlace a la hoja de datos se ha roto. ¿Conoces la nueva ubicación de ese documento?
Pierna derecha el
11

Un giroscopio proporciona los valores de velocidad angular (grados / seg) en los tres ejes respectivos (ejes de guiñada, inclinación y balanceo respectivamente).

Pero cualquier valor bruto dado primero por estos sensores debe convertirse a valores de aceleración sensible o velocidad angular mediante escalado.

La hoja de datos de InvenSense de MPU-6050 dice que tenemos que usar diferentes factores de escala para diferentes rangos de valores de giroscopio. Explicaré cómo usar estos factores de escala al final.

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

9.81ms2

Factores de escala para los valores del acelerómetro:

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

Convertir los datos sin procesar:

required_value=raw_valueproper_sensitivity

Por ejemplo, en los primeros datos, tienes

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

La aceleración parece estar en el límite de 2 g. Entonces, factor de escala = 16384

ax=194416384g

Gyro parece estar en el límite de . Entonces, factor de escala o sensibilidad = 131250ºs

implicagyro_value=34131degreessec

Espero que ayude. :)

sasebot
fuente
1
Creo que esta respuesta proporciona una explicación mucho mejor en comparación con la aceptada.
chutsu
@ajmal Entiendo los valores del sensor hasta el punto que describió. También entiendo que el giroscopio por defecto tiene una ligera deriva. Pero no entiendo cómo visualizar los datos en el posicionamiento del mundo real. Leí mucho sobre ángulos de euler, cuartones, pero no entiendo las compensaciones entre las representaciones y las matemáticas detrás de ellas. Cualquier sugerencia por dónde empezar.
seetharaman