单片机课程设计(论文)-开关控制步进电机正反转.doc_第1页
单片机课程设计(论文)-开关控制步进电机正反转.doc_第2页
单片机课程设计(论文)-开关控制步进电机正反转.doc_第3页
单片机课程设计(论文)-开关控制步进电机正反转.doc_第4页
单片机课程设计(论文)-开关控制步进电机正反转.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

绪论步进电机是机电控制中一种常用的执行机构,它的用途是将电脉冲转化为角位移,通俗地说:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。在数控机床、医疗器械、仪器仪表、机器人以及其他自动设备中得到了广泛应用,我们使用的计算机外围的一些设备,如软驱、打印机、扫描仪等其运动部件的控制都采用了步进电机。常见的步进电机分三种:永磁式(pm),反应式(vr)和混合式(hb),永磁式步进一般为两相,转矩和体积较小,步进角一般为7.5度或15度;反应式步进一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。在欧美等发达国家80年代已被淘汰;混合式步进是指混合了永磁式和反应式的优点。它又分为两相和五相:两相步进角一般为1.8度而五相步进角一般为 0.72度。这种步进电机的应用最为广泛。目录1 设计目的32 硬件电路设计及描述32.1确定元器件的型号及参数32.1.1 at89c51 单片机32.1.2 uln2003芯片52.2 步进电机72.2.1 永磁式步进电机72.2.2 步进电机原理以及原理图82.2.3 功能说明92.2.4步进电机的静态指标术语92.2.5 步进电机动态指标及术语:103 程序设计113.1 编程113.2 流程图123.3 程序清单133.3.1 代码详解153.3.2 程序分析154 参考文献165 结束语171 设计目的步进电机若加入适当的脉冲信号时,转子则会以一定的步数转动。如果加入连续的脉冲信号,步进电机就会连续转动,转动的角度与脉冲频率成正比,正、反转可由脉冲的顺序来控制。本程序通过k1、k2和k3三个按钮开关控制步进电机转动和改变转向,电动机使用1-2相激磁,编程时采用制表的方法。正转和反转的脉冲信号频率是相通的,但由于使用激磁方式不一样,反转使用了1-2相激磁法,故反转速度为正转的一半。2 硬件电路设计及描述2.1确定元器件的型号及参数2.1.1 at89c51 单片机 at89c51是一种带4k字节闪烁可编程可擦除只读存储器的低电压,高性能cmos8位微处理器,俗称单片机。at89c2051是一种带2k字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以擦除100次。该器件采用atmel高密度非易失存储器制造技术制造,与工业标准的mcs-51指令集和输出管脚相兼容。由于将多功能8位cpu和闪烁存储器组合在单个芯片中,atmel的at89c51是一种高效微控制器,at89c2051是它的一种精简版本。at89c51单片机为很多嵌入式控制系统提供了一种灵活性高且廉价的方案。 图一 at89c51单片机1 主要特性:与mcs-51 兼容 4k字节可编程闪烁存储器 寿命:1000写/擦循环 数据保留时间:10年全静态工作:0hz-24hz三级程序存储器锁定128*8位内部ram32可编程i/o线两个16位定时器/计数器5个中断源 可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路 2. 管脚说明:vcc:供电电压。gnd:接地。p0口:p0口为一个8位漏级开路双向i/o口,每脚可吸收8ttl门电流。当p1口的管脚第一次写1时,被定义为高阻输入。p0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在fiash编程时,p0 口作为原码输入口,当fiash进行校验时,p0输出原码,此时p0外部必须被拉高。p1口:p1口是一个内部提供上拉电阻的8位双向i/o口,p1口缓冲器能接收输出4ttl门电流。p1口管脚写入1后,被内部上拉为高,可用作输入,p1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在flash编程和校验时,p1口作为第八位地址接收。 p2口:p2口为一个内部上拉电阻的8位双向i/o口,p2口缓冲器可接收,输出4个ttl门电流,当p2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,p2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。p2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,p2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,p2口输出其特殊功能寄存器的内容。p2口在flash编程和校验时接收高八位地址信号和控制信号。p3口:p3口管脚是8个带内部上拉电阻的双向i/o口,可接收输出4个ttl门电流。当p3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,p3口将输出电流(ill)这是由于上拉的缘故。p3口也可作为at89c51的一些特殊功能口,如下表所示:口管脚 备选功能p3.0 rxd(串行输入口)p3.1 txd(串行输出口)p3.2 /int0(外部中断0)p3.3 /int1(外部中断1)p3.4 t0(记时器0外部输入)p3.5 t1(记时器1外部输入)p3.6 /wr(外部数据存储器写选通)p3.7 /rd(外部数据存储器读选通)p3口同时为闪烁编程和编程校验接收一些控制信号。rst:复位输入。当振荡器复位器件时,要保持rst脚两个机器周期的高电平时间。 ale/prog:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在flash编程期间,此引脚用于输入编程脉冲。在平时,ale端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ale脉冲。如想禁止ale的输出可在sfr8eh地址上置0。此时, ale只有在执行movx,movc指令是ale才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ale禁止,置位无效。 /psen:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/psen有效。但在访问外部数据存储器时,这两次有效的/psen信号将不出现。 /ea/vpp:当/ea保持低电平时,则在此期间外部程序存储器(0000h-ffffh),不管是否有内部程序存储器。注意加密方式1时,/ea将内部锁定为reset;当/ea端保持高电平时,此间内部程序存储器。在flash编程期间,此引脚也用于施加12v编程电源(vpp)。 xtal1:反向振荡放大器的输入及内部时钟工作电路的输入。xtal2:来自反向振荡器的输出。2.1.2 uln2003芯片单片机的输出电流太小,不能直接连接步进电机,需要加驱动电路。对于电流小于0.5a的步进电机,可以采用uln2003类的驱动ic.如图二所示为2001/2002/2003/2004系列驱动器引脚图,图左边1-7引脚为输入端,接单片机输入端,引脚8接地;右侧10-16引脚为输入端,接步进电机,引脚9接电源+5v,该驱动器可提供最高0.5a的电流 图二 uln2003uln是集成达林顿管ic,内部还集成了一个消线圈反电动势的二极管,可用来驱动继电器。它是双列16脚封装,npn晶体管矩阵,最大驱动电压=50v,电流=500ma,输入电压=5v,适用于ttl coms,由达林顿管组成驱动电路。 uln是集成达林顿管ic,内部还集成了一个消线圈反电动势的二极管,它的输出端允许通过电流为200ma,饱和压降vce 约1v左右,耐压bvceo 约为36v。用户输出口的外接负载可根据以上参数估算。采用集电极开路输出,输出电流大,故可直接驱动继电器或固体继电器,也可直接驱动低压灯泡。通常单片机驱动uln2003时,上拉2k的电阻较为合适,同时,com引脚应该悬空或接电源。 uln2003是一个非门电路,包含7个单元,但独每个单元驱动电流最大可达350ma.,9脚可以悬空。 比如1脚输入,16脚输出,你的负载接在vcc与16脚之间,不用9脚。 uln2003的作用: uln2003是大电流驱动阵列,多用于单片机、智能仪表、plc、数字量输出卡等控制电路中。可直接驱动继电器等负载。 输入5vttl电平,输出可达500ma/50v。 uln2003是高耐压、大电流达林顿陈列,由七个硅npn达林顿管组成。 该电路的特点如下: uln2003的每一对达林顿都串联一个2.7k的基极电阻,在5v的工作电压下它能与ttl和cmos电路 直接相连,可以直接处理原先需要标准逻辑缓冲器。 uln2003 是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。uln2003 是高耐压、大电流、内部由七个硅npn 达林顿管组成的驱动芯片。 经常在以下电路中使用,作为: 1、显示驱动2、继电器驱动3、照明灯驱动4、电磁阀驱动5、伺服电机、步进电机驱动等电路中。uln2003 的每一对达林顿都串联一个2.7k 的基极电阻,在5v 的工作电压下它能与ttl 和cmos 电路直接相连,可以直接处理原先需要标准逻辑缓冲器来 处理的数据。uln2003 工作电压高,工作电流大,灌电流可达500ma,并且能够在关态时承受50v的电压,输出还可以在高负载电流并行运行。uln2003 的封装采用dip16 或sop16 下表列出了该电机的一些典型参数:型号步距角相数电压电流电阻最大静转矩定位转矩转动惯量35by48s037.54120.2647180652.5有了这些参数,不难设计出控制电路,因其工作电压为12v,最大电流为0.26a,因此用一块开路输出达林顿驱动器(uln2003)来作为驱动,通过 p1.4p1.7来控制各线圈的接通与切断,电路如图3所示。开机时,p1.4p1.7均为高电平,依次将p1.4p1.7切换为低电平即可驱动步进电机运行,注意在切换之前将前一个输出引脚变为高电平。如果要改变电机的转动速度只要改变两次接通之间的时间,而要改变电机的转动方向,只要改变各线圈接通的顺序。2.2 步进电机2.2.1 永磁式步进电机 下面以电子爱好者业余制作中常用的永磁式步进电机为例,来介绍如何用单片机控制步进电机。 图三是该电机的接线图,从图中可以看出,电机共有四组线圈,四组线圈的一个端点连在一起引出,这样一共有5根引出线。要使用步进电机转动,只要轮流给各引出端通电即可。将com端标识为c,只要ac、c、bc、c,轮流加电就能驱动步进电机运转,加电的方式可以有多种,如果将com端接正电源,那么只要用开关元件(如三极管),将a、b、轮流接地。图三35by48s03型步进电机的接线图 2.2.2 步进电机原理以及原理图 电路设计如图四所示。k1、k2和k3按钮开关分别接在单片机的p3.2p3.4引脚上,作为控制信号的输入端,输入端直接采用uln2003驱动电路控制步进电机的转向。 图四 开关控制步进电机的电路原理图 2.2.3 功能说明单片机的p3.2p3.4引脚分别接有按钮开关k1、k2和k3,用来控制步进电机的转向。开始供电时,步进电机停止。按k1时,电动机正转;按k2时,电动机反转。按k3时,电动机停止转动。2.2.4步进电机的静态指标术语相数:产生不同对极n、s磁场的激磁线圈对数。常用m表示。拍数:完成一个磁场周期性变化所需脉冲数或导电状态用n表示,或指电机转过一个齿距角所需脉冲数,以四相电机为例,有四相四拍运行方式即ab-bc-cd-da-ab,四相八拍运行方式即 a-ab-b-bc-c-cd-d-da-a.步距角:对应一个脉冲信号,电机转子转过的角位移用表示。=360度(转子齿数j*运行拍数),以常规二、四相,转子齿为50齿电机为例。四拍运行时步距角为=360度/(50*4)=1.8度(俗称整步),八拍运行时步距角为=360度/(50*8)=0.9度(俗称半步)。定位转矩:电机在不通电状态下,电机转子自身的锁定力矩(由磁场齿形的谐波以及机械误差造成的)静转矩:电机在额定静态电作用下,电机不作旋转运动时,电机转轴的锁定力矩。此力矩是衡量电机体积(几何尺寸)的标准,与驱动电压及驱动电源等无关。 虽然静转矩与电磁激磁安匝数成正比,与定齿转子间的气隙有关,但过份采用减小气隙,增加激磁安匝来提高静力矩是不可取的,这样会造成电机的发热及机械噪音。2.2.5 步进电机动态指标及术语:1、步距角精度: 步进电机每转过一个步距角的实际值与理论值的误差。用百分比表示:误差/步距角*100%。不同运行拍数其值不同,四拍运行时应在5%之内,八拍运行时应在15%以内。2、失步: 电机运转时运转的步数,不等于理论上的步数。称之为失步。3、失调角: 转子齿轴线偏移定子齿轴线的角度,电机运转必存在失调角,由失调角产生的误差,采用细分驱动是不能解决的。4、最大空载起动频率: 电机在某种驱动形式、电压及额定电流下,在不加负载的情况下,能够直接起动的最大频率。5、最大空载的运行频率: 电机在某种驱动形式,电压及额定电流下,电机不带负载的最高转速频率。6、运行矩频特性: 电机在某种测试条件下测得运行中输出力矩与频率关系的曲线称为运行矩频特性,这是电机诸多动态曲线中最重要的,也是电机选择的根本依据。如下图五所示:图五其它特性还有惯频特性、起动频率特性等。 电机一旦选定,电机的静力矩确定,而动态力矩却不然,电机的动态力矩取决于电机运行时的平均电流(而非静态电流),平均电流越大,电机输出力矩越大,即电机的频率特性越硬。如下图六所示:图六其中,曲线3电流最大、或电压最高;曲线1电流最小、或电压最低,曲线与负载的交点为负载的最大速度点。要使平均电流大,尽可能提高驱动电压,使采用小电感大电流的电机。3 程序设计3.1 编程编程采用制表的方法,步进电机正转采用二相激磁方式,时序如表所示 2相激磁方式正转时序步进p0.3p0.2p0.1p0.00fch111000f9h210010f3h300110f6h40110步进电机反转采用1-2相激磁方式,时序如表 1-2相激磁反转时序步进p0.3p0.2p0.1p0.00f7h101110f3h200110fbh310110f9h410010fdh511010fch611000feh711100f6h801103.2 流程图程序设计流程如图所示 开始按键扫描按k1正转按k2反转按k3停止读取表格输出结束3.3 程序清单01 k1 equ p3.2 ;设定p3.2以k1表示02 k2 equ p3.3 ;设定p3.3以k2表示03 k3 equ p3.4 ;设定p3.4以k3表示04 05 stop: mov p0,#offh ;步进电机停止06 loop: jnb k1,z_m2 ;是否按k1,是则正传07 jnb k2,f_m2 ;是否按k2,是则反转08 jnb k3,stop1 ;是否按k3,时则停止09 jmp loop ;跳转至loop处1011 stop1: acall delay ;按k3的消除抖动12 jnb k3,$ ;k3放开否13 acall delay ;放开消除抖动14 jmp stop ;电机停止1516 z_m2: acall delay ;按k1的消除抖动17 jnb k1,$ ;k1放开否18 acall delay ;放开消除抖动19 jmp z_m ;转至z_m处2021 f_m2: acall delay ;按k2的消除抖动 22 jnb k2,$ ;k2放开否23 acall delay ;放开消除抖动24 jmp f_m ;转至f_m处,循环25 ;正转子程序 26 z_m: mov r0,#00h ;正转到table取码指针初值27 z_m1: mov a,r0 ;到table取码28 mov dptr,#table ;存表29 movc a,a+dptr ;取表代码30 jz z_m ;是否取到结束码?31 mov p0,a ;输出至p0,正转32 jnb k3,stop1 ;是否按k3,是则停止运转 33 jnb k2,f_m2 ;是否按k2,是则反转34 acall delay ;步进电机转速35 inc r0 ;取下一个码36 jmp z_m1 ;转至z_m处,循环37 ret38 ;反转子程序39 f_m: mov r0,#05 ;反转到table取码指针初值40 f_m1: mov a,r0 ;到table取码41 mov dptr,#table ;存表42 movc a,a+dptr ;取表代码43 jz f_m ;是否取到结束码?44 mov p0,a ;输出至p0,反转45 jnb k3,stop1 ;是否按k3,是则停止运转46 jnb k1,z_m2 ;是否按k1,是则正转47 acall delay ;步进电机转速48 inc r0 ;取下一个码49 jmp f_m1 ;转至f_m1处,循环50 ret5152 delay: mov r6,#40 ;延时时间20ms53 d1: mov r7,#24854 djnz r7,$55 djnz r6,d156 ret57 ;控制码表58 table59 db 0fch, of9h, 0f3h, 0f6h ;正转60 db 00h ;反转结束码61 db 0f7h, 0f3h, 0fbh, 0f9h ;反转62 db 0fdh, 0fch, 0feh, 0f6h63 db 00h ;反转结束码6465 end ;程序结束3.3.1 代码详解 主要标号说明loop: 按键扫描stop1: k3键消除抖动z_m2: k1键消除抖动f_m2: k2键消除抖动z_m: 反转子程序f_m: 正转子程序delay: 延时子程序table: 控制码表3.3.2 程序分析0103: 将p3.2、p3.3、p3.4引脚分别用k1、k2、k3表示。05: 使步进电机停止转动。0609: 对按键扫描。当按键开关未按下时,相应引脚为高电平;当开关按下时,相应引脚为低电平。所以通过循环检测按键开关所连接的引脚电平的高低,就可以判断出开关状态。11: 按k3时,调延时子程序,延时一小段时间来消除按键时的抖动。12: 按键未开放时,程序将在此等待,只有按键开放后,程序才会向下运行。13:按键放开时,调延时子程序,延时一小段时间来消除按键放开时的抖动。14: 当确定k3按键被按下又被放开后,才认定是一次有效按键,程序将跳转到stop处,执行停机语句,使电机停止转动。1619: 与上述11-14行语句原理相同,是对k1键按下和放开时消除抖动的处理,并跳转到z_m处,执行正传子程序。2124: 对按k2键时消除抖动的处理,并跳转到z_m处,执行反转子程序。26: 正转子程序开始,将r0赋值为0,使取表指针指向表table的第一个码位置。27: 将r0值送入累加器a。28: 将编制的电机控制码表table存入特殊寄存器dptr。29: 从特殊寄存器dptr中取出第一个控制码。30: 检查是否取到结束码,结束码为00h。如果取到结束码00h,jz指令会使程序跳转到标号z_m处,从第一个码开始读取;如果取到的不是结束码00h,程序向下运行。31: 将取到的数据由p0端输出。32: 检查是否按k3,是则停止运转。33: 检查是否按k2,是则反转。34: 调用延时子程序。此处调用延时子程序与前边调用的不同,前边调用延时子程序是为了消除按键的抖动。 此处调用延时子程序是电机运转两步之间的间隔时间,决定电机的转速,延时时间长,送入电机的脉冲信号频率低,电机转速慢;延时时间短,送入电机的脉冲

温馨提示

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

评论

0/150

提交评论