Zum Inhalt

ICM-20948 Board v2.0

Der ICM ist ein digitales IMU-Sensormodul zur Erfassung von Bewegung und Orientierung. Er misst mehrere physikalische Größen gleichzeitig und eignet sich für Anwendungen in Embedded-Systemen, Robotik, Steuerungstechnik sowie IoT-Projekten.


Kurzüberblick

  • Messgrößen: Beschleunigung, Drehrate, Magnetfeld, Temperatur
  • Sensorik: 9-Achsen IMU
  • Schnittstelle: I²C
  • Versorgungsspannung: 3,3 – 5,0 V
  • Logikpegel (I²C): 3,3 V und 5 V kompatibel
  • I²C-Pull-Ups: auf dem Breakout-Board vorhanden

Typische Anwendungsfälle

  • Bewegungserkennung und Motion-Tracking
  • Lage- und Orientierungsmessung
  • Robotik- und Stabilisierungssysteme
  • Embedded- und IoT-Projekte
  • Technische Demonstratoren und Prototypen

Technische Daten

Parameter Wert
Sensorik 9-Achsen IMU
Schnittstelle I²C
Versorgungsspannung 3,3 – 5,0 V
Logikpegel 3,3 V / 5 V tolerant
Temperaturmessung integriert
Interrupt INT-Pin vorhanden

Pinout & Anschlüsse

Pin Bezeichnung Beschreibung
VIN Versorgung 3,3 – 5,0 V
GND Masse Ground
SDA I²C Data I²C Datenleitung
SCL I²C Clock I²C Taktleitung
INT Interrupt Interrupt-Ausgang (optional)

Hinweis:
Auf dem verwendeten Breakout-Board sind die I²C-Pull-Up-Widerstände bereits integriert.
Das ICM-Modul kann daher direkt an 3,3-V- oder 5-V-I²C-Busse angeschlossen werden.


Elektrische Eigenschaften

  • Betrieb mit 3,3 V oder 5 V Versorgungsspannung
  • I²C-Logikpegel kompatibel zu 3,3 V und 5 V
  • Stabiler Betrieb nach kurzer Initialisierungsphase

Kommunikation (I²C)

  • Bus: I²C
  • Pull-Ups: vorhanden auf dem Board

Messwerte auslesen (vereinfacht)

  1. Startbedingung
  2. I²C-Adresse + Read
  3. Messdaten empfangen
  4. Messwerte verarbeiten (Accel / Gyro / Mag / Temp)

Beispielcode

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);
}

Kalibrierung & Hinweise

  • Nach dem Einschalten eine kurze Initialisierungszeit abwarten.
  • Die Messwerte sind relativ und abhängig von Montage, Ausrichtung und Umgebungseinflüssen.
  • Für präzise Ergebnisse wird eine softwareseitige Kalibrierung von Beschleunigungssensor und Gyroskop empfohlen.
  • Eine Magnetometer-Kalibrierung (Hard-/Soft-Iron) verbessert die Genauigkeit der Richtungsbestimmung.
  • Das ICM-Sensormodul nicht in unmittelbarer Nähe starker Magnetfelder oder stromführender Leitungen betreiben.

Troubleshooting

Keine I²C-Kommunikation

  • SDA und SCL korrekt angeschlossen
  • Versorgungsspannung prüfen (3,3 V oder 5 V)
  • Keine externen I²C-Pull-Up-Widerstände notwendig (bereits auf dem Board vorhanden)
  • I²C-Bus ggf. mit einem I²C-Scanner überprüfen
  • Andere I²C-Geräte testweise vom Bus trennen

Downloads

  • Datenblatt (PDF)

  • I²C-Spezifikation
  • Grundlagen zur IMU-Sensorik

Revision / Changelog

Version Datum Änderung
1.0 2025-01-13 Erster Release