当电机上电时,它处于位置的电角度未知。如果按上图U4(100)通电,也会让电角度为0,但是这样力量很大。
简单的方法是只控制d角度的磁场大小,转矩磁场q为0,生成一个定向磁场指向电角度为0。
foc->sin_sita = 0;foc->cos_sita = 1;foc->Vd = 1; // 设定磁场大小foc->Vq = 0;foc_Npark_tf(foc); // Park逆变换出 Va.Vb// Clark逆变换,在闭环里应该是SVPWM计算出来float Ua = foc->npark.Va + foc->Vdc/2;float Ub = (1.732f*foc->npark.Vb - foc->npark.Va)/2 + foc->Vdc/2;float Uc = (-foc->npark.Va - 1.732f*foc->npark.Vb)/2 + foc->Vdc/2;SetPwm(foc, Ua, Ub, Uc);osDelay(1000); // 延时一会儿,让电机转过来foc->shaft_zero = FOC_Get_Encoder(); // 获得当前编码器的值