步进电机是一种数字电机,在经济型数控机床及自动化设备中应用广泛。控制步进电机的转动需要3个要素:方向、转角和转速。对于含有硬件的驱动电源,方向取决于控制器送出的方向电平的高或低。转角取决于控制器送出的步进脉冲的个数。而转速则取决于控制器发出的步进脉冲之间的时间间隔。
在步进电机的控制中,方向和转角控制简单,而转速控制则比较复杂。步进电机工作时,失步或过冲直接影响其定位精度。在设计系统的时候,除了应正确选择步进电机和驱动电源之外,还必须对步进电机控制脉冲的频率进行调节。
由于步进电机的转速正比于控制脉冲的频率,所以调节步进电机脉冲频率,实质上就是调节步进电机速度。
山社电机工程师在此结合实例给出软件实现的方法来分析步进电机的速度调节问题:
1 步进脉冲的调频方法
对步进电机控制的一个中心问题就是速度调节。即产生一系列频率可调的步进脉冲序列,送到驱动电源,控制电机绕组的轮流通电,实现电机的转动。脉冲序列的产生用微处理器实现,有软件延时和硬件定时两种方法。
(1) 软件延时:通过调用标准的延时子程序来实现。假定控制器基于AT89S52单片机,晶振频率为12 MHz,那么可以编制一个标准的延时子程序如下:
该子程序的入口为(0E)(0D)两个字节,若需要20000 us的延时,则给(0E)(0D)两个字节赋值4E20H,即执行下面程序:
MOV 0EH,#4EH ;20 000的十六进制码为4E20。
MOV 0DH.#20H
CALL DELAY ;调用标准延时子程序DELAY。
若要控制步进电机走100步,每两步之间延时20 000 s,则汇编程序为:
MOV 0FH,#100D ;准备走100步。
CONTI: CALL I_STEP ;电机走一步(调用电机的脉冲分配子程序)
MOV 0EH,#4EH ;20 000的十六进制码为4E20。
MOV 0DH,#20H
CALL DELAY ;相邻步之间的延时(决定电机的转速)。
DJNZ 0FH,CONTI ;循环次数减1后,若不为0则继续,循环100次。
可以看出,采用软件延时方法实现速度调节的优点是程序简单,思路清晰,不占用硬件资源。缺点是浪费CPU的宝贵时间,在控制电机转动的过程中,CPU不能做其它事。
(2) 硬件定时:假定控制器仍为AT89S52单片机,晶振频率为12 MHz,将AT89S52的TD作为定时器使用,设定T0工作在模式1(16位定时/计数器)。今要求它能定时地发出步进脉冲,其定时中断产生的脉冲序列的周期(即步进电机的脉冲间隔)假定为20 000 s,则可算出TD所对应的定时常数为B1E0H,CPU相应的程序如下:
主程序:
MOV TMOD,#01H ;设T0取工作模式1。
MOV TH0.#0B1H ;装入定时常数高8位。
MOV TLO,#0E0H ;装入定时常数低8位。
SETB TR0 ;启动T0定时。
SETB ET0 ;允许T0中断。
SETB EA ;允许CPU中断。
$ ;CPU等待T0的定时到。
中断服务程序:
CLR ET0 ;关T0中断。
CALL I_STEP ;控制电机走一步(调用电机的脉冲分配子程序)。
RETI ;T0中断返回。
本例中,只要改变T0 的定时常数,就可实现步进电机的调速。这种方法既需要硬件(T0定时器)又需要软件来确定脉冲序列的频率,所以是一种软硬件相结合的方法。它的缺点是占用了一个定时器。在比较复杂的控制系统中常采用定时中断的方法,这样可以提高CPU的利用率。
日本山社步进电机