传感器基础:加速度计、陀螺仪、磁力计、气压计的工作原理与误差来源

做飞控这些年,我见过太多人一上来就调PID参数,结果飞机怎么都稳不住。其实啊,问题往往出在传感器身上。传感器是飞控的「眼睛」和「耳朵」,它们要是没校准好,后面全是白费功夫。

今天咱们就把这四个核心传感器掰开揉碎了讲清楚。我会结合自己踩过的坑,告诉你每个传感器到底怎么工作,误差从哪来,以及怎么在代码层面处理它们。

一、加速度计:感知重力与运动

加速度计测量的是物体的加速度。注意,它测的不是速度,是加速度。而且它测的是「比力」——也就是物体受到的惯性力与重力的合力。

说白了,你拿着加速度计静止不动,它测到的是1g(约9.8m/s²)向上的加速度。为什么?因为地面在推着你向上,抵消重力。这个反直觉的点,我当年也困惑了好久。

核心原理: 加速度计内部有一个微小的质量块,通过弹簧连接在基座上。当芯片加速时,质量块会因惯性产生位移,这个位移被电容或压阻效应检测到,转换成电信号。

常见的加速度计有ADI的ADXL345、InvenSense的MPU6050(内置加速度计+陀螺仪)、ST的LSM6DS系列。我个人习惯用MPU6050做入门,便宜又好买。

误差来源

  • 零偏误差: 静止时输出不为0。比如你放平了,X轴应该输出0,结果输出0.05g。这个可以通过静态校准消除。
  • 比例因子误差: 实际1g对应输出不是标准的数值。比如你转了90度,理论上应该输出1g,结果只有0.98g。
  • 交叉轴耦合: X轴加速度会在Y轴上产生串扰。这个在廉价传感器上特别明显。
  • 噪声: 高频振动会引入噪声。我在做四轴时发现,电机转动后加速度计数据抖得厉害,必须加低通滤波。
避坑指南: 我曾经在调试一款无人机时,发现悬停时高度一直在漂。查了两天,最后发现是加速度计的零偏没校准。静止时Z轴输出0.98g,我当成1g用了,结果积分出来的速度一直在累积误差。校准后问题立刻解决。

二、陀螺仪:测量角速度

陀螺仪测量的是物体绕各轴的旋转角速度,单位是°/s。它不直接告诉你角度,只告诉你转得有多快。角度需要积分才能得到。

陀螺仪的核心是科里奥利效应。一个振动的质量块,当它旋转时,会受到一个垂直于振动方向和旋转轴方向的力。这个力的大小与角速度成正比。嗯,听起来有点绕,你只要记住:它测的是「转得有多快」就行。

关键区别: 加速度计测的是线运动,陀螺仪测的是角运动。两者互补,缺一不可。

误差来源

  • 零偏漂移: 静止时输出不为0,而且这个值会随温度变化。这是陀螺仪最大的敌人。
  • 温度漂移: 温度每变化1度,零偏可能变化0.01°/s到0.1°/s。飞控工作时芯片发热,这个误差会慢慢累积。
  • 随机游走: 噪声积分后产生的角度随机漂移。你想想看,即使零偏校准了,噪声积分几分钟也能漂出好几度。
  • 非线性: 高速旋转时输出与实际角速度不成正比。
注意: 陀螺仪的零偏漂移是积分误差的根源。静止时如果零偏是0.1°/s,积分10秒就是1°的误差。所以飞控里必须用加速度计或磁力计来修正这个漂移。

我记得有一次做固定翼飞控,陀螺仪零偏没处理好,飞机平飞时一直在缓慢滚转。我以为是PID参数问题,调了一整天。后来发现是陀螺仪预热时间不够,零偏还没稳定。从那以后,我都在代码里加了上电后5秒的静态校准。

三、磁力计:电子罗盘

磁力计测量的是地球磁场的方向和强度。说白了,它就是电子版的指南针。飞控用它来获取航向角(Yaw),因为加速度计和陀螺仪在水平方向上的航向是观测不到的。

磁力计的原理是霍尔效应或磁阻效应。当外部磁场变化时,传感器内部的电阻或电压会变化,从而检测出磁场强度。

重要: 磁力计非常脆弱。电机电流、电源线、甚至PCB上的走线都会产生磁场干扰它。

误差来源

  • 硬铁干扰: 传感器附近的永久磁铁或带磁性的金属,会产生一个固定的偏置磁场。这个偏置是恒定的,可以通过旋转校准消除。
  • 软铁干扰: 软磁材料(如铁氧体)会被地球磁场磁化,产生一个与方向相关的干扰。这个干扰会改变磁力计的灵敏度。
  • 安装误差: 传感器没有完全水平安装,导致测量值有倾斜误差。
  • 电流干扰: 大电流流过导线时会产生磁场。电机转动时电流变化,磁力计数据会跟着跳。
实战经验: 我做过一个四轴项目,磁力计在电机不转时航向很准,一推油门航向就偏了20度。查了半天,发现是电源线离磁力计太近。把电源线重新布线,远离传感器后问题解决。所以布局时一定要把磁力计放在远离大电流的地方。

四、气压计:测量高度

气压计测量的是大气压强。海拔越高,气压越低。飞控通过气压变化来推算高度变化。

气压计的核心是一个微小的真空腔体,上面覆盖着一层薄膜。当外部气压变化时,薄膜会变形,这个变形被压阻或电容检测到,转换成电信号。

常用的气压计有BMP280、MS5611、SPL06等。我个人比较喜欢MS5611,精度高,但贵一点。BMP280性价比高,入门首选。

误差来源

  • 温度漂移: 气压计对温度非常敏感。芯片自身发热、环境温度变化都会导致读数漂移。
  • 气流扰动: 风、螺旋桨下洗气流都会导致局部气压变化。飞控装在机身上,螺旋桨一转,气压计读数就开始跳。
  • 量化噪声: 数字气压计的分辨率有限,会产生量化误差。
  • 长期漂移: 传感器老化后,零偏会慢慢变化。
注意: 气压计测的是相对高度,不是绝对高度。你需要在地面时记录一个基准气压,然后根据气压变化推算高度变化。而且气压受天气影响,同一地点不同时间气压可能差几十帕,对应几米的高度误差。

我记得有一次做室内无人机,气压计高度一直不准。后来发现是飞控的泡沫减震垫把气压计的通风孔堵住了。气压计需要和外界大气连通,不能完全密封。嗯,这个坑我踩过,你们别踩了。

五、传感器融合:为什么要用多个传感器?

你可能会问:既然每个传感器都有误差,那怎么得到准确的数据?答案是:融合。

每个传感器都有它的优点和缺点:

传感器 优点 缺点
加速度计 长期稳定,不漂移 动态响应慢,受振动影响大
陀螺仪 动态响应快,短时精度高 长期漂移,积分误差累积
磁力计 提供绝对航向 易受磁场干扰
气压计 提供绝对高度参考 受气流和温度影响大

飞控里常用的融合算法是互补滤波和卡尔曼滤波。互补滤波简单高效,适合资源受限的MCU。卡尔曼滤波精度更高,但计算量大。

说白了,就是用陀螺仪的高频响应来跟踪快速运动,用加速度计和磁力计的低频数据来修正长期漂移。两者互补,各取所长。

核心思想: 没有完美的传感器,只有好的融合算法。传感器的校准和融合,是飞控稳定性的基石。

六、传感器校准实战思路

校准不是一次性的工作。每次上电、每次温度变化、每次更换安装位置,都可能需要重新校准。我一般把校准分为三步:

  1. 静态校准: 传感器静止时,采集数据计算零偏。加速度计需要六个位置(每个轴正反方向各一次),陀螺仪只需要静止采集。
  2. 动态校准: 旋转传感器,采集数据计算比例因子和交叉轴耦合。磁力计需要做8字形旋转来校准硬铁和软铁干扰。
  3. 温度补偿: 在不同温度下采集数据,建立温度-零偏的拟合曲线。这个在高端飞控里才会做,但效果很明显。
我的习惯: 在代码里加一个校准模式。上电后如果检测到传感器数据异常,自动进入校准流程。校准完成后把参数保存到EEPROM里,下次上电直接加载。这样既方便又可靠。

好了,传感器的基础知识就讲到这里。记住一句话:传感器是飞控的根基,校准是飞控的灵魂。下一章我们会深入讲解具体的校准方法和代码实现。

飞控传感器体系与误差来源 飞控传感器 加速度计 陀螺仪 磁力计 气压计 误差来源 加速度计误差 • 零偏误差 • 比例因子误差 • 交叉轴耦合 • 振动噪声 陀螺仪误差 • 零偏漂移 • 温度漂移 • 随机游走 • 非线性 磁力计误差 • 硬铁干扰 • 软铁干扰 • 安装误差 • 电流干扰 气压计误差 • 温度漂移 • 气流扰动 • 量化噪声 • 长期漂移 传感器融合(互补滤波/卡尔曼滤波) 每个传感器都有其独特的误差特性,通过融合算法取长补短 校准是消除误差的第一步,融合是消除误差的第二步