Template: 10 DOF IMU Sensor D Spec

From Waveshare Wiki
Jump to: navigation, search

Overview

This is a 10-axis sensor with onboard low-power ICM20948 (low-power 3-axis gyroscope, 3-axis accelerometer, and 3-axis compass/magnetometer), Internal Digital Motion Processing™ (DMP™) engine, offloads complicate fusion calculation, sensor synchronization, gesture recognition, etc. Compared with MPU9250, it has higher precision, lower power consumption, and is more suitable for wearable devices. The onboard BMP280 (barometric altimeter), a built-in temperature sensor, can perform temperature compensation and has stronger performance and lower power consumption than BMP180. You can get the 10 DOF data through the I2C interface.

Features

  • Power supply: 3.3V~5V (internal voltage regulation with low dropout)
  • Accelerometer Features:
    • Resolution: 16 bit
    • Measurement range (configurable): ±2, ±4, ±8, ±16g
    • Operating current: 68.9uA
  • Gyroscope Features:
    • Resolution: 16 bit
    • Measurement range (configurable): ±250, ±500, ±1000, ±2000°/sec
    • Operating current: 1.23mA
  • Compass/Magnetometer Features:
    • Resolution: 16 bit
    • Measurement range: ±4900µT
    • Operating current: 90uA
  • Barometric pressure sensor Features:
    • Barometric resolution: 0.0016hPa
    • Temperature Resolution: 0.01°C
    • Measurement range: 300~1100hPa (Altitude: +9000m ~ -500m)
    • Barometric relative accuracy (700hPa~900hPa, 25°C~40°C): ±0.12hPa (±1m)
    • Operating current (1Hz update rate, ultra-low power mode): 2.8uA

Pinouts

PIN Symbol Description
1 VCC 3.3V~5.5V power supply
2 GND Power ground
3 SDA I2C data input
4 SCL I2C clock pin
5 INT ICM20948 digital interrupt output
6 FSYNC ICM20948 frame sync signal

Sensor introduction

Introduction

The onboard ICM20948 chip includes a 3-axis gyroscope, a 3-axis accelerometer, and a 3-axis compass/magnetometer. The following figure shows the coordinate axis definition of the sensor:
10 DOF IMU Sensor coordinate axis.png

Basic settings

Accelerometer

  • The data output by the acceleration sensor is the composite value of the motion acceleration and the gravitational acceleration.
  • When the sensor is placed at rest, the motion acceleration is 0, and the 3-axis value output by the sensor is the component of the gravitational acceleration on each coordinate axis.
  • If it is placed horizontally, the theoretical output value is 0g for the X axis, 0g for the Y axis, and -1g for the Z axis. The negative value of the Z-axis output is because the direction of the gravitational acceleration is downward, and the direction of the sensor Z-axis is upward, so it is a negative value. Positive and negative only indicate the relationship between the acceleration direction and the coordinate axis direction.
  • It should be noted here that even if the sensor is placed absolutely horizontally, the output value of the acceleration sensor will not be equal to the theoretical value (0g, 0g, -1g), because each sensor has its own unique zero offsets. In the actual use process, the zero bias error can be appropriately removed according to the situation. Generally, the data can be removed by data fitting and other methods.

ICM20948 Acceleration range setting

  • The ICM20948 supports a variety of ranges, including ±2g, ±4g, ±8g, and ±16g. The sample program uses ±2g. If you need to change the range, you can modify the <ACCEL_CONFIG> register. The following figure shows the correspondence between the value of the <ACCEL_CONFIG> register and the range in the datasheet relation:

10 DOF IMU Sensor Range.png

  • Taking the STM32 sample code as an example, the setting method of ±2g in the code is as follows:
I2C_WriteOneByte( I2C_ADD_ICM20948, REG_ADD_ACCEL_CONFIG,
                  REG_VAL_BIT_ACCEL_DLPCFG_6 | REG_VAL_BIT_ACCEL_FS_2g | REG_VAL_BIT_ACCEL_DLPF);
  • If you need to modify it to ±8g, make the following modifications:
 I2C_WriteOneByte( I2C_ADD_ICM20948, REG_ADD_ACCEL_CONFIG,
                  REG_VAL_BIT_ACCEL_DLPCFG_6 | REG_VAL_BIT_ACCEL_FS_8g | REG_VAL_BIT_ACCEL_DLPF);

Angular velocity sensor

  • The value obtained by the angular velocity sensor is the angular velocity of rotation around each coordinate axis. When the rotation direction is the same as the coordinate axis marked direction, it is positive, and when the rotation direction is opposite to the coordinate axis marked direction, it is negative. There is also a zero bias error in the angular velocity, which can generally be removed by static placement and averaging.


ICM20948 Acceleration unit conversion

  • For different ranges, the original value read from the sensor register needs to be divided by the corresponding conversion coefficient, which can be converted into acceleration in g. The coefficient values corresponding to each range are in the following table:

10 DOF IMU Unit conversion.png

  • When the range is ±2g, the original value of the sensor/16384 can get the acceleration value in g.

ICM20948 Angular Velocity Range Setting

  • ICM20948 supports a variety of ranges, including ±250, ±500, ±1000, ±2000°/sec, and ±1000°/sec is used in the sample program. If you need to change the range, you can modify the <GYRO_CONFIG_1> register, as shown in the figure below The corresponding relationship between the value of the <GYRO_CONFIG_1> register and the range in the datasheet:

10 DOF IMU Angular velocity range.png

  • Taking the STM32 sample code as an example, the setting method of ±1000°/sec in the code is as follows:
I2C_WriteOneByte( I2C_ADD_ICM20948, REG_ADD_GYRO_CONFIG_1,   
                  REG_VAL_BIT_GYRO_DLPCFG_6 | REG_VAL_BIT_GYRO_FS_1000DPS | REG_VAL_BIT_GYRO_DLPF);
  • If you need to modify it to ±2000°/sec, do the following modifications:
I2C_WriteOneByte( I2C_ADD_ICM20948, REG_ADD_GYRO_CONFIG_1,   
                  REG_VAL_BIT_GYRO_DLPCFG_6 | REG_VAL_BIT_GYRO_FS_2000DPS | REG_VAL_BIT_GYRO_DLPF);

ICM20948 Angular Velocity Unit Conversion

  • For different ranges, the original value read from the sensor register needs to be divided by the corresponding conversion coefficient, which can be converted into angular velocity in °/sec. The following table shows the coefficient values corresponding to each range:

10 DOF IMU Angular velocity unit conversion.png

  • When the range is ±1000°/sec, the original value of the sensor/32.8 can get the angular velocity in °/sec.

Magnetometer sensor

  • The magnetometer sensor measures the magnetic field around the sensor. When there is no strong magnetic field (motor, etc.) nearby, the output value of the magnetometer sensor is the component of the earth's magnetic field in the three coordinate axes.

ICM20948 Magnetometer

  • The original value read from the sensor register needs to multiply with the conversion factor to convert to the magnetic field strength in μT ($10^-6$Tesla). The following table shows the conversion factor of the magnetometer in ICM20948:

10 DOF IMU Magnetometer conversion coefficient.png
That is, the original value of the sensor * 0.15 can get the magnetic field strength in μT.