引言
目前主流电机控制算法中,主要用的控制算法,以FOC居多。
FOC(Field-Oriented Control),磁场定向控制,也称矢量控制(VC,Vector Control),是目前无刷直流电机(BLDC)和永磁同步电机(PMSM)高效控制的最优方法之一。FOC旨在通过精确地控制磁场大小与方向,使得电机的运动转矩平稳、噪声小、效率高,并且具有高速的动态响应。
以下介绍一种比较常用初始位置辨识的方法:开环拖动(零位换向)。
当然也有其他的一些方法
- 若使用增量编码器,可使用开环拖动;
- 若使用HALL编码器,可使用HALL寻向法,相比开环拖动,可靠性更高;
- 若使用绝对值编码器,可使用绝对值编码器寻向,因为绝对值可以断电依然可以记得位置,但成本相对较高一点,目前市面上绝对值编码器有SPI型,PWM型,SSI型,BISS型,RS485通讯型等。
开环拖动
算法的实现过程如上图所示,通过给定
U
α
=
a
,
U
β
=
0
U_\alpha=a,U_\beta=0
Uα=a,Uβ=0,但在FOC算法中,
U
α
U_{\alpha}
Uα和
U
β
U_{\beta}
Uβ是在两相旋转坐标系
α
β
\alpha\beta
αβ中,可以通过两相静止坐标系
d
q
d q
dq中的
U
d
U_d
Ud、
U
q
U_q
Uq和
θ
\theta
θ(两相旋转坐标系和两相静止坐标系的夹角)的组合来得到。再上图中给出了三种,常用的有:
(1)
θ
=
0
°
,
U
d
=
a
,
U
q
=
0
\theta=0°,U_d=a,U_q=0
θ=0°,Ud=a,Uq=0
(2)
θ
=
−
90
°
,
U
d
=
0
,
U
q
=
a
\theta=-90°,U_d=0,U_q=a
θ=−90°,Ud=0,Uq=a
以下通过(1)的方式初步实现该算法。
for (double theta = 0; theta < 10; theta+=0.01)//开环
{
foc_val.Udq.q = 0;
foc_val.Udq.d = 0.01;
alphaBeta_t alphaBeta= Rev_Park(foc_val.Udq, theta);
tabc_t tabc=svpwm(alphaBeta, theta);
double u_a = tabc.ta - 0.5 * (tabc.tb + tabc.tc);
double u_b = tabc.tb - 0.5 * (tabc.ta + tabc.tc);
double u_c = - (tabc.ta + tabc.tb);
/* 根据平台的硬件不同来更新PWM的占空比,也就是上面的U_a,U_b和U_c */
}
这种方法的优点在于实现起来简单,在初始时给定一个电流让转子转动到初始位置即可,该方法简单快捷,但是在实际使用过程中,往往有很多场合初始时是不允许电机通过转动的方式来寻找初始位置的,因此该方法具有局限性。