3. 转向执行器建模:直流电机数学模型、参数辨识与H桥仿真

好,咱们进入第三章。转向执行器,说白了就是那个真正去转动车轮的“苦力”。在SBW系统里,执行器通常是一台直流电机。你想想看,方向盘上的手感信号是大脑,那电机就是肌肉。肌肉不给力,再聪明的大脑也白搭。

这一章,我会带着大家把直流电机的数学模型掰开揉碎,讲讲怎么通过实验数据把电机参数“挖”出来,最后再聊聊PWM驱动和H桥电路怎么在仿真里落地。嗯,这部分内容比较硬核,但搞懂了,你就能自己“捏”出一个虚拟电机来。

核心要点: 电机建模的精度,直接决定了你仿真出来的转向手感是“真”还是“假”。我个人习惯把模型拆成“电气部分”和“机械部分”来看,这样思路会清晰很多。

3.1 直流电机的数学模型

直流电机,尤其是永磁有刷直流电机,在转向系统里很常见。为什么?因为控制简单,扭矩特性好。它的数学模型,其实就两个核心方程:一个管电,一个管力。

3.1.1 电气方程

电枢回路的电压平衡方程,长这样:

U(t) = R * i(t) + L * di(t)/dt + e(t)

其中:

  • U(t):电枢两端电压(V)
  • R:电枢电阻(Ω)
  • L:电枢电感(H)
  • i(t):电枢电流(A)
  • e(t):反电动势(V)

反电动势e(t)跟电机转速成正比:

e(t) = Ke * ω(t)

这里的Ke是反电动势常数,单位是V/(rad/s)。我在项目中遇到过一个问题:仿真时电机转速明明不高,但电流却上不去。查了半天,原来是Ke参数给错了,导致反电动势算出来偏大,电流自然被“压”住了。

3.1.2 机械方程

电机输出的电磁转矩,用来克服负载和惯性:

T_e(t) = J * dω(t)/dt + B * ω(t) + T_L(t)

其中:

  • T_e(t):电磁转矩(Nm)
  • J:转子转动惯量(kg·m²)
  • B:粘性阻尼系数(Nm·s/rad)
  • T_L(t):负载转矩(Nm)

电磁转矩跟电流成正比:

T_e(t) = Kt * i(t)

Kt是转矩常数(Nm/A)。对于理想电机,Kt和Ke在数值上是相等的(单位换算后)。这一点,你可以在仿真里验证一下。

小提示: 我建议你在搭建模型时,把电气方程和机械方程分开写成两个子系统。这样调试的时候,可以单独看电流环和速度环的响应,非常方便。

3.2 电机参数辨识

模型有了,参数从哪来?看数据手册?那玩意儿有时候不准。我更喜欢自己动手做参数辨识。说白了,就是给电机施加特定的激励,然后从响应波形里把参数“算”出来。

3.2.1 电阻R和电感L的辨识

最经典的方法:阶跃响应法

  1. 给电机施加一个低压阶跃信号(比如5V),同时锁住转子不让它转。
  2. 记录电流的上升曲线。
  3. 电流稳态值I_ss = U / R,所以R = U / I_ss。
  4. 电流上升到63.2%稳态值的时间τ = L / R,所以L = τ * R。

我曾经用这个方法测一个舵机电机,算出来的R是2.3Ω,L是0.8mH。后来用LCR电桥复测,误差在5%以内。嗯,这个方法靠谱。

3.2.2 反电动势常数Ke的辨识

这个更简单:

  1. 用另一台电机(或者手摇)带动被测电机旋转。
  2. 用示波器测电机两端的开路电压。
  3. 同时用转速计测转速。
  4. Ke = 开路电压 / 转速。

注意,转速单位要换算成rad/s。我见过有人直接用rpm算,结果差了一个数量级。

3.2.3 转动惯量J和阻尼B的辨识

这两个参数稍微麻烦一点。我常用的方法是自由停车法

  1. 让电机在空载下稳定运行到一个转速。
  2. 突然切断电源。
  3. 记录转速从稳态下降到0的曲线。
  4. 拟合这条曲线,得到时间常数τ_m = J / B。
  5. 再结合电机的空载电流,可以解出J和B。

注意: 自由停车法得到的J包含了转子本身的惯量,如果你后面要带负载(比如转向齿条),记得把负载惯量折算到电机轴上再加进去。

3.3 PWM驱动与H桥电路仿真

电机怎么转?靠H桥。怎么调速?靠PWM。这部分,咱们在仿真环境里把它搭出来。

3.3.1 H桥工作原理

H桥由四个开关管(MOSFET或IGBT)组成。控制逻辑很简单:

  • 正转: Q1和Q4导通,Q2和Q3关断。
  • 反转: Q2和Q3导通,Q1和Q4关断。
  • 制动: Q1和Q3导通(或Q2和Q4),电机两端短路。
  • 滑行: 四个管子全关断,电机自由旋转。

你想想看,如果Q1和Q2同时导通了,会发生什么?嗯,那就是传说中的“直通短路”,管子瞬间烧掉。所以,驱动信号一定要加死区时间。

3.3.2 PWM调速原理

PWM,就是通过调节占空比D来改变电机两端的平均电压:

U_avg = D * U_bus

其中U_bus是母线电压。占空比从0%到100%,电机转速就从0到最大。

但要注意,PWM频率不能太低,否则电机会发出“嗡嗡”声,而且电流纹波大。也不能太高,否则开关损耗会剧增。我一般选10kHz到20kHz,既听不到噪音,效率也还行。

3.3.3 仿真实现

在仿真软件里(比如Simulink),我会这样搭:

  1. PWM生成模块: 用三角波比较器生成PWM信号。
  2. H桥逻辑模块: 根据方向和PWM信号,生成四个开关管的驱动信号。
  3. 功率级模块: 用理想开关模型(或MOSFET模型)模拟H桥输出。
  4. 电机模型: 把前面建立的直流电机数学模型接上去。

下面是一个简化的仿真代码框架(Python风格,用于理解逻辑):

# 伪代码:H桥PWM驱动仿真
def h_bridge_drive(direction, duty_cycle, bus_voltage):
    # direction: 1为正转,-1为反转,0为制动
    # duty_cycle: 0.0 ~ 1.0

    if direction == 1:
        Q1 = PWM(duty_cycle)
        Q2 = 0
        Q3 = 0
        Q4 = 1  # 常通
    elif direction == -1:
        Q1 = 0
        Q2 = PWM(duty_cycle)
        Q3 = 1  # 常通
        Q4 = 0
    else:  # 制动
        Q1 = 0
        Q2 = 0
        Q3 = 0
        Q4 = 0

    # 计算电机两端电压
    U_motor = (Q1 - Q2) * bus_voltage
    return U_motor

避坑指南: 我曾经在仿真里忘了加死区时间,结果电流波形出现了尖峰。虽然仿真不会烧管子,但那个波形会让你误以为系统有振荡。所以,养成好习惯,仿真里也加上死区。

3.4 知识体系总览

为了让你对整个章节的逻辑有个直观印象,我画了一张图。它把电机建模、参数辨识和驱动仿真串在了一起。

转向执行器建模知识体系 直流电机数学模型 电气方程 + 机械方程 电机参数辨识 阶跃响应法 / 自由停车法 PWM驱动与H桥 开关逻辑 + 死区时间 R, L, Ke, Kt 参数 J, B 机械参数 阶跃响应 -> R, L 空载旋转 -> Ke 自由停车 -> J, B PWM生成(三角波比较) H桥开关逻辑 死区时间插入 完整的转向执行器仿真模型 可用于SBW系统级仿真验证 图:转向执行器建模流程与关键环节

从图上你可以看到,三个模块是环环相扣的。数学模型是基础,参数辨识是桥梁,PWM驱动是最终的执行手段。缺了任何一个,你的仿真都跑不起来。

好了,这一章的内容就到这里。电机模型搭好了,参数也辨识出来了,驱动电路也仿真通过了。接下来,你就可以把这个“虚拟电机”接到你的SBW系统里,看看它到底能不能听话地转动车轮了。


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