四相双四拍步进电机控制系统设计.docx
《四相双四拍步进电机控制系统设计.docx》由会员分享,可在线阅读,更多相关《四相双四拍步进电机控制系统设计.docx(14页珍藏版)》请在冰豆网上搜索。
四相双四拍步进电机控制系统设计
1引言
本实验旨在通过控制AT89S52芯片,实现对四相步进电机的转动控制。
具体功能主要是控制电机正转、反转、加速与减速。
具体工作过程是:
给试验箱上电后,拨动启动开关,步进电机按照预先设置的转速和转动方式转动。
调整正反转按钮,步进电机实现正反转切换;拨动加速开关,步进电机转速加快,速度到达最大值,不再加速;拨动减速开关时,电机减速转动,速度减到最小速度,停顿减速。
实验具体用到的仪器:
AT89S52(试验箱上为89C58)芯片、拨码开关单元、四项步进电机等硬件设备。
实验具体电路单元有:
单片机最小系统、步进电机连接电路、拨码开关连接电路。
2四项步进电机
2.1步进电机
步进电机是一种将电脉冲转化为角位移的执行机构。
电机的转速、停顿的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机那么转过一个步距角。
2.2步进电机的控制
1.换相顺序控制:
通电换相这一过程称为脉冲分配。
例如:
混合式步进电机的工作方式,其各相通电顺序为A-B-C-D,通电控制脉冲必须严格按照这一顺序分别控制A,B,C,D相的通断。
2.控制步进电机的转向控制:
如果给定工作方式正序换相通电,步进电机正转,如果按反序通电换相,那么电机就反转。
3.控制步进电机的速度控制:
如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。
两个脉冲的间隔越短,步进电机就转得越快。
2.3步进电机的工作过程
图2.1四相步进电机步进示意图
开关SB接通电源,SA、SC、SD断开,B相磁极和转子0、3号齿对齐,同时,转子的1、4号齿就和C、D相绕组磁极产生错齿,2、5号齿就和D、A相绕组磁极产生错齿。
当开关SC接通电源,SB、SA、SD断开时,由于C相绕组的磁力线和1、4号齿之间磁力线的作用,使转子转动,1、4号齿和C相绕组的磁极对齐。
而0、3号齿和A、B相绕组产生错齿,2、5号齿就和A、D相绕组磁极产生错齿。
依次类推,A、B、C、D四相绕组轮流供电,那么转子会沿着A、B、C、D方向转动。
四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。
单四拍与双四拍的步距角相等,但单四拍的转动力矩小。
八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。
双四拍工作方式的电源通电时序与波形分别如图3所示:
图2.2步进电机工作时序波形图
对步进电机四个绕组依次实现如下方式的循环通电控制:
双四拍运行:
正转AB-BC-CD-DA;反转DC-CB-BA-AD
3电路图设计
3.1AT89S52概述
AT89S52单片机是ATMEL公司推出的高档型AT89S系列单片机中的增强型产品。
关于其功能原理及其应用不再赘述。
这里只介绍本实验用到的端口和功能。
P1口:
用户使用的通用I/O口,8位准双向,编程和校验时,可做为高8位地址线;P1.0和P1.1引脚另有第二功能〔此实验没用到,不再介绍〕
P3口:
8位准双向I/O口
RST:
复位信号输入端,高电平有效
EA:
访问芯片部和芯片外部程序存储器的选择信号
XTAL1,XTAL2:
芯片振荡器反相放大器的输出端和输入端
3.2最小系统
单片机最小系统或者称为最小应用系统,就是用最少的元件组成的单片机可以工作的系统,对52系列单片机来说,最小系统一般应该包括:
单片机、复位电路、晶振电路。
图3.1最小系统
3.3复位电路
复位电路采用手动复位和上电自动复位。
上电自动复位:
在单片机上电的瞬间,RC电路充电,由于电容上电电压不能突变,所以RST引脚出现高电平,RST引脚出现的高电平将会随着对电容C的充电过程而逐渐回落。
手动复位:
当按下复位按钮时,RST出现高电平,实现复位。
图3.2复位电路
3.4拨码电路
拨码开关和P3口相连,拨动开关sw1、sw2、sw3、sw4来控制电机的启停、正反转、速度的加减。
图3.3拨码电路
3.5电机驱动电路
将步进电机的A、B、C、D分别接到P1.0、P1.1、P1.2、P1.3管脚上
图3.4电机驱动电路
实物连接:
图3.5实物连接
4程序设计
4.1主程序框图
系统分为电机转动、电机正转、电机反转、电机加速、电机减速和电机停顿这几个局部组成,其主程序框图如图下所示:
图4.1主程序框图
4.2步进电机速度控制程序框图
正转局部:
送P1口不同的值,从而改变电机电源的相序,是电机正转,数值分别为0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1,0xf9。
流程图如下:
图4.2电机正转流程图
反转局部:
送P1口不同的值,从而改变电机电源的相序,是电机反转,数值分别为0xf9,0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8。
流程图如下:
:
图4.3电机反转流程图
加速局部:
当电机处于正转或反转的时候,按下K2,调用加速程序,是电机每转动一部的延时时间变短,从而实现电机的加速。
图4.4电机加速流程图
减速局部:
当电机处于正转或反转的时候,按下K3,调用加速程序,是电机每转动一部的延时时间变长,从而实现电机的减速。
图4.5电机减速流程图
运行与停顿:
按下K1键,系统默认是停顿,拨动一次是运行,在拨动一次是停顿,即是基数次运行,偶数次停顿〔一般不会拨动N次,为了看到现象,就拨动少数几次〕
图4.6电机开关流程图
4.3拨码开关输入程序框图
用于判断P3.1、P3.2、P3.3、P3.4
图4.7拨码开关输入程序框图
5总结与体会
通过这次设计实践。
我学会了四相双四拍步进电机的工作原理,对计算机控制技术的工作原理和使用方法也有了更深刻的理解。
在对理论的运用中,提高了我的工程素质,在没有做课程设计以前,我们对知道的撑握都是思想上的,对一些细节不加重视,当我们把自己想出来的程序用到课程设计中的时候,问题出现了,不是不能运行,就是运行的结果和要求的结果不相符合。
通过解决一个个在调试中出现的问题,我对计算机控制技术的理解得到加强,看到了实践与理论的差距,深刻体会到这门课程与实际生活的严密联系。
附录〔程序清单〕
源程序如下:
STACK1SEGMENTSTACK
DW256DUP(")
STACK1ENDS
DATASEGMENT
KEQU09H;工作步数
TABSHZDB03H,06H,0CH,09H;双四拍正转模型
TABSHFDB09H,0CH,06H,03H;双四拍反转模型
TABLE1DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;七段数码管字模
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK1
START:
MOVAX,DATA
MOVDS,AX
MOVAL,80H;初始化8255,工作方式0,A,、B、C口均为输出
MOVDX,MY8255_MODE
OUTDX,AL
WAIT1:
MOVAH,08H;等待启动键"0”按下
INT21H
CMPAL,30H
JEMAIN
JMPWAIT1
MAIN:
MOVAH,08H;判断工作方式控制键是否按下
INT21H;假设键按下转到相应的程序,否那么循环等待.
CMPAL,33H
JESHUANGSI;转双四拍正转
CMPAL,34H
JESHUANGSI1;转双四拍反转
CMPAL,35H
JEQUIT1
JMPMAIN
;单四拍正转
ZHENGSI:
MOVAL,02H;点亮正转指示灯
MOVDX,MY8255_C
OUTDX,AL
MOVCL,K
ZHENGSI0:
LEABX,TABLE1;数码管显示剩余步数
MOVAL,CL
XLAT
MOVDX,MY8255_A
OUTDX,AL
ZHENGSI1:
MOVBL,04H;驱动电机
MOVDX,MY8255_B
LEADI,TABSZ
ZHENGSI2:
MOVAH,0BH;判断是否有按键切换工作方式
INT21H;有按键跳回判断按键对应程序,否那么继续执行程序
INCAL
JZMAIN
CALLXIAN;调用显示子程序,显示工作剩余拍数
MOVAL,[DI]
OUTDX,AL
CALLDLY;调用延时子程序
INCDI
DECBL;判断是否工作完所有拍数,有那么退出等待重选工作方式,否那么继续循环
JNZZHENGSI2
DECCL
JNZZHENGSI0
JMPWAIT1
;中间跳转
SHUANGSI:
JMPSHSIZH
SHUANGSI1:
JMPSHSIF
;双四拍正转
SHSIZH:
MOVAL,02H
MOVDX,MY8255_C
OUTDX,AL
MOVCL,K
SHSIZH0:
LEABX,TABLE1
MOVAL,CL
XLAT
MOVDX,MY8255_A
OUTDX,AL
SHSIZH1:
MOVBL,08H
MOVDX,MY8255_B
LEADI,TABSHZ
SHSIZH2:
MOVAH,0BH
INT21H
INCAL
JZMAIN1
CALLXIAN
MOVAL,[DI]
OUTDX,AL
CALLDLY
INCDI
DECBL
JNZSHSIZH2
DECCL
JNZSIBAZH0
JMPWAIT1
;中间跳转程序
WAIT00:
JMPWAIT1
;双四拍反转
SHSIF:
MOVAL,01H
MOVDX,MY8255_C
OUTDX,AL
MOVCL,K
SHSIF0:
LEABX,TABLE1
MOVAL,CL
XLAT
MOVDX,MY8255_A
OUTDX,AL
SHSIF1:
MOVBL,4
MOVDX,MY8255_B
LEADI,TABSHF
SHSIF2:
MOVAH,0BH
INT21H
INCAL
JZMAIN1
CALLXIAN
MOVAL,[DI]
OUTDX,AL
CALLDLY
INCDI
DECBL
JNZSHSIF2
DECCL
JNZSHSIF0
JMPWAIT00
MAIN11:
JMPMAIN1
;四相八拍正转
SIBAZH:
MOVAL,02H
MOVDX,MY8255_C
OUTDX,AL
MOVCL,K
SIBAZH0:
LEABX,TABLE1
MOVAL,CL
XLAT
MOVDX,MY8255_A
OUTDX,AL
SIBAZH1:
MOVBL,08H
MOVDX,MY8255_B
LEADI,TABBZ
SIBAZH2:
MOVAH,0BH
INT21H
INCAL
JZMAIN11
CALLXIAN
MOVAL,[DI]
OUTDX,AL
CALLDLY
INCDI
DECBL
JNZSIBAZH2
DECCL
JNZSIBAZH0
JMPWAIT00
QUIT:
MOVDX,MY8255_A;完毕退出程序
MOVAL,00H
OUTDX,AL
MOVAX,4C00H
INT21H
;软件延时子程序
DLYPROCNEAR
PUSHCX
PUSHAX
MOVCX,0FFFFH
D1:
MOVAX,5FFFH
D2:
DECAX
JNZD2
LOOPD1
POPAX
POPCX
RET
DLYENDP
XIANPROCNEAR;剩余拍数显示子程序
PUSHDX
MOVDL,BL
ADDDL,30H
MOVAH,02H
INT21H
MOVDL,20H
MOVAH,02H
INT21H
POPDX
RET
XIANENDP
CODEENDS
ENDSTART
参考文献
[1]艳兵,王忠庆.计算机控制技术.:
国防工业,2006.8
[2]何立民,俊谟.单片机中级教程:
第2版[M].:
航空航天大学,2002.
[3]王鸿钰.步进电机控制入门[M].:
同济大学,1990.
[4]房玉明,杭柏林.基于单片机的步进电机开环控制系统[J].电机与控制应用,2006,33〔4〕:
64-64.
[5]强,吴红星.基于单片机的电动机控制技术.:
中国电力,2008
[6]王晓明.电动机的单片机控制〔第二版〕.:
航空航天,2007.8