搜索
bottom↓
回复: 10

关于5883电子罗盘水平补偿的问题

[复制链接]

出0入0汤圆

发表于 2012-1-17 17:27:02 | 显示全部楼层 |阅读模式
当沿着X轴倾斜的时候,罗盘角度变化很小(不补偿的时候变化大),但是沿着Y轴倾斜的时候,水平补偿似乎一点没有作用。
主程序如下:
    Init_HMC5883();
    Multiple_read_HMC5883();  
    x=BUF[0] << 8 | BUF[1];
    z=BUF[2] << 8 | BUF[3];
    y=BUF[4] << 8 | BUF[5];
    angle= atan2((double)y,(double)x) * (180 / 3.14159265) + 180;
    Init_MMA8452();                //初始化MMA8452
    Multiple_read_MMA8452();       //连续读出数据,存储在BUF中
    dis_data=(BUF[0]<<8)|BUF[1];  //合成数据   
    dis_data>>=4;
    xx=(float)dis_data;
    dis_data=(BUF[2]<<8)|BUF[3];  //合成数据   
    dis_data>>=4;
    yy=(float)dis_data;
    dis_data=(BUF[4]<<8)|BUF[5];  //合成数据   
    dis_data>>=4;
    zz=(float)dis_data;
    ztemp=atan(sqrt(xx*xx+yy*yy)/zz);
    ztemp=ztemp*180/3.14;
    ytemp=atan(yy/sqrt(xx*xx+zz*zz));
    ytemp=ytemp*180/3.14;
    xtemp=atan(xx/sqrt(yy*yy+zz*zz));
    xtemp=xtemp*180/3.14;
   
   ctpx=cos((float)(xtemp*3.14/180));
   stpx=sin((float)(xtemp*3.14/180));
   ctpy=cos((float)(ytemp*3.14/180));
   stpy=sin((float)(ytemp*3.14/180));

   xout=((float)x*ctpx+(float)y*stpy*stpx-(float)z*ctpy*stpx);
   yout=((float)y*ctpy+(float)z*stpy);
   anglebc= atan2(yout,xout) * (180 / 3.14159265) + 180;
   
    Delayms(100);   
  

因为程序写的很乱,所以就不把全部程序发上来了,需要的和我说下,我发给你。

希望高手帮我解决下这个问题,本人数学比较差   公式都是网上找的。。

阿莫论坛20周年了!感谢大家的支持与爱护!!

如果想吃一顿饺子,就得从冰箱里取出肉,剁馅儿,倒面粉、揉面、醒面,擀成皮儿,下锅……
一整个繁琐流程,就是为了出锅时那一嘴滚烫流油的热饺子。

如果这个过程,禁不住饿,零食下肚了,饺子出锅时也就不香了……《非诚勿扰3》

出0入0汤圆

发表于 2012-1-17 18:32:32 | 显示全部楼层
回复【楼主位】ms80c51
我发给你。
-----------------------------------------------------------------------
求一个

出0入0汤圆

发表于 2012-1-17 19:48:11 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-1-18 16:06:48 | 显示全部楼层
我也在用5883,发给我,一起研究下!

出0入0汤圆

发表于 2012-3-27 13:01:10 | 显示全部楼层
水平补偿的算法大家有吗,急求!

出0入0汤圆

发表于 2012-4-9 16:23:27 | 显示全部楼层
也在做5883,对补偿还是不太懂。学习一下。。

出0入0汤圆

发表于 2012-11-17 18:36:32 | 显示全部楼层
我也遇到了跟楼主一样的问题,请问楼主怎么解决的啊???

出0入0汤圆

发表于 2012-11-17 18:44:27 | 显示全部楼层
哈哈  刚刚稀里糊涂解决了   Y轴的角度取反就行了

出0入0汤圆

发表于 2013-10-2 09:04:17 | 显示全部楼层
我也想做一个电子罗盘,希望大侠能经我提供一下资料。谢谢了。。。我的邮箱385898186@qq.com

出0入0汤圆

发表于 2015-12-17 13:04:55 | 显示全部楼层
楼主上面的问题解决了吗,我也遇到了同样的问题,不知道你是如何解决的,我使用的公式是Xr=Xcosα+Ysinαsinβ+ Zcosβsin,Yr=Ycosβ- Zsin,就是当罗盘水平时即俯仰和横滚都为零时方位角才准确
http://www.amobbs.com/thread-5639795-1-1.html

出0入0汤圆

发表于 2017-2-17 19:38:58 | 显示全部楼层
谢谢分享,记号!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-28 18:54

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表