找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5390|回复: 3
打印 上一主题 下一主题
收起左侧

HMC5883和qmc5883来做指南针51单片机源程序

[复制链接]
跳转到指定楼层
楼主

获取原始数据,然后计算

附件是使用了OLED 0.96来做的指南针,虽然YZ轴没啥用,但是还是做了处理;
和iphone对比,基本上做到了5度之内的偏差;


Multiple_Read_QMC5883(BUF);
magx=BUF[1] << 8 | BUF[0]; //Combine MSB and LSB of X Data output register  最高有效位
magy=BUF[3] << 8 | BUF[2]; //Combine MSB and LSB of Y Data output register
magz=BUF[5] << 8 | BUF[4]; //Combine MSB and LSB of Z Data output register
if(magx>0x7fff)magx-=0xffff;   
if(magy>0x7fff)magy-=0xffff;
if(magz>0x7fff)magz-=0xffff;
  magx=magx-offsetX;magy=magy-offsetY;magz=magz-offsetZ;
  
  Angle_XY= atan2((double)magy,(double)magx) * (180 / 3.14159265) + 180; //计算XY平面角度
  Angle_XZ= atan2((double)magz,(double)magx) * (180 / 3.14159265) + 180; //计算XZ平面角度
  Angle_YZ= atan2((double)magz,(double)magy) * (180 / 3.14159265) + 180; //计算YZ平面角

当然这还是不够的,因为磁场便宜,或当地磁场问题会造成,xyz拟合的时候出现椭圆,所以要修正;
Multiple_Read_QMC5883(BUF);      //连续读出数据,存储在BUF中
X=BUF[1] << 8 | BUF[0]; //Combine MSB and LSB of X Data output register  最高有效位
Y=BUF[3] << 8 | BUF[2]; //Combine MSB and LSB of Y Data output register
Z=BUF[5] << 8 | BUF[4]; //Combine MSB and LSB of Z Data output register
if(X>0x7fff)X-=0xffff;   
if(Y>0x7fff)Y-=0xffff;
if(Z>0x7fff)Z-=0xffff;
  
    if (X > xMax)  
       xMax = X;  
     if (X < xMin )  
       xMin = X;  
     if(Y > yMax )  
       yMax = Y;  
     if(Y < yMin )  
       yMin = Y;  
     if(Z > zMax )  
       zMax = Z;  
     if(Z < zMin )  
      zMin = Z;  
   
if(abs(xMax - xMin) > 0 )  
offsetX = (xMax + xMin)/2;  
if(abs(yMax - yMin) > 0 )  
offsetY = (yMax + yMin)/2;  
if(abs(zMax - zMin) > 0 )  
offsetZ = (zMax +zMin)/2;


Keil代码下载:
51单片机代码.7z (57.28 KB, 下载次数: 199)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:504404 发表于 2019-8-21 11:52 | 只看该作者
谢谢啦,很强啊
回复

使用道具 举报

板凳
ID:625152 发表于 2019-10-16 16:51 | 只看该作者
谢谢,终于找到了
回复

使用道具 举报

地板
ID:978679 发表于 2023-3-17 16:02 | 只看该作者
晕,程序是51的不是STM32的大家如果要STM32的不要下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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