分类: C/C++
2012-07-06 12:00:06
通过这几周的学习,总算把3D罗盘给搞定了,现在拿来和大家分享一下。
在此过程中主要存在几个问题:
1> 要详细学习磁力计和加速计的相关文档;
2> 选择好参考平面,对着文档修改相应的公式;(这一步非常关键)
3> 确定方向轴,这个对修改公式很关键;
4> 通过加速计确定仰角和滚角的度数;
5> PCB布局一定要注意,将干扰扼杀到摇篮里。
资料中的相关公式:
Pitch φ= atan[ ax / sqrt( ay*ay + az*az ) ]
Roll θ= atan[ ay / az ]
XH = X*cos(f) + Y*sin(q)*sin(f) - Z*cos(q)*sin(f)
YH = Y*cos(q) + Z*sin(q)
Azimuth = arcTan (YH / XH)
关于参考平面的选择,就是设备正常使用的时候是怎么个方位放置的,放置好后,那个坐标平面是和水平面平行的,文档中都是XY坐标平面,但实际应用中肯定不一样,像我这次用到的就是YZ坐标平面,