关键词:单片机;步进电机;失步
步进电机是工业过程控制及仪表中主要执行元件之一。其特点是:快速启停能力强,精度高,转速容
易控制;但步进电机在实际变速过程中,有时会发生停转现象。其原因主要是由于其本身的响应速度跟不
上控制速度,即通常所说的“失步”;在单片机控制系统中,解决失步的方法很多,但大部分方法占用了
单片机较多时间,且软件也比较复杂。本文提出的控制方法可以大幅度减少单片机的时间,软件也较为简
单,可广泛应用于各种步进电机的变速运行。
一、基本原理
步进电机的运行一般要经过升频,恒速,降频等过程,设一个步进电机的控制过程如图1所示,
从图 1 可以看出,L2段为恒速运行,L1 段为升频,L3段为降频,按照“失步”的定义, 如果在 L1 及 L3 段上升及下降的控制频率变化大于步进电机的响应频率变化,步进电机就会失步,失步会导致步进电机停转,经常会影响系统的正常工作,因此,在步进电机变速运行中,正确的选择控制频率是十分重要的,由于各种型号步进电机频率响应不同,因此需选择不同的控制频率,为方便起见,一般选择控制频率为均匀的变化,既变化值是一恒定值,相应步进电机也是均匀上升或下降,基于目前市场有成品的环形脉冲分配器出售,因此不考虑步进电机的时序问题,可以简单认为,步进电机的转速仅与控制脉冲的频率有关,改变了脉冲频率,就改变了步进电机的转速,步进电机控制电路的方框图,如图 2 示。
主要由8031单片机、脉冲发生器、脉冲分配器及驱动电路组成,增加一个数控脉冲发生器,8031单片机只要给出控制数据,脉冲发生器就会自动产生一组相应频率的脉冲,该脉冲经过环形分配器后,再经过驱动电路,直接驱动步进电机;可以看出在恒速运行中,由于控制数据是定值,并一次输入即可,不需要改变控制数据,因此,基本上不占用 8031 时间,在变速运行中, CPU只要定时改变控制数据、改变脉冲发生器输出脉冲的频率,也同样不需要占用 CPU 过多时间;定时改变控制数据的方法是,将 ,8031中的 T1 设为定时中断方式,在变速运行时,启动定时中断,即每隔一中断时间将自动执行相应的中断服务程序,根据不同型号的步进电机改变控制频率的变化,只要控制频率的变化小于步进电机的响应频率变化,步进电机的转速就跟随控制频率变化,而不产生失步,每改变一次控制频率,中断服务程序将自动与预期值进行比较,如果没有到预期值,则保存已改变的当前脉冲数据,如果到了预期值,则关断定时中断,将当前数据变为预期值;可以看出,采用这种方法的优点是基本不占用 CPU 时间, CPU 的大部分时间可以做其它工作,其次由于中断服务程序中改变的控制频率是固定值,因此程序比较简单,对各种型号步进电机来说,改动也很方便。
二、软件实现方法
控制软件流程图,如图3示。在主程序中,首先要将 T1设为定时中断,并判定是否需要改变步进电机转速,如果不需要 CPU 可以执行其它程序,也可返回;如果需要,则首先输入转速需达到的预期值,并启动 T1 定时中断,在中断服务程序中,首先是保护现场,然后将目前步进电机运行的频率增加或减少一固定值,并与预期值进行比较。如果没有到预期值,则将增加或减少后的数据做为当前值保存并输出给脉冲发生器,最后恢复现场返回;如果到了或超过了预期值,则将当前值改写为预期值并输出给脉冲发生器,最后关闭中断,恢复现场返回。
如果设定步进电机型号为 75BF004 型,需要从停止状态变速运行到 1000r/min ,并保证不失步, T1 中断时间应设为10ms , 每次执行中断服务程序增加频率应为 20r/min,如果将8031的 p1、p3 输出作为脉冲发生器的控制口。则程序清单为:
2.1主程序
ORG 0000H
LJMP STA
ORG 001BH
LJMP INT1
STA: MOV R1, #60H
MOV A, #01H
MOV RO,#05H
STA1:MOV @ R0,A
INC R0
DJNZ R1,STA1;初始化
MOV TMO, #11H
SETB ET1
SETB EA
JB 00H,QT;断定是否需要变速
MOV 28H,#0E8H
MOV 29H,#03H;送预期值,1000r/min
MOV 2AH,#00H
MOV 2BH,#00H;将当前值置零
MOV TL1,#078H
MOV TL1,#0ECH;设定T1中数年时间10ms
SETB TR1;启动T1
QT: LJMP STA1
2.2 中断服务程序
INT1:MOV TL1,#078H
MOV TH1,#0ECH
PUSH PSW
MOV PSW,#10H
PUSH PSW
PUSH DPH
PUSH DPL;保护现场
MOV R0,28H
MOV R1,29H;读预期值
MOV R2,2AH
MOV R3,2BH;读当前值
CLR C
MOV A,R2
ADD A,#14H;增加20r/min
MOV R2,A
MOV A,R3
ADDC A,#00H
MOV R3,A
CLR C
MOV A,R2
SUBB A,R0
MOV A,R3
SUBB A,R1
JC DL;判定是否到预期植
MOV R2,28H
MOV R3,29H
CLR TR1;到预期值,关中断
SJMP DL1
DL: MOVA,R2
MOV P1,A
MOV A,R3
MOV P3,A;输出给脉冲发生器
POP DPL
POP DPH
POP ACC
POP PSW;恢复现场
RET1
三、结束语
该方法的特点是简单、可靠,已成功用于汽车车速表校验仪、汽车组合仪表综合校验仪等许多场合,得到了较好的效果,解决了目前遇到的步进电机停转等问题,还可以广泛应用于其它领域,会产生更好的效果。