打印
[技术问答]

电机正弦波控制,最低转速不能太低的问题

[复制链接]
602|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
豌豆爹|  楼主 | 2022-10-19 16:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
电机正弦波控制、2对极,使用例程的方式,
将sin表相对成hall、6步,刚好好180度的sin表对应6步的半圈。
目前跑起来1500转以上没有问题。
但是转速太低,会造成pwm中断,每次+不到1度。造成无法查表(因sin表,1个值=1度)
造成最低转速太高...


使用特权

评论回复
沙发
七毛钱| | 2022-10-19 21:12 | 只看该作者
每来一个 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 位。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

508

主题

1938

帖子

5

粉丝