4. 电流环设计:FOC矢量控制原理、Clark/Park变换、SVPWM调制、电流采样与调理电路
各位同学,咱们今天聊点硬核的——电流环。CT机架旋转,说白了就是个大电机在转。但你要让这个大家伙在几吨重的负载下,做到毫秒级的响应、零速平稳启动,靠传统的方波驱动?想都别想。必须上FOC,也就是磁场定向控制。
我个人习惯把FOC叫做“直流电机的待遇给交流电机”。你想想看,直流电机控制多简单,调电压就是调转矩。但交流电机呢?电流和磁场是耦合在一起的,牵一发而动全身。FOC就是通过数学变换,把这种耦合解开,让交流电机也能像直流电机一样,独立控制转矩和磁通。
核心思想: 把三相静止坐标系下的交流量,变换到两相旋转坐标系下的直流量。然后你就可以像控制直流电机一样,用PI调节器去控制它了。
4.1 Clark变换与Park变换
这两个变换是FOC的数学基础。我当年刚学的时候,觉得公式一堆,头都大了。后来发现,你只要理解一件事:变换的目的是简化控制。
4.1.1 Clark变换(3相 → 2相静止)
把三相绕组(A、B、C)产生的磁动势,等效成两相正交绕组(α、β)产生的磁动势。说白了,就是用两个线圈代替三个线圈,效果一样。
公式很简单,等幅值变换下:
Iα = Ia
Iβ = (Ia + 2*Ib) / √3
嗯,这里要注意,Ia + Ib + Ic = 0,所以实际上只需要采样两相电流就够了。我在项目中遇到过,有人非要采样三相,结果多花了一路ADC和运放,精度还没提升多少,纯粹浪费成本。
4.1.2 Park变换(2相静止 → 2相旋转)
Clark变换完了,电流还是正弦波,不好控。Park变换就是把αβ坐标系旋转起来,让它跟着转子磁场一起转。旋转角度就是转子位置θ。
Id = Iα * cosθ + Iβ * sinθ
Iq = -Iα * sinθ + Iβ * cosθ
变换之后,Id和Iq就变成了直流量。Id是励磁分量,Iq是转矩分量。你想想看,控制两个直流量的PI,是不是比控制三个正弦波的滞环简单多了?
我的经验: 角度θ的精度直接影响Park变换的效果。CT机架里我一般用绝对值编码器,分辨率至少17位。如果角度有1度的误差,Iq的控制精度就会下降约1.7%。在高速旋转时,这个误差会被放大,导致转矩脉动。
4.2 SVPWM调制
FOC算出了想要的Vd和Vq,经过反Park变换得到Vα和Vβ。接下来怎么变成三相PWM波去驱动IGBT?这就是SVPWM的事。
SVPWM,空间矢量脉宽调制。它和传统的SPWM(正弦脉宽调制)比,最大的优势是母线电压利用率高。SPWM最高只能输出0.5倍母线电压的相电压,而SVPWM可以到0.577倍,高了约15%。
你别小看这15%。CT机架在扫描时,需要极高的加速度。母线电压就那么高,多15%的电压利用率,就意味着电机能跑得更快、力矩更大。
SVPWM的实现步骤,我总结为四步:
- 判断扇区: 根据Vα和Vβ的符号和大小,判断目标电压矢量在哪个扇区(共6个)。
- 计算作用时间: 用相邻两个基本矢量和零矢量,合成目标矢量。计算T1、T2、T0。
- 计算占空比: 根据T1、T2和PWM周期,算出三相桥臂的导通时间Ta、Tb、Tc。
- 生成PWM: 用定时器的比较寄存器,输出对称的7段式PWM波。
// 伪代码示例:SVPWM扇区判断
if (Vβ > 0) {
if (Vα > 0) {
if (Vβ / Vα < √3) sector = 1;
else sector = 2;
} else {
sector = 3;
}
} else {
// 类似逻辑判断扇区4、5、6
}
避坑指南: 我曾经在SVPWM的扇区判断上栽过跟头。当时用了浮点运算,结果在扇区边界处,由于浮点精度问题,导致扇区判断抖动,PWM波形出现了毛刺。后来我改用定点数,并且加了滞环比较,问题才解决。记住,嵌入式里,定点数比浮点数可靠得多。
4.3 电流采样与调理电路
FOC控制得再好,电流采不准,一切都是白搭。CT机架的电流采样,我一般用两种方式:
| 采样方式 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 采样电阻(Shunt) | 成本低、精度高、线性度好 | 有损耗、不隔离 | 小功率、低电压 |
| 霍尔电流传感器 | 隔离、无损耗、带宽高 | 成本高、有温漂 | 大功率、高电压 |
CT机架功率大,我通常用霍尔传感器。但霍尔传感器有个毛病——温漂。温度从25℃升到85℃,输出可能偏了2%~3%。这会导致电流环的稳态误差。
怎么解决?我的做法是:
- 硬件上: 在调理电路里加一个温度补偿网络,用NTC热敏电阻反向补偿霍尔元件的温漂。
- 软件上: 每次上电时,在电机静止状态下,采样一次零点偏移,存下来。运行过程中,每隔一段时间,在电流过零点附近,重新校准一次偏移量。
调理电路的设计,我强调三点:
- 低通滤波: 采样信号必须经过RC低通滤波,截止频率设为PWM开关频率的1/10左右。比如PWM是10kHz,滤波截止频率就设在1kHz。滤掉开关噪声。
- 偏置电压: 电流信号是双极性的(正负都有),而ADC只能采0~3.3V。所以要把信号抬升到1.65V为中心,±1.65V的摆幅。这样正负电流都能采到。
- 保护钳位: 在ADC输入端,加两个肖特基二极管,分别钳位到GND和3.3V。防止过压烧坏ADC引脚。我曾经有一次忘了加,结果一个浪涌打过来,ADC直接冒烟了。
采样时序: 电流采样必须在PWM的特定时刻触发。一般是在PWM载波的波峰或波谷处,因为此时开关噪声最小。我习惯在PWM定时器的下溢中断里启动ADC采样,这样能保证每次采样点都在同一位置,避免采样抖动。
4.4 电流环的PI参数整定
有了准确的电流采样,接下来就是PI调节器。电流环的PI参数,我一般用极点配置法来算。
电机电气时间常数τ = L / R。电流环的带宽一般设为1/10的开关频率。比如开关频率10kHz,电流环带宽就设1kHz。
然后:
Kp = L * ωc
Ki = R * ωc
其中ωc = 2π * 带宽。算出来之后,上机调一调,基本八九不离十。
但要注意,实际系统中还有数字控制的延迟(一拍延迟)、PWM的死区时间、采样滤波的滞后等。这些都会降低系统的相位裕度。所以算出来的Kp和Ki,我通常会再乘以一个0.7~0.8的系数,留点余量。
调试技巧: 先调Kp,让电流响应快起来,但不要振荡。然后加Ki,消除稳态误差。如果电流波形上有高频毛刺,说明Kp太大了,或者采样噪声没滤干净。如果电流响应慢吞吞的,说明带宽设得太低了。
好了,电流环的内容就讲到这里。下一章咱们聊速度环和位置环,那才是CT机架旋转控制的精髓所在。
公众号:蓝海资料掘金营,微信deep3321