I计算机与信息科学系课程设计报告课程名称:微型计算机控制技术设计题目:步进电机控制系统II目录1.系统概述11.1步进电机控制工作原理11.2系统设计思路12.系统硬件设计22.1总体设计22.2步进电机控制电路32.3显示电路43.系统软件设计53.1总体设计53.2关键模块设计104.结束语104.1设计感想144.2个人分工情况15参考文献15附录1511.系统概述1.1步进电机控制工作原理步进电机实际上是一个数字\角度转换器,也是一个串行的数\模转换器。步进电机的基本控制包括启停控制、转向控制、速度控制、换向控制4个方面。从结构上看,步进电机分为三相、四相、五相等类型,常用的则以三相为主。三相步进电机的工作方式有三相单三拍、三相双三拍和三相六拍3种,下面具体加以阐述。1.1.1步进电机的启停控制步进电机由于其电气特性,运转时会有步进感,即振动感。为了使电机转动平滑,减小振动,可在步进电机控制脉冲的上升沿和下降沿采用细分的梯形波,可以减小步进电机的步进角,提高电机运行的平稳性。在步进电机停转时,为了防止因惯性而使电机轴产生顺滑,则需采用合适的锁定波形,产生锁定磁力矩,锁定步进电机的转轴,使步进电机的转轴不能自由转动。1.1.2步进电机的转向控制如果给定工作方式正序换相通电,步进电机正转。若步进电机的励磁方式为三相六拍,即A-AB-B-BC-C-CA。如果按反序通电换相,即则电机就反转。其他方式情况类似。1.1.3步进电机的速度控制如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。2个脉冲的间隔越短,步进电机就转得越快。调整送给步进电机的脉冲频率,就可以对步进电机进行调速。1.1.4步进电机的换向控制步进电机换向时,一定要在电机减速停止或降到突跳频率范围之内再换向,以免产生较大的冲击而损坏电机。换向信号一定要在前一个方向的最后一个脉冲结束后以及下一个方向的第1个脉冲前发出。对于脉冲的设计主要要求要有一定的脉冲宽度(一般不小于5μs)、脉冲序列的均匀度及高低电平方式。在某一高速下的正、反向切换实质包含了减速→换向→加速3个过程。1.2系统设计思路此次我们所设计的是一个步进电机控制系统,主要由单片机80C51,并行输入/输出接口8255A,3相步进电机,7段数码管,及一些其他相关元件设计而成。可以通过开关来控制系统的启/停工作,当系统运转时,用开关来控制方向,并使相应的指示灯亮起,同样由开关来选择工作模式,这次设计并不是使用键盘来输入运转步数,而是由8个开关置0/1设步数。运转时,用3位7段数码管来输出剩余步数。最后根据思路所设计出来的硬件图设计相适应的软件。详细的设计步骤将在下面说明。22.系统硬件设计2.1总体设计设计一个单片机三相步进电机控制系统要求系统具有如下功能:(1)用K0-K2做为通电方式选择键,K0为单三拍,K1为双三拍,K2为三相六拍;(2)K3、K4分别为启动和方向控制;(3)正转时红色指示灯亮,反转时黄色指示灯亮,不转时绿色指示灯亮;(4)用K5-K12作为步数的给定值。(5)用3位LED显示剩余工作步数。根据设计要求用PROTIU所做的硬件连线图如下图1:ALEA0A1XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115U180C51D034D133D232D331D430D529D628D727RD5WR36A09A18RESET35CS6PA04PA13PA22PA31PA440PA539PA638PA737PB018PB119PB220PB321PB422PB523PB624PB725PC014PC115PC216PC317PC413PC512PC611PC710U28255AC11nFC21nFX1CRYSTALK0SW-SPDTK1SW-SPDTK2SW-SPDT红灯LED-RED黄灯LED-YELLOW绿灯LED-GREENK3SW-SPDTK4SW-SPDTK12SW-SPDTK11SW-SPDTK10SW-SPDTK9SW-SPDTK8SW-SPDTK7SW-SPDTK6SW-SPDTK5SW-SPDT+12V1B11C162B22C153B33C144B44C135B55C126B66C117B77C10COM9U3ULN2004A+88.8+12v+12VD03Q02D14Q15D27Q26D38Q39D413Q412D514Q515D617Q616D718Q719OE1LE11U474LS37312U5:A7404图132.2步进电机控制电路2.2.1启/停控制、正/反转控制、工作模式控制电路分析(1)K3为启/停控制开关,控制整个系统的开启和关闭。(2)K4为正/反转控制开关,控制步进电机的转向。(3)K0-K3为工作模式控制开关,KO接电时,为步进电机单三拍工作模式;K1接电时,为步进电机双三拍工作模式;K2接电时,步进电机工作模式为三相六拍。如图2:图22.2.2步数给定值控制电路用8255A的PA8个口来作为步数的输入口,用开关K5-K12来控制8位2进制数的数值,开关接电则为1,接地为0,控制步数范围0—255。如图3:图342.2.3步进电机控制电路将80c51的P1.0-P1.3作为步进电机的输出控制口。如图4:图42.3显示电路2.3.1发光二极管显示电路用3个不同颜色的发光二极管来作为指示灯显示,将PC7接红灯,PC6接黄灯,PC5接绿灯,正转时红色指示灯亮,反转时黄色指示灯亮,不转时绿色指示灯亮。图52.3.2八段数码管显示电路5由8255A的PB口取出显示码如图6,从80c51的P1.5-1.7输出位选码如图7,设计中我们主要用到3位显示步数既可。图6图73.系统软件设计3.1总体设计3.1.1步进电机的工作方式(1)三相单三拍工作方式在这种工作方式下,A、B、C三相轮流通电,电流切换三次,磁场旋转一周,转子向前转过一个齿距角。因此这种通电方式叫做三相单三拍工作方式。这时步距角θb(度)为θb=360/mz(公式1)式中:m──定子相数;z──转子齿数单三拍的数学模型:步序控制位工作状态控制模型P1.7P1.6P1.5P1.4P1.3P1.2C相P1.1B相P1.0A相100000001A01H200000010B02H300000100C04H表1(2)三相六拍工作方式在这种工作方式下,绕组以A—AB—B—BC—C—CA—A时序(或反时序)转换6次,磁场旋转一周,转子前进一个齿距,每次切换均使转子转动1.5°,故这种通电方式称为三相六柏工作方式。其步距角θb为:θb=360/2mz=180/mz(公式2)六拍的数学模型:6步序控制位工作状态控制模型P1.7P1.6P1.5P1.4P1.3P1.2C相P1.1B相P1.0A相100000001A01H200000011AB03H300000010B02H400000110BC06H500000100C04H600000101CA05H表2(3)双三拍工作方式这种工作方式每次都是有两相导通,两相绕组处在相同电压之下,以AB─BC─CA─AB(或反之)方式通电,故称为双三拍工作方式。以这种方式通电,转子齿所处的位置相当于六拍控制方式中去掉单三拍后的三个位置。它的步距角计算公式与单三拍时的公式相同。极分度角/齿距角=R+k·1/m进一步化简得齿数z:z=q(mR+k)(公式3)式中:m──相数;q──每相的极数;k──≤(m-1)的正整数;R──正整数,为0、1、2、3……。双三拍的数学模型:步序控制位工作状态控制模型P1.7P1.6P1.5P1.4P1.3P1.2C相P1.1B相P1.0A相100000011AB03H200000110BC06H300000101CA05H表33.1.2系统总体流程图设计说明:设8255地址为8000-8300H,显示位地址为30H。首先复位单片机,然后判断是否启动,没启动绿灯亮重新确认启动。启动后读取PC口数据,判断工作方式。接着由双向开关K5到K12来置入步数值到R0中。由PC4口的双向开关来控制步进电机的正反转,如果是正转则红灯亮,反转则绿灯亮。前置流程已经完毕,接着就是由P1口输入控制模型来让步进电机转动,每走一步R0-1,没走完继续直至RO=0。最后由八段数码管同步输出所剩步数。具体流程详见下流程图。7图8YNNYY单片机80c51给步进电机复位启动?绿灯亮N判断工作方式PA口输入步数到R0DPTR正向控制模型指针PC4=0?正转反转红灯亮黄灯亮延时,且模型地址加1R0-1=0?步进电机继续转动R0减18段数码管显示剩余步数DPTR反向控制模型地址P1口输出控制模型Y重新启动返回PC0=1?PC1=1?PC0=1?NN8总体程序设计:ORG0000HAJMPMAINMAIN:MOVA,#020H;PC5口置1,绿灯亮,不工作MOVDPTR,#8002MOVX@DPTR,ALCALLDELAYLOOP:MOVDPTR,#8002MOVXA,@DPTRANLA,#020H;判断是否启动,若没启动则重新启动JZMAINMOVDPTR,#8002;判断工作模式;MOVXA,@DPTRANLA,#01HJNZL1MOVDPTR,#8002MOVXA,@DPTRANLA,#02HJNZL2MOVDPTR,#8002MOVXA,@DPTRANLA,#04HJNZA,L3L1:MOVDPTR,#DONE1;跳转到方式1的控制模型JMPLP2L2:MOVDPTR,#DONE2;跳转到方式2的控制模型JMPLP2L3:MOVDPTR,#DONE3;跳转到方式3的控制模型JMPLP2LP2:MOVDPTR,#8000;读入PA口设定的步数到R2MOVXA,#DPTRMOVR0,ALP3:MOVDPTR,#8002;判断PC4口(正反转口)是否为0,为0电机反转MOVXA,#DPTRANLA,#010HJZLP5MOVA,#080H;PC4不为0,正转,红灯亮MOVR1,#00H9LP4:MOVA,R1;P1口输出电机模型MOVCA,@A+DPTRJZLP3MOVP1,ALCALLDELAYINCR1;控制步数加1DECR0;剩余步数减1LCALLLED;LED显示剩余步数DJNZR0,LP4;步数未走完,继续RETLP5:MOVA,#040H;PC4为0,反转,黄灯亮MOVR1,AAJMPLP4DONE1:DB01H,02H,04H,00H,01H,04H,02H,00HDONE2:DB03H,06H,05H,00H,03H,05H,06H,00HDONE3:DB01H,03H,02H,06H,04H,05H,00H,01H,05H,04H,06H,02H,03H,00HDELAY:MOVR2,#0DELAY0:MOVR4,DELAY0RETDISPLY:MOVA,#30H;(显示输出参考课本P68)MOVDPTR,#8001MOV@DPTR,AMOVR2,#30H;显示缓冲区首地址送R2MOVR3,#04H;位选码指向最左一位,第三位DISPY1:MOVA,@R;取出要显示的数MOVDPTR,#SEGTAB;指向换吗表首址MOVCA,@A+DPTR;取出显示码MOVDPTR,#8001;从B口输出显示码MOVA,R3;从P1口输入位选码MOVP1,ALCALLDELAYMOVA,R3JNBACC.O