4、电流环建模:霍尔传感器、运放、PWM驱动与电机的简化模型
做电流环振荡分析,第一步就是把物理世界的东西,变成我们能算的数学表达式。说白了,就是给每个环节建个简化模型。
我刚开始搞这个的时候,总想把模型建得特别精确。结果呢?仿真跑一天,算出来的东西跟实际对不上。后来我明白了——工程建模,不是越细越好,而是抓住主要矛盾。
这一章,我们就来拆解电流环的四个核心模块:霍尔传感器、运放调理、PWM驱动、电机本体。每个模块我都会给出一个工程上够用的简化模型。
核心观点:电流环振荡分析,90%的功夫在建模阶段。模型建对了,后面的补偿设计就是套公式。模型建错了,你调三天三夜也找不到根因。
4.1 霍尔电流传感器模型
霍尔传感器,说白了就是个带延迟的比例环节。
它的物理原理是:电流流过导体,产生磁场,霍尔元件感应磁场,输出一个电压。这个过程不是瞬时的,有延迟。
我习惯用一阶惯性环节来近似:
G_H(s) = K_H / (τ_H * s + 1)
其中:
- K_H:灵敏度,单位一般是 mV/A。比如 ACS712 的典型值是 185 mV/A。
- τ_H:时间常数,由传感器带宽决定。τ_H = 1 / (2π * f_BW)。
举个例子,一个带宽 200 kHz 的霍尔传感器:
τ_H = 1 / (2π * 200e3) ≈ 0.8 μs
这个 0.8 μs 的延迟,在低频段(比如 1 kHz 以下)可以忽略。但到了开关频率附近(10~50 kHz),它就会引入明显的相位滞后。
我的经验:选型时别只看带宽参数。我曾经踩过一个坑——某款传感器标称带宽 500 kHz,但实际在 100 kHz 时相位已经偏了 15°。后来发现是封装寄生参数导致的。所以,关键参数一定要实测验证。
4.2 运放调理电路模型
霍尔传感器的输出信号,通常需要经过运放调理——放大、偏置、滤波。这个环节的模型,取决于你用的电路拓扑。
最常见的是一阶低通滤波加同相放大:
G_OP(s) = K_OP / (τ_OP * s + 1)
参数说明:
- K_OP:直流增益,由反馈电阻决定。K_OP = 1 + R_f / R_g。
- τ_OP:滤波时间常数,τ_OP = R_f * C_f。
举个例子,一个典型的调理电路:R_f = 10 kΩ,C_f = 1 nF,R_g = 1 kΩ。
K_OP = 1 + 10k / 1k = 11
τ_OP = 10k * 1n = 10 μs
截止频率 f_c = 1 / (2π * 10μ) ≈ 15.9 kHz
这个 15.9 kHz 的截止频率,刚好用来滤除 PWM 开关噪声。但要注意——它也会把电流环的带宽限制住。
避坑指南:我曾经见过一个设计,运放滤波截止频率设得太低(2 kHz),结果电流环带宽怎么也上不去。后来把截止频率改到 20 kHz,带宽从 500 Hz 直接拉到 3 kHz。记住:运放滤波是电流环带宽的第一道瓶颈。
4.3 PWM 驱动与功率级模型
PWM 驱动级,包括死区时间、开关延迟、驱动 IC 的传播延迟。这个环节的模型,我通常用一个纯延迟环节 + 零阶保持器来近似。
G_PWM(s) = K_PWM * e^(-T_d * s) * (1 - e^(-T_sw * s)) / (T_sw * s)
参数说明:
- K_PWM:增益,K_PWM = V_bus / V_pwm_amp。比如母线电压 48 V,PWM 幅值 3.3 V,则 K_PWM ≈ 14.55。
- T_d:总延迟时间,包括死区时间 + 驱动 IC 传播延迟 + 功率管开关延迟。
- T_sw:PWM 开关周期。
在低频段(远低于开关频率),这个模型可以简化为:
G_PWM(s) ≈ K_PWM * e^(-T_d * s)
也就是说,PWM 驱动级在低频段就是一个比例环节加一个延迟。
我的习惯:做电流环设计时,我会把 T_d 设为一个保守值——比如实际测量是 200 ns,我取 300 ns。这样设计出来的补偿器,留有余量,不容易振荡。
4.4 电机本体模型
电机本体,对于电流环来说,就是一个电阻-电感串联的负载。它的传递函数是:
G_M(s) = 1 / (R + L * s)
或者写成标准形式:
G_M(s) = (1/R) / (τ_M * s + 1)
其中:
- R:电机相电阻(包括线缆电阻和接触电阻)。
- L:电机相电感(包括自感和互感)。
- τ_M:电气时间常数,τ_M = L / R。
举个例子,一个典型的直流无刷电机:R = 0.5 Ω,L = 100 μH。
τ_M = 100μ / 0.5 = 200 μs
电气截止频率 f_e = 1 / (2π * 200μ) ≈ 796 Hz
这个 796 Hz 的截止频率,就是电机本身的电气响应速度。电流环的带宽,理论上不能超过这个频率的 1/5 ~ 1/10。
注意:电机参数不是恒定的。温度升高时,R 会增大(铜的电阻温度系数约 0.0039 /°C)。L 会随电流饱和而下降。我建议在设计时,用最恶劣工况下的参数——比如高温时的 R,大电流时的 L。
4.5 完整电流环模型
把上面四个模块串起来,就得到了电流环的开环传递函数:
G_OL(s) = G_H(s) * G_OP(s) * G_PWM(s) * G_M(s)
代入各模块的简化模型:
G_OL(s) = [K_H / (τ_H * s + 1)] * [K_OP / (τ_OP * s + 1)] * [K_PWM * e^(-T_d * s)] * [(1/R) / (τ_M * s + 1)]
合并常数项:
G_OL(s) = K_total * e^(-T_d * s) / [(τ_H * s + 1) * (τ_OP * s + 1) * (τ_M * s + 1)]
其中:
K_total = K_H * K_OP * K_PWM / R
这个模型,就是电流环振荡分析的基础。三个时间常数(τ_H、τ_OP、τ_M)和一个延迟(T_d),决定了系统的稳定性和带宽。
关键洞察:电流环的相位裕度,主要被三个因素吃掉:
- 电机时间常数 τ_M:低频段的主要相位滞后源。
- 运放滤波时间常数 τ_OP:中频段的相位杀手。
- PWM 延迟 T_d:高频段的相位破坏者。
哪个因素最严重,哪个就是振荡的根因。
4.6 模型验证:实测 vs 仿真
模型建好了,怎么知道它准不准?我的做法是:实测频率响应,跟仿真对比。
具体步骤:
- 断开电流环(让控制器输出固定占空比)。
- 在 PWM 指令上叠加一个正弦扰动(频率从 10 Hz 扫到 10 kHz)。
- 用示波器测量实际电流响应。
- 用 FFT 提取幅值和相位,画出实测波特图。
- 跟仿真模型对比。
如果实测和仿真在 1 kHz 以内误差小于 3 dB 和 10°,说明模型可用。如果偏差大,就要回头检查参数。
我的经验:有一次实测和仿真在 2 kHz 处差了 20°。查了半天,发现是霍尔传感器的安装位置引入了额外的寄生电感。后来在模型里加了一个 50 nH 的寄生电感,就对上了。所以,模型验证不是一次性的,要反复迭代。
4.7 本章小结:模型参数速查表
为了方便你快速搭建模型,我把四个模块的关键参数整理成了一张表:
| 模块 | 模型形式 | 关键参数 | 典型值 | 对振荡的影响 |
|---|---|---|---|---|
| 霍尔传感器 | 一阶惯性 | K_H, τ_H | 185 mV/A, 0.8 μs | 高频相位滞后 |
| 运放调理 | 一阶低通 | K_OP, τ_OP | 11, 10 μs | 中频相位滞后 |
| PWM 驱动 | 延迟 + 零阶保持 | K_PWM, T_d | 14.55, 300 ns | 高频相位破坏 |
| 电机本体 | RL 串联 | R, L, τ_M | 0.5 Ω, 100 μH, 200 μs | 低频相位滞后 |
有了这个模型,下一章我们就可以开始做稳定性分析了——看看相位裕度够不够,增益裕度够不够,振荡点在哪里。
记住:模型是工具,不是真理。它帮你理解系统,但不能替代实测。我见过太多人,仿真跑得漂亮,一上电就振荡。原因就是模型没考虑寄生参数、温度变化、老化效应。所以,模型要建,但更要会验证和修正。