

The ICM-45686 is a high-performance integrated circuit (IC) manufactured by TDM InvenSense. It is designed for precision measurement and control applications, offering high accuracy, low power consumption, and robust performance. This IC is particularly well-suited for interfacing with various sensors, making it ideal for applications in industrial automation, robotics, IoT devices, and wearable technology.








| Parameter | Value |
|---|---|
| Manufacturer | TDM InvenSense |
| Part Number | ICM-45686 |
| Operating Voltage Range | 1.8V to 3.6V |
| Power Consumption | Ultra-low power (typical: 0.5 mA) |
| Sensor Interfaces | I2C, SPI |
| Operating Temperature | -40°C to +85°C |
| Package Type | 3x3 mm LGA (Land Grid Array) |
| Features | High accuracy, low noise, integrated FIFO |
The ICM-45686 comes in a compact 3x3 mm LGA package with the following pin configuration:
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | VDD | Power supply input (1.8V to 3.6V) |
| 2 | GND | Ground |
| 3 | SCL | I2C clock input / SPI clock input |
| 4 | SDA/SDI | I2C data input/output / SPI data input |
| 5 | SDO | SPI data output |
| 6 | INT | Interrupt output |
| 7 | FSYNC | Frame synchronization input |
| 8 | RESV | Reserved (leave unconnected) |
#include <Wire.h> // Include the Wire library for I2C communication
#define ICM45686_ADDR 0x68 // I2C address of the ICM-45686
void setup() {
Wire.begin(); // Initialize I2C communication
Serial.begin(9600); // Initialize serial communication for debugging
// Configure the ICM-45686
Wire.beginTransmission(ICM45686_ADDR);
Wire.write(0x6B); // Register address for power management
Wire.write(0x00); // Set to normal mode
Wire.endTransmission();
Serial.println("ICM-45686 initialized.");
}
void loop() {
// Read data from the ICM-45686
Wire.beginTransmission(ICM45686_ADDR);
Wire.write(0x3B); // Register address for sensor data
Wire.endTransmission(false);
Wire.requestFrom(ICM45686_ADDR, 6); // Request 6 bytes of data
if (Wire.available() == 6) {
int16_t accelX = (Wire.read() << 8) | Wire.read(); // Combine high and low bytes
int16_t accelY = (Wire.read() << 8) | Wire.read();
int16_t accelZ = (Wire.read() << 8) | Wire.read();
Serial.print("Accel X: "); Serial.print(accelX);
Serial.print(" Y: "); Serial.print(accelY);
Serial.print(" Z: "); Serial.println(accelZ);
}
delay(500); // Wait for 500 ms before the next reading
}
No Communication with the IC
High Noise in Sensor Data
Interrupt Pin Not Responding
Device Overheating
Q: Can the ICM-45686 operate at 5V?
A: No, the maximum operating voltage is 3.6V. Exceeding this may damage the IC.
Q: What is the maximum data rate for I2C communication?
A: The ICM-45686 supports I2C speeds up to 400 kHz (Fast Mode).
Q: Is the IC suitable for battery-powered devices?
A: Yes, its ultra-low power consumption makes it ideal for battery-powered applications.
Q: Can I use the ICM-45686 with a 3.3V microcontroller?
A: Yes, the IC is compatible with 3.3V logic levels.
This concludes the documentation for the ICM-45686. For further details, refer to the official datasheet provided by TDM InvenSense.