shineblink QMC5883三轴地磁传感器(指北针)

@TOC

一、本例程实现功能

通过QMC5883三轴地磁传感器模块测量XYZ三轴的地磁强度以及航向角(Azimuth),并通过print()函数在电脑串口调试终端打印输出。

二、基本概念

1. 地磁传感器

在这里插入图片描述
2. 地磁场
地磁场是指地球内部存在的天然磁性现象。地球可视为一个磁偶极(magnetic dipole),其中一极位在地理北极附近,另一极位在地理南极附近。 地磁场强度大约是0.5-0.6高斯 (Gauss),在QMC5883传感器中配置地磁场的测量范围为2G或者8G就是这里说的2Gauss或8Gauss。

三、 传感器参数配置描述

QMC5883传感器我们已将其默认配置为ODR=100Hz(每秒钟最多输出100组测量结果), OSR=512(抗干扰最强,但功耗稍高一些)。
另外我们可以在LIB_QMC5883Config()函数中结合您的需求配置传感器在XYZ轴三个方向的测量范围,分别为-2G ~ 2G或-8G ~ 8G。不管选两种配置中的哪一种,传感器X Y Z轴三个方向的输出值的满量程皆为-32768 ~ 32767(即当您获取到传感器的XYZ轴测量值时,需要根据您配置的是2G还是8G的满量程,来进行一个简单的系数换算即可)。配置为2G范围时精确度和灵敏度更高,配置为8G范围时范围更广但精度稍差。

四、接线图

在这里插入图片描述

六、完整代码

--配置USB以虚拟串口模式工作,这样调用print()函数就会在电脑串口终端打印输出
LIB_UsbConfig("CDC")
--设置QMC5883三轴磁场强度传感器占用SCL0和SDA0引脚,并设置三轴磁场的测量范围为-2G ~ +2G
LIB_QMC5883Config("IIC0", "RNG_2G")
--开始大循环
while(GC(1) == true)
do
    --每隔0.2秒查询传感器是否出数
    LIB_DelayMs(200)
    flag, X, Y, Z, azimuth = LIB_QMC5883GetResult()
    if flag == 1 then
        --输出X Y Z三轴的原始值以及航向角,航向角去掉小数点部分
        print(string.format("X:%d,Y:%d,Z:%d,Azimuth:%.0f\r\n", X, Y, Z, azimuth))
    end
end

七、代码运行结果

在这里插入图片描述
在这里插入图片描述
更多详情请参看 shineblink.com官网链接

  • 3
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值