2. 传感器基础:MEMS加速度计、陀螺仪、磁力计的工作原理与输出特性

好,咱们进入正题。传感器融合这事儿,说白了就是让几个小东西配合干活。但你要想用好它们,得先摸清每个传感器的脾气。今天我就跟你聊聊MEMS世界里最常用的三个家伙:加速度计、陀螺仪、磁力计。

我个人习惯,每次拿到一款新传感器,第一件事不是看寄存器,而是先搞清楚它的物理原理。为什么?因为原理决定了它的死穴在哪里。你想想看,一个连原理都不懂的工程师,怎么去写融合算法?

2.1 MEMS加速度计:你感受到的是重力,不是运动

加速度计测量的是比力(Specific Force),不是单纯的加速度。嗯,这里要注意——它测的是物体受到的惯性力与重力的合力。说白了,你静止放在桌面上时,它读出来的是1g向上的加速度,因为桌面在推着它对抗重力。

核心原理:MEMS加速度计内部有一个微小的质量块,固定在弹簧结构上。当芯片加速时,质量块会偏移,通过检测电容变化来推算加速度。典型的量程有±2g、±4g、±8g、±16g。

我在项目中遇到过一件事:有个同事死活搞不定姿态解算,发现加速度计在静止时输出抖动很大。查了半天,原来是PCB安装时引入了机械共振。所以啊,PCB布局时一定要避开传感器的谐振频率,这个坑我踩过。

输出特性

  • 静态响应:可以测量重力矢量,用于确定俯仰角和横滚角
  • 动态响应:带宽通常100-400Hz,但高频噪声明显
  • 噪声特性:以μg/√Hz为单位,低端传感器约300μg/√Hz,高端可做到10μg/√Hz
  • 零偏稳定性:典型值10-100mg,受温度影响大

避坑指南:我曾经在无人机项目里直接用加速度计做航向角计算,结果发现水平加速时航向完全漂掉。原因很简单——加速度计分不清重力加速度和运动加速度。所以,纯加速度计只能算俯仰和横滚,航向角必须靠磁力计或陀螺仪。

2.2 陀螺仪:角速度的忠实记录者

陀螺仪测量的是角速度,单位是°/s。它的原理比加速度计稍微绕一点——利用科里奥利效应。你想想看,一个振动的质量块,如果给它施加一个旋转,它就会在垂直方向产生位移。检测这个位移,就能算出角速度。

我记得第一次调试陀螺仪时,看到数据手册上写着「零偏稳定性0.01°/s」,心想这参数真漂亮。结果一上电,输出飘了0.5°/s。后来才明白,那是实验室理想条件下的数据,实际使用要考虑温度、振动、电源噪声等因素。

输出特性

参数 消费级 工业级 战术级
量程 ±250~2000°/s ±500°/s ±100°/s
零偏稳定性 0.1~1°/s 0.01~0.1°/s <0.001°/s
噪声密度 0.01~0.1°/s/√Hz 0.001~0.01°/s/√Hz <0.0001°/s/√Hz

个人经验:陀螺仪最怕的是积分漂移。你算角度时,每秒钟的零偏误差都会累积到角度上。我习惯在系统上电后先做5秒钟的静态采集,取平均作为零偏补偿值。这个小技巧,能省掉你后面很多滤波的麻烦。

2.3 磁力计:地球的微弱信号

磁力计测量的是磁场强度,单位是μT(微特斯拉)。地球磁场大约在25-65μT之间,方向从南指向北。磁力计就是靠这个来告诉你「哪边是北」。

但说实话,磁力计是三个传感器里最娇气的。为什么?因为地磁场太弱了,随便一个电机、一根电源线、甚至一块铁皮,都能把它干扰得七荤八素。我在做智能手表时,磁力计放在表盘右上角,结果每次用户抬手看时间,读数就跳变——因为表带上的金属扣环干扰了磁场。

输出特性

  • 量程:典型±1200μT,覆盖地磁场绰绰有余
  • 分辨率:0.1~1μT,高端可达0.01μT
  • 更新率:10-100Hz,通常比加速度计和陀螺仪慢
  • 硬铁干扰:由PCB上的永磁体或铁磁材料引起,表现为固定偏置
  • 软铁干扰:由导磁材料引起,表现为各向异性的灵敏度变化

校准是必须的:任何磁力计在出厂后都需要做硬铁和软铁校准。方法很简单——让传感器在三维空间里转几圈,采集数据拟合椭球。我习惯在产线上做一次自动校准,把校准参数存到EEPROM里。

2.4 三种传感器的对比与协同

好,现在我们把三个家伙放在一起看。它们各有各的强项,也各有各的软肋:

传感器 测量量 优点 缺点
加速度计 比力(含重力) 静态姿态准,无漂移 动态时受运动加速度干扰
陀螺仪 角速度 动态响应快,短时精度高 积分漂移,长期不准
磁力计 磁场强度 提供绝对航向参考 易受干扰,需要校准

你想想看,如果只用加速度计,飞机一加速你就分不清方向了。只用陀螺仪,飞10分钟角度就漂到天边去了。只用磁力计,旁边过个电动车读数就乱跳。所以,融合才是王道。

下面这张图是我自己总结的传感器融合逻辑框架,你可以看看它们是怎么配合的:

传感器融合逻辑框架 加速度计 俯仰/横滚(静态) 陀螺仪 角速度(动态) 磁力计 航向(绝对参考) 预处理:去噪、校准、坐标对齐、时间同步 低通滤波 | 零偏补偿 | 硬铁/软铁校准 | 插值对齐 融合算法核心 互补滤波 | 卡尔曼滤波 | 梯度下降法 输出:稳定、无漂移的姿态与航向

你看这个流程:三个传感器各自采集原始数据,经过预处理后送入融合算法。加速度计提供静态参考,陀螺仪负责动态跟踪,磁力计给出绝对航向。融合算法把这三者的优势结合起来,输出一个稳定、无漂移的姿态估计。

我的建议:刚开始做融合时,别一上来就上卡尔曼滤波。先试试互补滤波,代码简单,效果也够用。等你把传感器特性摸透了,再上卡尔曼也不迟。我在一个平衡车项目里,互补滤波跑了两年都没出过问题。

2.5 输出特性总结

最后,我把三个传感器的关键输出特性整理成一个速查表,方便你以后查阅:

特性 加速度计 陀螺仪 磁力计
输出量 m/s² 或 g °/s 或 rad/s μT 或 Gauss
轴数 3轴 (X, Y, Z) 3轴 (X, Y, Z) 3轴 (X, Y, Z)
更新率 100-1000 Hz 100-1000 Hz 10-100 Hz
主要误差 零偏、噪声、温度漂移 零偏、积分漂移、温度漂移 硬铁、软铁、环境磁场
校准方式 六位置法 静态采集取平均 椭球拟合
融合中的角色 长期稳定参考 短期动态跟踪 航向绝对参考

嗯,这一章的内容就到这儿。记住一句话:传感器没有完美的,但融合可以接近完美。下一章我们会深入讲互补滤波和卡尔曼滤波的具体实现,到时候我会拿实际代码出来讲。


公众号:蓝海资料掘金营,微信deep3321