[运动传感器] LSM6DS3怎么校准重力计

hezhengjia   2017-6-2 14:54 楼主
各位大虾,小弟菜鸟一枚。刚开始接触飞控算法,有个问题想请教大脚,
我在网上看到陀螺仪的校准方法,主要是校准0偏。就是静止时候的角速度值应该为0,方法是采样多次取平均值。

现在我在产品上,重力计是斜着放的,我想把这个时候的位置校准为水平放置的位置,请问这样可以吗?

如果可以应该怎么校准:

打个比喻:现在三轴的值为: 100, 300, 500 mg,然后把这个校准为0,0,1000 mg,应该是怎么做的,

直接取offset肯定不行的,直接取offset只是简单的去掉0偏。
因为三轴的合力在静止的时候总是为1000mg.直接减去之后合力都不对了,是这样吗??

回复评论 (7)

引用: littleshrimp 发表于 2017-6-2 15:46
你可以了解一下这个库
osxMotionAC
http://www.st.com/content/st_com/en/products/embedded-softwar ...

谢谢。我想知道在不适用库的情况之下。自己做算法,怎么校准
点赞  2017-6-5 07:59
引用: hezhengjia 发表于 2017-6-5 07:59
谢谢。我想知道在不适用库的情况之下。自己做算法,怎么校准



你是不是可以这样举例,正常情况下应该加速度和PCB是水平焊接的
QQ图片20170605111514.png
Ax=0g,Ay=0g,Az=1g

但实际上焊成了这样
QQ图片20170605111333.png

然后你把PCB放平,实际加速度的输出可能是
Ax=0.2g,Ay=0.2g,Az=0.8g

你希望对这个数据做一个补偿让PCB水平放置时得到
Ax=0g,Ay=0g,Az=1g


我的数学不好,能想到一个方法,不一定正确
在PCB水平放置时Ax=0.2g,Ay=0.2g,Az=0.8g
而你的理想数据是Ax=0g,Ay=0g,Az=1g
用每个轴的理想数据减去实际测量的数据
AxOffset = 0g - 0.2g = -0.2g
AyOffset = 0g - 0.2g = -0.2g
AzOffset = 1g - 0.8g = 0.2g

保存Offset数据
以后测量的时候再把得到的实际数据加上Offset






虾扯蛋,蛋扯虾,虾扯蛋扯虾
点赞  2017-6-5 11:36
引用: littleshrimp 发表于 2017-6-5 11:36
你是不是可以这样举例,正常情况下应该加速度和PCB是水平焊接的

Ax=0g,Ay=0g,Az=1g

但实际上焊 ...

对。就是要这样。不过偏移这样加不行。我试过了。
在静止的时候合力总是为1g,这样加上偏移之后。其他角度的合力都是一个变化值,并且算出来的偏移角度都不对了。
点赞  2017-6-5 19:01
引用: littleshrimp 发表于 2017-6-5 11:36
你是不是可以这样举例,正常情况下应该加速度和PCB是水平焊接的

Ax=0g,Ay=0g,Az=1g

但实际上焊 ...

另外我看到有0x73 0x74 0x75这3个寄存器所示设置偏移。结果偏移设置显示成功,但是读出来都是0
点赞  2017-6-5 19:05
你好,请问你用的什么主控芯片,可以分享下LSM6DS3的初始化代码吗?谢谢
点赞  2017-9-19 15:13
你需要做到多大的精度?
一般的加速度计设计就做一个水平静止校准就可以了,也就是找个非常水平的平台,把组装好的设备静止摆放在上面,然后计算出输出值和理论值得偏差,可以简单认为这就是三个轴的offset,之后的应用中直接减掉这个offset就可以了。
如果应用要求高,除了考虑offset,还要考虑 sensitivity 的偏差,也就是在不同量程下,寄存器值转换成mg单位的加速度的参数。比如,把设备正反两面摆放在水平平台上,理论上差值应该是2个g,但实际可能有所偏差,而这个偏差就是sensitivity的偏差,这个偏差的计算就相对复杂一点点:做六个面的测量,分别计算出offset和sensitivity的偏差。具体你可以在ST的官网上找文档 DT0053: 6-point tumble sensor calibration 看看,适用所有加速度计的校准。
点赞  2017-9-21 11:50
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复