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 就要小心了,容易振荡

下面这张图展示了电流环的完整控制流程,从采样到输出,每一步都有讲究:

电流环控制流程图 电流指令 Id_ref / Iq_ref 误差计算 err = ref - fb PI 调节器 前馈补偿 + 解耦 限幅 + 输出 Ud_ref / Uq_ref SVPWM → 逆变器 → 电机 电流采样反馈 关键点 • 采样时刻避开 PWM 开关噪声 • 前馈补偿依赖电机参数精度 • 限幅防止积分饱和

3.5 电流环调参的直觉

最后聊点调参的直觉。电流环的 PI 参数怎么调?我一般这么干:

  1. 先调 Kp:给一个阶跃指令,看电流的上升速度。Kp 越大,上升越快,但过冲也会变大。调到刚好没有明显过冲为止。
  2. 再加 Ki:Ki 负责消除稳态误差。如果电流有静差,慢慢加 Ki。注意 Ki 太大会引起低频振荡。
  3. 检查带宽:给一个正弦波指令,扫频看电流的幅值和相位。带宽不够就适当提高 Kp,但别超过硬件极限。

我曾经在一个项目里把 Kp 调得太大,结果电流环啸叫了。示波器一看,电流波形上全是 2kHz 的振荡。后来把 Kp 降了 30%,世界就安静了。嗯,调参这事,有时候少即是多。

快速验证方法:

给一个方波电流指令(比如 0→1A→0),看电流的阶跃响应。好的响应应该是:上升快、无过冲、稳态无静差。如果上升慢,加 Kp;如果有静差,加 Ki;如果振荡,降 Kp 或 Ki。