步进电机控制系统设计方案.docx
《步进电机控制系统设计方案.docx》由会员分享,可在线阅读,更多相关《步进电机控制系统设计方案.docx(23页珍藏版)》请在冰豆网上搜索。
步进电机控制系统设计方案
5.系统仿真
5.1系统仿真
5.2系统仿真结果分析
第1章方案设计
1.1设计任务
1.1.1设计要求
(1)用带中断行列式键盘作为数据和暂停等功能的输入
(2)七段数码管显示当前步进电机的运行状态
(3)采用集成芯片作为步进电机的驱动电路
(4)使用PROTEUS软件对程序进行仿真和调试
1.1.2设计任务
(1)根据设计要求划分功能模块
(2)编程实现模块要求
(3)根据模块画出总电路图
(4)画出模块程序流程图
(5)编写整个源程序代码
(6)PROTEUS仿真与调试
1.2方案设计与论证
1.2.1总体方案论证与比较
方案一、采用AT89C51单片机作为整机的控制单元。
以AT89C51单片机为核心的控制电路,采用模块化的设计方案,使用行列式键盘作为数据的输入、数码管做数据的输出显示、以L298作为驱动控制步进电机,实现步进电机进行正转、反转、暂停、继续。
修改延时子程序可控制步进电机的转速。
在本系统中,行列式键盘起着人机交互的作用,是输入电路的主要组成部分,行列式键盘是通过反转法编程实现的,相对于行列的查询法,更加简单实用,容易理解。
在行列式键盘的程序设计中,利用了中断程序,更好的体现了控制的实时性,它既和硬件有关,又和软件有关,使得步进电机的控制更灵活,效率更高;利用四位一体的七段数码管显示输入的步数,并动态显示当前剩余步数;以L298数字芯片作为步进电机的驱动电路,解决单片机驱动能力不足的缺点。
此系统比较灵活,采用软件方法来解决复杂的硬件电路部分,使系统硬件简洁化,各类功能易于实现,具有高度的智能化、人性化,一定程度体现了智能,能满足系统的要求。
此方案的基本原理如图1.1所示。
图1.1方案一原理框图
方案二、采用电机专用驱动数字芯片L297以及L298组合使用控制步进电机。
采用数字电路对单片机对步进电机控制的信号进行处理,由于L297以及L298的组合使用,能有效的减少单片机I/O口的使用,并大幅度的提高单片机的带负载能力。
但由于该课程设计可用的I/O口充足,如果过多的使用数字芯片,这样必然带来高成本、电路复杂等缺点。
因此,本方案灵活性不高,效率低,不利于步进电机的性能。
同时,对各路信号处理也比较困难。
比较以上两种方案的优缺点,方案一简洁、灵活、可扩展性好,能达到设计要求,因此本设计采用方案一来实现。
第2章电路设计
2.1系统电路原理
系统电路图如图2.1所示
图2.1系统电路图
2.2主要元器件选择
单片机具有运算能力强、功耗低、大寻址范围以及廉价等特点,基于单片机的上述优越性,所以首选单片作为整个电路设计的核心控制器件。
综合单片机存储器,驱动能力,抗干扰能力等各个方面的要求选择ATS89C51。
显示电路采用四位一体的七段数码管既能够满足显示的要求,同时相对于使用LCD作为电路显示单元来说,从显示效果上七段数码管显示具有字符大,亮度高等特点,从硬件电路上七段数码管驱动也同样简单,并且七段数码管的成本更低,更符合设计效益方面的要求。
由于单片机最高输出电压为+5V,而步进电机的额定工作电压是+12V,所以必须采用外围的驱动电路。
步进电机的驱动电路多种多样,从设计的要求分析,我们可以采用单电源供电方式电路作为步进电机的驱动电路。
两相步进电机工作在双相四拍工作方式时需要四种不同状态的时序脉冲,所以使用步进电机驱动芯片L298能够使电路的结构更简单,并且能够提高电路的稳定性和可靠性。
2.3单元电路设计
2.3.1步进电机控制原理
步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。
步进电机区别于其他控制电机的最大特点是,它是通过输入脉冲信号来进行控制的,即电机的总转动角度由输入脉冲数决定,而电机的转速由脉冲信号频率决定。
步进电机的驱动电路根据控制信号工作,控制信号由单片机产生。
其基本原理作用如下:
(1)控制换相顺序
通电换相这一过程称为脉冲分配。
例如:
两相步进电机的双相四拍工作方式,其各相通电顺序时序如图所示:
通电控制脉冲必须严格按照这一顺序分别控制A、B两相的通断。
图2.2步进电机原理图
图2.3步进电机双相四拍工作时序图
(2)控制步进电机的转向
如果给定工作方式正序换相通电,步进电机正转,如果按反序通电换相,则电机就反转。
(3)控制步进电机的速度
如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。
两个脉冲的间隔越短,步进电机就转得越快。
调整单片机发出的脉冲频率,就可以对步进电机进行调速。
2.3.2步进电机驱动原理
步进电机可以有多种驱动方式,例如单电源供电方式,高低双电源供电等,综合该设计各方面的因素,采用单电源供电方式作为步进电机驱动,电路结构比较简单,也具有一定的可靠性。
但在高频时会产生干扰,影响步进电机的正常运行。
单电源供电方式原理图如图2.4所示:
图2.4单电源供电方式原理图
采用数字芯片L298作为步进电机驱动电路,L298引脚分布及内部结构如图2.5所示。
单片机对步进电机的控制信号从L298的In1-In4输入,步进电机的控制信号从Out1-Out4输出。
 ̄
图2.5L298引脚及内部结构
2.3.3数码显示管
在此次课程设计中,为了更好的实现人机交互,让我们更好的控制步进电机的转动,我们用四合一的8位数码显示管来显示我们输入的转动次数,并且通过程序让步进电机每转动一次,数码显示管上的数相应减少一,当步进电机转完我们需要其转动的次数时,数码显示管上显示的数字也减少到“0”,然后数码显示管会显示英文单词“OVER”,由此提醒人步进电机已经转动完成,从而实现人们对步进电机的动态控制。
数码显示管是由二极管显示字段的显示器件,它由8个发光二极管构成,通过不同的组合可以显示0到9,A到F以及小数点等字符。
数码管通常有共阴极和共阳极两种类型,共阴极数码管阴极必须接低电平(一般为地),当一个发光二极管的阳极连到高电平时,此二极管亮;共阳极数码管的发光二极管是阳极并接到高电平(一般为+5V),需点亮的发光二极管阴极接到低电平即可。
显然,要显示一个字型就应该使此字型的相应发光二极管点亮,实际上就是送一个不同电平的组合代表的数据到数码管。
在此次课程设计中,我们采用的使共阳极数码显示管,因为,在数码显示管于单片机相连接时,若为共阴极,则必须接上上拉电阻,这样数码显示管对单片机的压力太大,而共阳极却不要,所以为了减低单片机的压力,减少成本,增大元器件的寿命,我们采用的使共阳极的数码显示管。
2.3.4行列式键盘
在单片机的应用系统中,扫描键盘只是CPU的工作任务之一。
在实际应用中,要想做到既能及时响应键操作,又不过多的占用CPU的工作时间,就要根据应用系统中的忙闲情况选择适当的键盘工作方式。
键盘的工作方式一般有循环扫描和中断扫描两种。
循环扫描方式是利用CPU在完成其它工作的空余,调用键盘扫描子程序,来响应键输入要求。
在执行键功能程序时,CPU不再响应键输入要求。
键盘扫描程序应具备以下4项功能:
1,判断键盘上有无按下。
2,去除键的抖动操作。
3,扫描键盘,得到按下键的键号。
4,判别闭合的键是否释放。
采用循环扫描键盘的工作方式,虽然也能响应键入的命令或数据,但这种工作方式不管键盘上有无按键按下,CPU总要定时扫描键盘;而应用系统在工作时,并不需要按键输入,因此,CPU常处于空扫描状态。
中断扫描工作方式可以提高CPU的工作效率,即只在键盘有键按下时发中断请求,CPU响应中断请求后,转入中断服务程序,进行键盘扫描,识别键码。
中断扫描工作方式是一种简易键盘接口电路,其直接有80C51P1口的高,低字节构成4*4行列式键盘。
键盘的列线与P1口的低四位相接,键盘的行线接到P1口的高四位。
在中断扫描方式中,有一个与门,其输入端分别与各列线相连,而输入端接单片机外部中断输入INT0。
初始化时,键盘行输入口全部置0。
当有键按下时,INT0端为低电平,向CPU发中断请求,若CPU开放外部中断,则响应中断请求,进入中断服务程序。
综合以上所述,我们采用中断工作方式。
第3章程序设计
3.1系统程序流程
3.1.1主程序流程图
由于程序实现的功能比较的多,为了能够更清晰的体现设计思路,编写合理规范的程序;同时也是为了能够更好的协调各模块的功能,提高程序的执行效率和,所以一般首先画出主程序的流程图,然后在主程序流程图结构的指导下完成各个部分的功能。
这种设计的思路充分的体现了模块化的设计思想,因为模块化的设计思想能够使编写的程序在以后的调试和修改的过程中也显得比较的容易。
主程序流程图如图3.1所示。
图3.1主程序流程图
3.1.2中断服务程序流程图
中断服务程序主要实现键盘的功能并且把用户从键盘输入的数据存储到相应的存储单元中。
中断服务程序流程图如图3.2所示。
图3.2中断服务程序流程图
3.1.2显示子程序流程图
数码管采用动态扫描的显示方法,从P2.0-P2.3口依次高电平选通需要显示的数码管,显示数字的字形码存放在60H到63H单元中。
为了观察到比较稳定而且亮度高的显示效果,延时子程序一般延时2-5ms。
显示子程序流程图如图3.3所示。
图3.3显示子程序流程图
3.2系统程序设计
ORG0000H
LJMPMAIN
ORG0003H
LJMPKEY
ORG0100
;******程序初始化*******
MAIN:
SSBIT20H;1代表开始
ZZBIT21H;1代表正转
FFBIT22H;1反转
PPBIT23H;1表示暂停
JXBIT24H;1代表继续
BACKBIT25H;
MOVSP,#30H
MOVP1,#0FH
MOVIE,#81H
MOV60H,#00H
MOV61H,#00H
MOV62H,#00H
MOV63H,#00H
SETBIT0
;*******控制主程序*******
START:
JBSS,BEGIN
LCALLDISP
LJMPSTART;没有开始,则等待
BEGIN:
JBZZ,ZHENG
JBFF,FAN
LCALLDISP
LJMPSTART
;******步进电机正转程序******
ZHENG:
SETBP2.4
SETBP2.5
CLRP2.6
CLRP2.7
LCALLDISP;完成一步
LCALLCHECK
JBBACK,POS1
LJMPWAN
POS1:
CLRP2.4
SETBP2.5
SETBP2.6
CLRP2.7
LCALLDISP;完成一步
LCALLCHECK
JBBACK,POS2
LJMPWAN
POS2:
CLRP2.4
CLRP2.5
SETBP2.6
SETBP2.7
LCALLDISP;完成一步
LCALLCHECK
JBBACK,POS3
LJMPWAN
POS3:
SETBP2.4
CLRP2.5
CLRP2.6
SETBP2.7
LCALLDISP;完成一步
LCALLCHECK
JBBACK,ZHENG
LJMPWAN
;******步进电机反转程序*****
FAN:
SETBP2.4
CLRP2.5
CLRP2.6
SETBP2.7
LCALLDISP;完成一步
LCALLCHECK
JBBACK,POSS1
LJMPWAN
POSS1:
CLRP2.4
CLRP2.5
SETBP2.6
SETBP2.7
LCALLDISP;完成一步
LCALLCHECK
JBBACK,POSS2
LJMPWAN
POSS2:
CLRP2.4
SETBP2.5
SETBP2.6
CLRP2.7
LCALLDISP;完成一步
LCALLCHECK
JBBACK,POSS3
LJMPWAN
POSS3:
SETBP2.4
SETBP2.5
CLRP2.6
CLRP2.7
LCALLDISP;完成一步
LCALLCHECK
JBBACK,FAN
LJMPWAN
;*******步进电机步数为0,暂停,继续功能查询子程序****
CHECK:
MOVR1,#60H
DEC@R1
CJNE@R1,#0FFH,OV1
INCR1
DEC@R1
MOV60H,#09H
CJNE@R1,#0FFH,OV1
INCR1
DEC@R1
MOV60H,#09H
MOV61H,#09H
CJNE@R1,#0FFH,OV1
INCR1
DEC@R1
MOV60H,#09H
MOV61H,#09H
MOV62H,#09H
CJNE@R1,#0FFH,OV1
CLRBACK
LJMPRETURN1
OV1:
SETBBACK
L2:
JBPP,PAUSE1;等于1则跳转到暂停
LCALLDISP
LJMPRETURN1
PAUSE1:
JBJX,L1
LCALLDISP
LJMPL2
L1:
LJMPL2
RETURN1:
RET
;*******步数显示子程序*******
DISP:
MOVDPTR,#DAT
SETBP2.0
CLRP2.1
CLRP2.2
CLRP2.3
MOVA,60H
MOVCA,@A+DPTR
MOVP0,A
LCALLDELAY
CLRP2.0
SETBP2.1
CLRP2.2
CLRP2.3
MOVA,61H
MOVCA,@A+DPTR
MOVP0,A
LCALLDELAY
CLRP2.0
CLRP2.1
SETBP2.2
CLRP2.3
MOVA,62H
MOVCA,@A+DPTR
MOVP0,A
LCALLDELAY
CLRP2.0
CLRP2.1
CLRP2.2
SETBP2.3
MOVA,63H
MOVCA,@A+DPTR
MOVP0,A
LCALLDELAY
MOVP0,#0FFH
RET
DAT:
DB0C0H,0F9H,0A4H,0B0H
DB99H,92H,82H,0F8H
DB80H,90H
;********键盘中断服务程序*******
KEY:
PUSHACC
PUSHPSW
MOVP1,#0F0H;高位输出1,读低四位的状态
MOVA,P1;送入A
ANLA,#0F0H;屏蔽低四位,保存高四位
MOVB,A
MOVP1,#0FH;低位输出1,读高四位状态
MOVA,P1
ANLA,#0FH;屏蔽高四位,保存低四位
ORLA,B;AB相或形成查表字符
MOVB,A
MOVR0,#00H;键码保存在R0中
MOVDPTR,#TAB
LOOP:
MOVA,R0
MOVCA,@A+DPTR
CJNEA,B,NEXT;若相等则送键码到80H~8FH单元中,不相等则继续查找
LJMPKEY1
NEXT:
INCR0
CJNER0,#10H,LOOP
LJMPRETURN;查完没有键按下则返回主程序
TAB:
DB0EEH,0EDH,0EBH,0E7H
DB0DEH,0DDH,0DBH,0D7H
DB0BEH,0BDH,0BBH,0B7H
DB07EH,07DH,07BH,077H
KEY1:
MOVA,R0
MOVDPTR,#TAB1
ADDA,R0
JMP@A+DPTR
TAB1:
AJMPOPR1
AJMPOPR2
AJMPOPR3
AJMPOPRZZ
AJMPOPR4
AJMPOPR5
AJMPOPR6
AJMPOPRFZ
AJMPOPR7
AJMPOPR8;以上为0~9数字键的入口地址
AJMPOPR9
AJMPOPRPA
AJMPOPRST
AJMPOPR0
AJMPOPRGO
OPR1:
MOV63H,62H
MOV62H,61H
MOV61H,60H
MOV60H,#01H
LJMPRETURN
OPR2:
MOV63H,62H
MOV62H,61H
MOV61H,60H
MOV60H,#02H
LJMPRETURN
OPR3:
MOV63H,62H
MOV62H,61H
MOV61H,60H
MOV60H,#03H
LJMPRETURN
OPRZZ:
SETBZZ
CLRFF
LJMPRETURN
OPR4:
MOV63H,62H
MOV62H,61H
MOV61H,60H
MOV60H,#04H
LJMPRETURN
OPR5:
MOV63H,62H
MOV62H,61H
MOV61H,60H
MOV60H,#05H
LJMPRETURN
OPR6:
MOV63H,62H
MOV62H,61H
MOV61H,60H
MOV60H,#06H
LJMPRETURN
OPRFZ:
SETBFF
CLRZZ
LJMPRETURN
OPR7:
MOV63H,62H
MOV62H,61H
MOV61H,60H
MOV60H,#07H
LJMPRETURN
OPR8:
MOV63H,62H
MOV62H,61H
MOV61H,60H
MOV60H,#08H
LJMPRETURN
OPR9:
MOV63H,62H
MOV62H,61H
MOV61H,60H
MOV60H,#09H
LJMPRETURN
OPRPA:
SETBPP
CLRJX
LJMPRETURN
OPRST:
SETBSS
LJMPRETURN
OPR0:
MOV63H,62H
MOV62H,61H
MOV61H,60H
MOV60H,#00H
LJMPRETURN
OPRGO:
SETBJX
CLRPP
RETURN:
POPPSW
POPACC
RETI
;******延时子程序*******
DELAY:
MOVR7,#100
DE:
MOVR6,#50
DJNZR6,$
DJNZR7,DE
RET
;*****显示提示信息OVER程序*****
WAN:
MOVP2,#08H
MOVP0,#0C0H
LCALLDELAY
MOVP2,#04H
MOVP0,#0C1H
LCALLDELAY
MOVP2,#02H
MOVP0,#86H
LCALLDELAY
MOVP2,#01H
MOVP0,#88H
LCALLDELAY
LJMPWAN
END
第4章系统仿真
4.1系统仿真
使用Proteus软件画出系统电路图,然后加载程序文件。
点击开始按钮,进行系统仿真。
仿真结果如图4.1所示。
图4.1系统仿真图
4.2系统仿真结果分析
从键盘输入步进电机的运行步数,确定步进电机的转动方向,然后按下开始键按钮,从PROTEUS仿真中我们可以看到电机按照我们预设的要求转动并且数码管也比较清晰的显示着步进电机当前剩余的步数,当步数减为0的时候,显示提示信息“OVER”告诉我们所有步数已经执行完毕。
在步进电机正常转动的过程中,按下暂停键,电机停止转动,数码管同样显示当前剩下的步数,等待开始按钮按下;当开始键按下后,系统恢复暂停前的运行状态。
开始键和步进电机方向控制按键不分先后顺序,也就是说不论是先按下正转或反转键确定电机的转动方向再执行开始操作,还是先在输入好电机的运行步数后直接按下开始键,再来确定电机的转动方向,最后在PROTEUS仿真中我们看到的结果是一样的,比较符合人的思维习惯。
第5章课程设计的总结与体会
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。
回顾此次单片机课程设计,从选题到确定任务书,从原理到仿真,在接近个三星期的日子里,可以说是苦多于甜,但是我确实从中学到很多实用的东西,设计中自由的发散不仅巩固了以前所学过的知识,更重要的是通过查资料请教老师同学等各种学习途径掌握了许多书本上所没有学到过的知识,在这短短的半个月时间里获益匪浅。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
参考文献资料
[1]张迎新,等.单片机初级教程[M].北京:
北京航空航天大学出版社,2000
[2]张迎新,等.单片机微型计算机原理、应用及接口技术[M].修订版.北京:
国防工业出版社,2004.
[3]丁志刚,李刚民.单片微型计算机原理与应用[M].北京:
电子工业出版社,1990.
[4]孙传友,等.测控电路及装置[M].北京:
北京航天航空大学出版社,2000.
[5]www.CNDZ.com