步进电机控制系统设计方案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录
1 前言 ....................................................
2 方案设计 (1)
2.1任务 (1)
2.3技术方案与论证 (1)
3 电路设计
3.1系统电路原理......................................................
3.2主要元器件选择 ....................................................
3.3单元电路设计 ...................................................... 4程序设计................................................
4.1系统程序流程 ......................................................
4.2系统程序设计 ...................................................... 5.系统仿真
5.1 系统仿真
5.2 系统仿真结果分析
6 总结与体会 (22)
参考文献资料 (23)
第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.5 L298引脚及内部结构
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系统程序设计
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP KEY
ORG 0100
;******程序初始化*******
MAIN:SS BIT 20H ;1代表开始
ZZ BIT 21H ;1代表正转
FF BIT 22H ;1反转
PP BIT 23H ;1表示暂停
JX BIT 24H ;1代表继续
BACK BIT 25H;
MOV SP,#30H
MOV P1,#0FH
MOV IE,#81H
MOV 60H,#00H
MOV 61H,#00H
MOV 62H,#00H
MOV 63H,#00H
SETB IT0
;*******控制主程序******* START: JB SS,BEGIN
LCALL DISP
LJMP START ;没有开始,则等待BEGIN: JB ZZ,ZHENG
JB FF,FAN
LCALL DISP
LJMP START
;******步进电机正转程序****** ZHENG:SETB P2.4
SETB P2.5
CLR P2.6
CLR P2.7
LCALL DISP ;完成一步
LCALL CHECK
JB BACK ,POS1
LJMP WAN
POS1:CLR P2.4
SETB P2.5
SETB P2.6
CLR P2.7
LCALL DISP ;完成一步
LCALL CHECK
JB BACK ,POS2
LJMP WAN
POS2:CLR P2.4
CLR P2.5
SETB P2.6
SETB P2.7
LCALL DISP;完成一步
LCALL CHECK
JB BACK ,POS3
LJMP WAN
POS3:SETB P2.4
CLR P2.5
CLR P2.6
LCALL DISP ;完成一步
LCALL CHECK
JB BACK ,ZHENG
LJMP WAN
;******步进电机反转程序***** FAN:SETB P2.4
CLR P2.5
CLR P2.6
SETB P2.7
LCALL DISP ;完成一步
LCALL CHECK
JB BACK ,POSS1
LJMP WAN
POSS1:CLR P2.4
CLR P2.5
SETB P2.6
SETB P2.7
LCALL DISP ;完成一步
LCALL CHECK
JB BACK ,POSS2
LJMP WAN
POSS2:CLR P2.4
SETB P2.5
SETB P2.6
CLR P2.7
LCALL DISP;完成一步
LCALL CHECK
JB BACK ,POSS3
LJMP WAN
POSS3:SETB P2.4
SETB P2.5
CLR P2.6
LCALL DISP ;完成一步
LCALL CHECK
JB BACK ,FAN
LJMP WAN
;*******步进电机步数为0,暂停,继续功能查询子程序**** CHECK:MOV R1,#60H
DEC @R1
CJNE @R1,#0FFH,OV1
INC R1
DEC @R1
MOV 60H,#09H
CJNE @R1,#0FFH,OV1
INC R1
DEC @R1
MOV 60H,#09H
MOV 61H,#09H
CJNE @R1,#0FFH,OV1
INC R1
DEC @R1
MOV 60H,#09H
MOV 61H,#09H
MOV 62H,#09H
CJNE @R1,#0FFH,OV1
CLR BACK
LJMP RETURN1
OV1:SETB BACK
L2:JB PP,PAUSE1 ;等于1则跳转到暂停
LCALL DISP
LJMP RETURN1
PAUSE1:JB JX,L1
LCALL DISP
LJMP L2
L1:LJMP L2
RETURN1:RET
;*******步数显示子程序******* DISP:MOV DPTR,#DAT
SETB P2.0
CLR P2.1
CLR P2.2
CLR P2.3
MOV A,60H
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
CLR P2.0
SETB P2.1
CLR P2.2
CLR P2.3
MOV A,61H
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
CLR P2.0
CLR P2.1
SETB P2.2
CLR P2.3
MOV A,62H
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
CLR P2.0
CLR P2.1
CLR P2.2
SETB P2.3
MOV A,63H
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
MOV P0,#0FFH
RET
DAT: DB 0C0H,0F9H,0A4H,0B0H
DB 99H,92H,82H,0F8H
DB 80H,90H
;********键盘中断服务程序*******
KEY: PUSH ACC
PUSH PSW
MOV P1,#0F0H ;高位输出1,读低四位的状态
MOV A,P1 ;送入A
ANL A,#0F0H ;屏蔽低四位,保存高四位
MOV B,A
MOV P1,#0FH ;低位输出1,读高四位状态
MOV A,P1
ANL A,#0FH ;屏蔽高四位,保存低四位
ORL A,B ;AB相或形成查表字符
MOV B,A
MOV R0,#00H ;键码保存在R0中
MOV DPTR,#TAB
LOOP:MOV A,R0
MOVC A,@A+DPTR
CJNE A,B,NEXT ;若相等则送键码到80H~8FH单元中,不相等则继续查找
LJMP KEY1
NEXT:INC R0
CJNE R0,#10H,LOOP
LJMP RETURN ; 查完没有键按下则返回主程序
TAB:DB 0EEH, 0EDH, 0EBH, 0E7H
DB 0DEH, 0DDH, 0DBH, 0D7H
DB 0BEH, 0BDH, 0BBH, 0B7H
DB 07EH, 07DH, 07BH, 077H
KEY1:MOV A,R0
MOV DPTR,#TAB1
ADD A,R0
JMP @A+DPTR
TAB1:AJMP OPR1
AJMP OPR2
AJMP OPR3
AJMP OPRZZ
AJMP OPR4
AJMP OPR5
AJMP OPR6
AJMP OPRFZ
AJMP OPR7
AJMP OPR8 ;以上为0~9数字键的入口地址
AJMP OPR9
AJMP OPRPA
AJMP OPRST
AJMP OPR0
AJMP OPRGO
OPR1:MOV 63H,62H
MOV 62H,61H
MOV 61H,60H
MOV 60H,#01H
LJMP RETURN
OPR2:MOV 63H,62H
MOV 62H,61H
MOV 61H,60H
MOV 60H,#02H
LJMP RETURN
OPR3:MOV 63H,62H
MOV 62H,61H
MOV 61H,60H
MOV 60H,#03H
LJMP RETURN OPRZZ:SETB ZZ
CLR FF
LJMP RETURN OPR4:MOV 63H,62H
MOV 62H,61H
MOV 61H,60H
MOV 60H,#04H
LJMP RETURN OPR5:MOV 63H,62H
MOV 62H,61H
MOV 61H,60H
MOV 60H,#05H
LJMP RETURN OPR6:MOV 63H,62H
MOV 62H,61H
MOV 61H,60H
MOV 60H,#06H
LJMP RETURN OPRFZ:SETB FF
CLR ZZ
LJMP RETURN OPR7:MOV 63H,62H
MOV 62H,61H
MOV 61H,60H
MOV 60H,#07H
LJMP RETURN OPR8:MOV 63H,62H
MOV 62H,61H
MOV 61H,60H
MOV 60H,#08H
LJMP RETURN OPR9:MOV 63H,62H
MOV 62H,61H
MOV 61H,60H
MOV 60H,#09H
LJMP RETURN
OPRPA:SETB PP
CLR JX
LJMP RETURN
OPRST:SETB SS
LJMP RETURN
OPR0:MOV 63H,62H
MOV 62H,61H
MOV 61H,60H
MOV 60H,#00H
LJMP RETURN
OPRGO:SETB JX
CLR PP
RETURN:POP PSW
POP ACC
RETI
;******延时子程序*******
DELAY:MOV R7,#100
DE:MOV R6,#50
DJNZ R6,$
DJNZ R7,DE
RET
;*****显示提示信息OVER程序***** WAN:MOV P2,#08H
MOV P0,#0C0H
LCALL DELAY
MOV P2,#04H
MOV P0,#0C1H
LCALL DELAY
MOV P2,#02H
MOV P0,#86H
LCALL DELAY
MOV P2,#01H
MOV P0,#88H
LCALL DELAY
LJMP WAN
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] 。

相关文档
最新文档