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)
- Start condition
- I²C address + Read
- Receive measurement data
- 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
Further Links
- I²C specification
- Fundamentals of IMU sensor technology
Revision / Changelog
| Version |
Date |
Change |
| 1.0 |
2025-01-13 |
Initial release |