3、飞控系统核心架构:飞控硬件组成与实时控制基础
各位同学,今天我们进入飞控系统的核心。说白了,飞控就是无人机的“小脑”——它得实时感知姿态、处理数据、输出控制信号。我做了这么多年飞控,见过太多因为硬件选型或软件调度出问题导致的炸机案例。这一章,咱们就把飞控的底裤扒开看看。
3.1 飞控硬件组成:MCU、IMU、气压计、磁力计、GPS
一块典型的飞控板,上面集成了几个关键器件。我习惯把它们分成两类:感知层和计算层。
3.1.1 MCU(微控制器)——飞控的大脑
MCU负责跑算法、读传感器、生成PWM。目前主流是ARM Cortex-M4/M7内核,比如STM32F4/F7系列。为什么选它?
- 浮点运算单元(FPU):卡尔曼滤波里全是矩阵运算,没有FPU会慢到怀疑人生。
- 多路定时器:生成8~12路PWM信号,控制电机和舵机。
- DMA+SPI/I2C:高速读取IMU数据,不占用CPU。
3.1.2 IMU(惯性测量单元)——飞控的“内耳”
IMU包含加速度计和陀螺仪。加速度计测重力方向,陀螺仪测角速度。两者互补:加速度计低频准但高频抖,陀螺仪高频准但会漂移。
| 传感器 | 测量量 | 优点 | 缺点 |
|---|---|---|---|
| 加速度计 | 三轴加速度 | 静态姿态准 | 振动噪声大 |
| 陀螺仪 | 三轴角速度 | 动态响应快 | 零偏漂移 |
嗯,这里要注意:IMU的安装位置很关键。我见过有人把IMU装在电机正下方,结果振动直接把加速度计数据干废了。建议用减震泡沫或橡胶垫隔离。
3.1.3 气压计——定高全靠它
气压计通过测量大气压推算高度。常用的有MS5611、BMP280。精度大概在±10cm(理想条件下)。但有个坑:风的影响。无人机悬停时,螺旋桨下洗气流会改变局部气压,导致高度读数跳变。
3.1.4 磁力计——电子罗盘
磁力计测地磁场方向,用于修正偏航角。但它特别怕干扰——电机电流、大功率线缆都会让它“发疯”。
- 校准方法:做“8字”旋转,让磁力计采集全空间磁场数据。
- 融合技巧:我一般只用磁力计做长期偏航修正,短期靠陀螺仪积分。
3.1.5 GPS——室外定位的基石
GPS提供经纬度和海拔。但精度有限(民用2~5米),且高楼、树荫下容易丢星。所以飞控里GPS数据通常要和IMU做融合,才能实现厘米级的定位(RTK除外)。
3.2 实时操作系统(RTOS)简介
飞控代码不能跑裸机——你想想看,如果读传感器时被中断打断,姿态更新就会延迟,飞机可能瞬间翻掉。所以必须用RTOS。
3.2.1 为什么需要RTOS?
- 任务调度:IMU读取(1kHz)、姿态解算(500Hz)、控制输出(400Hz)、GPS解析(10Hz)……这些任务优先级不同,RTOS能保证高优先级任务按时执行。
- 资源隔离:每个任务有自己的栈空间,不会互相污染。
3.2.2 常用RTOS对比
| RTOS | 内核大小 | 实时性 | 适用场景 |
|---|---|---|---|
| FreeRTOS | ~6KB | 硬实时 | 中小型飞控 |
| RT-Thread | ~8KB | 硬实时 | 国产飞控、生态好 |
| NuttX | ~30KB | 硬实时 | PX4官方推荐 |
3.3 传感器数据融合——卡尔曼滤波入门
单个传感器都有缺陷。加速度计噪声大,陀螺仪会漂,GPS更新慢。怎么办?融合。卡尔曼滤波就是最经典的融合算法。
3.3.1 卡尔曼滤波的核心思想
说白了,就是“预测+修正”两步走:
- 预测:根据陀螺仪数据,预测下一时刻的姿态。
- 修正:用加速度计(或GPS)的测量值,修正预测结果。
每次修正后,系统会更新一个“置信度”(协方差矩阵)。置信度高,下次就更相信预测;置信度低,就更相信测量。
3.3.2 一维卡尔曼滤波示例(高度估计)
假设我们用气压计测高度,但噪声大。用加速度计积分高度,但会漂。卡尔曼滤波可以融合两者:
// 简化版一维卡尔曼滤波(伪代码)
float x_hat = 0; // 估计高度
float P = 1; // 估计误差协方差
float Q = 0.01; // 过程噪声(加速度计漂移)
float R = 0.1; // 测量噪声(气压计噪声)
void kalman_update(float z_meas) {
// 预测
x_hat = x_hat + dt * accel_z; // 用加速度积分预测
P = P + Q;
// 修正
float K = P / (P + R); // 卡尔曼增益
x_hat = x_hat + K * (z_meas - x_hat);
P = (1 - K) * P;
}
3.4 PWM控制信号生成
飞控算出的控制量(比如油门、俯仰、横滚),最终要变成电机或舵机能识别的PWM信号。
3.4.1 PWM原理
PWM就是方波,通过改变占空比控制电机转速。标准航模PWM频率是50Hz(周期20ms),脉宽1~2ms对应油门0%~100%。
- 1ms:最小油门(电机停转)
- 1.5ms:中位(悬停油门)
- 2ms:最大油门
3.4.2 MCU生成PWM的方式
我推荐用硬件定时器生成PWM,而不是软件模拟。为什么?
- 硬件PWM:定时器自动翻转IO口,不占CPU。适合多路输出。
- 软件PWM:用定时中断翻转IO,CPU占用高,且多路时容易抖动。
3.5 本章知识体系总览
下面这张图,把飞控核心架构串起来了。你可以把它当作调试时的“地图”。
从图上你能看到:传感器数据流入MCU,经过RTOS调度和卡尔曼滤波融合,最终生成PWM信号驱动执行器。每个环节都可能出问题——传感器噪声、滤波参数不对、PWM抖动……调试时,按这个链路逐级排查,效率最高。