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 知识体系总览
下面这张图是我自己画的,把磁力计的知识结构串起来了。你看一眼就能明白各个模块之间的关系。
1.6 小结
磁力计的原理说白了就是测量地磁场。但实际应用中,硬铁误差、软铁误差、温漂、噪声这些坑一个接一个。我个人的建议是:
- 选型时:根据精度需求和预算选。霍尔便宜但精度低,磁阻性价比高,磁通门精度高但贵。
- 布局时:远离马达、扬声器、大电流走线。我习惯在 PCB 上留出至少 5mm 的净空区。
- 校准时:椭球拟合是基本功。后面章节我会详细讲怎么用 Python 实现。
嗯,这一章就到这里。记住一句话:磁力计的数据,不校准就是废的。下一章咱们聊具体的校准算法。