基于8255的步进电机控制系统设计_第1页
基于8255的步进电机控制系统设计_第2页
基于8255的步进电机控制系统设计_第3页
基于8255的步进电机控制系统设计_第4页
基于8255的步进电机控制系统设计_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、 微机原理与接口综合实验基于8255的步进电机控制系统设计一、实验设计的目的与要求通过步进电机控制系统实验设计,用8255扩展端口控制步进电机,编写程序输出脉冲序列到8255的pa口,控制步进电机正传,反转,加速,减速。进一步掌握微机原理与接口的理论和实际方法。培养和锻炼开发控制系统的能力。为今后单片机的学习与应用开发打下良好的基础。要求了解步进电机控制的基本原理,掌握控制步进电机的转动的编程方法,进一步了解单片机控制外部设备的常用电路。二、步进电机原理1.步进电机的工作原理 该步进电机为一四相步进电机,采用单极性直流电源供电。只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。

2、图1是该四相反应式步进电机工作原理示意图。图1 四相步进电机步进示意图开始时,开关sb接通电源,sa、sc、sd断开,b相磁极和转子0、3号齿对齐,同时,转子的1、4号齿就和c、d相 绕组磁极产生错齿,2、5号齿就和d、a相绕组磁极产生错齿。当开关sc接通电源,sb、sa、sd断开时,由于c相绕组的磁力线和1、4号齿之间磁力线的作用,使转子转动,1、4号齿和c相绕组的磁极对齐。而0、3号齿和a、b相绕组产生错齿,2、5号齿就和a、d相绕组磁极产生错齿。依次类推,a、b、c、d四相绕组轮流供电,则转子会沿着a、b、c、d方向转动。四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作

3、方式。单四拍与双四拍的步距角相等,但单四拍的转动力矩小。八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。单四拍、双四拍与八拍工作方式的电源通电时序与波形分别如图2.a、b、c所示:图2.步进电机工作时序波形图a. 单四拍                      b. 双四拍    

4、0;               c八拍2.步进电机的驱动原理步进电动机是一种数字元件,易于数字电路接口,但一般数字电路的信号的能量远远不足以驱动步进电动机。因此,必须有一个与之匹配的驱动电路来驱动步进电动机。对步进电动机驱动一般有如下要求:(1) 能够提供较快的电流上升和下降速度,使电流波形尽量接近矩形。(2) 具有供截止期间释放电流流通的回路,以降低绕组两端的反电动势,加快电流衰减。(3) 具有较高的功率及效率。步进电动机的驱动方式很多,如单

5、极性驱动、双极性驱动、高低压驱动、斩波驱动、细分驱动、集成电路驱动等。三、步进电机的控制1. uln2003由于集成电路集驱动和保护于一体,作为小功率步进电动机的专用驱动芯片, uln2003 是高耐压、大电流达林顿陈列,由七个硅npn 达林顿管组成。 该电路的特点如下: uln2003 的每一对达林顿都串联一个2.7k 的基极电阻,在5v 的工作电压下它能与ttl cmos 电路 直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。 uln2003 工作电压高,工作电流大,灌电流可达500ma,并且能够在关态时承受50v 的电压,输出还 可以在高负载电流并行运行。uln2003a在各种

6、控制电路中常用它作为驱动继电器的芯片,其芯片内部做了一个消线圈反电动势的二极管。uln2003的输出端允许通过ic 电流200ma,饱和压降vce 约1v左右,耐压bvceo 约为36v。输出电流大,故可以用来直接驱动步进电机。项目符号数值单位最大输入电压vi(max)30v集电极-发射极电压vo(max)50v最大基极输入电流ib(max)25ma输出电流io500ma贮存温度ts-65150结温tj175引线耐焊接温度td3002、脉冲的形成实现对步进电机的控制,微机应能输出有一定周期的控制脉冲。 步骤是:先输出一个高电平,延时一段时间后,再输入一个低电平,然后再延时。改变延时时间的长短,

7、即可改变脉冲的周期,脉冲的周期由步进电机的工作频率确定。用软件形成环形脉冲的程序流程图 3、正反转控制步进电机的旋转方向和内部绕组的通电顺序及通电方式有密切关系。通过改变各相脉冲的先后顺序,就可以改变电机的旋转方向.4、转速控制 控制步进电机的运行速度,实际上是控制系统发出时钟脉冲的频率或换相的周期,即在升速过程中,使脉冲的输出频率逐渐增加;在减速过程中,使脉冲的输出频率逐渐减少。脉冲信号的频率可以用软件延时和硬件中断两种方法来确定。 采用软件延时,一般是根据所需的时间常数来设计一个子程序,该程序包含一定的指令,设计者要对这些指令的执行时间进行严密的计算或者精确的测试,以便确定延时时间是否符合

8、要求。每当延时子程序结束后,可以执行下面的操作,也可用输出指令输出一个信号作为定时输出。采用软件定时, cpu一直被占用,因此cpu利用率低。可编程的硬件定时器直接对系统时钟脉冲或某一固定频率的时钟脉冲进行计数,计数值则由编程决定。当计数到预定的脉冲数时,产生中断信号,得到所需的延时时间或定时间隔。由于计数的初始值由编程决定,因而在不改动硬件的情况下,只通过程序变化即可满足不同的定时和计数要求,因此使用很方便。五、硬件连接图5实验设计 六、 程序设计1、程序流程图 开始8255初始化设初始延时值输出一拍脉冲(a)延时输出下一个脉冲(b)延时输出下个脉冲(c)输出下一个脉冲(d)延时延时值减小是

9、否提速是否最快否是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 ;步进电机转过的圈数data segment dly_c dw 0 ;dly_c用以控制延时的长短以实现步进电机的加速 source d

10、b 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的工作方式 mov dx,ctl ;将a口地址送dx mov al,0 ;将0送al out dx,al ;

11、8255的端口写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,为取下一个步序做准备 cmp bx,7 jbe next1 ;判断电机是否已经走完

12、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次延时子程序以实现延时5秒.正式调试时时间稍大于5秒,;可见用

13、软件延时不能实现精确延时.;*tz:mov dx,ctl ;将8255的a口地址送dx mov al,0 ;将0送al out dx,al ;将0从a口输出,使电机静止不转 call delay1s ;调用5次延时1秒子程序,总共延时5秒 call delay1s call delay1s call delay1s call delay1s ;*;反转加速一段时间,过程与正向加速类似,速度达到最大值后匀速转动.;* mov dly_c,300h ;延时初始值 mov cx,qs ;将步进电机的圈数送cx,使电机反转300圈fz:mov bx,7 ;将7送bx使电机反转的初始相序为d+anext

14、2: mov dx,ctl ;将8255的a口地址送dx mov al,sourcebx ;将电机的步序送al out dx,al ;将步序表中的第八个步序通过a口输出,以控制电机反转 call delay ;调用延时子程序,用来控制电机转速 dec bx ;bx减1,为取下一个步序做准备 cmp bx,0 jge next2 ;判断电机是否已经反向走完8拍 push cx ;保存cx的值,因为下面还要用到cx mov cx,dly_c ;将dly_c的值送cx dec cx ;cx(即dly_c)减1以实现加速 cmp cx,100h ;cx与100h比较,判断电机转速是否已经达到最大值 j

15、ne nn2 ;若电机转速尚未达到最大值,则转向nn1 inc cx ;若电机转速已经达到最大值,则cx加1以实现电机匀速转动nn2: mov dly_c,cx ;将cx的值送dly_c以实现在一个循环 pop cx ;恢复cx loop fz ;cx减1,让电机转下一圈 jmp start ;无条件转到start处以实现下一个循环;*;该延时子程序用于控制电机转速若dly_c减少,则延时时间将减少,则电机转速增加,;反之亦然.;*delay proc near push cx ;保存cx,因为下面还要用到cx mov cx,dly_c ;将dly_c的值送cx以控制延时的长短dd1:nop

16、;空操作,用于延时,可以用nop指令的数目控制延时的长短 nop nop nop nop nop nop loop dd1 ;cx减1,若不为0则转向dd1,否则跳出循环 pop cx ;恢复cx ret ;子程序返回delay endp;*;8086延时1s子程序,用执行pushf和popf指令来延时;之所以选择这两条指令,主要是由于这两条指令执行时间比较长;*delay1s proc near pushf ;把标志寄存器的内容保存到堆栈中去 push bx ;保存bx push cx ;保存cx mov bx,3e8h ;将3e8h送bx,用于控制外循环次数lp2: mov cx,0bah

17、 ;将0bah送cx,用于控制内循环次数lp1: pushf ;把标志寄存器的内容保存到堆栈中去 popf ;将保护的flag内容恢复,这两条指令主要是用于延时 loop lp1 ;cx减1,不为0则转至lp1处执行 dec bx ;bx减1 jnz lp2 ;不为0则转至lp2处执行 pop cx ;恢复cx pop bx ;恢复bx popf ;将保护的flag内容恢复 ret ;子程序返回delay1s endpcode ends end start14实验设计 3、 实验的实现 1、连接计算机与实验箱,按电路图将实验箱内部各个芯片和接口连接。 2、然后打开计算机,执行wave集成调试软

18、件,设置8086硬件仿真器。 3、新建文件,编写程序,并以.asm扩展名保存。 4、对程序进行汇编,汇编无误后,单击全速执行,然后查看运行结果。 5、若步进电机运行不正常,则需检查程序的功能是否有误,直至达到期望结果为止。七、实验设计总结这是一个综合性实验,也是我做得比较成功的一个微机接口实验之一。通过做该实验,使我受益匪浅,特别是对用8086 cpu去控制步进电机有了进一步的认识,对步进电机的原理也有了比较深的了解。主要表现在以下几个方面: 1、对控制步进电机(比如正转,反转,停止,加速,减速)有了初步的认识。步进电机并不像普通的直流电机,交流电机那样在常规下使用, 步进电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响。因此,用8086控制步进电机不能像控制其它电机一样。以前在杂志上看到,电脑的软驱就是用步进电机带动软盘转动的,我也亲手拆下过里面的步进电机,但是对步进电机的工作原理,以及计算机是怎么控制步进电机的并不了解。通过做这个综合性实验,我对这些有了一个初步的认识。 2、实验大部分的源代码都是我自己写的,花了大概一个晚上的时间。在做实验之前多已经把源代码输入计算机并在wave上通过软件仿真的形式调试通过。这样,在正式做实验时我拥有了充足的时间去

温馨提示

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

最新文档

评论

0/150

提交评论