步进电机控制方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四节 步进电机的控制与驱动
步进电机的控制与驱动流程如图4-11所示。主要包括脉冲信号发生器、环形脉冲分配器和功率驱动电路三大部分。
步进脉冲
方向电平
图4-11 步进电机的控制驱动流程
二、步进电机的脉冲分配
环形分配器是步进电机驱动系统中的一个重要组成部分,环形分配器通常分为硬环分和软环分两种。硬环分由数字逻辑电路构成,一般放在驱动器的内部,硬环分的优点是分配脉冲速度快,不占用CPU的时间,缺点是不易实现变拍驱动,增加的硬件电路降低了驱动器的可靠性;软环分由控制系统用软件编程来实现,易于实现变拍驱动,节省了硬件电路,提高了系统的可靠性。
1.采用硬环分时的脉冲分配
采用硬环分时,步进电机的通电节拍由硬件电路来决定,编制软件时可以不考虑。控制器与硬环分电路的连接只需两根信号线:一根方向线,一根脉冲线(或者一根正转脉冲线,一根反转脉冲线)。假定控制器为AT89S52单片机,晶振频率为12MHz,如图4-18:P1.0输出方向信号,P1.1输出脉冲信号。
则控制电机走步的程序如下:
(1)电机正转100步
MOV 0FH,#100D ;准备走100步
CONT1: SETB P1.0 ;正转时P1.0=1
CLR P1.1 ;发步进脉冲的下降沿(设驱动器对于脉冲的下降沿有效)
NOP ;延时(延时的目的是让驱动电路的光耦充分导通)
NOP ;延时(根据驱动器的需要,调整延时)
SETB P1.1 ;发步进脉冲的上升沿
MOV 0EH,#4EH ;两脉冲之间延时20000μs(决定电机的转速)
MOV 0DH,#20H ;20000的HEX码为4E20
CALL DELAY ;调用延时子程序
DJNZ 0FH,CONT1 ;循环次数减1后,若不为0则继续,循环100次
RET
(2)电机反转100步
MOV 0FH,#100D ;准备走100步
CONT2: CLR P1.0 ;反转时P1.0=0
CLR P1.1 ;发步进脉冲的下降沿(设驱动器对于脉冲的下降沿有效)
NOP ;延时(延时的目的是让驱动电路的光耦充分导通)
NOP ;延时(根据驱动器的需要,调整延时)
SETB P1.1 ;发步进脉冲的上升沿
MOV 0EH,#4EH ;两脉冲之间延时20000μs (决定电机的转速)
MOV 0DH,#20H ;20000的HEX 码为4E20
CALL DELAY ;调用延时子程序 DJNZ 0FH,CONT2 ;循环次数减1后,若不为0则继续,循环100次
RET
2.采用软环分时的脉冲分配
如图4-19所示,该系统基于AT89S52单片机,利用扩展的可编程接口芯片8255A 的PB 口送出步进脉冲信号,经过驱动放大后,分别控制X 轴、Z 轴两个三相六拍反应式步进电机激磁绕组的通电顺序,以控制刀架在X、Z 两个方向的运动。
根据步进电机的工作原理,只要不断改变绕组的通电状态,步进电机即按规定的方向运转。软件分配脉冲采用查表法,按正向运转的通电顺序(如图4-20所示),列出各相绕组的脉冲分配表(如表4-11所示,表中“0”表示通电)。每个电机设置一个指针寄存器,初始化时使指针指向分配表的表首。步进电机需要正向运行一步时,指针下移一行,同时输出该行的状态,当指针超出分配表表尾时自动回到表首;步进电机反向运行时,指针上移一行,并输出该行的脉冲值,当指针超出表首时又自动回到表尾。
表4-11 步进电机绕组通电顺序表
图4-19 软环分时的绕组通电布置
正 转 反 转
图4-20 步机电机正、反转时的绕组通电顺序(三相六拍方式)
电机绕组通电顺序 地 址 指 针 代 码 选通信号 A B C MOTB+1 1 0BH 1 0 1 1 MOTB+2 2 09H 1 0 0 1 MOTB+3 3 0DH 1 1 0 1 MOTB+4 4 0CH 1 1 0 0 MOTB+5 5 0EH 1 1 1 0 MOTB+6 6 0AH 1 0 1 0
设R6、R7分别为X、Z向电机的指针寄存器,正常情况下R6与R7的取值应在1~6之间(六拍之一)。 则Z向电机脉冲分配的具体程序如下(采用MCS-51汇编语言)。
BDZ1P: INC R7 ;Z向电机正转一步(若DEC R7,则反转一步)
OTZ: CJNE R7,#07H,AA0
MOV R7,#01H ;指针超出分配表的表尾(R7=#07H)时,自动回到表首(R7=#01H)
JMP AA1
AA0: CJNE R7,#00H,AA1
MOV R7,#06H ;指针超出分配表的表首(R7=#00H)时,自动回到表尾(R7=#06H)AA1: MOV DPTR,#MOTB ;16位数据指针指向脉冲分配表的首地址
MOV A,R7 ;Z向指针送给A
MOVC A,@A+DPTR ;查表取出Z向电机绕组通电状态,存于A
MOV B,A ;再送寄存器B中暂存
MOV A,R6 ;取X向指针送给A
MOVC A,@A+DPTR ;查表取出X向电机绕组通电状态,送给A
SWAP A ;将A的高4位与低4位交换,之后,低4位全为0
ADD A,B ;A与B相加后,A的高4位为X通电状态,低4位为Z通电状态
ANL A,#11110111B
;将A的D3位置0,选择Z向电机输出,X电机保持原有通电状态 MOV DPTR,#2FFDH;8255A的PB 口地址
MOVX @DPTR,A ;同时输出X、Z向电机绕组通电状态至8255A的PB口
RET ;X向电机转子保持不动,Z向电机转子转过一拍
MOTB: DB 0FH ;不用 (地址:MOTB+0)
DB 0BH ;A相通电 (地址:MOTB+1)
DB 09H ;AB相通电 (地址:MOTB+2)
DB 0DH ;B相通电 (地址:MOTB+3)
DB 0CH ;BC相通电 (地址:MOTB+4)
DB 0EH ;C相通电 (地址:MOTB+5)
DB 0AH ;CA相通电 (地址:MOTB+6)
设Z向电机连续运转100步,则走步程序为:
MOV 0FH,#100D ;100步
CONT3: CALL BDZ1P ;Z向电机走一步(调用上述的脉冲分配子程序)
MOV 0EH,#4EH ;两脉冲之间延时20000μs(决定电机的转速)
MOV 0DH,#20H ;20000的HEX码为4E20
CALL DELAY ;相邻步之间的延时(决定电机的转速)
DJNZ 0FH,CONT3 ;循环次数减1后,若不为0则继续,循环100次
RET
X向电机的脉冲分配程序与走步程序同Z向相似,在此不再赘述。
从上面的分析可以看出,采用软件来分配步进电机的走步脉冲时,对于每台电机,控制系统硬件电路需要的输出口数目,取决于步进电机的相数,至于节拍的分配方式(大步或小步),则要根据使用要求来决定。由于采用了软环分,只需改变部分软件,即可实现变拍驱动。