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.

Pasta para Soldar en Lata con 25 Gramos SOL-025
SD05CRMA Controlador de Carga Solar MPPT 1A
Maletin de Soldadura con Cautín Regulable 60W
MOC3061 Optoacoplador DIP-6
Fuente para Protoboard con Señuelo de Carga UNIT
Conector USB Tipo C Hembra 918-418K2023C40004
Destornillador Eléctrico Recargable 58 en 1
Kit de Thermofit 560 Piezas Diferentes Tamaños
Flux en Pasta UV35 en Jeringa de 5CC
Kit Detector de Metal MDS-60
Cloruro Férrico de 250 ML

















Valoraciones
No hay valoraciones aún.