2. 飞控系统架构:飞控硬件组成、传感器融合原理、控制环路简介
好,咱们直接进入正题。飞控系统,说白了就是无人机的大脑加小脑。大脑负责算,小脑负责稳。这一章,我带你把飞控的骨架摸清楚。
2.1 飞控硬件组成:核心板与外围传感器
一块典型的飞控板,拆开来看,其实没那么神秘。我习惯把它分成三块:主控芯片、传感器集群、接口与电源。
主控芯片(MCU)
这是飞控的运算核心。目前主流的是 STM32 系列,比如 F4 和 F7。为什么选它们?算力够,外设丰富,生态成熟。我在项目里踩过一个坑——选了颗性能刚好的芯片,结果后期加功能,CPU 占用率飙到 95%,差点翻车。所以,选型时留 30% 的余量,这是经验。
传感器集群
飞控要感知自身状态,全靠它们。核心传感器就这几样:
- 陀螺仪:测角速度。你想想看,飞机要转多快,它说了算。
- 加速度计:测加速度。悬停时它告诉你重力方向在哪。
- 磁力计:测地磁。相当于电子指南针,帮你定航向。
- 气压计:测高度。气压一变,高度就变。
- GPS/RTK:测位置和速度。室外飞行的眼睛。
接口与电源管理
飞控要连电调、接收机、数传、OSD。接口通常是 PWM、UART、I2C、SPI。电源管理这块,我建议用独立的 5V 稳压模块,别直接从电池取电。我曾经因为电源纹波太大,导致磁力计数据乱跳,查了三天才找到原因。
2.2 传感器融合原理:为什么需要融合?
单个传感器都有毛病。陀螺仪有零偏,时间长了会漂。加速度计怕震动,一抖就乱跳。磁力计受电机磁场干扰。GPS 在室内直接废掉。
所以,得把它们的数据揉在一起,取长补短。这就是传感器融合。
核心思想:互补滤波与卡尔曼滤波
说白了,就是信谁多一点的问题。
- 互补滤波:简单粗暴。陀螺仪数据高通(信短期),加速度计数据低通(信长期)。我早期做四轴时就用这个,代码量小,跑得快。
- 卡尔曼滤波:更科学。它根据模型预测状态,再用测量值修正。效果更好,但计算量大。现在飞控芯片性能强了,基本都用卡尔曼。
为什么会这样?因为卡尔曼能自动调整权重。震动大时,它自动降低加速度计的权重;GPS 信号差时,它自动降低位置权重。嗯,这里要注意,卡尔曼的调参是个技术活,协方差矩阵设不好,融合结果还不如互补滤波。
姿态解算:从传感器到欧拉角
融合的结果,最终要输出三个角度:横滚角(Roll)、俯仰角(Pitch)、偏航角(Yaw)。这是控制环路能看懂的语言。
我常用的方法是四元数法。它没有万向锁问题,计算也方便。代码大概长这样:
// 四元数更新(简化版)
void attitude_update(float gx, float gy, float gz, float dt) {
float q0, q1, q2, q3;
// 陀螺仪积分
q0 += (-q1*gx - q2*gy - q3*gz) * dt / 2.0f;
q1 += ( q0*gx + q2*gz - q3*gy) * dt / 2.0f;
q2 += ( q0*gy - q1*gz + q3*gx) * dt / 2.0f;
q3 += ( q0*gz + q1*gy - q2*gx) * dt / 2.0f;
// 归一化
float norm = sqrt(q0*q0 + q1*q1 + q2*q2 + q3*q3);
q0 /= norm; q1 /= norm; q2 /= norm; q3 /= norm;
}
这段代码看着简单,但实际工程里,还要加磁力计修正、加速度计修正。不然偏航角会慢慢漂走。
2.3 控制环路简介:内环与外环
飞控的控制,核心就是闭环反馈。你给一个目标角度,飞控要算出电机转速,让飞机达到那个角度。
经典结构:串级 PID
飞控控制环路是串级的。分两层:
- 外环(角度环):输入目标角度,输出目标角速度。
- 内环(角速度环):输入目标角速度,输出电机控制量。
为什么搞两层?因为角速度环响应快,角度环响应慢。内环先稳住角速度,外环再慢慢调角度。这样飞机才稳。
控制频率与延时
内环通常跑 200Hz - 400Hz,外环跑 50Hz - 100Hz。为什么?因为角速度变化快,需要高频控制。角度变化慢,低频就够了。
延时是飞控的大敌。从传感器采样到输出控制量,整个链路延时最好控制在 5ms 以内。我见过一个项目,因为用了慢速的 I2C 读取磁力计,导致控制环路延时 20ms,飞机根本飞不稳。
2.4 知识体系总览
下面这张图,把这一章的核心逻辑串起来了。你一看就明白:
这张图把硬件、融合、控制三层的关系画清楚了。你调试飞控时,脑子里要有这张图。出问题了,先定位是哪一层的问题。
好了,这一章的内容就这些。硬件组成、传感器融合、控制环路,这三块是飞控的基石。你把这些搞明白了,后面调参才有底气。
公众号:蓝海资料掘金营,微信deep3321