第四章 电流环设计(上):Clark变换与Park变换原理、PI控制器参数整定(带宽法)、电流采样与调理电路设计要点

各位工程师朋友,大家好。欢迎来到《直线电机驱动系统设计与调优实战》的第四讲。

今天咱们聊电流环。这是整个驱动系统最内层、最核心的环节。说白了,电流环要是没做好,你后面的速度环、位置环全是空中楼阁。我见过不少项目,电机跑起来抖得跟筛子似的,查到最后,都是电流环的底子没打好。

这一讲,我打算分三个部分来讲:坐标变换的数学原理、PI参数的工程整定方法,以及电流采样电路的设计要点。嗯,内容不少,咱们一个一个来。

4.1 为什么需要坐标变换?

先问大家一个问题:你直接控制三相电流不行吗?

理论上可以。但实际做起来,你会发现三相电流是强耦合的,而且随着转子位置变化,控制对象一直在变。你想想看,一个时变的、耦合的系统,用PID去调,参数得跟着位置跑,这谁受得了?

所以,我们需要坐标变换。它的核心思想很简单:把交流量变成直流量。这样一来,控制对象就变成了一个线性时不变系统,PI控制器就能稳稳地工作了。

核心思路: 三相静止坐标系(ABC)→ 两相静止坐标系(αβ)→ 两相旋转坐标系(dq)。在dq坐标系下,电流被分解为励磁分量(id)和转矩分量(iq),两者解耦,可以独立控制。

4.2 Clark变换:从ABC到αβ

Clark变换,也叫3/2变换。它的任务是把三相电流投影到两相静止坐标系上。

数学表达式很简单:

iα = ia
iβ = (ia + 2*ib) / √3

注意,这里我用了等幅值变换。还有一种等功率变换,系数不同。我个人习惯用等幅值,因为后续做电流限幅时更直观。

在实际代码里,我一般这样写:

// Clark变换
void clark_transform(float ia, float ib, float *i_alpha, float *i_beta) {
    *i_alpha = ia;
    *i_beta = (ia + 2.0f * ib) * 0.57735f;  // 1/√3 ≈ 0.57735
}

避坑指南: 我曾经在一个项目里直接用浮点除法算1/√3,结果发现MCU算不过来,电流环频率上不去。后来改成查表或者用常量0.57735f,问题就解决了。嵌入式开发,能省则省。

4.3 Park变换:从αβ到dq

Clark变换做完,我们得到了αβ坐标系下的电流。但这两个分量仍然是交流量,随转子位置变化。我们需要再转一次,把它们变成直流量。

Park变换就是干这个的。它需要一个关键信息:转子电角度θ

id = iα * cos(θ) + iβ * sin(θ)
iq = -iα * sin(θ) + iβ * cos(θ)

你看,变换之后,id和iq就变成了直流量。id控制磁通,iq控制转矩。两者正交,互不干扰。

代码实现:

// Park变换
void park_transform(float i_alpha, float i_beta, float theta, 
                    float *i_d, float *i_q) {
    float sin_theta = sinf(theta);
    float cos_theta = cosf(theta);
    
    *i_d = i_alpha * cos_theta + i_beta * sin_theta;
    *i_q = -i_alpha * sin_theta + i_beta * cos_theta;
}

注意: 这里的θ是电角度,不是机械角度。对于直线电机,θ = (2π / 极距) * 位置。极距搞错了,整个电流环都会乱套。我见过有人把机械角度直接当电角度用,结果电机根本转不起来。

4.4 知识体系总览

为了让大家更直观地理解整个电流环的控制流程,我画了一张图:

电流环控制流程(FOC核心) 电流采样 ia, ib, ic Clark变换 ABC → αβ Park变换 αβ → dq PI控制器 id_ref, iq_ref 反馈回路(实际电流) 最终输出:Vd, Vq → 逆Park变换 → SVPWM → 驱动电机 关键参数 电角度θ = (2π / 极距) × 位置 电流环带宽 f_bw = 1 / (2π × T_settle)

4.5 PI控制器参数整定:带宽法

好了,现在我们已经把交流量变成了直流量。接下来,怎么调PI参数?

我推荐用带宽法。这个方法物理意义清晰,现场调试也方便。

核心公式:

Kp = L * ω_bw
Ki = R * ω_bw

其中:

  • L:电机相电感(H)
  • R:电机相电阻(Ω)
  • ω_bw:期望的电流环带宽(rad/s)

带宽怎么选?一般来说,电流环的带宽是速度环的5~10倍。我习惯取速度环带宽的8倍。比如速度环带宽100Hz,电流环就设800Hz,换算成角频率就是约5000 rad/s。

实战经验: 带宽不是越高越好。带宽太高,系统对噪声敏感,电流容易振荡。我做过一个高速直线电机项目,一开始把电流环带宽设到2kHz,结果电流波形全是毛刺。后来降到1.2kHz,波形干净多了,响应速度也够用。

代码示例:

// 带宽法整定PI参数
void pi_tuning(float L, float R, float bw_hz, float *Kp, float *Ki) {
    float omega_bw = 2.0f * 3.14159f * bw_hz;  // 带宽转角频率
    *Kp = L * omega_bw;
    *Ki = R * omega_bw;
    
    // 限幅保护
    if(*Kp > MAX_KP) *Kp = MAX_KP;
    if(*Ki > MAX_KI) *Ki = MAX_KI;
}

小技巧: 如果你不确定电机的L和R值,可以用万用表测直流电阻,用LCR电桥测电感。但要注意,电感值会随电流变化,最好在额定电流附近测量。

4.6 电流采样与调理电路设计要点

最后,咱们聊聊硬件。算法再好,采样不准也是白搭。

电流采样常见方案有三种:

方案 优点 缺点 适用场景
采样电阻(Shunt) 成本低、精度高 有损耗、隔离困难 小功率、低成本
霍尔电流传感器 隔离、无损耗 温漂大、带宽有限 中等功率
磁通门传感器 精度极高、隔离 贵、体积大 高精度、大功率

我个人最常用的是采样电阻方案,配合差分放大器。成本低,精度也够。

设计要点:

  • 差分采样: 一定要用差分走线,避免共模干扰。我见过有人用单端采样,结果噪声比信号还大。
  • 低通滤波: 在ADC输入端加RC低通滤波,截止频率设为电流环带宽的3~5倍。比如带宽1kHz,滤波截止频率设3~5kHz。
  • 偏置电压: 如果MCU的ADC只能采正电压,需要加1.65V(3.3V供电)或2.5V(5V供电)的偏置,把双极性电流信号抬升到单极性范围。

曾经踩过的坑: 有一次我设计的采样电路,在实验室调试一切正常,一上电机就炸。查了两天才发现,是采样电阻的功率选小了。电机堵转时电流飙升,电阻直接烧断。从那以后,我选采样电阻时都会留3倍以上的功率余量。

4.7 小结

这一讲我们聊了电流环的三个核心环节:坐标变换、PI整定、采样电路。说白了,就是怎么把三相交流电变成好控制的直流量,怎么调参数,怎么把电流信号准确采回来。

下一讲,我们会继续深入电流环的下半部分:逆Park变换、SVPWM调制,以及电流环的离散化实现。到时候再跟大家分享一些实际项目中的调试技巧。

好,今天就到这里。有问题欢迎交流。


专注资料整理