电机正弦波控制,最低转速不能太低的问题
电机正弦波控制、2对极,使用例程的方式,将sin表相对成hall、6步,刚好好180度的sin表对应6步的半圈。
目前跑起来1500转以上没有问题。但是转速太低,会造成pwm中断,每次+不到1度。造成无法查表(因sin表,1个值=1度)
造成最低转速太高...
每来一个 Hall 信号中断,记下 Timer1 的时刻,两次相减,得电机转过60度角的时间 T,假定一个 PWM 周期时间是 P,则每过一个 PWM 时间,电机转过的角度是 AngleStep =60*P/T。 每次 PWM 中断,电机转子角度 AngleOff 都要加一次 AngleStep,然后用这个角度去查 SIN 表。不管电机多快多慢,每次 PWM 中断都可以得到准确角度。 算出来的 AngleStep 是有舍入误差的,假定60度内有 N 次 PWM 中断,第 N 次 PWM 角度的误差累积了 N 倍,这个值不能超过 1 度,否则就达不到清细到1度的分辩率。代码中, AngleOff,AngleStep 低 8 位是小数,舍入误差是 1/256 度。查表时只用整数部分查 SIN 表,AngleOff 要右移 8 位。
页:
[1]