FOC电机控制算法
直流无刷电机的工作原理:
由于没有一般直流电机的换向刷,故控制直流无刷电机实质上就是对其硬件mos管开关规律的控制。假设Q0、Q1代表A相,Q2、Q3代表B相,Q4、Q5代表C相。以打开Q1,Q2为例,此时A线圈上S下N,B线圈左S右N,所以转子磁铁会转到图中的状态。以此类推,我们依序将AB->AC->BC->BA->CA->CB->AB……通电,则转子便可以以一定的速度循环转动起来。而要让mos管按照我们的要求开闭,就需要编写单片机程序来实现高速规律控制。这种程序就是FOC算法,FOC算法就是对电机的运动建立数学模型,把电机的运动抽象化,使单片机能够根据这个算法控制电机产生我们想要的力矩和速度。
我们知道,直流无刷电机由三相线接入三股相位相差120°的电流分别作用于ABC三相,用相量法将其写作向量形式即如下图所示,同时我们将三相电流利用矢量分解合成到α-β坐标系下:
写作矩阵形式即:
这个变换就是所谓的克拉克变换,利用克拉克变换,我们就可以把三相电流降维成两个向量
Iα和Iβ,由基尔霍夫电流定律和电机的对称性,如果我们假设电流从A相流入,我们可以得到两个方程:ia+ib+ic=0,ib=ic。故有ib=ic=-0.5ia,代入克拉克变换的第一个方程就有Iα=1.5ia。在实际应用时,为了简化运算,我们希望Iα能完全等于ia,故因此我们对克拉克变换额外乘以一个系数2/3,这样子Iα就等于ia了。反映在坐标变换下,就是除了进行矢量的分解合成外,还对合成到α-β坐标系下的矢量作了比例变换。此时的克拉克变换称为等幅值形式的克拉克变换。其格式如下图所示,即比普通的克拉克变换多了一个系数2/3。
借助基尔霍夫电流定律我们还可以知道,我们并非要得到ia,ib,ic三相电流而只需要知晓其中两相即可,已知在等幅值形式的克拉克变换下有Iα=ia。进一步我们可以求由两相电流表示的Iβ:
于是简化的等幅值形式克拉克变换即:
反过来,如果我们已知了ia,ib,ic三相电流,则我们也可以得到Iα和Iβ,这个过程被称为等幅值形式的克拉克逆变换:
写作矩阵形式即:
利用克拉克变换,我们成功实现了把三相电流降维成两个向量Iα和Iβ,但通过Iα和Iβ还不足以直观的反映电机旋转的物理状态,为此,我们进一步引入帕克变换。
容易得到,克拉克变换所建立的α-β坐标系是固定在定子上的,为了反映电机旋转的物理状态,我们于是在转子上也建立一个被称为Q-D(交轴-直轴)的坐标系,这个坐标系随转子旋转,定义D轴方向为沿转子N极中心线的方向。此时Q-D坐标系与α-β坐标系的角度差即为电机转动的电角度,它反映了电机的转动;而IQ和ID(交轴电流,直轴电流)即为两个定值(且通常ID=0),它们反映了电机给定的力矩。
借助坐标转换我们容易得到IQ、ID和Iα、Iβ的关系如下,这个关系就是帕克变换:
同理它的逆变换式就是:
帕克变换的精髓在于,他通过坐标转换得到了大小与方向分离的两组量,作为定值的IQ和ID仅反映了电机的力矩,而电机的旋转过程则完全由变量电角度θ体现,于是乎,我们想要控制电机的力矩,只需要为IQ和ID赋值即可,而电机旋转带来的矢量变化则通过电角度θ,借助帕克逆变换和克拉克逆变换自然地反映到了三相电流ia,ib,ic中,进而控制电机的运动,整个过程省去了复杂的矢量旋转与计算。
综上,整个FOC算法的过程就是:
而三相电流ia,ib,ic驱动电机转过一个角度后,在下一瞬间角度传感器便会更新θ的值,从而在新的时刻重复这一循环。
同理,我们也可以得到电压形式的帕克逆变换和克拉克逆变换,两者实质上没有区别: