模板: 10 DOF IMU Sensor Introduction
来自Waveshare Wiki
简介
板载ICM20948芯片包含3轴加速度、3轴角速度、3轴磁力计传感器,下图为传感器的坐标轴定义:
基本设置
加速度传感器
- 加速度传感器输出的数据为运动加速度与重力加速度的合成值。
- 当传感器静止放置时,运动加速度为0,此时传感器输出的3轴数值为重力加速度在各坐标轴上的分量。
- 如果是水平放置,此时理论输出值为 X轴0g、Y轴0g、Z轴-1g。Z轴输出为负值是因为重力加速度方向是向下,而传感器Z轴方向是向上,所以为负值。这里正负仅表示加速度方向与坐标轴方向的关系。
- 这里需要注意的是,即便传感器绝对水平放置,加速度传感器输出的值也不会等于理论值(0g,0g,-1g),这是因为每颗传感器都有自己独特的零偏存在。在实际使用过程中可以视情况适当去除零偏误差,一般可采集数据后做数据拟合等方法进行去除。
ICM20948加速度量程设置
- ICM20948支持多种量程,包括±2g、±4g、±8g、±16g,在示例程序中采用的是±2g,如果需要更改量程,可以通过修改<ACCEL_CONFIG>寄存器,下图为datasheet中<ACCEL_CONFIG>寄存器取值与量程的对应关系:
- 以STM32示例代码为例,±2g在代码中设置方法如下:
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);
- 如果需要修改为±8g,做如下修改即可:
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);
ICM20948加速度单位转换
- 不同量程时,从传感器寄存器读出的原始值,需要除以相应的转换系数,即可转换为单位为g的加速度,下表各量程对应的系数值:
- 当量程为±2g, 传感器原始值/16384即可得到单位为g的加速度值。
角速度传感器
- 角速度传感器得到的数值为绕各坐标轴旋转的角速度,当旋转方向与坐标轴标注方向相同时为正,旋转方向与坐标轴标注方向相反时为负。角速度同样存在零偏误差,一般可采用静止放置取均值的方法进行去除。
ICM20948角速度量程设置
- ICM20948支持多种量程,包括±250、±500、 ±1000、±2000°/sec,在示例程序中采用的是±1000°/sec,如果需要更改量程,可以通过修改<GYRO_CONFIG_1>寄存器,下图为datasheet中<GYRO_CONFIG_1>寄存器取值与量程的对应关系:
- 以STM32示例代码为例,±1000°/sec在代码中设置方法如下:
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);
- 如果需要修改为±2000°/sec,做如下修改即可:
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角速度单位转换
- 不同量程时,从传感器寄存器读出的原始值,需要除以相应的转换系数,即可转换为单位为°/sec的角速度,下表为各量程对应的系数值:
当量程为±1000°/sec, 传感器原始值/32.8即可得到单位为°/sec的角速度。
磁力计传感器
- 磁力计传感器测量的是传感器周边磁场大小,当附近没有较强磁场(电机等)时,磁力计传感器输出的数值为地磁场在三个坐标轴的分量。
ICM20948磁力计
- 从传感器寄存器读出的原始值,需要乘以转换系数,即可转换为单位为μT($10^-6$特斯拉)的磁场强度,下表为ICM20948中磁力计的转换系数: