

The ICM20948_変換モジュール is a 9-axis motion tracking device manufactured by InvenSense. It integrates a 3-axis gyroscope, a 3-axis accelerometer, and a 3-axis magnetometer into a single compact module. This component is designed for applications requiring precise motion sensing and orientation detection, making it ideal for robotics, drones, wearable devices, and gaming peripherals.
The module provides high accuracy and low power consumption, making it suitable for battery-powered devices. It communicates via I²C or SPI interfaces, allowing seamless integration with microcontrollers and development boards like the Arduino UNO.








| Parameter | Value |
|---|---|
| Manufacturer | InvenSense |
| Sensor Type | 9-axis motion tracking |
| Gyroscope Range | ±250, ±500, ±1000, ±2000 dps |
| Accelerometer Range | ±2g, ±4g, ±8g, ±16g |
| Magnetometer Range | ±4900 µT |
| Operating Voltage | 1.8V (core), 3.3V (I/O) |
| Communication Interface | I²C (up to 400 kHz), SPI (up to 7 MHz) |
| Operating Temperature | -40°C to +85°C |
| Power Consumption | 2.5 mA (typical, full operation) |
| Dimensions | 3 mm x 3 mm x 1 mm |
The ICM20948_変換モジュール typically comes with a breakout board for easier integration. Below is the pin configuration:
| Pin Name | Pin Number | Description |
|---|---|---|
| VCC | 1 | Power supply input (3.3V recommended) |
| GND | 2 | Ground |
| SDA | 3 | I²C data line |
| SCL | 4 | I²C clock line |
| CS | 5 | Chip select for SPI (active low) |
| SDO | 6 | SPI data output / I²C address selection |
| INT | 7 | Interrupt output |
| RST | 8 | Reset pin (active low) |
Below is an example of how to interface the ICM20948_変換モジュール with an Arduino UNO using the I²C interface:
#include <Wire.h>
// ICM20948 I²C address (default: 0x68 if SDO is low, 0x69 if SDO is high)
#define ICM20948_ADDR 0x68
// Register addresses
#define WHO_AM_I 0x00 // WHO_AM_I register address
#define PWR_MGMT_1 0x06 // Power management register
#define ACCEL_XOUT_H 0x2D // Accelerometer X-axis high byte
void setup() {
Wire.begin(); // Initialize I²C communication
Serial.begin(9600); // Initialize serial communication for debugging
// Wake up the ICM20948
Wire.beginTransmission(ICM20948_ADDR);
Wire.write(PWR_MGMT_1); // Access power management register
Wire.write(0x01); // Set clock source
Wire.endTransmission();
// Verify communication
Wire.beginTransmission(ICM20948_ADDR);
Wire.write(WHO_AM_I); // Access WHO_AM_I register
Wire.endTransmission();
Wire.requestFrom(ICM20948_ADDR, 1); // Request 1 byte
if (Wire.available()) {
byte whoAmI = Wire.read();
Serial.print("WHO_AM_I: 0x");
Serial.println(whoAmI, HEX); // Print WHO_AM_I value
}
}
void loop() {
// Read accelerometer data
Wire.beginTransmission(ICM20948_ADDR);
Wire.write(ACCEL_XOUT_H); // Access accelerometer X-axis high byte
Wire.endTransmission();
Wire.requestFrom(ICM20948_ADDR, 2); // Request 2 bytes (high and low)
if (Wire.available() == 2) {
int16_t accelX = (Wire.read() << 8) | Wire.read(); // Combine high and low bytes
Serial.print("Accel X: ");
Serial.println(accelX); // Print accelerometer X-axis value
}
delay(500); // Delay for readability
}
No Response from the Module:
Incorrect or No Sensor Data:
Communication Errors:
Q: Can the ICM20948_変換モジュール be used with 5V logic?
A: No, the module operates at 3.3V logic. Use a level shifter if interfacing with a 5V microcontroller.
Q: How do I calibrate the magnetometer?
A: Perform a figure-eight motion with the module while collecting data to calculate offsets and scale factors.
Q: What is the maximum sampling rate?
A: The maximum sampling rate is 1 kHz for the accelerometer and gyroscope.
This documentation provides a comprehensive guide to using the ICM20948_変換モジュール effectively in your projects.