3、执行机构故障分析:电机堵转检测、舵面卡滞判断、螺旋桨动平衡问题
执行机构,说白了就是飞控的「手脚」。电机、舵面、螺旋桨,任何一个出问题,飞机都得抖三抖。我这些年调试过的eVTOL,十次炸机有八次是执行机构先出毛病。今天咱们就聊聊这三个最常见的坑:电机堵转、舵面卡滞、螺旋桨动平衡。
3.1 电机堵转检测
电机堵转,就是转子被卡住转不动了。这时候电流会飙升,温度暴涨,几秒钟就能烧掉MOS管。我见过最惨的一次,堵转后电调直接冒烟,整块飞控板都熏黑了。
3.1.1 堵转的物理特征
- 电流异常:正常巡航电流的3-5倍,且持续不降
- 反电动势消失:电机三相绕组的反电动势信号归零
- 转速反馈异常:期望转速与实际转速偏差超过30%
- 温度飙升:绕组温度每秒上升5-10℃
核心判断逻辑:我习惯用「电流+转速」双重校验。单看电流容易误判——大油门爬升时电流也大,但转速是正常的。只有电流大且转速低,才说明真堵了。
3.1.2 检测算法实现
下面是我在项目中用过的堵转检测代码片段。注意看阈值怎么设——这个值跟电机型号、桨叶尺寸都有关,不能照搬。
// 电机堵转检测函数
// 返回值:0-正常,1-疑似堵转,2-确认堵转
int motor_stall_check(uint8_t motor_id, float current, float rpm_actual, float rpm_target) {
// 阈值参数(需根据实际电机标定)
const float CURRENT_THRESHOLD = 15.0f; // 电流阈值(A)
const float RPM_DEVIATION_RATIO = 0.3f; // 转速偏差比
const uint32_t STALL_TIME_MS = 200; // 确认时间(ms)
static uint32_t stall_counter[8] = {0}; // 每个电机的堵转计时
// 条件1:电流超标
if (current < CURRENT_THRESHOLD) {
stall_counter[motor_id] = 0;
return 0; // 电流正常,肯定没堵
}
// 条件2:转速偏差过大
float rpm_error = fabs(rpm_actual - rpm_target) / rpm_target;
if (rpm_error < RPM_DEVIATION_RATIO) {
stall_counter[motor_id] = 0;
return 0; // 转速跟得上,只是负载大
}
// 两个条件都满足,开始计时
stall_counter[motor_id] += 10; // 假设每10ms调用一次
if (stall_counter[motor_id] >= STALL_TIME_MS) {
return 2; // 确认堵转
}
return 1; // 疑似堵转,继续观察
}
我的经验:阈值别设太死。我吃过一次亏——把电流阈值设成10A,结果冬天电池内阻大,启动瞬间电流冲到12A,直接误报堵转。后来改成15A,留了50%余量,再没误报过。
3.2 舵面卡滞判断
舵面卡滞比电机堵转更隐蔽。电机堵转有电流飙升这种明显信号,舵面卡滞可能只是「响应慢半拍」。你想想看,如果副翼卡了5度,飞控还在拼命调PID,结果就是震荡发散。
3.2.1 卡滞的典型表现
| 故障类型 | 位置反馈 | 电流特征 | 控制效果 |
|---|---|---|---|
| 机械卡死 | 完全不动 | 持续大电流 | 无响应 |
| 铰链涩滞 | 缓慢移动 | 间歇性尖峰 | 响应滞后 |
| 连杆松动 | 抖动漂移 | 正常 | 控制精度差 |
3.2.2 判断方法
我个人最常用的方法是「期望位置 vs 实际位置」的偏差积分。不是看瞬时偏差,而是看一段时间内的累积偏差。为什么?因为瞬时偏差可能是风扰,但累积偏差一定是舵面本身的问题。
// 舵面卡滞检测
// 原理:计算期望位置与实际位置的累积误差
float servo_jam_detection(float setpoint, float feedback, float dt) {
static float error_integral = 0.0f;
const float INTEGRAL_THRESHOLD = 50.0f; // 累积阈值(度·秒)
const float DEADBAND = 2.0f; // 死区(度)
float error = setpoint - feedback;
// 死区处理:小偏差不累积
if (fabs(error) < DEADBAND) {
error_integral *= 0.95f; // 缓慢衰减
} else {
error_integral += error * dt;
}
// 限幅
if (error_integral > INTEGRAL_THRESHOLD) {
error_integral = INTEGRAL_THRESHOLD;
return 1.0f; // 判定卡滞
}
return 0.0f;
}
注意:积分阈值要根据舵面类型调整。升降舵的负载变化大,阈值可以设高些;副翼的负载相对稳定,阈值要设低些。我曾经把副翼的阈值设得跟升降舵一样,结果巡航时副翼轻微卡滞没检测出来,差点出事。
3.3 螺旋桨动平衡问题
螺旋桨动平衡,说白了就是桨叶转起来后振动大不大。这个问题最容易被忽视——很多工程师觉得「桨叶没裂就能用」。嗯,我以前也这么想,直到有一次试飞,振动大到飞控的IMU数据全被污染了。
3.3.1 动平衡的量化指标
- 振动加速度:电机座处测量,通常要求 < 0.5g
- 振动频率:主要成分应为1倍转速频率(1P)
- 相位稳定性:振动相位波动 < ±10°
3.3.2 现场快速判断方法
没有振动台怎么办?我教你一个土办法——用手摸。不是开玩笑。把飞机固定好,油门推到50%,用手轻轻触摸电机座附近的机身结构。如果感觉像「手机振动」,说明平衡还行;如果感觉像「按摩椅」,那肯定有问题。
更精确的做法:用加速度计采集数据,做FFT分析。重点关注1P(转速基频)和2P(两倍频)的幅值比。正常情况下,1P占主导,2P应该比1P低20dB以上。如果2P跟1P差不多,说明桨叶有不对称磨损或变形。
3.3.3 动平衡校正流程
- 粗测:全油门运行10秒,记录振动数据
- 分析:找出振动最大的频率成分
- 配重:在桨叶轻的一侧贴平衡胶带(每片不超过3层)
- 复测:再次运行,确认振动降低50%以上
- 验证:在不同转速下测试(30%、60%、100%油门)
避坑指南:我曾经遇到过一种情况——地面测振动很小,但上天后振动突然变大。后来发现是桨尖在高速旋转时产生了气弹耦合。所以,有条件的话一定要做空中振动测试,地面数据只能作为参考。
3.4 本章知识体系
下面这张图总结了执行机构故障分析的三个核心维度。你可以把它当作排查时的检查清单。
好了,执行机构这块就聊到这儿。记住一句话:飞控再聪明,也架不住执行机构「装死」。平时多花点时间做故障注入测试,比出事后再排查要省心得多。
公众号:蓝海资料掘金营,微信deep3321