第一章:传感器基础与飞控系统架构
各位同学好,我是老张。在飞控这个行当摸爬滚打了十几年,今天咱们来聊聊飞控系统最底层的那些事儿——传感器。说白了,飞控就是靠传感器“看”世界的。传感器要是坏了,飞机就是瞎子。
1.1 飞控系统到底长什么样?
飞控系统,我习惯把它比作人的神经系统。大脑是主控芯片,传感器是眼睛耳朵,执行机构是手脚。缺了哪一环都不行。
一个典型的飞控系统,包含这几个核心部分:
- 主控单元(MCU):飞控的大脑,负责跑算法、做决策
- 传感器组:IMU、GPS、磁力计、气压计——这是飞控的感官
- 执行机构:电调、舵机、电机——负责执行命令
- 通信链路:遥控器接收机、数传模块——跟地面说话用的
- 电源管理:稳压模块、电流计——保证不饿肚子
嗯,这里要特别强调一下传感器组。我见过太多新手,一上来就研究PID调参,结果传感器没校准好,飞起来乱飘。传感器是飞控的根基,根基不稳,上层算法再牛也白搭。
1.2 传感器到底在干什么?
传感器的作用,说白了就三件事:
- 感知自身状态:我在哪?我朝哪?我多快?
- 感知环境信息:外面气压多少?有没有磁场干扰?
- 提供反馈信号:告诉飞控“我现在这样,你看着办”
举个例子,你遥控飞机往前飞,飞控得先知道飞机当前是平飞还是倾斜的。这个信息从哪来?IMU。没有传感器反馈,飞控就是个盲人骑瞎马。
核心观点:飞控的本质是一个闭环控制系统。传感器提供反馈,算法计算偏差,执行机构修正偏差。传感器一旦失效,闭环就断了。
1.3 四大核心传感器,一个一个说
1.3.1 IMU(惯性测量单元)
IMU是飞控里最核心的传感器,没有之一。它包含加速度计和陀螺仪,有些还带磁力计。
加速度计:测量三个轴的加速度。注意,它测的是“比力”,不是单纯的运动加速度。重力加速度也会被它测到。所以静止时,加速度计读出来的是1g(9.8m/s²)指向地心。
陀螺仪:测量三个轴的角速度。说白了就是转得有多快。单位是°/s。
我在项目中遇到过一件事:有个客户说飞机悬停时老往一边偏,查了半天,结果是陀螺仪的零偏没校准。陀螺仪有个特性,静止时输出不一定是0,有个固定偏差。这个偏差不消除,积分算角度就会越偏越大。
避坑指南:我曾经因为IMU安装位置没选好,导致震动耦合进传感器数据。飞控装在机臂上,电机一转,加速度计数据全是高频噪声。后来我把飞控挪到了机身中心,用减震垫隔离,问题才解决。记住:IMU要远离震动源,最好用减震泡沫。
1.3.2 GPS(全球定位系统)
GPS提供位置和速度信息。精度嘛,民用的一般在2-5米。速度精度好一些,0.1m/s左右。
GPS有个致命弱点:更新频率低,一般5-10Hz。而且容易丢星,在楼宇间、树荫下信号很差。所以飞控不能完全依赖GPS,得跟IMU配合着用。
你想想看,GPS更新一次要100-200毫秒,这期间飞机早飞出去好几米了。所以飞控里会用IMU来“填充”GPS的空白期,这就是数据融合的雏形。
1.3.3 磁力计(电子罗盘)
磁力计测地球磁场,用来确定航向。说白了就是指南针的电子版。
但磁力计有个大坑:容易受干扰。电机电流、大功率线缆、甚至地下的铁质管道都会影响它。我见过一架飞机,飞着飞着突然画圈,查日志发现是磁力计受到了电机干扰,航向数据跳变了几十度。
警告:磁力计校准不是一次性的。每次更换安装位置、或者飞机结构有大的改动,都要重新校准。我曾经吃过这个亏,换了碳纤维机架没重新校准,结果航向一直偏了15度。
1.3.4 气压计
气压计测大气压力,换算成高度。原理很简单:高度越高,气压越低。
但气压计受天气影响很大。晴天和阴天,地面气压能差几十帕,换算成高度就是好几米。所以飞控一般不会直接用气压计的高度,而是用GPS高度做参考,或者用IMU的垂直加速度来辅助。
还有一个问题:气压计对气流敏感。飞机快速下降时,机翼下方气流紊乱,气压计读数会剧烈跳动。我建议把气压计放在飞控内部,用海绵包裹,减少气流直吹的影响。
1.4 飞控数据融合——为什么需要它?
好,现在问题来了:我们有四个传感器,每个都有优点和缺点。怎么把它们的数据整合起来,得到最准确的姿态和位置?
这就是数据融合要干的事。
我打个比方:你面前有三个人告诉你时间。一个人看的是原子钟(准但慢),一个人看的是手机(快但可能不准),一个人凭感觉猜(完全不可靠)。你怎么得到最准确的时间?
飞控的做法类似:
- 陀螺仪:响应快,但会漂移(长期不准)
- 加速度计:长期稳定,但短期有噪声
- 磁力计:提供航向参考,但易受干扰
- GPS:提供绝对位置,但更新慢
数据融合的核心思想:用陀螺仪的快速响应做短期预测,用加速度计和磁力计做长期校正。这就是互补滤波或者卡尔曼滤波的基本思路。
下面这张图,是我自己画的飞控数据融合流程,你看一眼就明白了:
从图上你能看到,所有传感器数据先经过预处理,然后进入融合算法。最终输出的是稳定、可靠的姿态和位置信息,供控制算法使用。
1.5 一个小例子:互补滤波
说了这么多理论,咱们看一段实际代码。这是互补滤波的核心逻辑,用来融合陀螺仪和加速度计的数据:
// 互补滤波 - 姿态融合
// gyro: 陀螺仪角速度 (rad/s)
// accel: 加速度计数据 (m/s²)
// dt: 时间步长 (s)
// 返回: 融合后的俯仰角 (rad)
float complementary_filter(float gyro, float accel_angle, float dt) {
// 互补滤波系数
// 这个系数决定了信任陀螺仪还是加速度计
const float alpha = 0.98; // 我习惯用0.98
// 陀螺仪积分得到角度
float gyro_angle = previous_angle + gyro * dt;
// 融合:陀螺仪占98%,加速度计占2%
float fused_angle = alpha * gyro_angle + (1 - alpha) * accel_angle;
// 更新上一帧角度
previous_angle = fused_angle;
return fused_angle;
}
这段代码看着简单,但实际工程里要考虑的东西很多。比如alpha系数怎么选?我一般根据传感器噪声水平来调。噪声大的传感器,alpha要小一点,多信任加速度计一些。
关键点:互补滤波的alpha系数,本质上是“信任分配”。alpha越大,越信任陀螺仪的短期精度;alpha越小,越信任加速度计的长期稳定性。没有万能的值,得根据实际硬件调。
1.6 本章小结
好了,第一章的内容就这些。咱们捋一捋:
- 飞控系统由主控、传感器、执行机构、通信、电源五部分组成
- 传感器是飞控的感官,负责感知自身状态和环境
- 四大核心传感器各有优缺点:IMU快但漂移,GPS准但慢,磁力计易受干扰,气压计受天气影响
- 数据融合是飞控的灵魂,把多个传感器的数据整合成可靠的状态估计
下一章,咱们会深入讲IMU的故障模式。什么情况下陀螺仪会坏?加速度计数据异常怎么判断?这些都是我实际踩过的坑,到时候一一分享。
公众号:蓝海资料掘金营,微信deep3321