4、迎角保护实现:迎角传感器原理、迎角限制器逻辑、失速预防算法

迎角保护,说白了就是防止飞机飞得太“抬头”。

我刚开始做飞控那会儿,总觉得这玩意儿就是个安全网,后来在一次试飞中亲眼看到飞机因为迎角过大进入失速,才真正明白——这哪是安全网,这是保命绳。今天咱们就把它拆开揉碎了讲清楚。

4.1 迎角传感器原理

迎角传感器,也叫攻角传感器。它的任务只有一个:告诉飞控计算机,机翼现在“吃风”的角度是多少。

常见的迎角传感器有两种:

  • 风标式:一个可以自由转动的小叶片,气流吹过来,叶片就指向来流方向。角度通过电位计或旋转变压器读出。
  • 压差式:在机头或机翼前缘开两个小孔,一个朝上,一个朝下。迎角不同,上下孔的压力差就不同,通过压力传感器换算出来。

我个人习惯用风标式,因为它直观、可靠。但要注意——

⚠️ 避坑指南
我曾经在高原机场试飞时,发现迎角传感器读数飘得厉害。查了半天,原来是风标轴承里进了沙尘,转动阻力变大。从那以后,我要求所有迎角传感器必须加装防尘罩,并且每次起飞前做一次手动拨动检查。

传感器输出的一般是模拟电压或数字信号。飞控计算机拿到后,会做三步处理:

  1. 滤波:去掉高频噪声,我常用二阶巴特沃斯低通滤波器,截止频率设在5Hz。
  2. 校准:根据地面标定数据,把电压值映射成角度值。
  3. 冗余表决:一般装2~3个传感器,取中值或平均值。如果某个传感器偏差超过2度,直接剔除。

4.2 迎角限制器逻辑

迎角限制器,就是一道“天花板”。

它的逻辑其实很简单:当迎角接近限制值时,自动干预,不让飞行员继续拉杆。

我设计过一套经典的迎角限制器逻辑,分三级:

级别 触发条件 干预方式
一级预警 迎角 > 12° 驾驶杆抖动(stick shaker)
二级限制 迎角 > 15° 自动下压升降舵,限制拉杆权限
三级强制 迎角 > 18° 全权限接管,强制推杆至安全迎角

嗯,这里要注意:二级限制不能太生硬。我见过一个项目,限制器一触发就猛推杆,结果飞行员被吓一跳,反而造成俯仰振荡。后来我改成了“软限制”——

💡 软限制实现思路
在迎角接近限制值时,逐渐增加杆力(让拉杆变重),同时降低升降舵的响应增益。这样飞行员会感觉“拉不动了”,但飞机不会突然低头。

代码实现上,我一般这样写:

// 迎角限制器核心逻辑
float alpha = getAngleOfAttack();  // 当前迎角
float alpha_limit = 15.0f;         // 限制值

if (alpha > alpha_limit) {
    // 计算超限程度
    float exceed = alpha - alpha_limit;
    // 限制器增益,0~1之间
    float limiter_gain = 1.0f - (exceed / 5.0f);
    if (limiter_gain < 0.0f) limiter_gain = 0.0f;
    
    // 对升降舵指令进行缩放
    elevator_cmd = elevator_cmd * limiter_gain;
    
    // 同时叠加一个下压配平
    elevator_cmd -= 0.1f * exceed;
}

4.3 失速预防算法

失速预防,比迎角限制更进一步。它不光看当前迎角,还要预测“再拉下去会怎样”。

为什么会这样?因为飞机进入失速前,往往有一个“惯性期”。等你看到迎角超限再干预,可能已经晚了。

我常用的失速预防算法,核心是迎角变化率预测

  1. 实时计算迎角的变化率 dAlpha/dt
  2. 如果当前迎角 + 预测增量 > 失速迎角,提前干预
  3. 预测时间窗口我一般取0.3秒,太短来不及,太长容易误报

举个例子:

// 失速预防算法
float alpha = getAngleOfAttack();
float dAlpha = alpha - last_alpha;  // 迎角变化率
float dt = 0.02f;                   // 控制周期20ms
float stall_alpha = 20.0f;          // 失速迎角

// 预测0.3秒后的迎角
float predicted_alpha = alpha + dAlpha * 0.3f;

if (predicted_alpha > stall_alpha) {
    // 触发预防干预
    activateStallPrevention();
    // 同时发出警告
    setWarning("STALL PREVENTION ACTIVE");
}

我在项目中遇到过一个问题:紊流天气下,迎角信号噪声很大,dAlpha 跳得厉害,导致失速预防频繁误触发。后来我加了一个“死区”和“持续判定”——

🔧 经验技巧
1. 对 dAlpha 做一阶低通滤波,时间常数0.1秒
2. 预测迎角超过失速迎角后,必须持续3个控制周期才触发干预
3. 干预后,必须等迎角回退到失速迎角以下2度,才解除干预(滞回比较)

失速预防的最终效果,是让飞机始终留有余量。说白了,就是“别把飞机逼到极限”。

下面这张图,是我自己总结的迎角保护整体逻辑框架:

迎角保护系统逻辑框架 迎角传感器 风标式 / 压差式 信号处理 滤波 → 校准 → 冗余表决 迎角限制器 三级干预逻辑 失速预防算法 迎角变化率预测 执行机构 升降舵 / 杆力机构 飞控计算机 指令融合与监控 图:迎角保护系统从传感器到执行机构的完整链路

最后说一句:迎角保护不是万能的。它只能帮你争取时间,真正避免失速,还得靠飞行员对飞机状态的感知。我们做飞控的,只是把这份感知,用代码和逻辑固化下来。

📌 本章要点
- 迎角传感器:风标式 vs 压差式,注意防尘和冗余
- 迎角限制器:三级干预,软限制比硬限制更安全
- 失速预防:迎角变化率预测,加死区和持续判定防误触发

公众号:蓝海资料掘金营,微信deep3321