Estoy tratando de conectar un giroscopio MPU6050 a arduino ATmega2560 y leer sus valores en bruto de su 6DOF (giroscopio y acc).
Encontré el siguiente código:
//Activate the MPU-6050
Wire.beginTransmission(0x68); //Start communicating with the MPU-6050
Wire.write(0x6B); //Send the requested starting register
Wire.write(0x00); //Set the requested starting register
Wire.endTransmission(); //End the transmission
//Configure the accelerometer (+/-8g)
Wire.beginTransmission(0x68); //Start communicating with the MPU-6050
Wire.write(0x1C); //Send the requested starting register
Wire.write(0x10); //Set the requested starting register
Wire.endTransmission(); //End the transmission
//Configure the gyro (500dps full scale)
Wire.beginTransmission(0x68); //Start communicating with the MPU-6050
Wire.write(0x1B); //Send the requested starting register
Wire.write(0x08); //Set the requested starting register
Wire.endTransmission(); //End the transmission
Estoy tratando de romper línea por línea, para entender lo que sucede durante la configuración del giroscopio.
Según hoja de datos de MPU6050 , el I2C está en el registro 0x68
. El I2C nos ayuda a acceder a todos los registros y comunicarse con el maestro conectado. Lo que da las siguientes 3 líneas:
Wire.beginTransmission(0x68);
Wire.write(0x6B);
Wire.write(0x00);
Según la hoja, el 0x6B
es el registro diseñado para habilitar y deshabilitar el giroscopio:
Este registro permite al usuario configurar el modo de energía y el reloj fuente. También proporciona un poco para restablecer todo el dispositivo, y un Broca para desactivar el sensor de temperatura. Al establecer SUEÑO en 1, el El MPU-60X0 puede ponerse en modo de suspensión de baja potencia. Cuando el ciclo se establece en 1 mientras que SLEEP está deshabilitado, el MPU-60X0 se pondrá en modo Ciclo. En Modo ciclo, el dispositivo alterna entre el modo de reposo y el despertar para tomar una sola muestra de datos del acelerómetro a una frecuencia determinada por LP_WAKE_CTRL (registro 108). Para configurar la frecuencia de activación, use LP_WAKE_CTRL dentro del registro de Power Management 2 (Registro 108). Un Oscilador interno de 8 MHz, reloj basado en giroscopio o fuentes externas Se puede seleccionar como la fuente de reloj MPU-60X0. Cuando el interno de 8 MHz El oscilador o una fuente externa se elige como la fuente del reloj, el El MPU-60X0 puede funcionar en modos de baja potencia con los giroscopios desactivados. Al encenderse, la fuente de reloj MPU-60X0 se establece por defecto en la interna oscilador. Sin embargo, es altamente recomendable que el dispositivo sea Configurado para usar uno de los giroscopios (o una fuente de reloj externa) Como referencia del reloj para mejorar la estabilidad. La fuente del reloj puede ser seleccionado de acuerdo con la siguiente tabla.
Entonces, ¿por qué establecemos su valor en 0x00
?
Y lo mismo para configurar el giroscopio en el registro 0x1B
donde las hojas de datos especifican los rangos de escala completa como:
Elcódigoestableceelrangode500dps
,entonces,¿porquéelprogramadorestableceelregistroen0x08
ynoen0x01
dondeelFS_SEL[1:0]
deberíacontenerdecimalesde0a3,verdad?