有关步进电机驱动器使用的心得
最近用到步进电机,程序也自己弄,所以有些细节问题都要搞清楚,今天简单总结一下。
目前的步进电机大多直接采用驱动器进行驱动,这样在控制上就相对简便一些,一般最少只需提供方向与脉冲信号就可以驱动电机转动,以我使用的THB6128为例电路很简单,就不说了,主要介绍一下关于电机驱动上的一些问题。
1.细分
步进电机有一个参数叫步距角,就是转动一步所走过的角度,以1.8°为例,就是说走一步转动1.8°,那转动一周则需要200步,在没有细分概念的情况下,提供一个脉冲电机可以走一步,200个脉冲可以转一圈
细分是通过驱动器精确控制输出相电流,改变电机的步距角,可以理解为将步距角分解,迈小步向前走,2细分代表走一步转动0.9°,10细分代表走一步转动0.18°,以此类推,如果10细分的话那转动一圈则需要2000个脉冲,那为什么需要细分呢?
看这个图

在没有细分时,一个脉冲驱动电机走过的路线可以认为是AC,二细分之后,一个脉冲驱动电机走过的路线则是AB,同样的角度二细分则需要两个脉冲才可以达到C点,在细分数足够大时,可以看出其路线是越来越逼近圆的,也可以认为电机的转动越来越平滑,对,细分就是为了达到这个效果
当然细分也要看场合使用,细分越大,达到既定速度的时间也就越长,一般对于低转速场合可以使用大一点的细分,减少震动,使运行平滑稳定,高转速时则可以适当减少细分,尽快达到最高转速,这里可以引出一个问题,我们知道步进电机的转速是靠外部脉冲的频率设定的,那如果一开始就给一个高频脉冲电机是会卡死堵转的,这是因为步进电机的转动实际上靠的是不断改变外部线圈(定子)的磁场,依靠同性相吸来带动转子的转动,当启动频率过高时,转子还没到下一个位置就已经接收到下一个磁场,导致转子没有足够的力摆脱当前磁场,始终固定在一个位置
如下图,以两项电机为例,运动轨迹a-b-c-d。

2、衰减模式
步进电机的驱动器实际上内部也是靠一个H桥型的MOS来控制输出波形的,衰减模式可以在切换相位时控制MOS导通关断切换速度来控制放电速度,一般可以分为三种,快衰减、慢衰减、混合衰减,电机高速转动时选择快衰减,可以尽快改变相电流,达到更高的速度,不然可能会出现卡死、震动大的问题,低速时选择慢衰减,可以增大力矩,混合衰减就是先快衰减后慢衰减,具体时间分配看芯片。
3、力矩
通俗点说就是电机转动的“劲儿”大小,通常影响力矩的有以下几个方面
(1) 转速
转速越大,力矩越小,步进电机的规格书中,都会有一个曲线,力矩随着转速的提高会不断下降,原因就是在转动时会产生反向电动势,转速越高,反向电动势就越大,而电机对外的有效力矩是克服反向电动势与摩擦阻力之后的力,所以说会越来越小

(2) 驱动电流
步进电机都会有一个额定电流,在额定电流以下也可工作,只是各方面性能不会达到最优,一般驱动器都会有设定驱动输出电流的设置,选择适配电机的设定可以增大力矩。
(3) 驱动电压
步进电机在转动时,会产生反向电动势,驱动电压要在抵消这一部分电动势之后再去驱动电机转动,所以合理范围内更高的电压可以提供给电机实际使用的电能就越多。
4、软件设计
驱动上大家都知道只要给脉冲电机就能转,但是如果转速稍微高一点的应用上,如果直接给固定频率的脉冲,启动和停止时都会咯噔咯噔的不平滑,转速再高一些的应用有可能会直接卡死,最开始自己写的程序最高也就一分钟500转同样的电机用别的驱动器就能达到一分钟1500转,这个就是加减速的不合理,目前比较合理的驱动方式是应用S曲线计算频率输出,启动阶段,加速度低,缓慢启动,中间过程加速度最大,临近最大速度时,加速度降低,平稳运行,减速过程反之。

网上这方面的资源较多,但是对实际的程序参数的解释不是很接地气儿,这里我结合自己的实际操作与理解大概介绍一下

落实到程序里,只介绍加速过程:
for(a=0; a
{
melo = flexible * (a-len/2) / (len/2);
deno = 1.0 / (1 + expf(-melo));
fre = (fre_max-fre_min) * deno + fre_min;
period = (unsigned short)(72000000 / fre);
}
这里面的
(1)Len表示将S曲线频率增长过程中划分的点数,值越大,计算的次数越多,划分越细致,每次频率增加的越少,更平稳,但是会延长加速时间,一般设定三四千,公式中的num一般取值为len/2
(2)fre_max为公式中的Fmax,表示设定的最大频率值,这个与实际输出频率不是对应的,需要根据你系统的时钟调试确定,值越大,电机达到的速度越大,但是需要跟着改动其他参数,来更改加速效果,否则容易卡死
(3)fre_min为公式中的Fmin,表示设定的最小频率值,也就是刚起步的频率值,尽可能的大一些,可以减少加速时间
(4)flexible为公式中的Flex,表示S曲线中加速过程的斜率,值越大,曲线越陡峭,加速过程越快,取值1-6,大了电机容易卡死,小了加速时间长,调试确定
(5)expf这是指数函数,程序里需要调用math.h
(6)fre是当前计算的频率值,如果传入程序的PWM或定时器输出,还需要根据系统时钟转换一下,程序中72M则是系统时钟
暂时就学到这些,先分享这些。
TAG 步进电机 步进电机驱动器