HMC5883L磁力计使用

一、器件简介

        HMC5883L是一款三轴磁场传感器,电子指南针罗盘模块。采用IIC通讯协议。

二、工作原理

        传统罗盘用一根被磁化的磁针来感应地球磁场,地球磁场与磁针之间的磁力时磁针转动,直至磁针的两端分别指向地球的磁南极与磁北极。电子罗盘也一样,只不过把磁针换成了磁阻传感器,然后将感受到的地磁信息转换为数字信号输出给用户使用。

        用来衡量磁感应强度大小的单位是Tesla或者Gauss(1Tesla=10000Gauss)。

        地磁场是一个矢量,对于一个固定的地点来说,这个矢量可以被分解为两个与当地水平面平行的XY分量和一个与当地水平面垂直的Z分量。如果保持电子罗盘和当地的水平面平行,那么罗盘中磁力计就和这三个分量对应起来了。实际上对水平方向的两个分量来说,他们的矢量和总是指向磁北的。罗盘中的航向角就是方向与磁北的夹角。

三、磁场校准

        因为磁场干扰的原因,实际中我们测量的磁力计数据是不准确的,需要进行校准才可以使用。

         理想效果为图一,实际效果很可能为图二,变成了一个椭球,因此我们需要采用拟合的方法,来修正校准。

修正的输出可以根据下面的方法来计算:    

        1)在磁场干扰的条件下进行,数据收集设备被旋转360°。 

        2)数据进行分析,以产生偏差的偏移和灵敏度的比例因子,以补偿所述干扰。

  • 从数据中发现的X和Y磁强计的最大输出,以上图为例,即可得到结论:X具有更大的反应。我们设置其比例系数为1。即Xs=1
  • Y轴比例系数为  Ys = ( Xmax - Xmin)/( Ymax - Ymin)
  • 对于偏置补偿有 
    • Xb = Xs * [1/2(Xmax - Xmin) - Xmax ]
    • Yb = Ys * [1/2(Ymax - Ymin) - Ymax ]
  • 正确的输出为
    • Xout = Xin*Xs + Xb
    • Yout = Yin*Ys + Yb

四、在ArduinoUNO上的基本使用

        在ArduinoIDE菜单栏 → 项目 → 加载库 → 管理库

        搜索 HMC5883

         我这安装的第一个。

        然后在 ArduinoIDE菜单栏 → 文件 → 示例,找到 Adafruit HMC5883 Unified的唯一一个示例文件,打开。

 

        咱们将HMC5883L模块连接到Arduino UNO板子上,跑跑这个程序吧。结果如下:

         我和手机对比了一下,相差四度,可能是因为手机的磁场干扰到模块了吧。

  • 3
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星羽空间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值