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.

Conector Estéreo de 3.5mm 90 grados Niquelado Negro
Pulsar ESP32 C6 BLE5 WiFi6 Matter Thread Zigbee- UNIT DevLab
Pila Alcalina 12V Tipo Cilindro
CAU-170 Desoldador de Succión
Cautín Pirograbador de Madera 60W Regulable 37 Piezas
UNIT MP34DT05TR-A Módulo Micrófono PDM
ESP32-C6 DevKit Dual Tipo C NanoESP32-C6 V1
XIAO Tarjeta de Expansión Grove OLED
LRS-200-12 Fuente Conmutada 12V 17A MEAN WELL
Pinzas Antiestáticas SMD Kit 6 Piezas
Paquete De 4 Pilas Alcalinas AA
74HC4067 Multiplexor Analogo 16 Canales
SN-03BM Prensa para Terminales ZH1.5mm SH1.0mm
XIAO Matriz RGB 6x10 WS2812B
Pasta para Soldar en Lata con 25 Gramos SOL-025
Kit Conector Dupont 310 Piezas
Flux en Pasta UV35 en Jeringa de 5CC
Estación de Soldadura con Brazos Flexibles
Cable Dúplex para Bocina 22 AWG 2 Vías Bicolor 1 Metro
MaixCAM Placa de Desarrollo AI RISCV

















Valoraciones
No hay valoraciones aún.