Clarke变换和Park变换
首先是要彻底理解这两个变换及物理意义,我觉得最好需要要一些基础:
其一是理解方波控制实际上定子的合成磁链和转子的磁链在120°到60°之间周期波动,这样就造成了转矩脉动,效率低等问题,关于这个问题,我建议看 MATLAB 公司的视频 https://www.bilibili.com/video/BV1KT4y1u7NE
第二是FOC的目的是通过三相电流合成一个永远和转子磁链垂直的一个磁场,而和转子磁链平行的磁场则最好为0,不浪费能量。要理解这点也是参考MATLAB 公司的视频。
另外推荐观看这个博主的视频 https://www.bilibili.com/video/BV1x84y1V76u/ 他的视频能比较直观的理解clarke和park变换,但是它的Clarke变换的推导过程我觉得有些过于应用特例,但是够直观,推荐观看。
本文章借用了博客 https://blog.csdn.net/K_O_R_K/article/details/123546950 和 https://blog.csdn.net/u010632165/article/details/103672042 的动图,他们文章写的也不错。
首先对两个变换做个总结,这两个变换的目的是将三相120°相互耦合的变量,通过坐标系转换变成两个正交且相互解偶的变量,
Clarke变换,实际是将三相120°的坐标系(ia,ib,ic),转换成两相正交(90°)的坐标系(Iα,Iβ)。
Park变换,将静止的α-β坐标系,转换成与转子磁通同步旋转的d-q坐标系。
**实际在整个转换过程,只需要用到三角函数知识,并不难。
如何驱动转子效率最高
转子的运动其实是圆周运动,那么要做到效率最高,显然是全部都力作用在切线的方向上效率是最高的,又由于驱动转子的力是靠磁力,所以就是要生成一个磁场方向垂直于转子磁场的一个磁场。所以我们的目标是要三相合成的磁场矢量在全部在垂直于转子磁场的方向也就是交轴(Quadrature axis 也叫q轴,并且做圆周运动,这样就可以拉着转子转动,而平行于转子磁场的方向上,也就是直轴(Dircet axis 也叫d轴) 则要控制为0,否则它可能会产生一个吸力,它阻碍运动运动浪费能量不说,因为这个径向的力还会增加轴承负荷、产生振动和噪音。

那么因为我们是有三相,所以本质上是要三相磁场合成的矢量垂直于转子磁场。

如何让定子磁链全部在交轴方向且做圆周运动
虽然目标是生成一个垂直于转子方向的磁场,但是我们需要在特定的硬件条件下实现,首先我们有以下下条件
1、有三个相,三个相在在圆上均匀分布,也就是在在空间上相位(位置)相差120度
2、三个相可独立控制电流,又知道线圈的电生磁的磁场强度和电流成正比。也就是可独立控制磁场。
那么在此条件上,要怎么用这三个相产生一个垂直于转子磁链,且做圆周运动的磁场呢?实际上业界早有理论,根据旋转磁场理论 (Rotating Magnetic Field Theory),可有以下下结论:当三个在空间上互差120度 几何角度的线圈(定子绕组),通入三组在时间上相位相差120度电角度的交流电流时,它们各自产生的脉动磁场会合成一个幅值恒定、以同步转速旋转的圆形磁场。
就目前理上已经具备了空间上互差120度几何角度的线圈了,那么三个时间相位相差120°的正弦波电流,其实是可以用公式俩表示对,假设正弦波峰值为Imax,三个相的瞬时电流为,Ia,Ib,Ic。那么在角度角度θ时,它们满足以下关系
$$ \begin{array}{l} \Large I_{a} = I_{max} \cos \theta_{e} \\\\ \Large I_{b} = I_{max} \cos \left(\theta_{e} - 120^\circ\right) \\\\ \Large I_{c} = I_{max} \cos \left(\theta_{e} + 120^\circ\right) \end{array} $$当然,看公式其实非常抽象,如果把它们的关系用图像表示,变成动图会直观许多,注意看左侧的动图,这个图的半径就是 $I_{max}$ 也就是下面青色 的旋转的线,它在三个相差120度的半径上的投影,其实就是Ia,Ib,Ic的值,如下就是蓝色是IA,绿色是IB,红色是IC,它们的值的变化随着旋转角度的变化,如右侧坐标所示。

Clarke变换
前面知道了三个相差120°的正弦波电流可以合成一个幅值恒定、以同步转速旋转的圆形磁场,那么是否就可以将它们变成对应的电压,然后控制定时器产生某个占空比的PWM呢? 其实做不到。为什么呢?因为我们并不知道这个正弦波幅度也就是$I_{max}$ 多大,也不知道正弦波的角速度要多大 。因为在实际控制中,我们的目标是某个转速,那么从这个目标出发,其实并不知道多大的电流能够产生某个转速。更不用说其中负载变化,干扰等因素了。那么我相信学习Clarke和Park变化的人基本也学过BLDC的方波控制和PID控制,设定某个目标速度后,其实最后是用PID生成了某个CCR的值设定给TIMER。那么现在也要是否也是对三相timer 的CCR做PID吗?显然也是不行,因为方波控制做PID后稳定下来CCR是趋近于某个值的。但是FOC控制的三相电流它是正弦波,它是自身时变的,且三相互相耦合的,它们自身不适合作为PID控制的对象 。所以需要找到那个和转速直接相关,且非自身时变,非互相耦合的对象。
如果从最本源的地方看的话,就是和转子的圆正切的力是和转速直接相关的。也就是和转子磁链垂直方向的磁场大小它和和速度直接相关。另外考虑到效率和振动噪音等问题,它在和转子磁链平行的方向为0是最好的。这两个都是非自身时变的,非耦合的两个对象。那么现在Clarke变换就是先将这三个变量量变成正交的两个量。
实际上将三个相差120°的正弦波的电流等效成两个变量表示,非常简单,就是投影,将它们投影到一个正交的坐标轴上,如下,设一个正交的坐标轴,横轴是α,纵轴是β 。并且将ABC系的A轴和(α-β系)的 α轴重叠,那么就可以得到下面的图像。将它们的值投影到(α-β系)。

仔细观察上面的图,A-B-C轴直接是互相相差120°,α-β是相差90°,将三个值都投影在α-β坐标系上,可以非常容易得到下面公式。
$$ \begin{array}{l} \Large I_\alpha = I_a - I_b \cos 60^\circ - I_c \cos 60^\circ \\\\ \Large I_\beta = I_b \cos 30^\circ - I_c \cos 30^\circ \end{array} $$又因为$cos 60^\circ=\frac{1}{2}$ 而 $cos 30^\circ= \frac{\sqrt{3}}{2}$ 所以可以得到下面
$$ \begin{array}{l} \Large I_\alpha = I_a - \frac{1}{2} (I_b+I_c) \\\\ \Large I_\beta = \frac{\sqrt{3}}{2}(I_b -I_c) \end{array} $$另外我们知道电流是有方向的,线圈中电流方向不同,则磁场方向也不同。·根据基尔霍夫电流定律:在任何电路中,流入任何一个节点的电流之和等于流出该节点的电流之和。 也就是IA+IB+IC=0

那么根据IA+IB+IC=0 ,可用得到 IB+IC = -IA -IC= IA+IB,也就是上面的公式可用得到下面的推导
$$ \begin{array}{l} \Large I_\alpha = I_a - \frac{1}{2} (I_b+I_c)=I_a -\frac{1}{2}(-Ia)= \frac{3}{2}I_a\\ \Large I_\beta = \frac{\sqrt{3}}{2}(I_b -I_c)=\frac{\sqrt{3}}{2}(I_b +I_a+I_b)=\frac{\sqrt{3}}{2}(I_a+2I_b) \end{array} $$另外如果从纯数学的角度来说,其实可以计算出$I_\alpha和I_\beta$ 和Imax的关系。首先根据下面公式
$$ \begin{array}{l} \Large I_{a} = I_{max} \cos \theta_{e} \\\ \Large I_{b} = I_{max} \cos \left(\theta_{e} - 120^\circ\right) \\\ \Large I_{c} = I_{max} \cos \left(\theta_{e} + 120^\circ\right) \end{array} $$
可以最终推导可得下面,之所以不采用下面的是因为ia,ib,ic才是我们测到的值,能够获取的值。
也就是其实它们是相差90度的正弦波。

等幅值变换
等幅值变换其实就是将公式乘以2/3 得到$I_\alpha$ 和$I_\beta$ ,也就是如下面。

初学者其实对为什么要做等幅值变换通常有疑惑?不清楚为什么要乘以2/3。实际上它是为了直观和统一 ,要理解它需要从两个维度来理解。
合成矢量的幅值是正弦波峰值的1.5倍
1、三个相差120°的,峰值为$I_{max}$ 的正弦波合成的矢量是长度(也就是幅值)$1.5 倍I_{max}$ 的角度为θ矢量
其实非常容易证明,如下图,就是在角度为0时,IA=I_max, IB=IC =0.5I_max 又因为IB,IC的夹角是120°,所以它们的合成矢量长度为0.5I_max 方向也为0。所以合成矢量为1.5I_max. 事实上不止是0角度时是一样,对于任意电角度θ,都可以推导出 IA+IB+IC 合成 矢量为长度为1.5I_max,角度为θ的矢量。

也就是对于电角度$\theta_e$,可得
$$ \begin{array}{l} |\vec{I}_{s}|=|\mathbf{\vec{I}}_{A} + \mathbf{\vec{I}}_{B} + \mathbf{\vec{I}}_{C}| = 1.5 I_{max} \\ \angle \vec{I}_{s} = \theta_e \end{array} $$从整体看PI控制的IQ不代表实际三相电流的峰值
这一点我建议可以先学习后面的Park变换再来看也可以。首先从第二个维度看,最终我们最易于观察到的稳定的值IQ,它不代表实际的相电流峰值,而是电流峰值的3/2,这个一方面如果想知道相电流的最大值还要做一个乘以2/3换算,不直观,并且做相电流限幅也要乘以2/3。也就是这里存在这不统一,它们的幅值不一样,所以目前是在非等幅值的情况。

那么如果想做到IA-IB-IC的峰值 和Iα Iβ 的峰值及IQ做到一样,该怎么做。这个实际上就是谁去对齐谁的问题。首先需要知道一件事请是IA,IB,IC是实际的流过电机电流,是实实在在的物理量。而IQ,Iα Iβ它是中间量。所以要想做到统一,实际上就是别的值做到和IA,IB,IC统一,所以要怎么做其实非常简单,就是Iα Iβ 乘以2/3,也就是也就是等于IA的实际峰值。它也会连带的将IQ,ID乘以2/3, 当这个值和速度PI输出值Tar(iQ)去做PI时,实际上就是实际IA的峰值去和Tar(iQ)做误差的PID计算,所以在这个负反馈循环系统之下。调控的Tar(iQ)大小就是调控的实际的IA,IB电流的大小。

另外等幅值后的式子可以表示如下。
$$ \begin{aligned} \Large I_\alpha = \frac{3}{2}I_a \cdot \frac{2}{3}=I_a\\ \Large I_\beta =\frac{\sqrt{3}}{2}(I_a+2I_b) \cdot \frac{2}{3}=\frac{1}{\sqrt{3}} I_{a} + \frac{2}{\sqrt{3}} I_{b} \end{aligned} $$逆Clarke变换
逆Clarke 变换实际就是纯粹的数学公式的逆运算,就是把变量在等号两边挪一挪,然后再根据IC= -IA-IB 就可以得到,所以非常容易得到下面公式
$$ \Large \begin{aligned} I_{a} &= I_{\alpha} \\ I_{b} &= -\frac{1}{2} I_{\alpha} + \frac{\sqrt{3}}{2} I_{\beta} \\ I_{c} &= -\frac{1}{2} I_{\alpha} - \frac{\sqrt{3}}{2} I_{\beta} \end{aligned} $$park 变换
首先,通过上面的Clarke变化得到 Iα Iβ,但是 Iα Iβ的值依旧是本身时变的,它们都是正弦波。需要经过park变换才能真正可用于PID。
其实park变换非常简单,我们之前的坐标轴是基于定子的坐标轴静止坐标,现在新建一个坐标系(q-d系)这个坐标系跟着转子转动。那么在定子的磁链实际上就可以分为在 Q-D轴上的值,这两个值实际上可用作为PID的对象了,因为我我们在q轴(交轴)的值和转速直接相关,在d轴(直轴)上的值PID目标是0,否则它会有吸附或者是减少转子磁通的作用。

如下图所示 Iα-Iβ坐标系基于定子(线圈属于定子建立),而q-d坐标系基于转子建立。

当转子转动θ度时, Iα-Iβ坐标系不动,但是q-d坐标系随着转子转动而转动。

那么如果将它们结合起来,就可以看到它们之间坐标轴如下。

但是此时我们是要求Q-D坐标系的值,所以就是要旋转过来,以Q-D坐标系为主,那么α-β坐标的值在它的投影就是Q-D坐标系的值了。

根据上图的投影,非常容易得出下面的公式。
park逆变换
通过park变换非常容易得到逆变换为如下公式
$$ \begin{array}{l} \Large I_{\alpha} = I_d \cos \theta - I_q \sin \theta \\ \Large I_{\beta} = I_d \sin \theta + I_q \cos \theta \end{array} $$总结
至此,Clarke 和Park 变换及逆变换已经推算完成,它的整个运行过程大概如下,如果按照下面的方法实际算是SPWM的方法,但在实际中一般是使用svpwm控制,但在本篇中不做过多讨论。
