这几天在折腾步进电机,准备用STM32F103RCT6 + L6219 来驱动24BYJ24小电机。看了不少的帖子, 但关于这些方面真正讲清楚几乎很少(呵呵,也或许是我暂时没找到...)
以前学习步进电机时,一直对细分很比较模糊,今天算是弄清了细分的实质。我的理解如下,大伙帮忙看看是否正确(欢迎拍砖, 记得轻点儿哦...~^|^~):
1. 细分说穿了就是对电机驱动电流的控制(Ia, Ib),从而改变了定子绕组的合成磁力。
原本(没有细分前)从第1步(拍) 走到 第2步(拍),步距角假设是60度, 当相脉冲来的时候, 一下子就跨过去了(走了1拍),但这个步子迈得比较大,会导致电机运行不平稳,有抖动,并且精度也可能达不到控制要求。
所以,就有了细分的出现,把原本跨一大步, 变成由走N(如:64 等)小步(微步)来完成, 也就是 60度/64=0.9375度。这样每次走的步子小了,电机运行平稳了,精度也有所提高了。
为了使细分的步距角均匀等分,定子合成磁力必须按照某一规律递增(或递减)变化,然而定子合成磁力的变化跟定子绕组的驱动电流并非成线性关系, 而是成正(余)弦规律变化的。
2. 步进电机驱动芯片的控制
由于大多数驱动芯片驱动电流的控制是通过:参考电压(Vref)(如L6219)或直接PWM方式(如L6225)。
参考电压->说白了,也相当于是PWM(配上DAC)。
有了上以的原理,就可以知道细分表,正弦表、余弦表是怎么来的了。
比如:步距角: 从0 ~ 60度, 64细分, 那么就是以0.9375度为步进值 进行递增,然后分别算出正弦值、余弦值。
在Excel算很方便的,要注意了Excel中计算的是弧度,记得要把它换算成弧度的再计算sin哦!!
另外,还要把60度按90度的计算方式来计算。 = sin( 实际角度 * (90/60) * PI()/180)
最后,再将正、余弦值 乘上 你的 PWM(占空比控制寄存器) 最大幅值,这个正、余弦细分表就得到了。
---------------------------------------------------------------------------------------------------------------------------------------------------------
在应用中,控制读取细分表来更新PWM寄存器的间隔时间长短,也就改变了电机的速度。
在这里我有几个问题:
1. 如果更新的间隔时间稍微偏长, 电机运行可能会一走一停(电机一旦执行完成微步后就会停下来),就不能连续运行。 是吧?
2. 如果更新的间隔时间的最快时间,应该是PWM周期 时间吧?每个PWM周期都会变化。这个更新间隔的时间最快是不是有什么要求? |