最近在做IMU的数据采集,采集出来的数据怪怪的,因此后续处理引发了一个大BUG,本来以为是硬件的问题改了一周,后来慢慢觉得邪门感觉是软件的问题,所以就赶紧check一个数据处理部分,果然还是要对原始数据深入了解一些。
首先看加速度计和陀螺仪的数据说明:
可见加速度计和陀螺仪有不同的量程,但出来的都是ADC数据,位数都是16位,最高位是符号位, 剩15位, 那么换成10进制就是32768。
以加速度计为例,如果选择2g的量程,就是说明数据最大为32768时表示数据为2g。那么当测试值为X时,真实值为
X
×
2
g
/
32768
X\times 2g / 32768
X×2g/32768 也就是说其分辨率为2/32768=1/16384。也就是对应的sensitivity Scale Factor: 16384.
所以总体来看,选的量程越大,精度就越差。
MPU ADC的值是原始值,如果要转到真实值,就除以FS_SEL对应的sensitivity就好。