第1章:FOC基本原理 — 从Clark变换到SVPWM

大家好,我是你们的老朋友。今天咱们聊聊FOC最核心的几个基础模块。说实话,我刚接触FOC那会儿,看到Clark、Park这些名字,第一反应是“这又是哪个数学家的游戏?”但真正做项目后才发现,这些变换其实就是把复杂问题简单化的工具。

1.1 Clark变换:把三相变两相

先说说Clark变换。它的任务很简单:把电机三相电流(Ia、Ib、Ic)变成两相静止坐标系下的电流(Iα、Iβ)。为什么要这么干?因为三相系统不好控制,两相系统好算。

公式长这样:

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

嗯,这里要注意,实际工程中我们通常只采样两相电流(比如Ia和Ib),第三相Ic通过Ic = -Ia - Ib算出来。我在项目中遇到过采样电阻布局不合理导致Ic计算误差大的情况,后来把采样点挪到了靠近MOS管的位置才解决。

小提示:Clark变换本身不改变电流的物理意义,它只是坐标系的旋转。你可以理解为把三个方向的力投影到两个垂直方向上。

1.2 Park变换:把交流变直流

Park变换才是FOC的精髓。它把静止的αβ坐标系旋转到与转子磁场同步的dq坐标系。说白了,就是把正弦变化的交流量变成直流量。

公式:

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

这里的θ是转子电角度,需要从编码器或霍尔传感器获取。我个人习惯用磁编码器,精度高,但要注意安装时的偏心问题——我曾经因为编码器装歪了,导致角度误差5度,电机跑起来嗡嗡响。

为什么要变成直流量?因为直流量的PID控制比交流量简单太多了。你想想看,控制一个恒定值和控制一个正弦波,哪个容易?

1.3 SVPWM调制:让电压利用率更高

SVPWM(空间矢量脉宽调制)是FOC的“执行层”。它把dq坐标系下的电压指令,转换成六个MOS管的开关信号。

相比传统的SPWM,SVPWM的电压利用率能提高15%左右。什么意思?同样的母线电压,SVPWM能让电机跑得更快。我在做无人机电机驱动时,就靠这个多榨出了10%的转速。

SVPWM的核心是判断电压矢量所在的扇区,然后计算相邻两个基本矢量的作用时间。代码实现大概这样:

// 扇区判断
uint8_t sector = 0;
if (Vbeta > 0) sector |= 0x01;
if (Valpha * sqrt3 - Vbeta > 0) sector |= 0x02;
if (-Valpha * sqrt3 - Vbeta > 0) sector |= 0x04;

// 计算占空比
float T1, T2;
switch(sector) {
    case 1: T1 = Tz * Vbeta; T2 = Tz * (Valpha * sqrt3/2 - Vbeta/2); break;
    // ... 其他扇区类似
}
注意:SVPWM的载波频率不能太高也不能太低。太高了开关损耗大,太低了电流纹波大。我一般选10kHz-20kHz,具体看MOS管的开关速度。

1.4 电流采样与重构

电流采样是FOC的“眼睛”。常用的方法有两种:

  • 单电阻采样:成本低,但需要重构三相电流,算法复杂
  • 双电阻采样:直接得到两相电流,第三相计算得到,我比较推荐
  • 三电阻采样:精度最高,但成本也高

电流重构的关键是采样时刻。必须在PWM的中间时刻采样,因为这时电流最稳定。我曾经犯过一个低级错误:采样时刻没对准,结果电流波形全是毛刺,PID怎么调都调不好。后来用示波器一看,采样点正好在开关噪声最大的地方。

采样方式 优点 缺点 适用场景
单电阻 成本最低 算法复杂,低速性能差 低成本方案
双电阻 性价比高 需要两路ADC 大多数工业应用
三电阻 精度最高 成本高,PCB面积大 高性能伺服
核心要点:Clark变换把三相变两相,Park变换把交流变直流,SVPWM把直流指令变成开关信号,电流采样提供反馈。这四个模块环环相扣,缺一不可。

好了,这一章的内容就到这里。下一章咱们聊聊电流环的PID调参,那才是真正考验耐心的地方。记住,理论懂了只是开始,真正上手调的时候,你会发现每个电阻、每个电容都在跟你作对——但这就是工程师的乐趣,不是吗?