1. FOC控制基础:FOC基本原理、坐标变换(Clark/Park)、SVPWM调制、电流采样与重构

大家好,我是老张。做电机控制这行十几年了,FOC(磁场定向控制)一直是我觉得最值得深挖的技术。今天咱们就从最基础的东西聊起,把FOC的骨架搭起来。

说实话,很多新手一上来就被Clark变换、Park变换这些数学公式吓住了。其实没那么玄乎。你想想看,FOC的核心就一句话:把交流电机当成直流电机来控。怎么做到?靠坐标变换。

1.1 FOC基本原理

FOC的本质,是解耦。三相交流电机的电流在定子上产生旋转磁场,这个磁场和转子磁场相互作用产生转矩。但问题是,三相电流是耦合的,你动一相,另外两相也跟着变。这就很难精确控制。

FOC的思路很巧妙:把三相静止坐标系下的电流,变换到两相旋转坐标系下。这样一来,原本交流的、耦合的电流,就变成了直流的、独立的两个分量:

  • d轴电流(Id):控制励磁,也就是磁场强弱
  • q轴电流(Iq):控制转矩,也就是电机出力大小

我在项目中遇到过一件事。有次调试一个伺服驱动器,客户说电机低速时抖得厉害。我一看代码,Id和Iq的PI参数完全一样。这怎么行?Id和Iq的物理意义不同,整定方法当然也不同。后来分开调,问题就解决了。

核心要点:FOC的目标就是让Id和Iq解耦,然后分别控制。Id给多少,Iq给多少,完全独立。这就是磁场定向的「定向」二字——把磁场方向定在d轴上。

1.2 坐标变换(Clark/Park)

坐标变换是FOC的数学基础。说白了,就是换一个角度看电流。

1.2.1 Clark变换(3相→2相)

Clark变换把三相静止坐标系(A、B、C)变换到两相静止坐标系(α、β)。为什么要这么做?因为三相系统分析起来麻烦,两相就简单多了。

公式长这样:

Iα = Ia
Iβ = (Ia + 2*Ib) / √3

嗯,这里要注意。实际工程中,我们通常用等幅值变换,而不是等功率变换。等幅值变换的好处是,变换后的电流幅值和原来一样,调试起来更直观。我习惯用等幅值,你们也可以试试。

我的习惯:在代码里实现Clark变换时,先做归一化处理。把ADC采到的原始值先转成实际电流值,再做变换。这样调试时看波形更清楚。

1.2.2 Park变换(2相静止→2相旋转)

Park变换把αβ坐标系下的电流,变换到dq旋转坐标系下。旋转角度就是转子位置角θ。

公式:

Id = Iα*cosθ + Iβ*sinθ
Iq = -Iα*sinθ + Iβ*cosθ

这里有个坑。我曾经在项目里吃过亏——角度θ的零点没对齐。电机一转,Id和Iq就乱跳。后来我花了整整两天才找到原因。所以,角度对齐是Park变换的生命线

警告:Park变换依赖准确的转子位置。如果编码器或霍尔传感器的零点没校准,后面的所有控制都是错的。建议上电后先做一次角度校准。

1.3 SVPWM调制

SVPWM(空间矢量脉宽调制)是FOC的「执行器」。坐标变换算出了想要的电压矢量,SVPWM负责把它变成实际的PWM波形,驱动逆变器。

SVPWM和传统的SPWM(正弦脉宽调制)比,优势很明显:

  • 电压利用率高:SVPWM的直流母线电压利用率比SPWM高15%左右
  • 谐波小:电流波形更正弦,电机运行更平稳
  • 实现简单:查表或计算都能搞定

SVPWM的核心是判断电压矢量落在哪个扇区,然后计算相邻两个矢量的作用时间。我刚开始学的时候,觉得扇区判断很麻烦。后来发现,其实用查表法最快。

举个例子,扇区判断的代码片段:

// 根据Uα、Uβ判断扇区
if (Uβ > 0) {
    if (Uα > 0) sector = 1;
    else sector = 2;
} else {
    if (Uα > 0) sector = 6;
    else sector = 5;
}

当然,这只是简化版。实际工程中还要考虑死区补偿、过调制处理等。但原理就这么简单。

关键点:SVPWM的输出是三相PWM占空比。占空比的计算要精确到微秒级,否则电流波形会畸变。我建议用定时器的比较寄存器直接更新,不要用软件延时。

1.4 电流采样与重构

电流采样是FOC的「眼睛」。没有准确的电流反馈,坐标变换就是空中楼阁。

1.4.1 采样方式

常见的电流采样方式有两种:

采样方式 优点 缺点
三电阻采样 成本低,实现简单 低速时采样窗口窄
单电阻采样 成本最低 需要电流重构,算法复杂
霍尔电流传感器 精度高,隔离好 成本高,体积大

我个人习惯用三电阻采样。性价比高,而且采样时机好控制。你想想看,PWM的开关时刻是固定的,只要在合适的时刻触发ADC,就能采到准确的相电流。

1.4.2 电流重构

如果只用单电阻采样,那就需要电流重构。原理是:在一个PWM周期内,不同时刻采到的电流值对应不同的相。通过组合这些采样值,就能重构出三相电流。

我曾经在单电阻采样上栽过跟头。低速时,PWM占空比很小,采样窗口不够宽,电流重构出来的波形全是毛刺。后来我加了过采样和平均滤波,才勉强能用。所以,如果条件允许,尽量用三电阻采样

避坑指南:我曾经在采样时刻上吃过亏。ADC触发时刻一定要避开PWM开关噪声。我一般把采样点放在PWM周期的中间点,也就是计数器上溢或下溢的时刻。这样噪声最小。

小结

好了,FOC的基础就这些。Clark变换把三相变两相,Park变换把静止变旋转,SVPWM把电压矢量变PWM,电流采样提供反馈。这四个环节环环相扣,缺一不可。

下一章,咱们聊聊PID参数整定的实战技巧。到时候我会分享一些我在项目里踩过的坑和总结的经验。记得关注。

一句话总结:FOC就是把交流电机当直流电机控,靠坐标变换解耦,靠SVPWM执行,靠电流采样反馈。搞懂了这些,你就入门了。