proyectos - Usa un giróscopo/acelerómetro con Arduino
mpu6050 arduino nano (2)
He intentado este boceto proporcionado por arduino.cc. (Tengo una placa de ruptura MPU6050 GY-521 ).
Creo que funciona bien Da un conjunto extraño de números. No puedo sacarle ningún sentido. Dice que esos son valores en bruto.
¿Cómo puedo convertirlos en valores significativos?
El resultado es el siguiente. Incluso cuando todo se mantiene estacionario, ¡da valores cambiantes! ¿Esto es significativo? Entonces, ¿cómo se debe entender?
(Lo único que sé es que el valor de la temperatura es significativo: 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,
Debe mirar la hoja de datos para traducir los valores brutos a significativos. Busque tablas como esta para el giroscopio:
Si usó los valores predeterminados, FS_SEL
será 0
. Esa es la configuración de sensibilidad. Por lo tanto, para traducir los valores del giroscopio en bruto a grados por segundo, los divide en 131. Puede ver que los números salen por debajo de 2 grados por segundo, lo que representa un margen razonable de error.
Para la sensibilidad del acelerómetro predeterminado, se divide por 16,384
para obtener el valor en g (la fuerza ejercida por la tierra). Estás obteniendo del orden de 0.01g para los ejes xey, y 0.95g para el eje z, que está dentro de un margen de error razonable para que el chip permanezca inmóvil con el eje z apuntando hacia la tierra.
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