IMU传感器输出值与实际物理量的换算关系

一、加速度的换算:

IMU传感器输出值与实际物理量的换算关系_第1张图片
例如:加速度计的量程设置为:±16g ,则:
Data=数据高八位<<8|数据低八位;
A=9.8*Data/2048  (m/s^2)
二、陀螺仪角速度的换算:

IMU传感器输出值与实际物理量的换算关系_第2张图片
例如:陀螺仪的量程设置为:±2000,则:
Data=数据高八位<<8|数据低八位;
Pi=3.1415926;
Ω=(pi/180)*Data/16.4 (rad/s)


三、温度换算:
Data=数据高八位<<8|数据低八位;
 C = (Data)/340 + 36.53 (℃)

四、磁力计(AK8963)转换:
IMU传感器输出值与实际物理量的换算关系_第3张图片

灵敏度:16位AD (0.15uT/LSB);
Data=数据高八位<<8|数据低八位;
ASA:Fuse ROM中读取的值。
M校正后=Data*((ASA - 128) / 256 + 1) * 0.15;


五、MS5611气压计气压值与温度值换算:
D1:24位AD值(压力)
D2:24位AD值(温度)

IMU传感器输出值与实际物理量的换算关系_第4张图片

IMU传感器输出值与实际物理量的换算关系_第5张图片


流程图

IMU传感器输出值与实际物理量的换算关系_第6张图片


程序:
float dT = D2 - C5 * pow(2, 8);

TEMP = (2000 + ((dT * C6) / pow(2, 23)));

float OFF = C2 * pow(2, 16) + (C4 * dT) / pow(2, 7);

SENS = C1 * pow(2, 15) + (C3 * dT) / pow(2, 8);

float T2, OFF2, SENS2;

    if (TEMP >= 2000)
    {
        T2 = 0;
        OFF2 = 0;
        SENS2 = 0;
    }
    if (TEMP < 2000)
    {
        T2 = dT * dT / pow(2, 31);
        OFF2 = 5 * pow(TEMP - 2000, 2) / 2;
        SENS2 = OFF2 / 2;
    }
    if (TEMP < -1500)
    {
        OFF2 = OFF2 + 7 * pow(TEMP + 1500, 2);
        SENS2 = SENS2 + 11 * pow(TEMP + 1500, 2) / 2;
    }

    TEMP = TEMP - T2;
    OFF = OFF - OFF2;

    SENS = SENS - SENS2;

    PRES = ((D1 * SENS) / pow(2, 21) - OFF) / pow(2, 15) / 100;
   TEMP = TEMP / 100;


你可能感兴趣的:(陀螺仪,加速度计,磁力计,气压计)