大家好,我是程序小羊。
不知道大家在学习有感FOC时,有没有产生过这样一个疑问,磁编安装好后,怎么确定零点位置。首先我们定义电机转一圈值为0~65536。比如:一个三对极的电机,磁编读出来的值范围是0~4096。那么我们将其值扩大到65536。我们知道电角度=机械角度*极对数。则三对极电机转一圈,电角度经过三次65536(如图1),我们可以根据这个电角度的值有没有到达65536附近,以此来确定定子与转子有没有对齐。然后我们给Id轴一个定值,角度自加,电机就可以转动。当到达电角度在65536附近停一下,以此来通过磁编读取机械角度,我们将每一个转子与定子对齐时的角度读取出来与理论角度((65536/3)=21845*(目前处于哪对极))进行差值运算。算出差值的平均值再转化为电角度到代码中参与运算。具体实现过程如下。
图1:
图2:
图3:考虑到刚上电时,定子与转子可能并没用对齐,而是有一个角度偏差θ。怎么办呢,所以第一步,我们需要先定位。强行给Id让其拖到与定子对齐的位置。代码实现如下
图4:给完Id之后,转子会转动到与其最近的一个定子对齐,如下图:
图5:第一步定位完成之后,现在开始转动转子与下一个定子对齐。转一圈如同6所示。通过磁编读取角度
图6:每转动到与定子对齐时,停一下以此来读取角度,计算角度偏差
最后将偏差角度进行平均值运算,换算为电角度参与后面运算。