QMC5883三轴地磁传感器
一、本例程实现功能
通过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范围时范围更广但精度稍差。
四、接线图
五、材料清单
- QMC5883L传感器模块
注意:一定要QMC5883模块,不要HMC5883,二者不兼容
六、完整代码
--配置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
如果感兴趣,上面代码中出现的LIB开头的库函数可以在 API文档 中通过Ctrl+F查询。