GY-273 HMC5883L磁力计接Arduino做电子罗盘:I2C接线与航向角计算

2026-10-20 20:29:38 42阅读

想给遥控车、无人机或者巡检小车装个"认方向"的模块,最简单的就是一块三轴磁力计。HMC5883L是我试下来最容易上手的一块,四根线接上,串口就能吐出来你面朝的角度。这篇把我从买板到算出航向角的过程理顺,照着接就能跑通。

cover hmc5883l

它到底测什么

HMC5883L是一个三轴磁力计,能测出x、y、z三个方向上的地磁场分量。地球磁场在水平面上总是指向磁北极,所以拿到水平方向的x和y两个分量,用反三角函数就能算出你朝哪个方向。

我手上这块常做成GY-273模块,板子上带了3.3V稳压和电平转换,所以既能接3.3V也能接5V的单片机,对Arduino特别友好。芯片本身最高能测到±8高斯,分辨率能到大概5毫高斯,做电子罗盘精度在±1到2度,够用。

接线就四根

它是I2C通信,所以只需要接电源和两根数据线。红色VCC接5V,黑色GND接地,黄色SDA接A4,绿色SCL接A5。GY-273模块上已经自带I2C上拉电阻,不用你外接。

body hmc5883l wiring

有一点要注意:I2C地址是固定的0x1E,同一根总线上只能挂一块。很多新手卡在这一步,扫描半天扫不到地址,多半是SDA和SCL两根线接反了,或者VCC没接对。

库和示例代码

Arduino库里搜"Adafruit HMC5883 Unified"装好,它会自动带上依赖的Unified Sensor库。示例里有个magsensor的demo,上传打开串口监视器,就能看到x、y、z的磁场数据和算出来的heading角度。

罗盘要用atan2(y, x)来算航向角,公式是 heading = atan2(y, x),转成度再修正本地磁偏角。北半球不同城市磁偏角不一样,把所在地的偏角值写进去,指北才准。

三个容易踩的坑

第一,罗盘一定要远离电机、音箱、电池和螺丝刀这类带磁性或铁的东西,不然读数一直漂。第二,模块要放平,倾斜会导致水平分量失真。第三,做轮式小车时尽量用中断或者高频采样,读取落后容易漏脉冲。

还老有人说"放桌子上不动读数还在动",多半是附近有电源纹波或者金属桌面干扰,把模块垫高一点、远离USB线,问题就好很多。

能做什么

接上之后你能做个电子指北针,也可以给循迹小车或者腿足机器人当航向参照,配合GPS还能做简单导航。想更抗干扰,可以再叠一块MPU6050做倾斜补偿,但那是进阶玩法了。

这块板几十块钱就拿下,算是吃透I2C和地磁传感器的最短路径。照着接线、跑通示例、再调好磁偏角,你的小车就不再是"蒙着头跑"了。


作者:电机传感器师
链接:https://www.aiddithome.com/p/175e91af69d8e5.html
本作版权归作者所有,未经允许请勿转载。若存在违规行为,您可以点击 “举报”。


登录 后发表评论
0条评论
还没有人评论过~