INFORMACIÓN
El módulo ICM20948 9DOF Sensor IMU I2C SPI es una unidad de medición inercial de 9 ejes que integra un acelerómetro de 3 ejes, un giroscopio de 3 ejes y un magnetómetro de 3 ejes. Esta combinación permite medir aceleración lineal, velocidad angular y orientación con respecto al campo magnético terrestre. Es compatible con conectores DevLab, Qwiic y STEMMA QT. Incluye 4 header macho y un arnés JST 1mm para conexión Qwiic.
El módulo ICM20948 está diseñado para aplicaciones de detección de movimiento, orientación y robótica mediante comunicación I2C o SPI.
ESPECIFICACIONES Y CARACTERÍSTICAS
- Marca: UNIT Electronics
- País de origen: Hecho en México
- Tipo: IMU 9 DOF
- IC: ICM-20948
-
Voltaje de suministro:1.3V a 3.6V
-
Interfaz:
-
I2C (selección por pin AD0 – Abierto: 0x69 , Cerrado: 0x68 )
-
SPI
-
- Frecuencia:
- I2C: 400 KhZ
- SPI: 7 Mhz
- ADC: Resolución 16 bits por cada sensor de movimiento
- Temperatura de funcionamiento: -40°C a +85°C
-
Tipo de conector: JST 1,0 mm 4 pines
- Dimensiones: 25.40 mm x 16 mm
- Peso: 4.92 g
DOCUMENTACIÓN Y RECURSOS
INFORMACIÓN ADICIONAL
Test de prueba ICM20948 9DOF
En el siguiente test de prueba, será para comprobar la conexión y comunicación vía I2C por el conector Qwiic y procesando las lecturas por medio de la tarjeta Pulsar C6.

Previamente, tendremos que descargar la librería en el Arduino IDE para el uso del sensor ICM20948. Esta tiene el nombre de Devlab_ICM20948.

El siguiente código nos ayudara a visualizar en el monitor serial la lectura del sensor, desplegando la información del acelerómetro, giroscopio y del magnetómetro.
#include <Wire.h>
#include <DevLab_ICM20948.h>
/* ====================== User Config ======================= */
#define SDA_PIN 6
#define SCL_PIN 7
#define I2C_FREQ 400000UL
#define ICM_ADDR 0x69
DevLab_ICM20948 imu;
/**
* @brief Configure Serial, I2C, sensor identity check, and enabled sensors.
*
* The sketch stops in an infinite loop if the IMU cannot be initialized or
* the WHO_AM_I register does not match the expected ICM-20948 value.
*/
void setup() {
Serial.begin(115200);
delay(200);
Serial.println(F("ICM-20948 — I2C Basic"));
Wire.begin(SDA_PIN, SCL_PIN);
/* Initialize IMU. */
if (!imu.beginI2C(ICM_ADDR, Wire, 400000)) {
Serial.println(F("ERROR: beginI2C() failed"));
while (1) delay(200);
}
/* WHO_AM_I check. */
uint8_t who;
if (!imu.readWhoAmI(who) || who != 0xEA) {
Serial.println(F("ERROR: WHO_AM_I mismatch"));
while (1) delay(200);
}
Serial.print(F("WHO_AM_I = 0x"));
Serial.println(who, HEX);
/* Enable all sensors. */
if (!imu.setSensors(true, true, true)) {
Serial.println(F("ERROR: setSensors failed"));
}
/* Initialize magnetometer. */
if (!imu.initMag()) {
Serial.println(F("Mag init failed"));
} else {
Serial.println(F("Mag initialized"));
}
Serial.println(F("Ready."));
}
/**
* @brief Read accelerometer, gyroscope, magnetometer, and temperature data.
*
* Values are printed periodically to the Serial monitor in engineering units.
*/
void loop() {
float ax, ay, az;
float gx, gy, gz;
float mx, my, mz;
float tC;
/* Read accelerometer. */
if (imu.readAccel(ax, ay, az)) {
Serial.print(F("ACC [g]: "));
Serial.print("aX:"); Serial.print(ax, 3); Serial.print(", ");
Serial.print("aY:");Serial.print(ay, 3); Serial.print(", ");
Serial.print("aZ:");Serial.println(az, 3);
} else {
Serial.println(F("ACC read failed"));
}
/* Read gyroscope. */
if (imu.readGyro(gx, gy, gz)) {
Serial.print(F("GYR [dps]: "));
Serial.print("gX:"); Serial.print(gx, 2); Serial.print(", ");
Serial.print("gY:"); Serial.print(gy, 2); Serial.print(", ");
Serial.print("gZ:");Serial.println(gz, 2);
} else {
Serial.println(F("GYR read failed"));
}
/* Read magnetometer. */
if (imu.readMag(mx, my, mz)) {
Serial.print(F("MAG [uT]: "));
Serial.print("mX:");Serial.print(mx, 2); Serial.print(", ");
Serial.print("mY:");Serial.print(my, 2); Serial.print(", ");
Serial.print("mZ:"); Serial.println(mz, 2);
} else {
Serial.println(F("MAG read failed"));
}
/* Read temperature. */
if (imu.readTemperature(tC)) {
Serial.print(F("TMP [C]: "));
Serial.println(tC, 2);
} else {
Serial.println(F("TMP read failed"));
}
Serial.println(("-----------------------------"));
delay(2000);
}
Para visualizar la información en el monitor serial tendrás que habilitar USB CDC On Boot : ENABLE (Barra de herramientas >Tools) y los bauds para visualizar la información son a 115200 bauds. El resultado será el siguiente:

Aplicaciones
-
Robótica: Retroalimentación de orientación, inclinación, rotación y movimiento.
-
Drones y plataformas móviles: Medición inercial para la estimación de actitud.
-
Dispositivos vestibles: Seguimiento de gestos, actividad y movimiento.
-
Navegación: Medición de rumbo asistida por magnetómetro.
-
Educación y prototipado: Experimentos prácticos con unidades de medición inercial mediante I²C o SPI.

Ramps 1.4 Tarjeta De Control Para Impresora 3d
XIAO Tarjeta de Expansión Grove OLED
Alicates de Pico de Pato Multifuncionales
Sensor de Inclinacion KY-020
















Valoraciones
No hay valoraciones aún.