如题,最近用LSM303C做一个电子罗盘。
看了官方文档,由于个人水平有限,关于校正那块的矩阵公式运算看不太懂,更不用说将它转化成C语言程序了。
官方也没有提供什么例程,好不容易找到stm32l476vg的disco有LSM303C,用它的程序试了下,总算可以算出航向角YAW度数,不过大概有正负好几度(十度左右)的波动。
看了它的程序,它的校准比较简单,是这样的:
Mag_x=(Mag_x - M_Xmin)/(M_Xmax-M_Xmin)*2-1.0;
Mag_y=(Mag_y - M_Ymin)/(M_Ymax-M_Ymin)*2-1.0;
Mag_z=(Mag_z - M_Zmin)/(M_Zmax-M_Zmin)*2-1.0;
其中的M_Xmax,M_Xmin,M_Ymax,M_Ymin,M_Zmax,M_Zmin分别是三个轴再旋转校准时候采集的最大值最小值。这个公式我查了下,好像是什么归一化处理。并不是ST官方给的文档写的什么椭球拟合的校准。但是处理出来的度数也能用,就是有点误差。想问下实际项目中这种校准能用吗?
还有LSM303C有办法做到只有一两度偏差吗?
官方有没有给出可以精准校准的例程呢? |