1. 磁力计工作原理:地磁场基础、磁力计类型与误差来源

做嵌入式这么多年,我接触过不少传感器。但要说哪个最让人又爱又恨,磁力计绝对排前三。它原理不复杂,但实际用起来坑特别多。今天咱们就把它彻底聊透。

1.1 地磁场基础——你脚下的“隐形指南针”

地球本身就是一个大磁铁。地磁场从地理南极附近出发,穿过地球内部,回到地理北极附近。这个场很弱,大概在 25–65 μT(微特斯拉)之间,具体看你在地球哪个位置。

地磁场有几个关键参数:

  • 磁偏角:地理北极和磁北极之间的夹角。不同地区不一样,北京大概是 6° 左右,上海约 5°。做航向计算时一定要查表补偿。
  • 磁倾角:磁场线与水平面的夹角。在赤道附近接近 0°,在南北极接近 90°。
  • 总强度:就是磁场矢量的大小。这个值相对稳定,但会受到太阳活动影响。

我个人的经验:做无人机航向时,我习惯先查当地地磁参数。有一次在新疆测试,发现航向偏差 8°,查了磁偏角才发现是没补偿。嗯,从那以后我把查地磁参数写进了项目启动清单。

1.2 磁力计类型——三种主流方案怎么选?

市面上常见的磁力计就三种:霍尔、磁阻、磁通门。我挨个说说它们的脾气。

1.2.1 霍尔效应磁力计

原理很简单:通电的半导体放在磁场里,载流子会偏转,产生一个横向电压。这个电压和磁场强度成正比。

  • 优点:便宜、功耗低、体积小。手机里用的基本都是这种。
  • 缺点:灵敏度低、温漂大。说白了就是精度一般。
  • 典型芯片:AK8963、MMC5983MA。

避坑指南:我曾经用霍尔磁力计做室内定位,结果温度一变化,数据就飘。后来换成磁阻的才解决问题。霍尔适合对精度要求不高的场景。

1.2.2 磁阻磁力计

利用的是各向异性磁阻效应。说白了就是某些材料的电阻会随外部磁场方向变化。这种传感器灵敏度高,线性度好。

  • 优点:灵敏度高、噪声低、响应快。
  • 缺点:有磁滞效应,需要定期置位/复位。
  • 典型芯片:HMC5883L、LIS3MDL、IST8310。

我个人最喜欢用磁阻磁力计做航向。它的输出很干净,配合卡尔曼滤波效果很好。但要注意,它有个“置位/复位”操作,每次上电后最好做一次,不然数据会慢慢漂移。

1.2.3 磁通门磁力计

这个就高端了。它利用磁芯饱和特性,通过检测二次谐波来测量磁场。精度极高,但体积大、功耗高、价格贵。

  • 优点:精度极高、温漂极小、稳定性好。
  • 缺点:贵、大、功耗高。
  • 典型芯片:RM3100、Mag3300。

磁通门一般用在勘探、军事、科研领域。我做过一个地磁导航项目,用的就是磁通门,精度确实好,但成本也感人。

1.3 输出特性——你拿到的数据长什么样?

磁力计输出的是三个轴上的磁场分量:X、Y、Z。单位通常是 μT 或 Gauss(1 Gauss = 100 μT)。

理想情况下,传感器静止时,三个轴的数据应该满足:

X² + Y² + Z² = 常数(地磁场强度平方)

但现实是残酷的。你拿到的数据往往是一个椭球,而不是球。为什么会这样?因为误差来了。

1.4 误差来源——为什么你的数据不准?

误差主要分两类:硬铁误差软铁误差。我当年第一次做磁力计校准时,就被这两个概念搞晕过。

1.4.1 硬铁误差

硬铁误差来自传感器附近的永久磁铁或带磁物体。比如扬声器、马达、电池、螺丝刀。这些物体会产生一个固定的偏置磁场,叠加在地磁场上。

  • 表现:数据整体偏移,椭球中心不在原点。
  • 校正方法:减去偏置。说白了就是找到椭球中心,然后平移回去。

我曾经踩过的坑:做智能手表时,磁力计放在表盘里,旁边就是振动马达。一开机,数据偏了 20 μT。后来把磁力计挪到表带扣位置,问题才解决。布局真的很重要。

1.4.2 软铁误差

软铁误差来自传感器附近的软磁材料。比如铁壳、镍片、PCB上的走线。这些材料会改变磁力线的方向,导致各轴灵敏度不一致,甚至轴间耦合。

  • 表现:椭球被拉伸或旋转,不再是标准球体。
  • 校正方法:用椭球拟合算法,求出 3×3 的校正矩阵。

1.4.3 其他误差

  • 温漂:温度变化导致传感器内部参数变化。霍尔最严重,磁阻次之,磁通门最稳。
  • 噪声:来自电源、ADC、环境电磁干扰。我习惯在 PCB 上加 π 型滤波,效果不错。
  • 安装误差:传感器没放平,或者和载体坐标系没对齐。这个靠标定解决。

1.5 知识体系总览

下面这张图是我自己画的,把磁力计的知识结构串起来了。你看一眼就能明白各个模块之间的关系。

磁力计工作原理知识体系 地磁场基础 磁偏角 · 磁倾角 · 总强度 25–65 μT 磁力计类型 霍尔 · 磁阻 · 磁通门 灵敏度/成本/功耗不同 输出特性 X/Y/Z 三轴分量 单位: μT / Gauss 误差来源 硬铁误差(偏置) → 椭球中心偏移 软铁误差(缩放/旋转) → 椭球变形 温漂 · 噪声 · 安装误差 校正方法 椭球拟合 · 最小二乘法 · 卡尔曼滤波 置位/复位 · 温补 · 坐标系对齐

1.6 小结

磁力计的原理说白了就是测量地磁场。但实际应用中,硬铁误差、软铁误差、温漂、噪声这些坑一个接一个。我个人的建议是:

  • 选型时:根据精度需求和预算选。霍尔便宜但精度低,磁阻性价比高,磁通门精度高但贵。
  • 布局时:远离马达、扬声器、大电流走线。我习惯在 PCB 上留出至少 5mm 的净空区。
  • 校准时:椭球拟合是基本功。后面章节我会详细讲怎么用 Python 实现。

嗯,这一章就到这里。记住一句话:磁力计的数据,不校准就是废的。下一章咱们聊具体的校准算法。


专注资料整理