1. 飞控系统概述:飞控是什么?飞控的硬件架构与软件架构
大家好,我是老张。今天咱们正式开讲飞控调参这门课。第一节课,我想先聊聊飞控到底是什么,以及它里面都装了些什么东西。
很多人一上来就急着调PID,结果炸机了还不知道问题出在哪。我见过太多这样的案例了。说白了,飞控就是无人机的“小脑”——它负责感知姿态、计算控制量、输出电机指令。你遥控器给的是期望,飞控干的是执行。
1.1 飞控是什么?
飞控,全称飞行控制器。它是一块电路板,上面跑着实时操作系统和算法代码。它的核心任务就三件:
- 感知:知道飞机现在是什么姿态、在什么位置
- 决策:算出需要多大的力才能飞到目标位置
- 执行:把计算结果变成PWM信号,驱动电机转动
你想想看,如果没有飞控,无人机就是一坨会飞的铁块,风一吹就翻。有了飞控,它才能稳稳地悬停、转弯、爬升。
核心观点:飞控不是万能的,但它决定了无人机飞行的下限。硬件再强,算法再烂,飞起来也是晃晃悠悠的。
1.2 飞控的硬件架构
飞控的硬件,说白了就是传感器+处理器+执行器接口。我习惯把飞控硬件分成四个模块来讲:
1.2.1 MCU(主控芯片)
MCU是飞控的大脑。常见的型号有STM32F4、STM32H7、F103等。我个人比较喜欢用STM32F405,性价比高,算力够用。MCU负责跑算法、处理传感器数据、输出控制信号。
选型要点:主频、Flash大小、RAM大小、外设接口数量。飞控对实时性要求极高,所以MCU必须支持硬件浮点运算(FPU)。
1.2.2 IMU(惯性测量单元)
IMU是飞控最核心的传感器。它包含加速度计和陀螺仪。加速度计测重力方向,陀螺仪测角速度。两者配合,才能算出飞机的姿态角(横滚、俯仰、偏航)。
我在项目中遇到过一个问题:IMU安装位置离电机太近,振动直接传到了传感器上,导致姿态解算出来的数据全是噪声。后来我加了一层减震海绵,问题才解决。
避坑指南:我曾经因为IMU的安装方向搞反了,导致飞机一解锁就往地上栽。检查IMU坐标系和机体坐标系是否对齐,是调参前必须做的一步。
1.2.3 气压计
气压计用来测高度。原理很简单:气压随高度变化。但气压计有个毛病——受温度影响大,而且风一吹数值就跳。所以飞控里一般会用加速度计的数据来辅助修正高度。
1.2.4 磁力计
磁力计就是电子罗盘,用来测航向(偏航角)。但它特别怕干扰——电机电流、大功率线缆、甚至地磁异常都会让它跑偏。我建议磁力计尽量远离电池和电机线。
1.2.5 GPS
GPS提供位置和速度信息。室外飞行必备。GPS的精度取决于搜星数量和信号质量。一般飞控会要求至少搜到6颗星才能解锁。
下面这张图是我画的飞控硬件架构图,你看一眼就明白了:
1.3 飞控的软件架构
硬件是骨架,软件是灵魂。飞控软件一般分四层:
1.3.1 RTOS(实时操作系统)
飞控跑的不是Linux,而是RTOS,比如FreeRTOS、ChibiOS、NuttX。为什么?因为飞控需要实时响应——传感器数据来了,必须立刻处理,不能等。RTOS能保证任务在指定时间内完成。
我习惯用FreeRTOS,轻量、稳定、社区活跃。任务优先级怎么设?传感器采集任务最高,控制计算次之,通信任务最低。
1.3.2 驱动层
驱动层负责和硬件打交道。比如:
- SPI/I2C读取IMU数据
- UART接收GPS报文
- PWM定时器输出电机信号
驱动层写不好,上层算法再牛也没用。我曾经因为SPI时钟极性配错了,IMU数据全是0xFF,查了三天才找到原因。
1.3.3 姿态解算
姿态解算是飞控的核心算法。它把IMU的原始数据(加速度、角速度)融合成姿态角(横滚、俯仰、偏航)。常用的算法有:
- 互补滤波:简单、计算量小,适合低算力MCU
- Mahony滤波:比互补滤波更稳定,我项目里常用
- EKF(扩展卡尔曼滤波):精度高,但计算量大,适合高端飞控
个人经验:初学者先用互补滤波,调通了再换Mahony。别一上来就上EKF,参数调到你怀疑人生。
1.3.4 控制层
控制层就是大家熟悉的PID控制器。它根据期望姿态和实际姿态的误差,计算出电机转速。控制层一般分内环和外环:
- 内环(角速度环):响应快,控制飞机的角速度
- 外环(角度环):响应慢,控制飞机的姿态角
调参的时候,先调内环,再调外环。内环调稳了,外环才能起作用。这个顺序千万别搞反。
下面这张图展示了飞控软件的整体流程:
1.4 总结
飞控系统,说白了就是传感器感知环境、MCU计算控制量、执行器响应指令的一个闭环系统。硬件决定了飞控的上限,软件决定了飞控的下限。
嗯,这一节的内容就到这里。记住一句话:调参之前,先搞清楚你的飞控硬件和软件是怎么工作的。否则你调出来的参数,可能只是让飞机炸得更快而已。
课后思考:如果你的飞控在悬停时不断上下抖动,你会先检查硬件还是软件?为什么?
公众号:蓝海资料掘金营,微信deep3321