单片机/MCU论坛
直播中

张文

12年用户 476经验值
擅长:模拟技术
私信 关注
[文章]

教你如何将HMC5883的精确度达到5°

最近做四轴飞行器是需要使用HMC5883,开始使用的时候感觉数据很离谱,我说是芯片坏了!数据告诉我,是你坏了,不知道要校准吗!!!我已哭晕在路上。

于是开始用(xmax+xmin)/2 (ymax+ymin)/2这种简单的方法进行了校验,但是误差很大,有10°,就想找一种更精确的方式,果然找到了,效果不错,达到5°。现在在坛子里分享一下方法:


校准步骤:
1.将芯片水平放置,不断旋转芯片得到一组xy轴数据
2.使用matlab拟合椭圆,得到中心坐标(xc,yc) 半长轴a 半短轴b
3.在程序中校准x,y:
  x=x-xc
   y=y-yc
   y=y*(b/a)若椭圆是“竖着”的
   y=y*(a/b) 若椭圆是“躺着”的


附件中有完整的matlab程序,考虑到有些朋友不熟悉matlab,可以按如下方式使用:
1.打开matlab,设置Current Folder为HMC5883校准文件夹
2.输入XY=[x1 y1;...;xi yi;...;xn yn]其中xi,yi为将芯片水平旋转到各个角度后所得的测量值
3.在主窗口输入hmc5883然后回车即可

此时将绘制出原始点以及拟合后的椭圆,并输出:result = xc yc a b
其中(xc,yc)表示椭圆中心的坐标,a表示椭圆的半长轴,b表示椭圆的半短轴


HMC5883校准.rar (18.68 KB)
(下载次数: 164, 2015-5-6 15:12 上传)


回帖(7)

阳阳熊猫

2015-5-6 15:23:37
好东西,谢啦
举报

galina0217

2015-5-6 16:50:33
赞一个{:12:
举报

hyy8010557

2015-6-21 16:20:50
很好谢谢大神,!!!!!!!!!!!!!!!!!!
举报

1981818001

2016-6-28 20:49:37
好像很复杂。。。
举报

李杰

2016-6-30 07:35:00
谢谢分享,好东西大家一起来分享!
举报

王伟

2017-8-1 18:29:48
好东西  ,收下了
举报

无人机

2017-12-6 09:39:09

好东西  ,收下了
举报

更多回帖

发帖
×
20
完善资料,
赚取积分