步进电机控制系统设计方案.doc_第1页
步进电机控制系统设计方案.doc_第2页
步进电机控制系统设计方案.doc_第3页
步进电机控制系统设计方案.doc_第4页
步进电机控制系统设计方案.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

selectionparagraphformatlinespacinglinestopointsselectionparagraphformatlinespacinglinestopointselectionparagraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaphformatlinespacinglinestopointsselectionparagraphformatlinespacinglinestselectionparbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbagraphfolinespacinglinestopointsselectionparagraphformatlinespacinglinestopointse11111111111111111111111111111111lectionparagraphformatlinespacinglinestopointsselectionparagraphformatlinespacinglinestopoctionparagraphformatlinespaci2222222222222222222222nglinestopoints2selectionparagraphformatlinespacinglinestopointsselectionparagraphformatlinespacinglinestopointselectionparagraphfccccccccccccccccccccccccccccccccccccccccccccccccccccccccormatlinespacinglinestopointsselectionparagraphformatlinespacinglinestopoctionparagra目 录1 前言2 方案设计121任务223技术方案与论证23 电路设计31系统电路原理32主要元器件选择33单元电路设计4程序设计41系统程序流程42系统程序设计5系统仿真 51 系统仿真 52 系统仿真结果分析6 总结与体会18参考文献资料19selectionparagraphformatlinespacinglinestopointsselectionparagraphformatlinespacinglinestopointselectionparagraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaphformatlinespacinglinestopointsselectionparagraphformatlinespacinglinestselectionparbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbagraphfolinespacinglinestopointsselectionparagraphformatlinespacinglinestopointse11111111111111111111111111111111lectionparagraphformatlinespacinglinestopointsselectionparagraphformatlinespacinglinestopoctionparagraphformatlinespaci2222222222222222222222nglinestopoints2selectionparagraphformatlinespacinglinestopointsselectionparagraphformatlinespacinglinestopointselectionparagraphfccccccccccccccccccccccccccccccccccccccccccccccccccccccccormatlinespacinglinestopointsselectionparagraphformatlinespacinglinestopoctionparagra第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所示。at89s51单片机键盘输入模块步进电机显示模块 图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 setb p2.7 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 clr p2.7 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 ;若相等则送键码到80h8fh单元中,不相等则继续查找 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 ;以上为09数字键的入口地址 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 lca

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论