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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

基于8255的步进电机控制系统设计docWord文档下载推荐.docx

1、因此,必须有一个与之匹配的驱动电路来驱动步进电动机。对步进电动机驱动一般有如下要求:(1) 能够提供较快的电流上升和下降速度,使电流波形尽量接近矩形。(2) 具有供截止期间释放电流流通的回路,以降低绕组两端的反电动势,加快电流衰减。(3) 具有较高的功率及效率。步进电动机的驱动方式很多,如单极性驱动、双极性驱动、高低压驱动、斩波驱动、细分驱动、集成电路驱动等。三、步进电机的控制1. ULN2003由于集成电路集驱动和保护于一体,作为小功率步进电动机的专用驱动芯片, ULN2003 是高耐压、大电流达林顿陈列,由七个硅NPN 达林顿管组成。 该电路的特点如下: ULN2003 的每一对达林顿都串

2、联一个2.7K 的基极电阻,在5V 的工作电压下它能与TTL CMOS 电路 直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。 ULN2003 工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V 的电压,输出还 可以在高负载电流并行运行。ULN2003A在各种控制电路中常用它作为驱动继电器的芯片,其芯片内部做了一个消线圈反电动势的二极管。ULN2003的输出端允许通过IC 电流200mA,饱和压降VCE 约1V左右,耐压BVCEO 约为36V。输出电流大,故可以用来直接驱动步进电机。项目符号数值单位最大输入电压Vi(max)30V集电极-发射极电压Vo(max)

3、50最大基极输入电流IB(MAX)25mA输出电流Io500贮存温度Ts-65150结温Tj175引线耐焊接温度TD3002、脉冲的形成实现对步进电机的控制,微机应能输出有一定周期的控制脉冲。 步骤是:先输出一个高电平,延时一段时间后,再输入一个低电平,然后再延时。改变延时时间的长短,即可改变脉冲的周期,脉冲的周期由步进电机的工作频率确定。用软件形成环形脉冲的程序流程图 3、正反转控制步进电机的旋转方向和内部绕组的通电顺序及通电方式有密切关系。通过改变各相脉冲的先后顺序,就可以改变电机的旋转方向.4、转速控制 控制步进电机的运行速度,实际上是控制系统发出时钟脉冲的频率或换相的周期,即在升速过程

4、中,使脉冲的输出频率逐渐增加;在减速过程中,使脉冲的输出频率逐渐减少。脉冲信号的频率可以用软件延时和硬件中断两种方法来确定。 采用软件延时,一般是根据所需的时间常数来设计一个子程序,该程序包含一定的指令,设计者要对这些指令的执行时间进行严密的计算或者精确的测试,以便确定延时时间是否符合要求。每当延时子程序结束后,可以执行下面的操作,也可用输出指令输出一个信号作为定时输出。采用软件定时, CPU一直被占用,因此CPU利用率低。可编程的硬件定时器直接对系统时钟脉冲或某一固定频率的时钟脉冲进行计数,计数值则由编程决定。当计数到预定的脉冲数时,产生中断信号,得到所需的延时时间或定时间隔。由于计数的初始

5、值由编程决定,因而在不改动硬件的情况下,只通过程序变化即可满足不同的定时和计数要求,因此使用很方便。五、硬件连接图六、 程序设计1、程序流程图 2、程序代码:;*本程序能实现步进电机的正反转与加速,具体过程如下:正转加速一段时间,然后停止5秒,然后反向加速一段时间,然后再正转,如此循环往复.能实现正-停-反,也能实现正-反-停.MODE EQU 080H ;8255方式控制字CTL EQU 8000H ;8255端口A地址CONTRL EQU 8003H ;8255控制寄存器地址A EQU 01HB EQU 02HC EQU 04HD EQU 08HQS EQU 300 ;步进电机转过的圈数D

6、ATA SEGMENT DLY_C DW 0 ;DLY_C用以控制延时的长短以实现步进电机的加速 SOURCE DB A,A+B,B,B+C,C,C+D,D,D+A ;步序表,使电机的工作方式为单/双8拍DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA ;初始化数据段 MOV DS,AX* 初始化8255,使8255的A口输出. MOV DX,CONTRL ;8255的控制寄存器地址送DX MOV AL,MODE ;8255的A口输出,故初始化控制字为80H OUT DX,AL ;将控制字从8255输出以配置8255的工

7、作方式 MOV DX,CTL ;将A口地址送DX MOV AL,0 ;将0送AL8255的端口写0以实现初始化 MOV DLY_C,300H ;延时初始值 MOV CX,QS ;将步进电机的圈数300送CX以下程序段实现的功能是让电机正向加速,速度达到最大值后匀速转动.ZZ:MOV BX,0 ;将0送BX,让电机的初始步为ANEXT1:MOV DX,CTL ;将8255的A口地址送DX MOV AL,SOURCEBX ;将电机的步序送AL OUT DX,AL ;将步序表中的第一个步序通过A口输出 CALL DELAY ;调用延时子程序,用来控制电机转速 INC BX ;BX加1,为取下一个步序

8、做准备 CMP BX,7 JBE NEXT1 ;判断电机是否已经走完8拍 PUSH CX ;保存CX的值,因为下面还要用到CX MOV CX,DLY_C ;将DLY_C的值送CX DEC CX ;CX(即DLY_C)减1以实现加速 CMP CX,100H ;CX与100H比较,判断电机转速是否已经达到最大值 JNE NN1 ;若电机转速尚未达到最大值,则转向NN1 INC CX ;若电机转速已经达到最大值,则CX加1以实现电机匀速转动NN1:MOV DLY_C,CX ;将CX的值送DLY_C以实现在一个循环 POP CX ;恢复CX LOOP ZZ ;CX减1,让电机转下一圈以下代码段调用5次

9、延时子程序以实现延时5秒.正式调试时时间稍大于5秒,可见用软件延时不能实现精确延时.TZ: MOV AL,0 ;将0从A口输出,使电机静止不转 CALL DELAY1S ;调用5次延时1秒子程序,总共延时5秒 CALL DELAY1S反转加速一段时间,过程与正向加速类似,速度达到最大值后匀速转动.将步进电机的圈数送CX,使电机反转300圈FZ:MOV BX,7 ;将7送BX使电机反转的初始相序为D+ANEXT2: MOV DX,CTL ;将步序表中的第八个步序通过A口输出,以控制电机反转 DEC BX ;BX减1,为取下一个步序做准备 CMP BX,0 JGE NEXT2 ;判断电机是否已经反

10、向走完8拍 PUSH CX ; DEC CX ; CMP CX,100H ; JNE NN2 ;NN2: MOV DLY_C,CX ; POP CX ; LOOP FZ ; JMP START ;无条件转到START处以实现下一个循环该延时子程序用于控制电机转速若DLY_C减少,则延时时间将减少,则电机转速增加,反之亦然.DELAY PROC NEAR PUSH CX ;保存CX,因为下面还要用到CX将DLY_C的值送CX以控制延时的长短DD1:NOP ;空操作,用于延时,可以用NOP指令的数目控制延时的长短 NOP LOOP DD1 ;CX减1,若不为0则转向DD1,否则跳出循环 POP C

11、X ; RET ;子程序返回DELAY ENDP8086延时1S子程序,用执行PUSHF和POPF指令来延时之所以选择这两条指令,主要是由于这两条指令执行时间比较长DELAY1S PROC NEAR PUSHF ;把标志寄存器的内容保存到堆栈中去 PUSH BX ;保存BX保存CX MOV BX,3E8H ;将3E8H送BX,用于控制外循环次数LP2: MOV CX,0BAH ;将0BAH送CX,用于控制内循环次数LP1: POPF ;将保护的FLAG内容恢复,这两条指令主要是用于延时 LOOP LP1 ;CX减1,不为0则转至LP1处执行 DEC BX ;BX减1 JNZ LP2 ;不为0则

12、转至LP2处执行 POP BX ;恢复BX将保护的FLAG内容恢复DELAY1S ENDPCODE ENDS END START3、 实验的实现 1、连接计算机与实验箱,按电路图将实验箱内部各个芯片和接口连接。 2、然后打开计算机,执行WAVE集成调试软件,设置8086硬件仿真器。 3、新建文件,编写程序,并以.ASM扩展名保存。 4、对程序进行汇编,汇编无误后,单击全速执行,然后查看运行结果。 5、若步进电机运行不正常,则需检查程序的功能是否有误,直至达到期望结果为止。七、实验设计总结这是一个综合性实验,也是我做得比较成功的一个微机接口实验之一。通过做该实验,使我受益匪浅,特别是对用8086

13、 CPU去控制步进电机有了进一步的认识,对步进电机的原理也有了比较深的了解。主要表现在以下几个方面: 1、对控制步进电机(比如正转,反转,停止,加速,减速)有了初步的认识。步进电机并不像普通的直流电机,交流电机那样在常规下使用, 步进电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响。因此,用8086控制步进电机不能像控制其它电机一样。以前在杂志上看到,电脑的软驱就是用步进电机带动软盘转动的,我也亲手拆下过里面的步进电机,但是对步进电机的工作原理,以及计算机是怎么控制步进电机的并不了解。通过做这个综合性实验,我对这些有了一个初步的认识。 2、实验大部分的源代码都是我自己

14、写的,花了大概一个晚上的时间。在做实验之前多已经把源代码输入计算机并在WAVE上通过软件仿真的形式调试通过。这样,在正式做实验时我拥有了充足的时间去调试和改进,并在实验时间结束时成功实现了大部分功能。通过该实验,我认为不管做什么实验都必须提前预习,了解实验的基本原理,这样才能把实验做好。 3、我认为做这个实验最成功的地方就是用步序表去做,从而避免了后面大量冗余重复的代码,从而简化了代码。但是这样必须用一些比较复杂的指令以及多重循环,增加编程的难度,但使程序更加简洁。 4、通过做这个实验我发,延时子程序延时的长短很难控制。比如步进电机的加速用到了延时,如果延时时间过短,那么观察时用肉眼很难看到转

15、速在增加,因为加速过程太短了。因此在编程中我写了好几个备用的延时子程序,其中有一个是前面的跑马灯中复制过来的,还有一个是我微控制器(即MC68HC908GP32单片机)中的延时子程序改为8086汇编得到的,只要修改其中的参数应该能控制延时的长短。看来用软件延时的方法很难实现精确延时。 5、有同学完全复制我的代码却没有观察到应有的现象,取而代之的是电机左右摆动。我们的第一反应是电机可能坏了,但最终检查的结果却是线接反了。因此,在做实验时我们应该细心一点,否则一根线接错,或者一个字母输错可能会浪费我们宝贵的时间去检查错误。6、在做实验前我用WAVE软件仿真功能进行调试,并用观察寄存器的变化情况来推测实验结果。我认为这一点很重要,因为在以后的工作过程中我们不可能任何项目都用实验板去仿真调试,因此我们必须先用软件仿真成功后才动手去芯片上调试。这样我们才能节省时间并避免损坏硬件等意外情况。

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

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