4. 执行器系统与故障模式:无刷电机与螺旋桨模型、电调工作原理、执行器卡死/失效/部分失效模型

好,咱们进入第四讲。执行器系统,说白了就是无人机真正干活的部件——电机和螺旋桨。飞控算得再好,指令传不到电机上,或者电机响应不对,飞机照样炸。我见过太多案例,飞控日志里看着一切正常,结果飞机就是往下掉,最后查出来是电调出了问题。

这一章,咱们把执行器的底裤扒干净。从电机模型到电调原理,再到三种典型的故障模式,一个一个说清楚。

4.1 无刷电机与螺旋桨的数学模型

先看电机。多旋翼用的基本都是无刷直流电机(BLDC)。它的核心模型其实不复杂,我习惯用一个二阶系统来近似描述。

电机产生的拉力 T 和转矩 Q,与转速 ω 的关系如下:

T = k_t * ω²
Q = k_q * ω²

这里 k_t 是拉力系数,k_q 是转矩系数。这两个系数由螺旋桨的几何形状、直径、螺距决定。嗯,这里要注意:这两个系数不是常数,它们会随着空气密度变化。你从海平面飞到高原,同样的转速,拉力会下降不少。

电机本身的动态响应,我一般用一阶惯性环节来建模:

G(s) = 1 / (τ_m * s + 1)

τ_m 是电机的时间常数,通常在 0.01s 到 0.05s 之间。小电机响应快,大电机响应慢。我在项目中遇到过,有人用大疆 E5000 的电机做实验,时间常数接近 0.08s,结果飞控的 PID 参数没调好,电机响应跟不上控制指令,飞机一直在那里晃。

个人经验: 我建议你在做仿真时,电机模型至少用二阶。一阶模型太理想,忽略了反电动势的影响。二阶模型虽然复杂一点,但更贴近真实情况。

4.2 电调工作原理

电调(ESC),全称电子调速器。它的任务很简单:把飞控发来的 PWM 信号,转换成驱动电机旋转的三相交流电。

电调的工作流程大致是这样的:

  1. 接收信号: 飞控输出 PWM 信号,脉宽范围 1000μs - 2000μs。1000μs 对应电机停转,2000μs 对应满油门。
  2. 生成 PWM 波: 电调内部的 MCU 根据输入信号,生成六路 PWM 波,驱动六个 MOS 管。
  3. 换相控制: 通过检测反电动势,确定转子位置,按顺序导通 MOS 管,让电机转起来。
  4. 电流调节: 电调内部有电流采样电路,可以实现恒流控制,防止电机过载。

电调有一个关键参数——刷新频率。早期的电调刷新频率只有 50Hz,现在好一点的能到 500Hz 甚至 1kHz。刷新频率越高,飞控对电机的控制就越精细。我曾经用过一个老款电调,刷新频率只有 50Hz,飞控输出指令后,电机要等 20ms 才响应,那感觉就像开一辆方向盘有虚位的车,难受得很。

避坑指南: 电调的 PWM 信号线不能太长。我见过有人为了布线方便,把信号线延长到 30cm 以上,结果信号衰减严重,电机出现抖动。信号线最好控制在 15cm 以内,而且要远离电源线。

4.3 执行器故障模式

执行器故障,是无人机坠毁的头号杀手。我统计过自己经手的故障案例,大约 60% 的坠机都跟执行器有关。下面说三种最常见的故障模式。

4.3.1 卡死故障

卡死,就是电机完全转不动了。原因可能是轴承卡住、异物卡进螺旋桨、或者电机线圈烧毁导致短路。

卡死故障的数学模型很简单:

ω = 0
T = 0
Q = 0

电机转速直接归零,拉力和转矩全部消失。这时候飞控会怎么反应?它会拼命增加其他电机的输出,试图维持姿态。但问题是,一个电机完全失效,剩下的三个电机很难补偿。尤其是四旋翼,一个电机卡死,基本就是坠机。

我遇到过最离谱的一次,是用户飞着飞着,一个电机突然卡死。后来拆开一看,里面缠了一根风筝线。从那以后,我每次起飞前都会检查起降场地,确保没有杂物。

4.3.2 失效故障

失效,就是电机完全停止工作,但原因不是卡死,而是电气故障。比如电调烧毁、信号线断开、或者电池没电了。

失效故障的模型和卡死一样:

ω = 0
T = 0
Q = 0

但两者的区别在于:卡死时电机还有阻力矩,而失效时电机是自由旋转的。这个区别在仿真中很重要。卡死故障下,其他电机需要克服卡死电机的阻力;而失效故障下,其他电机只需要补偿缺失的拉力。

关键点: 失效故障比卡死故障更容易容错。因为失效时没有额外的阻力矩,飞控可以通过增加其他电机的转速来维持姿态。但前提是,剩余电机的推力余量足够。

4.3.3 部分失效故障

部分失效,是最隐蔽、也最难诊断的故障。电机还能转,但输出能力下降了。原因可能是:

  • 电机退磁:永磁体老化,导致扭矩下降
  • 轴承磨损:摩擦力增大,效率降低
  • 电调 MOS 管损坏:导致输出电流受限
  • 螺旋桨破损:桨叶缺了一块,拉力下降

部分失效的数学模型,我习惯用一个失效因子 η 来表示:

T_actual = η * T_desired
Q_actual = η * Q_desired

其中 η 的取值范围是 0 到 1。η = 1 表示完全正常,η = 0 表示完全失效。实际中,η 可能在 0.6 到 0.9 之间。

部分失效最可怕的地方在于,飞控很难察觉。你想想看,飞控输出 50% 的油门,电机只产生了 40% 的拉力。飞控会以为是自己输出不够,继续增加油门。结果就是其他电机也跟着增加输出,整机功耗飙升,续航时间急剧缩短。

我曾经处理过一个案例,用户反映飞机续航从 20 分钟掉到了 12 分钟。查了半天,发现是其中一个电机的轴承磨损了,摩擦力增大导致效率下降。换了个轴承,续航就恢复了。所以,我建议你定期检查电机的转动是否顺滑,有没有异响。

故障类型 数学模型 典型原因 诊断难度
卡死 ω = 0, T = 0 轴承卡住、异物卡入
失效 ω = 0, T = 0 电调烧毁、信号断开
部分失效 T_actual = η * T_desired 退磁、磨损、桨叶破损

好了,这一章的内容就到这里。执行器模型和故障模式,是后续容错控制算法的基础。下一章,咱们会讲如何用飞控数据来诊断这些故障。到时候,我会分享一些我自己写的诊断算法代码。