3、执行器模型:电机模型、舵机模型、混控器设计
执行器模型,说白了就是飞控系统里「最后那一哆嗦」。你想想看,飞控大脑算得再准,姿态解算再牛,最后不还得靠电机转、舵机摆才能让飞机动起来吗?
我在项目里见过不少同学,花大把时间调PID,结果仿真一跑,飞机在地上打转。查了半天,原来是电机响应模型没建对。嗯,这种坑我踩过,所以今天咱们把执行器这块彻底讲透。
3.1 电机模型:从PWM到转速
电机模型的核心,就是把飞控输出的PWM信号,映射成实际的转速和拉力。这里我习惯用一阶惯性环节来模拟电机的动态响应。
为什么会这样?因为真实电机有转动惯量,有电气时间常数,不可能瞬间达到目标转速。你给个阶跃PWM,它得「缓一缓」才能跟上。
电机模型数学表达:
转速响应 = 目标转速 * (1 - exp(-t / τ))
其中 τ 是电机时间常数,一般小电机在 0.05~0.1s 之间。
在Simulink里建这个模型,我通常用Transfer Fcn模块,或者自己搭个一阶低通滤波器。我个人习惯用后者,因为调试起来更直观。
小技巧:电机模型别忘了加限幅。我曾经遇到过仿真里转速飞到10万转的情况——因为忘了加饱和模块。真实电机哪有这本事?
3.1.1 拉力与扭矩计算
转速算出来了,接下来要算拉力和扭矩。这里有个经典公式:
拉力 F = k_f * ω²
扭矩 M = k_m * ω²
k_f 和 k_m 是电机和桨叶的系数,一般通过实验标定得到。如果你手头没数据,可以用经验值:k_f 大约在 1e-5 量级,k_m 大约是 k_f 的 1/10 到 1/20。
| 参数 | 典型值 | 说明 |
|---|---|---|
| τ (时间常数) | 0.05 ~ 0.1 s | 小电机取小值 |
| k_f | 1e-5 ~ 5e-5 | 与桨叶直径相关 |
| k_m | k_f / 10 ~ k_f / 20 | 扭矩系数 |
3.2 舵机模型:位置伺服系统
舵机和电机不一样。电机是转速控制,舵机是位置控制。你给舵机一个PWM,它要转到对应的角度,然后保持住。
舵机模型我一般用二阶系统来近似。为什么?因为舵机内部有PID控制器,有齿轮传动,有死区。一阶系统太粗糙,模拟不出那种「超调-回正」的动态过程。
舵机模型传递函数:
G(s) = ω_n² / (s² + 2ζω_n·s + ω_n²)
ω_n 是自然频率,ζ 是阻尼比。普通舵机 ω_n 约 50~100 rad/s,ζ 约 0.5~0.7。
我记得有一次做固定翼仿真,舵机模型用了纯比例环节,结果仿真里飞机滚转响应特别快,快得不正常。后来换成二阶模型,才跟实际试飞数据对上了。嗯,细节决定成败。
注意:舵机有死区!一般 ±0.5° 到 ±1° 的范围内,舵机不会响应。这个在Simulink里可以用Dead Zone模块实现。别小看这个死区,它会影响你的控制精度。
3.3 混控器设计:把控制量分配到执行器
混控器,说白了就是「翻译官」。飞控算出来的滚转、俯仰、偏航力矩,以及总拉力,得翻译成每个电机的转速、每个舵机的角度。
不同机型的混控逻辑不一样。咱们以四旋翼为例,讲讲最常见的X型布局。
3.3.1 四旋翼混控矩阵
四旋翼有4个电机,飞控输出4个控制量:油门(T)、滚转(R)、俯仰(P)、偏航(Y)。混控矩阵就是把这4个量映射到4个电机上。
[M1] [ 1, 1, 1, -1] [T]
[M2] = [ 1, -1, -1, -1] [R]
[M3] [ 1, 1, -1, 1] [P]
[M4] [ 1, -1, 1, 1] [Y]
这个矩阵怎么来的?你想想看:M1和M3是正转,M2和M4是反转。要产生滚转力矩,就得让左边电机和右边电机转速不一样。具体推导过程,咱们课程里不展开,你直接用就行。
避坑指南:混控器输出要限幅。我曾经见过一个案例,混控矩阵算出来某个电机指令超过100%了,结果仿真里电机转速直接爆表。加个Saturation模块,把输出限制在0~1之间,这是基本操作。
3.3.2 固定翼混控
固定翼的混控比四旋翼简单。一般就是:
- 油门 → 电机转速
- 滚转 → 副翼舵机
- 俯仰 → 升降舵舵机
- 偏航 → 方向舵舵机
但要注意,有些固定翼有V尾布局,这时候升降和方向是混在一起的。我建议你单独写一个V尾混控模块,别跟常规布局混在一起。
3.4 整体模型架构
下面这张图是我自己画的一个执行器模型架构,你可以参考着搭建:
这张图里,控制量先经过混控器,分配到各个电机和舵机。电机模型和舵机模型并行计算,最后输出力和力矩给动力学模型。
我个人习惯在Simulink里把混控器单独封装成一个子系统,电机和舵机也各封装一个。这样层次清晰,调试的时候也方便。你想想看,如果所有模块都堆在一个画布里,那得多乱?
总结一下本章要点:
- 电机模型用一阶惯性 + 平方律拉力/扭矩计算
- 舵机模型用二阶系统 + 死区 + 限幅
- 混控器根据机型不同,设计对应的分配矩阵
- 别忘了加饱和限幅,这是仿真不出bug的关键
好了,执行器模型这块就讲到这里。下一节咱们要开始搭完整的飞控模型了,到时候这些模块都会用上。你先消化消化,有问题随时问我。
公众号:蓝海资料掘金营,微信deep3321