Esta biblioteca se comunica con las unidades de medida inercial (IMU) InvensenseMPU-6500, InvenSense MPU-9250 y MPU-9255. Esta biblioteca es compatible con los sistemas de construcción Arduino y CMake.
El Invense MPU-6500 es un giroscopio de tres ejes y un acelerómetro de tres ejes. El InvenSense MPU-9250 es un sistema en paquete (SiP) que combina dos chips: el giroscopio de tres ejes y el acelerómetro de tres ejes MPU-6500; y el magnetómetro de tres ejes AK8963. El MPU-6500 y el MPU-9250 admiten comunicación I2C, hasta 400 kHz y SPI, hasta 1 MHz para configuración de registros y 20 MHz para lectura de datos. Están disponibles los siguientes rangos de sensores de escala completa seleccionables:
Rango de escala completa del giroscopio | Rango de escala completa del acelerómetro | Rango de escala completa del magnetómetro (solo MPU-9250) |
---|---|---|
+/- 250 grados/s | +/- 2g | +/- 4800 unidades |
+/- 500 grados/s | +/- 4g | |
+/- 1000 grados/s | +/- 8g | |
+/- 2000 grados/s | +/- 16g |
Las IMU toman muestras de giroscopios, acelerómetros y magnetómetros con convertidores analógicos a digitales de 16 bits. También cuenta con filtros digitales programables, un reloj de precisión y un sensor de temperatura integrado.
Utilice Arduino Library Manager para instalar esta biblioteca o clonarla en su carpeta Arduino/bibliotecas.
Para MPU-6500, esta biblioteca se agrega como:
# include " mpu6500.h "
Para MPU-9250, esta biblioteca se agrega como:
# include " mpu9250.h "
Los ejemplos de ejecutables de Arduino se encuentran en: ejemplos/arduino/ . Los dispositivos Teensy 3.x, 4.x y LC se utilizan para realizar pruebas en Arduino y esta biblioteca debe ser compatible con otros dispositivos Arduino.
CMake se utiliza para construir esta biblioteca, que se exporta como una biblioteca de destino llamada invensense_imu .
Para MPU-6500, esta biblioteca se agrega como:
# include " mpu6500.h "
Para MPU-9250, esta biblioteca se agrega como:
# include " mpu9250.h "
La biblioteca también se puede compilar de forma independiente utilizando el lenguaje CMake de crear un directorio de compilación y luego, desde ese directorio, emitir:
cmake .. -DMCU=MK66FX1M0
make
Esto creará la biblioteca y los ejecutables de ejemplo llamados i2c_example , spi_example , drdy_spi_example y wom_example (solo MPU-9250). Los archivos fuente ejecutables de ejemplo se encuentran en ejemplos/cmake . Observe que el comando cmake incluye una definición que especifica el microcontrolador para el que se está compilando el código. Esto es necesario para configurar correctamente el código, la frecuencia de la CPU y las opciones de compilación/vinculación. Las MCU disponibles son:
Se sabe que funcionan con los mismos paquetes utilizados en los productos Teensy. También se sabe que cambiar de paquete funciona bien, siempre y cuando sea solo un cambio de paquete.
Los objetivos de ejemplo crean ejecutables para comunicarse con el sensor usando comunicación I2C o SPI, usando la interrupción de datos listos y usando la interrupción de activación por movimiento, respectivamente. Cada objetivo también tiene un _hex , para crear el archivo hexadecimal para cargarlo en el microcontrolador, y un _upload para usar Teensy CLI Uploader para actualizar Teensy. Tenga en cuenta que las instrucciones para configurar su entorno de compilación se pueden encontrar en nuestro repositorio de herramientas de compilación.
Esta biblioteca está dentro del espacio de nombres bfs .
Esta clase proporciona métodos para leer y escribir en registros en estos sensores. Se espera que esto funcione al menos con MPU-6000, MPU-6050, MPU-6500, MPU-9150 y MPU-9250; aunque también puede funcionar para otros sensores. La mayoría de los usuarios probablemente preferirán las clases específicas de sensores que se detallan a continuación; sin embargo, esta clase puede permitir a las personas desbloquear una mayor funcionalidad y utilizarla como punto de partida para sus propios controladores de sensores.
InvensenseImu() Constructor predeterminado, requiere llamar al método Config para configurar el bus I2C o SPI y la dirección I2C o el pin de selección del chip SPI.
InvensenseImu(TwoWire *i2c, const uint8_t addr) Crea un objeto InvensenseImu. Este constructor se utiliza para la interfaz de comunicación I2C. Se pasa un puntero al objeto de bus I2C junto con la dirección I2C del sensor.
InvensenseImu(SPIClass *bus, uint8_t cs) Crea un objeto InvensenseImu. Este constructor se utiliza para la interfaz de comunicación SPI. Se pasa un puntero al objeto del bus SPI junto con el pin de selección de chip del sensor. Cualquier pin capaz de realizar E/S digitales se puede utilizar como pin de selección de chip.
void Config(TwoWire *bus, const uint8_t addr) Esto es necesario cuando se utiliza el constructor predeterminado y se configura el bus I2C y la dirección I2C.
void Config(SPIClass *spi, const uint8_t cs) Esto es necesario cuando se utiliza el constructor predeterminado y se configura el bus SPI y el pin de selección de chip.
void Begin() Inicializa la comunicación con el sensor. El bus de comunicación no se inicializa dentro de esta biblioteca y debe inicializarse por separado; esto mejora la compatibilidad con otros sensores que puedan estar en el mismo bus.
bool WriteRegister(const uint8_t reg, const uint8_t data, const int32_t spi_clock) Escribe datos de registro en el sensor dada la dirección de registro y los datos. Se debe especificar la velocidad del reloj SPI si se utiliza la comunicación SPI.
bool WriteRegister(const uint8_t reg, const uint8_t data) Sobrecarga de lo anterior donde se utiliza la comunicación I2C.
bool ReadRegisters(const uint8_t reg, const uint8_t count, const int32_t spi_clock, uint8_t * const data) Lee los datos de registro del sensor dada la dirección del registro, el número de registros para leer, el reloj SPI y un puntero para almacenar los datos.
bool ReadRegisters(const uint8_t reg, const uint8_t count, uint8_t * const data) Sobrecarga de lo anterior donde se utiliza la comunicación I2C.
Esta clase funciona con las IMU MPU-9250 y MPU-9255.
Mpu9250() Constructor predeterminado, requiere llamar al método Config para configurar el bus I2C o SPI y la dirección I2C o el pin de selección del chip SPI.
Mpu9250(i2c_t3 *bus, I2cAddr addr) Crea un objeto Mpu9250. Este constructor se utiliza para la interfaz de comunicación I2C. Se pasa un puntero al objeto de bus I2C junto con la dirección I2C del sensor. La dirección será I2C_ADDR_PRIM (0x68) si el pin AD0 está conectado a tierra e I2C_ADDR_SEC (0x69) si el pin AD0 está elevado.
Mpu9250 mpu9250 (&Wire, bfs::Mpu9250::I2C_ADDR_PRIM);
Mpu9250(SPIClass *bus, uint8_t cs) Crea un objeto Mpu9250. Este constructor se utiliza para la interfaz de comunicación SPI. Se pasa un puntero al objeto del bus SPI junto con el pin de selección de chip del sensor. Cualquier pin capaz de realizar E/S digitales se puede utilizar como pin de selección de chip.
Mpu9250 mpu9250 (&SPI, 2 );
void Config(TwoWire *bus, const I2cAddr addr) Esto es necesario cuando se utiliza el constructor predeterminado y se configura el bus I2C y la dirección I2C. La dirección será I2C_ADDR_PRIM (0x68) si el pin AD0 está conectado a tierra e I2C_ADDR_SEC (0x69) si el pin AD0 está elevado.
void Config(SPIClass *spi, const uint8_t cs) Esto es necesario cuando se utiliza el constructor predeterminado y se configura el bus SPI y el pin de selección de chip.
bool Begin() Inicializa la comunicación con el sensor y configura los rangos predeterminados del sensor, las tasas de muestreo y los ajustes del filtro de paso bajo. El rango predeterminado del acelerómetro es +/- 16 gy el rango predeterminado del giroscopio es +/- 2000 grados/s. La frecuencia de muestreo predeterminada es 1000 Hz y el filtro de paso bajo está configurado en una frecuencia de corte de 184 Hz. Se devuelve True si se puede establecer la comunicación con el sensor y la configuración se completa correctamente; de lo contrario, se devuelve false. El bus de comunicación no se inicializa dentro de esta biblioteca y debe inicializarse por separado; esto mejora la compatibilidad con otros sensores que puedan estar en el mismo bus.
Wire.begin();
Wire.setClock( 400000 );
bool status = mpu9250.Begin();
if (!status) {
// ERROR
}
bool EnableDrdyInt() Habilita la interrupción de datos listos. Se activará una interrupción de 50 us en el pin INT del MPU-9250 cuando los datos de la IMU estén listos. Esta interrupción está activa en nivel alto. Este método devuelve verdadero si la interrupción se habilita correctamente; de lo contrario, devuelve falso.
bool status = mpu9250.EnableDrdyInt();
if (!status) {
// ERROR
}
bool DisableDrdyInt() Desactiva la interrupción de datos listos. Este método devuelve verdadero si la interrupción se deshabilita con éxito; de lo contrario, devuelve falso.
bool status = mpu9250.DisableDrdyInt();
if (!status) {
// ERROR
}
bool ConfigAccelRange(const AccelRange range) Establece el rango de escala completa del acelerómetro. Las opciones son:
Rango | Valor de enumeración |
---|---|
+/- 2g | ACCEL_RANGE_2G |
+/- 4g | ACCEL_RANGE_4G |
+/- 8g | ACCEL_RANGE_8G |
+/- 16g | ACCEL_RANGE_16G |
Se devuelve True al configurar correctamente el rango del acelerómetro; de lo contrario, se devuelve false. El rango predeterminado es +/-16 g.
bool status = mpu9250.ConfigAccelRange(bfs::Mpu9250::ACCEL_RANGE_4G);
if (!status) {
// ERROR
}
AccelRange accel_range() Devuelve el rango actual del acelerómetro.
AccelRange range = mpu9250.accel_range();
bool ConfigGyroRange(const GyroRange range) Establece el rango de escala completa del giroscopio. Las opciones son:
Rango | Valor de enumeración |
---|---|
+/- 250 grados/s | GYRO_RANGE_250DPS |
+/- 500 grados/s | GYRO_RANGE_500DPS |
+/- 1000 grados/s | GYRO_RANGE_1000DPS |
+/- 2000 grados/s | GYRO_RANGE_2000DPS |
Se devuelve True al configurar correctamente el rango del giroscopio; de lo contrario, se devuelve false. El rango predeterminado es +/-2000 grados/s.
bool status = mpu9250.ConfigGyroRange(bfs::Mpu9250::GYRO_RANGE_1000DPS);
if (!status) {
// ERROR
}
GyroRange gyro_range() Devuelve el rango giroscópico actual.
GyroRange range = mpu9250.gyro_range();
bool ConfigSrd(const uint8_t srd) Establece el divisor de frecuencia de muestreo del sensor. El MPU-9250 muestrea el acelerómetro y el giroscopio a una velocidad, en Hz, definida por:
Una configuración srd de 0 significa que el MPU-9250 muestrea el acelerómetro y el giroscopio a 1000 Hz. Una configuración srd de 4 establecería el muestreo en 200 Hz. La interrupción de datos listos de la IMU está vinculada a la velocidad definida por el divisor de frecuencia de muestreo. El magnetómetro se muestrea a 100 Hz para obtener valores del divisor de frecuencia de muestreo correspondientes a 100 Hz o más. De lo contrario, el magnetómetro se muestrea a 8 Hz.
Se devuelve True al configurar correctamente el divisor de frecuencia de muestreo; de lo contrario, se devuelve false. El valor predeterminado del divisor de frecuencia de muestreo es 0, lo que da como resultado una frecuencia de muestreo de 1000 Hz.
/* Set sample rate divider for 50 Hz */
bool status = mpu9250.sample_rate_divider( 19 );
if (!status) {
// ERROR
}
uint8_t srd() Devuelve el valor actual del divisor de frecuencia de muestreo.
uint8_t srd = mpu9250.srd();
bool ConfigDlpfBandwidth(const DlpfBandwidth dlpf) Establece la frecuencia de corte del filtro de paso bajo digital para el acelerómetro, giroscopio y sensor de temperatura. Los anchos de banda disponibles son:
Ancho de banda DLPF | Valor de enumeración |
---|---|
184Hz | DLPF_BANDWIDTH_184HZ |
92Hz | DLPF_BANDWIDTH_92HZ |
41Hz | DLPF_BANDWIDTH_41HZ |
20Hz | DLPF_BANDWIDTH_20HZ |
10Hz | DLPF_BANDWIDTH_10HZ |
5Hz | DLPF_BANDWIDTH_5HZ |
Se devuelve True al configurar correctamente los filtros de paso bajo digitales; de lo contrario, se devuelve false. El ancho de banda predeterminado es 184 Hz.
bool status = mpu9250.ConfigDlpfBandwidth(bfs::Mpu9250::DLPF_BANDWIDTH_20HZ);
if (!status) {
// ERROR
}
DlpfBandwidth dlpf_bandwidth() Devuelve la configuración actual del ancho de banda del filtro de paso bajo digital.
DlpfBandwidth dlpf = mpu9250.dlpf_bandwidth();
bool EnableWom(int16_t umbral_mg, const WomRate wom_rate) Habilita la interrupción Wake-On-Motion. Coloca el MPU-9250 en un estado de bajo consumo, despertándose en un intervalo determinado por WomRate . Si el acelerómetro detecta movimiento que excede el umbral, umbral_mg , genera un pulso de 50us desde el pin de interrupción MPU-9250. Se admiten las siguientes tarifas WOM enumeradas:
Frecuencia de muestreo WOM | Valor de enumeración |
---|---|
0,24Hz | WOM_RATE_0_24HZ |
0,49Hz | WOM_RATE_0_49HZ |
0,98Hz | WOM_RATE_0_98HZ |
1,95Hz | WOM_RATE_1_95HZ |
3,91Hz | WOM_RATE_3_91HZ |
7,81Hz | WOM_RATE_7_81HZ |
15,63Hz | WOM_RATE_15_63HZ |
31,25Hz | WOM_RATE_31_25HZ |
62,50Hz | WOM_RATE_62_50HZ |
125Hz | WOM_RATE_125HZ |
250Hz | WOM_RATE_250HZ |
500Hz | WOM_RATE_500HZ |
El umbral de movimiento se proporciona como un valor entre 4 y 1020 mg, que se asigna internamente a un solo byte, valor 1-255. Esta función devuelve verdadero al habilitar correctamente Wake On Motion; de lo contrario, devuelve falso. Consulte el ejemplo de wom_i2c . El siguiente es un ejemplo de cómo habilitar la estela en movimiento con un umbral de 40 mg y una ODR de 31,25 Hz.
imu.EnableWom( 40 , bfs::Mpu9250::WOM_RATE_31_25HZ);
void Reset() Restablece el MPU-9250.
bool Read() Lee datos del MPU-9250 y almacena los datos en el objeto Mpu9250. Devuelve verdadero si los datos se leen correctamente; de lo contrario, devuelve falso.
/* Read the IMU data */
if (mpu9250.Read()) {
}
bool new_imu_data() Devuelve verdadero si se devolvieron nuevos datos del acelerómetro y el giroscopio.
if (mpu9250.Read()) {
bool new_data = mpu9250. new_imu_data ();
}
bool new_mag_data() Devuelve verdadero si el magnetómetro devolvió nuevos datos. Para frecuencias de muestreo del MPU-9250 de 100 Hz y superiores, el magnetómetro se muestrea a 100 Hz. Para frecuencias de muestreo del MPU-9250 inferiores a 100 Hz, el magnetómetro se muestrea a 8 Hz, por lo que no es raro recibir nuevos datos de IMU, pero no nuevos datos del magnetómetro.
if (mpu9250.Read()) {
bool new_mag = mpu9250. new_mag_data ();
}
float accel_x_mps2() Devuelve los datos del acelerómetro x del objeto Mpu9250 en unidades de m/s/s. Existen métodos similares para los datos de los ejes y y z.
/* Read the IMU data */
if (mpu9250.Read()) {
float ax = mpu9250. accel_x_mps2 ();
float ay = mpu9250. accel_y_mps2 ();
float az = mpu9250. accel_z_mps2 ();
}
float gyro_x_radps() Devuelve los datos del giroscopio x del objeto Mpu9250 en unidades de rad/s. Existen métodos similares para los datos de los ejes y y z.
/* Read the IMU data */
if (mpu9250.Read()) {
float gx = mpu9250. gyro_x_radps ();
float gy = mpu9250. gyro_y_radps ();
float gz = mpu9250. gyro_z_radps ();
}
float mag_x_ut() Devuelve los datos del magnetómetro x del objeto Mpu9250 en unidades de uT. Existen métodos similares para los datos de los ejes y y z.
/* Read the IMU data */
if (mpu9250.Read()) {
float hx = mpu9250. mag_x_ut ();
float hy = mpu9250. mag_y_ut ();
float hz = mpu9250. mag_z_ut ();
}
float die_temp_c() Devuelve la temperatura del troquel del sensor en unidades de C.
/* Read the IMU data */
if (mpu9250.Read()) {
float temp = mpu9250. die_temp_c ();
}
Esta clase funciona con el sensor MPU-6500.
Mpu6500() Constructor predeterminado, requiere llamar al método Config para configurar el bus I2C o SPI y la dirección I2C o el pin de selección del chip SPI.
Mpu6500(i2c_t3 *bus, I2cAddr addr) Crea un objeto Mpu6500. Este constructor se utiliza para la interfaz de comunicación I2C. Se pasa un puntero al objeto de bus I2C junto con la dirección I2C del sensor. La dirección será I2C_ADDR_PRIM (0x68) si el pin AD0 está conectado a tierra e I2C_ADDR_SEC (0x69) si el pin AD0 está elevado.
Mpu6500 mpu6500 (&Wire, bfs::Mpu6500::I2C_ADDR_PRIM);
Mpu6500(SPIClass *bus, uint8_t cs) Crea un objeto Mpu6500. Este constructor se utiliza para la interfaz de comunicación SPI. Se pasa un puntero al objeto del bus SPI junto con el pin de selección de chip del sensor. Cualquier pin capaz de realizar E/S digitales se puede utilizar como pin de selección de chip.
Mpu6500 mpu6500 (&SPI, 2 );
void Config(TwoWire *bus, const I2cAddr addr) Esto es necesario cuando se utiliza el constructor predeterminado y se configura el bus I2C y la dirección I2C. La dirección será I2C_ADDR_PRIM (0x68) si el pin AD0 está conectado a tierra e I2C_ADDR_SEC (0x69) si el pin AD0 está elevado.
void Config(SPIClass *spi, const uint8_t cs) Esto es necesario cuando se utiliza el constructor predeterminado y se configura el bus SPI y el pin de selección de chip.
bool Begin() Inicializa la comunicación con el sensor y configura los rangos predeterminados del sensor, las tasas de muestreo y los ajustes del filtro de paso bajo. El rango predeterminado del acelerómetro es +/- 16 gy el rango predeterminado del giroscopio es +/- 2000 grados/s. La frecuencia de muestreo predeterminada es 1000 Hz y el filtro de paso bajo está configurado en una frecuencia de corte de 184 Hz. Se devuelve True si se puede establecer la comunicación con el sensor y la configuración se completa correctamente; de lo contrario, se devuelve false. El bus de comunicación no se inicializa dentro de esta biblioteca y debe inicializarse por separado; esto mejora la compatibilidad con otros sensores que puedan estar en el mismo bus.
Wire.begin();
Wire.setClock( 400000 );
bool status = mpu6500.Begin();
if (!status) {
// ERROR
}
bool EnableDrdyInt() Habilita la interrupción de datos listos. Se activará una interrupción de 50 us en el pin INT del MPU-9250 cuando los datos de la IMU estén listos. Esta interrupción está activa en nivel alto. Este método devuelve verdadero si la interrupción se habilita correctamente; de lo contrario, devuelve falso.
bool status = mpu6500.EnableDrdyInt();
if (!status) {
// ERROR
}
bool DisableDrdyInt() Desactiva la interrupción de datos listos. Este método devuelve verdadero si la interrupción se deshabilita con éxito; de lo contrario, devuelve falso.
bool status = mpu6500.DisableDrdyInt();
if (!status) {
// ERROR
}
bool ConfigAccelRange(const AccelRange range) Establece el rango de escala completa del acelerómetro. Las opciones son:
Rango | Valor de enumeración |
---|---|
+/- 2g | ACCEL_RANGE_2G |
+/- 4g | ACCEL_RANGE_4G |
+/- 8g | ACCEL_RANGE_8G |
+/- 16g | ACCEL_RANGE_16G |
Se devuelve True al configurar correctamente el rango del acelerómetro; de lo contrario, se devuelve false. El rango predeterminado es +/-16 g.
bool status = mpu6500.ConfigAccelRange(bfs::Mpu6500::ACCEL_RANGE_4G);
if (!status) {
// ERROR
}
AccelRange accel_range() Devuelve el rango actual del acelerómetro.
AccelRange range = mpu6500.accel_range();
bool ConfigGyroRange(const GyroRange range) Establece el rango de escala completa del giroscopio. Las opciones son:
Rango | Valor de enumeración |
---|---|
+/- 250 grados/s | GYRO_RANGE_250DPS |
+/- 500 grados/s | GYRO_RANGE_500DPS |
+/- 1000 grados/s | GYRO_RANGE_1000DPS |
+/- 2000 grados/s | GYRO_RANGE_2000DPS |
Se devuelve True al configurar correctamente el rango del giroscopio; de lo contrario, se devuelve false. El rango predeterminado es +/-2000 grados/s.
bool status = mpu6500.ConfigGyroRange(bfs::Mpu6500::GYRO_RANGE_1000DPS);
if (!status) {
// ERROR
}
GyroRange gyro_range() Devuelve el rango giroscópico actual.
GyroRange range = mpu6500.gyro_range();
bool ConfigSrd(const uint8_t srd) Establece el divisor de frecuencia de muestreo del sensor. El MPU-9250 muestrea el acelerómetro y el giroscopio a una velocidad, en Hz, definida por:
Una configuración srd de 0 significa que el MPU-9250 muestrea el acelerómetro y el giroscopio a 1000 Hz. Una configuración srd de 4 establecería el muestreo en 200 Hz. La interrupción de datos listos de la IMU está vinculada a la velocidad definida por el divisor de frecuencia de muestreo. El magnetómetro se muestrea a 100 Hz para obtener valores del divisor de frecuencia de muestreo correspondientes a 100 Hz o más. De lo contrario, el magnetómetro se muestrea a 8 Hz.
Se devuelve True al configurar correctamente el divisor de frecuencia de muestreo; de lo contrario, se devuelve false. El valor predeterminado del divisor de frecuencia de muestreo es 0, lo que da como resultado una frecuencia de muestreo de 1000 Hz.
/* Set sample rate divider for 50 Hz */
bool status = mpu6500.sample_rate_divider( 19 );
if (!status) {
// ERROR
}
uint8_t srd() Devuelve el valor actual del divisor de frecuencia de muestreo.
uint8_t srd = mpu6500.srd();
bool ConfigDlpfBandwidth(const DlpfBandwidth dlpf) Establece la frecuencia de corte del filtro de paso bajo digital para el acelerómetro, giroscopio y sensor de temperatura. Los anchos de banda disponibles son:
Ancho de banda DLPF | Valor de enumeración |
---|---|
184Hz | DLPF_BANDWIDTH_184HZ |
92Hz | DLPF_BANDWIDTH_92HZ |
41Hz | DLPF_BANDWIDTH_41HZ |
20Hz | DLPF_BANDWIDTH_20HZ |
10Hz | DLPF_BANDWIDTH_10HZ |
5Hz | DLPF_BANDWIDTH_5HZ |
Se devuelve True al configurar correctamente los filtros de paso bajo digitales; de lo contrario, se devuelve false. El ancho de banda predeterminado es 184 Hz.
bool status = mpu6500.ConfigDlpfBandwidth(bfs::Mpu6500::DLPF_BANDWIDTH_20HZ);
if (!status) {
// ERROR
}
DlpfBandwidth dlpf_bandwidth() Devuelve la configuración actual del ancho de banda del filtro de paso bajo digital.
DlpfBandwidth dlpf = mpu6500.dlpf_bandwidth();
bool Read() Lee datos del MPU-6500 y almacena los datos en el objeto Mpu6500. Devuelve verdadero si los datos se leen correctamente; de lo contrario, devuelve falso.
/* Read the IMU data */
if (mpu6500.Read()) {
}
bool new_imu_data() Devuelve verdadero si se devolvieron nuevos datos del acelerómetro y el giroscopio.
if (mpu6500.Read()) {
bool new_data = mpu6500. new_imu_data ();
}
float accel_x_mps2() Devuelve los datos del acelerómetro x del objeto Mpu6500 en unidades de m/s/s. Existen métodos similares para los datos de los ejes y y z.
/* Read the IMU data */
if (mpu6500.Read()) {
float ax = mpu6500. accel_x_mps2 ();
float ay = mpu6500. accel_y_mps2 ();
float az = mpu6500. accel_z_mps2 ();
}
float gyro_x_radps() Devuelve los datos del giroscopio x del objeto Mpu6500 en unidades de rad/s. Existen métodos similares para los datos de los ejes y y z.
/* Read the IMU data */
if (mpu6500.Read()) {
float gx = mpu6500. gyro_x_radps ();
float gy = mpu6500. gyro_y_radps ();
float gz = mpu6500. gyro_z_radps ();
}
float die_temp_c() Devuelve la temperatura del troquel del sensor en unidades de C.
/* Read the IMU data */
if (mpu6500.Read()) {
float temp = mpu6500. die_temp_c ();
}
Esta biblioteca transforma todos los datos a un sistema de ejes común antes de devolverlos. Este sistema de ejes se muestra a continuación. Es un sistema de coordenadas diestro con el eje z positivo hacia abajo, común en la dinámica de los aviones.
¡Precaución! Este sistema de ejes se muestra en relación con los sensores MPU-6500 y MPU-9250. El sensor se puede girar en relación con la placa de ruptura.