QMC5883L电子罗盘怎么接线?Arduino读方位角和校准避坑全解

开源复现员硬件DIY 2026-10-16 19:55:39 4阅读 举报

想让小车或机器人知道自己在朝哪个方向走,电子罗盘是个便宜又好用的选择,QMC5883L就是常见的一颗三轴磁力计,常被打在GY-271之类的蓝色小板上。它通过感知地磁场算出方位角,接上Arduino就能当指南针用。这篇讲接线、读数据和怎么让它读得准。

QMC5883L模块引脚和接线

GY-271板子一般是六针,但真正要用的就四根:VCC接3.3V(部分板5V也能用,先看丝印说明)、GND接地、SDA接A4、SCL接A5,走标准I2C。剩下一般是DRDY数据就绪脚,普通读取可以先不接。接线颜色我习惯红-电源、黑-地、黄-SCL、蓝-SDA,看着清楚不容易接错。

接好先跑一遍I2C扫描确认地址,QMC5883L一般是0x0D(有的资料写0x0C,跟HMC5883L搞混的不少,注意区分)。库可以用QMC5883LCompass,封装好现成的方位角接口,不用自己啃寄存器。

读方位角的代码思路

初始化后在循环里调getAzimuth就能拿0到360度的方位角,北就是0度、东90、南180、西270。想更顺滑可以多次采样取平均,晃动时读数会更稳。这套东西拿去给小车做方向修正,或者配合GPS做导航修正都很实用。

校准才是读数准的关键

出厂没校准的磁力计读数会偏,甚至整体画个圈漂移。常见的做法是先跑校准拿到偏移量(offset)和比例(scale),再通过setCalibrationOffsets和setCalibrationScales把校准值写进去。步骤其实简单:拿着板和Arduino连着串口,水平慢慢转一圈,记录下X、Y的最大最小值,算出中点和幅度填进校准接口就行。

还有一个点,如果这颗磁力计是跟别的传感器一起用,得先确认I2C总线上有没有冲突。比如我之前把它和MPU6050一起挂,靠MPU6050开了I2C bypass才顺利读到,不然两个设备抢总线,数据就全乱了。总之接线先对、地址确认、校准做一遍,罗盘就能老老实实给你指北了。

版权声明:
作者:开源复现员
链接:https://www.aiddithome.com/p/4325d08d486f1.html
来源:硬件DIY
实践版权归作者所有,未经允许请勿转载,若此实践存在违规行为,您可以点击 “举报”。


登录 后发表评论
4条评论
第三次终于亮了
1楼 · 5小时前

地址0x0D别跟HMC5883L搞混,看着像但不一样

探头看一眼
2楼 · 5小时前

拿来做小车方向修正很实用,getAzimuth直接给角度

板砖搬不动
3楼 · 5小时前

跟MPU6050一起挂的时候要靠I2C bypass,不然总线抢了我半天没搞懂

阿强焊点总飞
4楼 · 5小时前

不校准读数偏得厉害,转一圈记最大最小值填进去立马准了