Skip to content

ICM-20948 Board v2.0

The ICM is a digital IMU sensor module designed to measure motion and orientation. It measures multiple physical quantities simultaneously and is suitable for applications in embedded systems, robotics, control engineering, and IoT projects.


Overview

  • Measured quantities: Acceleration, rotation rate, magnetic field, temperature
  • Sensor type: 9-axis IMU
  • Interface: I²C
  • Supply voltage: 3.3 – 5.0 V
  • Logic level (I²C): 3.3 V and 5 V compatible
  • I²C pull-ups: available on the breakout board

Typical Applications

  • Motion detection and motion tracking
  • Position and orientation measurement
  • Robotics and stabilization systems
  • Embedded and IoT projects
  • Technical demonstrators and prototypes

Technical Specifications

Parameter Value
Sensor type 9-axis IMU
Interface I²C
Supply voltage 3.3 – 5.0 V
Logic level 3.3 V / 5 V tolerant
Temperature measurement integrated
Interrupt INT pin available

Pinout & Connections

Pin Name Description
VIN Supply 3.3 – 5.0 V
GND Ground Ground
SDA I²C Data I²C data line
SCL I²C Clock I²C clock line
INT Interrupt Interrupt output (optional)

Note:
The I²C pull-up resistors are already integrated on the breakout board.
The ICM module can therefore be directly connected to 3.3 V or 5 V I²C buses.


Electrical Characteristics

  • Operation with 3.3 V or 5 V supply voltage
  • I²C logic levels compatible with 3.3 V and 5 V
  • Stable operation after a short initialization phase

Communication (I²C)

  • Bus: I²C
  • Pull-ups: available on the board

Reading Measurement Data (simplified)

  1. Start condition
  2. I²C address + Read
  3. Receive measurement data
  4. Process measurement values (Accel / Gyro / Mag / Temp)

Example Code

Arduino (I²C)

#include <Adafruit_ICM20X.h>
#include <Adafruit_ICM20948.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>

Adafruit_ICM20948 icm;

void setup(void) {
  Serial.begin(115200);
  while (!Serial) delay(10);
  Serial.println("Adafruit ICM20948 test!");

  if (!icm.begin_I2C()) {
    Serial.println("Échec : ICM20948 non détecté. Vérifie le câblage !");
    while (1) { delay(10); }
  }
  Serial.println("ICM20948 détecté avec succès !");


}

void loop() {
  sensors_event_t accel;
  sensors_event_t gyro;
  sensors_event_t mag;
  sensors_event_t temp;


  icm.getEvent(&accel, &gyro, &temp, &mag);

  Serial.println("------ Mesures ICM20948 ------");
  Serial.print("Accel X: "); Serial.print(accel.acceleration.x); Serial.print(" m/s^2  ");
  Serial.print("Y: "); Serial.print(accel.acceleration.y); Serial.print(" m/s^2  ");
  Serial.print("Z: "); Serial.println(accel.acceleration.z); Serial.println(" m/s^2");

  Serial.print("Gyro X: "); Serial.print(gyro.gyro.x); Serial.print(" rad/s  ");
  Serial.print("Y: "); Serial.print(gyro.gyro.y); Serial.print(" rad/s  ");
  Serial.print("Z: "); Serial.println(gyro.gyro.z); Serial.println(" rad/s");

  Serial.print("Magnétomètre X: "); Serial.print(mag.magnetic.x); Serial.print(" uT  ");
  Serial.print("Y: "); Serial.print(mag.magnetic.y); Serial.print(" uT  ");
  Serial.print("Z: "); Serial.println(mag.magnetic.z); Serial.println(" uT");

  Serial.print("Température: "); Serial.print(temp.temperature); Serial.println(" °C");
  Serial.println("-------------------------------\n");

  delay(500);
}

Calibration & Notes

  • After power-up, allow a short initialization time.
  • Measurement values are relative and depend on mounting, orientation, and environmental influences.
  • For accurate results, software-based calibration of the accelerometer and gyroscope is recommended.
  • Magnetometer calibration (hard-/soft-iron) improves heading and orientation accuracy.
  • Do not operate the ICM sensor module in close proximity to strong magnetic fields or current-carrying conductors.

Troubleshooting

No I²C Communication

  • Ensure SDA and SCL are connected correctly
  • Check the supply voltage (3.3 V or 5 V)
  • No external I²C pull-up resistors are required (already present on the board)
  • Test the I²C bus using an I²C scanner if necessary
  • Temporarily disconnect other I²C devices from the bus

Downloads

  • Datasheet (PDF)

  • I²C specification
  • Fundamentals of IMU sensor technology

Revision / Changelog

Version Date Change
1.0 2025-01-13 Initial release