传感器基础:加速度计、陀螺仪、磁力计、气压计的工作原理与误差来源
做飞控这些年,我见过太多人一上来就调PID参数,结果飞机怎么都稳不住。其实啊,问题往往出在传感器身上。传感器是飞控的「眼睛」和「耳朵」,它们要是没校准好,后面全是白费功夫。
今天咱们就把这四个核心传感器掰开揉碎了讲清楚。我会结合自己踩过的坑,告诉你每个传感器到底怎么工作,误差从哪来,以及怎么在代码层面处理它们。
一、加速度计:感知重力与运动
加速度计测量的是物体的加速度。注意,它测的不是速度,是加速度。而且它测的是「比力」——也就是物体受到的惯性力与重力的合力。
说白了,你拿着加速度计静止不动,它测到的是1g(约9.8m/s²)向上的加速度。为什么?因为地面在推着你向上,抵消重力。这个反直觉的点,我当年也困惑了好久。
常见的加速度计有ADI的ADXL345、InvenSense的MPU6050(内置加速度计+陀螺仪)、ST的LSM6DS系列。我个人习惯用MPU6050做入门,便宜又好买。
误差来源
- 零偏误差: 静止时输出不为0。比如你放平了,X轴应该输出0,结果输出0.05g。这个可以通过静态校准消除。
- 比例因子误差: 实际1g对应输出不是标准的数值。比如你转了90度,理论上应该输出1g,结果只有0.98g。
- 交叉轴耦合: X轴加速度会在Y轴上产生串扰。这个在廉价传感器上特别明显。
- 噪声: 高频振动会引入噪声。我在做四轴时发现,电机转动后加速度计数据抖得厉害,必须加低通滤波。
二、陀螺仪:测量角速度
陀螺仪测量的是物体绕各轴的旋转角速度,单位是°/s。它不直接告诉你角度,只告诉你转得有多快。角度需要积分才能得到。
陀螺仪的核心是科里奥利效应。一个振动的质量块,当它旋转时,会受到一个垂直于振动方向和旋转轴方向的力。这个力的大小与角速度成正比。嗯,听起来有点绕,你只要记住:它测的是「转得有多快」就行。
误差来源
- 零偏漂移: 静止时输出不为0,而且这个值会随温度变化。这是陀螺仪最大的敌人。
- 温度漂移: 温度每变化1度,零偏可能变化0.01°/s到0.1°/s。飞控工作时芯片发热,这个误差会慢慢累积。
- 随机游走: 噪声积分后产生的角度随机漂移。你想想看,即使零偏校准了,噪声积分几分钟也能漂出好几度。
- 非线性: 高速旋转时输出与实际角速度不成正比。
我记得有一次做固定翼飞控,陀螺仪零偏没处理好,飞机平飞时一直在缓慢滚转。我以为是PID参数问题,调了一整天。后来发现是陀螺仪预热时间不够,零偏还没稳定。从那以后,我都在代码里加了上电后5秒的静态校准。
三、磁力计:电子罗盘
磁力计测量的是地球磁场的方向和强度。说白了,它就是电子版的指南针。飞控用它来获取航向角(Yaw),因为加速度计和陀螺仪在水平方向上的航向是观测不到的。
磁力计的原理是霍尔效应或磁阻效应。当外部磁场变化时,传感器内部的电阻或电压会变化,从而检测出磁场强度。
误差来源
- 硬铁干扰: 传感器附近的永久磁铁或带磁性的金属,会产生一个固定的偏置磁场。这个偏置是恒定的,可以通过旋转校准消除。
- 软铁干扰: 软磁材料(如铁氧体)会被地球磁场磁化,产生一个与方向相关的干扰。这个干扰会改变磁力计的灵敏度。
- 安装误差: 传感器没有完全水平安装,导致测量值有倾斜误差。
- 电流干扰: 大电流流过导线时会产生磁场。电机转动时电流变化,磁力计数据会跟着跳。
四、气压计:测量高度
气压计测量的是大气压强。海拔越高,气压越低。飞控通过气压变化来推算高度变化。
气压计的核心是一个微小的真空腔体,上面覆盖着一层薄膜。当外部气压变化时,薄膜会变形,这个变形被压阻或电容检测到,转换成电信号。
常用的气压计有BMP280、MS5611、SPL06等。我个人比较喜欢MS5611,精度高,但贵一点。BMP280性价比高,入门首选。
误差来源
- 温度漂移: 气压计对温度非常敏感。芯片自身发热、环境温度变化都会导致读数漂移。
- 气流扰动: 风、螺旋桨下洗气流都会导致局部气压变化。飞控装在机身上,螺旋桨一转,气压计读数就开始跳。
- 量化噪声: 数字气压计的分辨率有限,会产生量化误差。
- 长期漂移: 传感器老化后,零偏会慢慢变化。
我记得有一次做室内无人机,气压计高度一直不准。后来发现是飞控的泡沫减震垫把气压计的通风孔堵住了。气压计需要和外界大气连通,不能完全密封。嗯,这个坑我踩过,你们别踩了。
五、传感器融合:为什么要用多个传感器?
你可能会问:既然每个传感器都有误差,那怎么得到准确的数据?答案是:融合。
每个传感器都有它的优点和缺点:
| 传感器 | 优点 | 缺点 |
|---|---|---|
| 加速度计 | 长期稳定,不漂移 | 动态响应慢,受振动影响大 |
| 陀螺仪 | 动态响应快,短时精度高 | 长期漂移,积分误差累积 |
| 磁力计 | 提供绝对航向 | 易受磁场干扰 |
| 气压计 | 提供绝对高度参考 | 受气流和温度影响大 |
飞控里常用的融合算法是互补滤波和卡尔曼滤波。互补滤波简单高效,适合资源受限的MCU。卡尔曼滤波精度更高,但计算量大。
说白了,就是用陀螺仪的高频响应来跟踪快速运动,用加速度计和磁力计的低频数据来修正长期漂移。两者互补,各取所长。
六、传感器校准实战思路
校准不是一次性的工作。每次上电、每次温度变化、每次更换安装位置,都可能需要重新校准。我一般把校准分为三步:
- 静态校准: 传感器静止时,采集数据计算零偏。加速度计需要六个位置(每个轴正反方向各一次),陀螺仪只需要静止采集。
- 动态校准: 旋转传感器,采集数据计算比例因子和交叉轴耦合。磁力计需要做8字形旋转来校准硬铁和软铁干扰。
- 温度补偿: 在不同温度下采集数据,建立温度-零偏的拟合曲线。这个在高端飞控里才会做,但效果很明显。
好了,传感器的基础知识就讲到这里。记住一句话:传感器是飞控的根基,校准是飞控的灵魂。下一章我们会深入讲解具体的校准方法和代码实现。