ImageVerifierCode 换一换
格式:DOCX , 页数:39 ,大小:643.59KB ,
资源ID:8535740      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8535740.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(设计一种用双89C51作为核心部件进行远程控制的步进电机控制系统.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

设计一种用双89C51作为核心部件进行远程控制的步进电机控制系统.docx

1、设计一种用双89C51作为核心部件进行远程控制的步进电机控制系统随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,成为了一种比较成熟的技术, 本文主要介绍了一个基于89C51单片机的远程步进电机控制系统,详细描述了利用主-从双单片机开发远程步进电机控制系统的过程,重点对步进电机在单片机下的硬件连接与驱动,主-从单片机通过串行口通信的软件编程以及各模块系统设计进行了详尽分析,对各部分的电路也一一进行了介绍,该系统可以方便的实现远程步进电机控制和显示,并可根据需要连续控制或单步控制步进电机,它使用起来相当方便,主从单片机仅通过RS-232串行电缆连接,具有远程控制、远程监控

2、、连接简便、安全性高、功耗低等优点,适合于工厂及办公场所的远程阀门控制,也可以当作远程控制模块嵌入其它系统中,作为其他主系统的辅助扩展。步进电机与AT89C51结合实现远程阀门控制系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行远程阀门控制,有广泛的应用前景。关键词:步进电机;远程控制;AT89C51引言步进电机作为执行元件,是机电一体化的关键产品之一,广泛应用在各种自动化系统中,与其他类型的电机相比具有易于精确控制,无累积误差等优点。步进电机是一种将电脉冲转化为角位移的执行机构。当步进驱动器接收到一个脉冲信号,就驱动步进电机按设定的方向转一个固定的角度,它的旋转是以固定的角度一步一步

3、运行的,可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的。步进电机可以作为一种控制用的特种电机,利用其没有累积误差的特点,广泛应用于各种开环控制。单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上,用它来做一些控制电器等不是很复杂的工作。单片机内部也拥有和电脑功能类似的模块,比如ALU,内存,总线,还有和硬盘作用相同的存储器件,以及通信使用的串行口。本文设计一种用双89C51作为核心部件进行远程控制的步进电机控制系统。为使步进电机系统的可靠性、通用性、可维护性以及性价比最优,根据系统的功能要求,通过单片I/O口、串行口通讯、中断、键盘、四位八

4、段数码管的扩展来实现远程控制步进电机的启停、正反转、单步运行、限位保护及监控等功能。1设计背景1.1课题背景步进电机作为执行元件,是机电一体化的关键产品之一, 广泛应用在各种自动化控制系统中。随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。步进电机是一种感应电机,它的工作原理是利用电子电路,将直流电变成分时供电的,多相时序控制电流,用这种电流为步进电机供电,步进电机才能正常工作,驱动器就是为步进电机分时供电的、多相时序控制器。步进电机的发展,依赖于新型材料的应用、设计手段,以及与驱动技术的最佳匹配。随着自动控制技术、计算机网络通信技术在众多领域中的快速发展,

5、以及进一步数字化、智能化,步进电机将会在更深入广泛的领域中得到应用。在主从分布式控制系统中,从机主要完成远端实时控制与数据采集,被采集数据经初步处理后通过串行口传送给主机。主机将从机发送来的数据进行处理后即时向用户提供各种控制过程的具体数据,与此同时进行人机交互。主机根据从输入电路输入的数据进行判断处理并给从机发送各种控制命令。它既利用了单片机的价格低,功能强,抗干扰能力强,温限宽等优点,又利用串行口进行远程通信,使操作者远在数十米之外也能控制具体参数。单片机集成的资源越来越多,内部存储资源也日益丰富,用户不需要扩充就可以完成项目开发,而且单片机抗干扰能力也越来越强,使它更加适合工业控制领域。

6、1.2设计内容本设计主要是介绍了基于单片机远程控制下的步进电机控制系统,详细介绍了其硬件和软件设计,并对其各功能模块做了详细介绍,其主要功能和指标如下:(1)主机利用独立键盘检测用户输入数据并通过串行口发送至从机,共有六种指令:停止、正转、反转、单步正转、单步反转、回到机械零点;(2)从机接收数据后进行判断,并控制步进电机运动,同时将当前位置发送至主机,位置范围从-128到+127;(3)主机接收当前步进电机位置信息后通过四位八段数码管以有符号十进制形式显示出来;2远程步进电机控制方案2.1系统结构框图主机89C51电源、时钟及复位电路电源、时钟及复位电路从机89C51ULN2003A数码管显

7、示电路步进电机独立按键图2-1 89C51单片机总体设计结构框图2.2设计思路与方案 对步进电动机的控制接口采用软件控制步进电动机的旋转。步进电动机的驱动脉冲由89C51单片机的编程来实现,由从机89C51芯片的P3.4、P3.5、P3.6、P3.7发出,驱动步进电动机的A、B、C、D相。由于步进电机的正常工作电压是12V,故需要用达林顿晶体管驱动芯片驱动。通过主机89C51芯片的P3口来读取键盘输入的停止、正转、反转、单步正转、单步反转、回到机械零点控制信号,并通过89C51的串行口将控制状态发送至从机,从机接收信号后按照指令控制电动机工作,同时实时将当前位置状态送回主机,主机接收当前位置信

8、号并显示。2.2.1步进电机正反转的控制步进电机有四相绕组A、B、C、D以及公共端,当其中某一相绕组通电时在电动机内部形成NS极,产生磁场,当通电的相发生变化,磁场发生旋转,在磁场的作用下,转子将转动,若步进电机按单双八拍的方式来工作,则在、B、C、D相绕组上输入脉冲的顺序为AABBBCCCDDDAA:此时步进电机沿顺时针方向转动,即正转,若在、B、C、D各相绕组上依次输入脉冲AADDDCCCBBBAA:此时步进电机将沿逆时针方向旋转,因此只要控制脉冲输出顺序,就可以控制电机的正、反转。同时加入了限位值保护,当电机到达限位值时,自动停止运行,确保人身及机械设备的安全。2.2.2键盘检测P3口内

9、部集成了上拉电阻,所以只需将每根接口线通过开关接地,检测P3口的电平数据,即可判断出是哪个键被按下,同时执行相对应的操作。2.2.3串行口通信单片机的串行口由两个数据缓冲寄存器SBUF和一个输入移位寄存器组成,内部还有一个串行控制寄存器SCON和一个波特率发生器。接收与发送缓冲寄存器占用同一个地址99H,其名称同样为SBUF。CPU写SBUF操作,一方面修改发送寄存器,同时启动串行数据发送;读SBUF操作,就是读接收寄存器,完成数据的接收。特殊功能寄存器SCON用以存放串行口的控制和状态信息。根据对其写的控制字决定工作方式,从而决定波特率发生器的时钟源是来自系统时钟还是来自定时器T1。特殊功能

10、寄存器PCON的最高位SMOD为串行口波特率的倍增控制位。表2-1串行口的控制寄存器SCONSM0SM1SM2RENTB8RB8TIRI方式选择多机控制串行接收允许/禁止欲发的第9位收到的第9位发送中断有/无接收中断有/无SM0,SM1:为串行口工作方式控制位。共对应四种工作方式,在本设计中选用方式2:波特率固定11位异步通信方式,TXD为串行数据的发送端,RXD为串行数据的接收端。每帧数据为11位:1个起始位“0”,9个数据位和1个停止位“1”。发送时,第9个数据位由SCON寄存器的TB8位提供,接收到的第9位数据存放在SCON寄存器的RB8位。波特率固定为: 波特率=(2SMOD * fO

11、SC)/642.2.4动态显示步进电机当前位置通过串行口发送至主机后,主机处理当前位置信息,并通过四位八段共阳极数码管显示出来,为了节约系统输入输出口资源,输出使用动态显示过程,通过段选和位选达到一次仅使一位数码管亮起,但因为单片机速度极快以及人眼的视觉暂留原理,使人看上去像是四位数码管在同时亮起。3系统硬件设计单片机最小系统或者成为最小应用系统,是指用最少的元件组成的单片机可以工作的系统,对51系列单片机来说,最小系统一般包括:单片机、复位电路、晶振电路。本控制系统中包含六个部分:复位及时钟模块、主控模块、按键模块、通信模块、驱动模块、显示模块。用按键模块来输入要执行的命令,即正反停,单步运

12、行及复位;通过主机主控模块及所对应的汇编程序,通过通信模块将命令传送给从机,从机通过驱动模块控制步进电机按照命令运转,并将当前位置通过通信模块传递至主机,主机通过显示模块显示当前位置。3.1时钟及复位模块引脚18和19接上一个12MHz的晶振及两个22pF的瓷介电容为单片机提供时钟信号。单片机RST通过10uF电容接至VCC,实现上电自复位,同时通过按键开关接至VCC,实现运行中手动复位,增加系统可靠性。图3-1 时钟及复位模块电路图3.2按键模块按键模块有六个按钮:停止按钮(STOP)、正转按钮(POS)、反转按钮(NEG)、单步正转(POS_ONE)、单步反转(NEG_ONE),复位(RE

13、SET)分别控制电机的停止、正转、反转、单步正转、单步反转、返回机械零点。分别与AT89C51的P3.2(引脚12)、P3.3(引脚13)、P3.4(引脚14)、P3.5(引脚15)、P3.6(引脚16)、P3.7(引脚17)相连接,另一端都接地。当按下一个键时,使对应的引脚处产生低电平。 图3-2 按键模块电路图按下不同的按键,从P3口可以得到不同的数值,不同的数值对应不同的键被按下,被按下的键对应位为“0”,未被按下的键对应位为“1”,通过比对数值,可以判断出输入了哪种指令,从而进行相应的处理。不同按键对应数值如下表表3-1 按键对应数值按键STOPPOSNEGPOS_ONENEG_ONE

14、RESETP口数据FBF7EFDFBF7F3.3驱动模块单片机的驱动电路主要是用ULN2003A芯片来驱动。ULN2003A芯片是一个7路反相器,即第1到7引脚输入端为低电平时,对应输出端第16到10引脚输出为高电平,反之亦然。第9引脚COM提供工作电压,本设计中引脚1、2、3、4分别与AT89C51芯片的P3.7、P3.6、P3.5、P3.4口相连接,电动机中间引脚直接与12V电压相接,目的是驱动电动机,使其正常工作。图3-3 步进电机驱动模块电路图四相八拍式励磁法可以使步进电机运行更加平稳,步进角进一步减小,提高精确度,本设计中使用单极四相电机,采用四相八拍工作方式,励磁表如下表3-2 四

15、相八拍励磁表励磁顺序:AABBBCCCDDDAA顺序12345678A11000001B01110000C00011100D000001113.4通信模块串行通信是CPU与外界交换信息的一种基本方式。单片机应用与工业控制时,往往作为前端机安装在工业现场,远离主机,现场数据采用串行通信方式发往主机进行处理,以降低通信成本,提高通信可靠性。RS-232C采用的是EIA电平,在TXD和RXD数据线上,逻辑1(MARK)=-3-15V;逻辑0(SPACE)=+3+15V。很明显,RS-232C的EIA标准是以正负电压来表示逻辑状态的,与TTL以高低电平表示逻辑状态的规定不同,因此,为了能够使主从单片机

16、通过RS-232C串行口通信,并延长通信距离,必须在EIA电平与TTL电平之间进行电平变换。美国MAXIM公司的MAX232芯片可完成TTL和EIA之间的双向电平转换,MAX232内部有电压倍增电路和转换电路,并可同时进行两路双向转化,功能强大,且只需要单一+5V电源,因此获得广泛应用。转换后的信号通过RS-232的D型9针连接口输出,最少仅需3根通信线即可进行串行通信,也可购买双绞通讯线进行两机直连,使连接更加方便,并增加通信可靠性。图3-4 MAX232通信模块电路图3.5显示模块每个八位数码管需占用8根数据线,为了节约系统资源,本设计选用段选+位选的方式控制一个四位八段共阳极数码管。共阳

17、极数码管的1、2、3、4位选信号由P1.0P1.3信号经PNP三极管放大反相后送至位选输入口。因单片机P0口内部无上拉电阻,故将P0口经过10K的排阻上拉至VCC,P0作为段选数据的输入,送至数码管的段选接口,通过位选选择显示位,通过段选选择显示的数据,可以完成步进电机当前位置的显示。采用动态显示时需要注意以下3点:由于每一位八段数码管的点亮时间很短,扫描过程中要确保每一位数码管得到足够的工作电流,从而确保亮度,故位选信号经三极管放大并反相后送入数码管。在切换下一位的八段数码管时,应把上一位熄灭,再将下一位显示数据送出,防止显示数据出现残影。点亮一遍所有数码管的时间应尽量小于0.1s,以保证足

18、够短的时间,使眼睛产生各位数码管同时显示的错觉。图3-5 四位八段数码管显示模块电路图4系统软件设计根据实际需要和设计要求,系统软件部分设计主要可分为:主机:键盘扫描程序,显示程序,发送程序,接收程序。从机:接收程序,步进电机控制程序,发送程序。4.1主机程序设计主机,作为人机交互的设备,承担着接收命令,将命令发送给从机,接收从机返回的数据,显示数据,任务繁重。为了确保数码管显示的连续性,主机上电初始化后循环调用显示子程序和键盘扫描程序,一旦检测到有键被按下,即进行判断与存储键值,并将此值发送至从机,随后返回主程序,重复显示与检测键盘。接收程序选择中断的形式进行,一旦有数据被接收,即触发串行通

19、信中断,将从机发来的数据进行处理,将8位二进制数转化为有符号十进制数据,并刷新显示内存,在下一个显示周期中即被显示出来,此法仅需处理一次数据,不需要在每次显示时进行运算,加快了处理速度,节约了系统资源。主机运行流程图如下所示:YNNNYY图4-1 主机程序流程图4.1.1显示子程序因为采用扫描显示,主程序需要逐个将显示内存的数据输送至P0口,配合P1的位选,进行扫描显示MOV DPTR, #TABLE ;将DPTR指向显示表首地址DISPLAY: ;显示子程序JB 0D5H, TWO ;如果0D5H为1,即正数,则直接显示第二位,不显示符号ONE: ;第一位(符号位)MOV A, #0AH ;

20、将A赋值为0AF,即指向表中的负号位 MOVC A, A+DPTR ;变址寻址,将显示数据存入AMOV P0, A ;将显示数据送至P0口CLR 90H ;90H清零,即第一位送低电平,经PNP三极管反相后,即选中第一位数码管 CALL DELAY ;调用延时,保留显示1ms SETB 90H ;90H置1,关闭显示 MOV P0, #0FFH ;P0口送0FFH,保证数码管全灭TWO: MOV A, 21H ;将21H中的数据存入ACC,即百位 MOVC A, A+DPTR ;变址寻址,将显示数据存入A MOV P0, A ;将显示数据送至P0口CLR 91H ;91H清零,即第二位送低电平

21、,经PNP三极管反相后,即选中第二位数码管 CALL DELAY ;调用延时,保留显示1ms SETB 91H ;91H置1,关闭显示 MOV P0, #0FFH ;P0口送0FFH,保证数码管全灭THREE: MOV A, 22H ;将22H中的数据存入ACC,即十位 MOVC A, A+DPTR ;变址寻址,将显示数据存入A MOV P0, A ;将显示数据送至P0口 CLR 92H ;92H清零,即第三位送低电平,经PNP三极管反相后,即选中第三位数码管 CALL DELAY ;调用延时,保留显示1ms SETB 92H ;92H置1,关闭显示 MOV P0, #0FFH ;P0口送0F

22、FH,保证数码管全灭FOUR: MOV A, 23H ;将23H中的数据存入ACC,即个位 MOVC A, A+DPTR ;变址寻址,将显示数据存入A MOV P0, A ;将显示数据送至P0口 CLR 93H ;93H清零,即第三位送低电平,经PNP三极管反相后,即选中第三位数码管 CALL DELAY ;调用延时,保留显示1ms SETB 93H ;93H置1,关闭显示 MOV P0, #0FFH ;P0口送0FFH,保证数码管全灭 RETDELAY: MOV R6, #2 ;12M晶振延时1msD1: MOV R7, #248 DJNZ R7, $ DJNZ R6, D1 RETTABL

23、E: ;数据表分别为共阳极数码管显示09和负号的数据 DB 0C0H, 0F9H, 0A4H, 0B0H, 099H DB 092H, 082H, 0F8H, 080H, 090H, 0BFH4.1.2按键扫描处理子程序单片机读取按键并与上一个发送的键值比对,如果一致则不发送,保证了按一次键仅发送一次,避免了重复发送造成单片机进入死循环。CAL: ;转化并判断是否有键被按下,如果有,则发送数据,如果没有继续初始化 MOV A, P3 ;读取按键 ANL A, #0FCH ;保存高六位数据COMPARE: CJNE A, 30H, SAVE ;与上一个按键比对,如果不一致,跳转至SAVE子程序

24、SJMP START ;如果与上一个按键一致,返回STARTSAVE: MOV 30H,A ;将A中的数据存入30H CJNE A, #0FCH, SEND ;如果A中数据不为0FCH,即有键被按下,跳转至发送子程序 SJMP START ;如果A中数据为0FCH,即无键被按下,返回主程序SEND: ;发送数据(没有通信协议) CALL SEND_DELAY ;调用延时子程序 MOV A, 30H ;将当前键值送入A MOV SBUF,A ;将当前键值送入SBUF,单片机自动发送 JMP START ;返回至主程序SEND_DELAY: ;12M晶振时延时0.1ms MOV R5, #19HD

25、L1: NOP NOP DJNZ R5, DL1 RET4.1.3中断与计算子程序当单片机收到串行口中断时,自动寻找中断程序入口地址0023H,随后跳转至ANALY子程序,进行中断的判断,如果是发送中断,则清TI并返回到断点,如果是接收中断,则响应中断,清RI并将SBUF中的数据保存,同时将8位二进制数据转换为3位有符号十进制数据,刷新显示内存,刷新后的数据将在下一个显示周期被显示出来。ORG 0023H ;串行口中断程序入口跳转JMP ANALYANALY: ;中断分析程序 JB TI, CLRTI ;如果是发送中断,跳转至CLRTI JB RI, RECEIVE ;如果是接收中断,跳至RE

26、CEIVE RETI ;中断返回CLRTI: CLR TI ;发送中断,清TI JMP ANALY ;返回中断分析程序RECEIVE: CLR RI ;接收中断,清RI,处理中断请求 MOV A, SBUF ;将SBUF中的数据读取至ACC MOV 20H, A ;将返回的当前位置存至20H CPL A ;将A中的值取反,在八位LED上显示 MOV P2, A ;将取反后的当前位置值显示在八位LED上 JB 07H, POS ;若当前位置首位为1,即正数,跳至POS SJMP NEG ;否则当前位置首位为0,即负数,跳至NEGPOS: SETB 0D5H ;将标志位0D5H置1,表明数据为正数

27、 CALL CALCULATION ;调用计算子程序 JMP ANALY ;跳回中断分析程序NEG: CLR 0D5H ;将标志位0D5H清0,表明数据为负数 MOV A, 20H ;将当前位置值放入A CLR CY ;清CY,为计算减法做准备 SUBB A, #1 ;当前位置减1 JB CY, NEG_OVER ;判断是否溢出,如果溢出,说明当前位置为下限,即-128CPL A ;如果未溢出,说明数据正常,对A取反,得到其绝对值 MOV 20H, A ;将当前位置的绝对值存入20H,符号位在0D5H CALL CALCULATION ;调用计算子程序,将8位二进制数转化为3位二进制数 JMP

28、 ANALY ;跳回中断分析程序NEG_OVER: ;当前位置-1溢出,说明为00H,即-128,将128分别放入对应的显示内存 MOV 21H, #1 MOV 22H, #2 MOV 23H, #8 JMP ANALYCALCULATION: ;计算子程序,将8位二进制转化为3位十进制 MOV A, 20H ;将当前位置放入ACC ANL A, #7FH ;去除符号位,准备进行运算 MOV 20H, A ;存回20H MOV A, #100 ;将#100放入B中,作为除数 MOV B, A MOV A, 20H ;将20H放入A中,作为被除数 DIV AB ;进行除法运算 MOV 21H,

29、A ;将商放入21H即百位 MOV A, B ;将余数放入22H暂时存储,准备下次运算 MOV 22H, A MOV A, #10 ;将#10放入B中,作为除数 MOV B, A MOV A, 22H ;将上次运算的商放入ACC,作为被除数 DIV AB ;进行除法运算 MOV 22H, A ;将商放入22H即十位 MOV A, B MOV 23H, A ;将余数放入23H即个位 RET4.2从机程序设计从机远离主机,双单片机通过串行通信方式进行通信,以提高通信可靠性,降低通信成本。因此从机需要通过串行口获取指令,控制步进电机,并将当前位置实时传递至主机。从机上电初始化后重复检测是否有指令被送入内存,如果有,则通过调用相关子程序控制步进电机运动,每运行一步都会将当前位置送回主机。从机还

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1