看起转函数Adjust_Pull_Ommega()头文件说明,转速Pull_Ommega 每次加增量——函数参数一(转速逐步加快)。然后转速 Pull_Ommega 去掉16位小数,加到角度Angle_q 上。
也就是说,开始是电磁场吸着磁铁做均加速转动。如果一直不收敛,拖动转速Pull_Ommega 加到上限——函数参数三,就不再加速了,也不减速。这就是状态4第一阶段。
若磁铁位置一直不收敛,显然也无法同步,在ADC中断代码里,超时就去状态1,停转,重启。代码如下215行
如果磁铁转起来了,位置也收敛了,阶段一就变到阶段二,函数Adjust_Pull_Ommega() 返回( q 轴 - 电流方向)的角度差,即下图中的 theta。如果电流较大、电磁吸力较大,转速不快时,磁铁 d 轴会紧跟电流方向,若想电流方向靠近 q 轴,就要电流的方向加快转动,同时降低电流、减小电磁场对磁铁的吸引力。
阶段二,转速Pull_Ommega 按参数二增减调整, 让电流方向Angle_q 加快靠近 q 轴。一旦( q 轴 - 电流方向Angle_q)的角度差在Angle_Jump_Sync(缺省3072=16.8度) 之内就变同步转动。
下图是ADC 中断里,阶段二的代码,temp16 是上图中的角度偏差 theta。237行,temp16 >0, 就是电流转动比q 轴滞后,就降电流,降转矩。240行,电流转速加倍。
若temp16 <0, 看233行,就是电流方向超前 q 轴了,就要 Angle_q 降速,并加大电流。
|