3. 电流环(内环)原理:电流环的作用与重要性,电流采样与反馈机制,电流环的数学模型
聊到三环控制,很多人一上来就盯着位置环、速度环猛调。但我个人的习惯是——先把电流环搞定。为什么?因为电流环是整套控制系统的根基。你想想看,电机能不能转得稳、转得准,最终都得靠电流去产生力矩。电流环要是抖了,外面两环再怎么调也是白搭。
3.1 电流环到底在干什么?
说白了,电流环的任务就一个:让电机绕组里的实际电流,老老实实跟着你给的指令走。你给个 1A 的指令,它就输出 1A;你给个正弦波,它就输出正弦波。听起来简单,但做起来门道不少。
我在项目中遇到过一台伺服驱动器,速度环调得挺顺,一上负载就嗡嗡响。查了半天,发现是电流环带宽不够,电流跟不上指令,力矩输出滞后了。嗯,从那以后我调参都是先看电流环。
电流环的核心作用:
- 快速响应:让实际电流快速跟踪指令电流,减少滞后
- 抑制扰动:抵抗母线电压波动、反电动势干扰
- 保护硬件:限制峰值电流,防止烧 MOSFET 或电机
- 提供基础:为速度环和位置环提供稳定的力矩输出
3.2 电流采样与反馈机制
电流环要工作,首先得知道电机里实际流了多少电流。这就涉及到采样了。常用的方法有三种,我列个表给你看:
| 采样方式 | 原理 | 优点 | 缺点 |
|---|---|---|---|
| 采样电阻 | 在母线上串一个小电阻,测其压降 | 成本低、简单 | 有损耗、不隔离 |
| 霍尔电流传感器 | 利用霍尔效应测量磁场 | 隔离、带宽高 | 成本较高、温漂 |
| 磁通门传感器 | 利用磁通门原理 | 精度极高、低漂移 | 贵、体积大 |
实际工程中,伺服驱动器用得最多的是采样电阻 + 隔离运放的方案。成本可控,精度也够。我曾经在一个项目里图便宜用了普通运放,结果采样噪声全耦合进去了,电流环抖得跟筛子似的。后来换了隔离型,世界清净了。
采样回来的电流是模拟信号,得经过 ADC 转成数字量才能给 MCU 用。这里有个坑——采样时刻。PWM 开关瞬间会有很大的尖峰噪声,如果你刚好在那个时刻采样,读回来的值基本是废的。我建议在 PWM 载波波谷或波峰处触发采样,避开开关噪声。
采样小技巧:
大多数 MCU 的 ADC 都支持硬件触发。把定时器的 PWM 输出和 ADC 触发同步,在 PWM 计数值等于 0 或等于周期值时触发采样。这样采到的电流最干净,不需要额外做软件滤波。
3.3 电流环的数学模型
要调好电流环,得先理解它的数学模型。以永磁同步电机(PMSM)为例,在 dq 坐标系下的电压方程是:
Ud = Rs * Id + Ld * dId/dt - ωe * Lq * Iq
Uq = Rs * Iq + Lq * dIq/dt + ωe * (Ld * Id + ψf)
这里面:
- Ud、Uq:d 轴和 q 轴电压(你给的控制量)
- Id、Iq:d 轴和 q 轴电流(你要控制的量)
- Rs:定子电阻
- Ld、Lq:d 轴和 q 轴电感
- ωe:电角速度
- ψf:永磁体磁链
你仔细看,q 轴方程里有个 ωe * (Ld * Id + ψf),这就是反电动势。电机转得越快,反电动势越大,它会抵消你施加的电压。如果不做补偿,电流环在高转速下会越来越无力。
所以电流环的控制器通常长这样:
// 电流环 PI 控制器 + 前馈补偿(伪代码)
// 假设已经采样得到 Id_fb, Iq_fb
// 1. 计算误差
err_d = Id_ref - Id_fb;
err_q = Iq_ref - Iq_fb;
// 2. PI 调节
Ud_pi = Kp_d * err_d + Ki_d * integral_d;
Uq_pi = Kp_q * err_q + Ki_q * integral_q;
// 3. 前馈补偿(解耦 + 反电动势补偿)
Ud_ref = Ud_pi - ωe * Lq * Iq_fb;
Uq_ref = Uq_pi + ωe * (Ld * Id_fb + ψf);
// 4. 限幅(防止积分饱和)
Ud_ref = clamp(Ud_ref, -Umax, Umax);
Uq_ref = clamp(Uq_ref, -Umax, Umax);
看到没?Ud_ref 和 Uq_ref 不是直接等于 PI 的输出,而是加上了前馈补偿项。这一步很关键,它把 dq 轴之间的耦合以及反电动势的影响给抵消掉了。没有这一步,电流环在高转速下会失控。
注意:
前馈补偿需要知道电机的参数(Ld、Lq、ψf)。如果参数不准,补偿效果会打折扣。我建议在电机空载时做一次参数辨识,把 Rs、Ld、Lq、ψf 都测一遍。别信 datasheet 上的标称值,同一批电机个体差异能差 10%。
3.4 电流环的带宽与采样频率
电流环的带宽决定了它响应有多快。一般来说,电流环的带宽可以做到 PWM 频率的 1/10 到 1/20。比如 PWM 是 10kHz,电流环带宽大概在 500Hz~1kHz 之间。
为什么不能更高?因为采样、计算、PWM 更新都有延迟。你想想看,从采样到输出新的占空比,至少有一个 PWM 周期的延迟。这个延迟会限制你能达到的带宽。
我个人的经验是:
- PWM 频率 10kHz → 电流环带宽设 500Hz 左右,比较稳妥
- 如果硬件够好(高速 ADC、低延迟运放),可以推到 800Hz~1kHz
- 超过 1kHz 就要小心了,容易振荡
下面这张图展示了电流环的完整控制流程,从采样到输出,每一步都有讲究:
3.5 电流环调参的直觉
最后聊点调参的直觉。电流环的 PI 参数怎么调?我一般这么干:
- 先调 Kp:给一个阶跃指令,看电流的上升速度。Kp 越大,上升越快,但过冲也会变大。调到刚好没有明显过冲为止。
- 再加 Ki:Ki 负责消除稳态误差。如果电流有静差,慢慢加 Ki。注意 Ki 太大会引起低频振荡。
- 检查带宽:给一个正弦波指令,扫频看电流的幅值和相位。带宽不够就适当提高 Kp,但别超过硬件极限。
我曾经在一个项目里把 Kp 调得太大,结果电流环啸叫了。示波器一看,电流波形上全是 2kHz 的振荡。后来把 Kp 降了 30%,世界就安静了。嗯,调参这事,有时候少即是多。
快速验证方法:
给一个方波电流指令(比如 0→1A→0),看电流的阶跃响应。好的响应应该是:上升快、无过冲、稳态无静差。如果上升慢,加 Kp;如果有静差,加 Ki;如果振荡,降 Kp 或 Ki。