坐标变换(上):Clark变换

各位同学,今天我们来聊聊FOC里第一个绕不开的数学工具——Clark变换。

说实话,我刚接触FOC那会儿,看到这些矩阵公式就头大。心想:搞个电机控制,至于这么折腾吗?后来踩过几次坑才明白,坐标变换不是炫技,而是把复杂问题变简单的利器。

为什么需要Clark变换?

先想一个问题:三相电机里,电流是三个正弦波,互相差120度。你直接用这三个量去控制,麻烦得很——三个变量耦合在一起,调一个另外两个跟着变。

Clark变换要做的,就是把这三相静止坐标系(abc轴)上的量,映射到两相静止坐标系(αβ轴)上。说白了,就是降维——从三个变量变成两个变量,而且这两个变量还是正交的,互不影响。

核心思想:三相系统在空间上合成一个旋转磁动势,这个磁动势可以用两个正交的轴来描述。Clark变换就是找到这两个轴上的投影分量。

Clark变换的数学推导

咱们一步步来。假设三相电流为 ia、ib、ic,它们满足:

ia + ib + ic = 0

嗯,这里要注意,这个等式只在星形连接且中线不接地时成立。我在项目里遇到过客户用三角形接法,结果直接套公式算出来全是错的——这个坑后面再细说。

现在,我们把α轴和a轴对齐,β轴超前α轴90度。那么投影关系就是:

iα = ia

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

等等,这个公式怎么来的?我推导给你看。

从空间矢量角度看,三相电流合成矢量在α轴上的投影,就是a相电流本身。在β轴上的投影,需要把b相和c相的分量都算进去。经过三角恒等变换,就能得到上面的式子。

写成矩阵形式更清爽:

[iα]   [1      -1/2    -1/2 ] [ia]
[iβ] = [0      √3/2   -√3/2 ] [ib]
[i0]   [1/2    1/2     1/2  ] [ic]

这个3×3矩阵就是Clark变换矩阵。注意第三行是零序分量i0,在三相对称系统中它等于0,但实际系统中可能会有微小偏差。

我的经验:实际代码中,我通常只算α和β,零序分量直接忽略。但如果你做的是带中线的不对称系统,零序分量就不能省了。

等幅值变换 vs 等功率变换

这里有个容易混淆的点。上面给出的矩阵是等幅值变换——变换前后合成矢量的幅值不变。

还有一种叫等功率变换,矩阵前面要乘一个系数√(2/3)。两种都可以用,但后续的PI参数整定会不一样。

变换类型 变换矩阵 特点
等幅值 如上所示 幅值直观,调试方便
等功率 √(2/3) × 等幅值矩阵 功率计算简单

我个人习惯用等幅值变换。为什么?因为调试时看电流波形,幅值直接对应实际电流值,心里有数。等功率变换虽然数学上更优雅,但调试时总得在心里换算,麻烦。

Clark变换的代码实现

理论说完了,上代码。这是我在STM32上实际跑过的实现:

typedef struct {
    float alpha;
    float beta;
} Clarke_Output;

Clarke_Output clarke_transform(float ia, float ib, float ic) {
    Clarke_Output out;
    
    // 等幅值Clark变换
    out.alpha = ia;
    out.beta = (ia + 2.0f * ib) * 0.577350269f;  // 1/√3 ≈ 0.57735
    
    return out;
}

你看,代码就这么几行。但有几个细节要注意:

  • 输入顺序:我习惯先采ia和ib,ic通过求和算出(ic = -ia - ib)。这样少用一个ADC通道。
  • 浮点精度:1/√3这个系数,用float就够了。double反而拖慢运算。
  • 饱和处理:如果ADC采出来的值异常,记得做限幅。我曾经遇到过ADC引脚虚焊,采出满量程值,直接让电机抖得像筛子。

避坑指南:我曾经在无感FOC项目里,把Clark变换的αβ轴搞反了——α轴应该对齐a相,结果我对齐了b相。后果就是电机转起来力矩忽大忽小,查了两天才发现。所以接线时一定要确认相序!

实际工程中的注意事项

说几个我踩过的坑:

  1. 电流采样时序:Clark变换的输入是同一时刻的三相电流值。如果ADC分时采样,要确保三个采样点的时间差足够小。我一般用同步采样或者中心对齐PWM触发。
  2. 标幺化处理:在定点DSP上跑时,我会先把电流值标幺化到[-1, 1]区间,然后用Q15格式运算。这样避免浮点运算,速度能快不少。
  3. 验证方法:给电机通直流电(比如只给a相通电),看α轴是不是等于给定值,β轴是不是接近0。这个方法简单粗暴,但很有效。

好了,Clark变换就讲到这里。说白了,它就是一把尺子,把三相的复杂问题量成两相的简单问题。下一节我们讲Park变换,把静止的αβ轴转到旋转的dq轴上去——那才是FOC真正发力的地方。

记住:数学工具是为工程服务的,别被公式吓住。多动手写代码、多上示波器看波形,比死磕推导过程有用得多。