四相步进电机控制系统设计课程设计论文1_第1页
四相步进电机控制系统设计课程设计论文1_第2页
四相步进电机控制系统设计课程设计论文1_第3页
四相步进电机控制系统设计课程设计论文1_第4页
四相步进电机控制系统设计课程设计论文1_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、 课程设计论文(设计)四相步进电机控制系统四相步进电机控制系统课程设计任务书课程设计任务书题题 目目: : 四相步进电机控制系统的设计初始条件:初始条件:1、基本要求自制稳压电源。1)控制器能够驱动步进电机以四相四拍方式(步距 1.8)正向运转。2)步进电机运行步数能够预置,每转一步自动减 1,直到减到零,此时步进电机应能停止运转。3)绕组驱动电流不低于 0.1 安培。要求性能可靠、操作简便。2、发挥部分1)步进电机还可以按四相相单四拍方式(步距 1.8) 、四相八拍(步距 0.9)、四相双四拍(步距 1.8)工作。2)步进电机还可以反向运转。绕组驱动电流能够达到 0.2 安培。由于步进电机价

2、格比较昂贵,控制器的负载可以用低阻值的电阻代替,通过电阻的电流应符合要求,示波器观察脉冲序列应符号要求。 要求完成的主要任务要求完成的主要任务: : 1 硬件设计:系统总原理图及各部分详细原理图2 软件设计:系统总体流程图、步进电机单四拍,双四拍,四相八拍各模块流程图、显示模块流程图等3 编写程序:能够完成上述任务4 完成符合要求的设计说明书时间安排:时间安排:2013 年 6 月 25 日2013 年 7 月 2 日指导教师签名:指导教师签名: 年年 月月 日日系主任(或责任教师)签名:系主任(或责任教师)签名: 年年 月月 日日目目 录录摘要 .11 设计任务及要求 .22 方案论证 .2

3、2.1 设计思路与方案 .32.2 总体设计框图 .33 系统实现的原理说明 .43.1 步进电机控制工作原理 .43.1.1 步进电机的工作原理 .53.1.2 步进电机的启停控制 .53.1.3 步进电机的转向控制 .53.2 步数显示模块原理 .54 硬件设计 .64.1 系统总原理图 .74.2 各部分硬件原理图设计 .74.2.1 单片机控制模块 .74.2.2 按键选择工作状态模块 .84.2.3 步进电机工作模块 .94.2.4 工作状态显示模块 .104.2.5 4 位数码管显示步数模块 .105 软件设计 .115.1 系统总体设计 .125.2 步进电机工作模块 .135.

4、2.1 步进电机的工作方式说明 .135.2.2 设计说明及流程图 .145.3 数码管步数显示模块 .156 仿真调试记录 .167 心得体会 .17附录:程序清单18摘要本设计详细介绍了基于单片机的四相步进电机控制系统。步进电机通过输入脉冲信号进行控制,即电机的总转动角度由输入脉冲总数决定,因此,单片机通过向步进电机发送控制信号就能实现对步进电机的控制。单片机实现的步进电机控制系统具有成本低、使用灵活的特点,该系统采用 80c51单片机作为主控芯片,来完成对步进电机转动及 led 显示的控制。本设计主要由单片机 80c51,4 相步进电机,7 段数码管,及一些其他相关元件设计而成,分为按键

5、选择工作状态模块、步进电机工作模块、led 二极管显示工作状态模块以及 4 位数码管显示步数模块。可以通过开关来控制系统的启/停工作,当系统运转时,用开关来控制方向,并使相应的指示灯亮起,同样由开关来选择工作模式。运转时,用 4位 7 段数码管来输出步数。最后根据思路所设计出来的硬件图设计相适应的软件。 电路结构简单,设计思路清晰,同时利用 keil 和 proteus 进行联调仿真,结果比较直观。仿真结果收到了预期的效果。 关键字关键字:四相步进电机、单片机、proteus 仿真四相步进电机控制系统的设计1 设计任务及要求设计一个四相步进电机控制系统,要求系统具有如下功能:用 sw11-sw

6、13 做为通电方式选择键,sw11 为四相单四拍,sw12 为四相双四拍,sw13 为四相八拍;sw14 为启动/停止控制、sw1 方向控制;用 4 位 led 数码管显示工作步数。用 3 个发光二极管显示状态:正转时红灯亮,反转时黄灯亮,不转时绿灯亮。2 方案论证2.1 设计思路与方案本次设计是一个对于四相步进电机的控制系统,而单片机实现的步进电机控制系统具有成本低、使用灵活的特点,此系统选用 51 单片机即可。根据要求整个设计大体可分为四块:一是 5 个按键 sw11-sw13 将用户所需来选择步进电机的工作状态。我们将开关连入单片机的 p1 口,通过按键开关的高低电平状态来读入我们所需的

7、控制信号。硬件上直接把开关分别接在单片机的接口上,通过查询端口信号来动作,将控制信号处理。二是 3 个 led 发光二极管的显示步进电机工作状态模块。在设计要求中步进电机正转是红灯亮,反转是黄灯亮,停止不转是绿灯亮。设计中将 3 个发光二极管分别接到单片机 p3 口,受到单片机的输出信号控制。三是步进电机的工作模块。要想步进电机按照我们想要的方式运转,将步进电机一端接到+12v 的电源,一端接到单片机 p3 口,受单片机的输出信号控制。四是 4 位数码管显示步数的模块。设计中主要是利用软件编程的算法来实现步数的累计和显示,同样,4 位数码管接到单片机的 p0 口和 p2 口受单片机输出信号的控

8、制,在硬件上使用的是动态显示的接法。由此可知所需要设计一个系统,可以通过不同按键来选择步进电机的工作方式,且有led 发光二极管来显示电机对应的工作状态,除此之外还能在数码管上显示出步进电机转动的步数。2.2 总体设计框图此系统主要由单片机、步进电机、步数显示模块、工作状态控制与显示模块组成。整体框图如图 1。图 1 系统整体框图80c51单片机核心控制led数码管显示步数模块步进电机工作模块按键选择工作状态模块led显示工作状态模块3 系统实现的原理说明3.1 步进电机控制工作原理3.1.1 步进电机的工作原理步进电机通过输入脉冲信号进行控制,即电机的总转动角度由输入脉冲总数决定,而电机的转

9、速由脉冲信号频率决定。步进电机的驱动电路是根据单片机产生的控制信号进行工作。因此,单片机通过向步进电机驱动电路发送控制信号就能实现对步进电机的控制。如图 2 所示,开始时,开关 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 相绕组磁极产

10、生错齿。依次类推,a、b、c、d四相绕组轮流供电,则转子会沿着 a、b、c、d 方向转动。 四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。单四拍与双四拍的步距角相等,但单四拍的转动力矩小。八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。 图 2 步进电机工作原理图3.1.2 步进电机的启停控制步进电机由于其电气特性,运转时会有步进感 ,即振动感。为了使电机转动平滑 ,减小振动 ,可在步进电机控制脉冲的上升沿和下降沿采用细分的梯形波 ,可以减小步进电机的步进角 ,提高电机运行的平稳性。在步进电机停转时 ,为了防止

11、因惯性而使电机轴产生顺滑 ,则需采用合适的锁定波形 ,产生锁定磁力矩 ,锁定步进电机的转轴 ,使步进电机的转轴不能自由转动。3.1.3 步进电机的转向控制如果给定工作方式正序换相通电 ,步进电机正转。若步进电机的励磁方式为四相八拍 ,即 a-ab-b-bc-c-cd-d-da-a。如果按反序通电换相 ,即则电机就反转。其他方式情况类似。3.2 步数显示模块原理步数显示模块和工作状态显示模块,都是通过单片机输出信号控制发光二极管 led的亮灭。其中步数显示模块中 led 构成数码管,要求显示 4 位十进制数,故用到 4 位数码管。要控制多位的显示电路,需要有字段控制和字位控制。控制方式分为静态显

12、示方式和动态显示方式。静态显示方式,每一位的显示器都需要配一个 8 位输出口来输出该字位的七段码,需要片外扩展输出口。而动态显示方式将各数码管的对应字段的引脚都并联在一起,线路简单,减少接口,不需片外扩展。这里选用动态显示方式。4 硬件设计4.1 系统总原理图图 3 系统总原理图根据设计要求用 proteus 所做的硬件连线图如图 3。4.2 各部分硬件原理图设计4.2.1 单片机控制模块单片机选用最经典的 80c51,其 4 个 i/o 口都要用到, p3 接步进电机驱动电路及工作状态显示模块,p0 和 p2 分别接步数显示中对数码管的字段控制及数码管片选,p1 接工作状态控制电路,,时钟用

13、内部方式需外接晶体振荡器。硬件图如图 4 所示。图 4 单片机模块原理图此设计中接的是 12mhz 的晶振,故一个机器周期为 1/12us。根据经验数据,与晶振一起的两个电容设为 15pf。单片机的 vcc 和 groud 都隐藏了,已自动接好,vcc 应设为+5v。4.2.2 按键选择工作状态模块5 个按键开关一端通过电阻接高电平,另一端全部接到地,其中接高电平的一端对应也接到单片机的 p1 口分别为 p1.0p1.4。当开关断开,就是输入到单片机对应端口高电平,而开关闭合,是使端口接地,输入低电平。所以这个设计中开关断开时才是有效的。各按键功能:(1)sw11sw13 为工作模式控制开关,

14、sw11 接电时,为步进电机单四拍工作模式;sw12 接电时,为步进电机双四拍工作模式;sw13 接电时,步进电机工作模式为四相八拍。(2)sw14 为启/停控制开关,控制整个系统的开启和关闭。(3)sw1 为正/反转控制开关,控制步进电机的转向。图 5 按键模块原理图4.2.3 步进电机工作模块将四相步进电机四个端口直接接到单片机 p3.0p3.3 即可,另两个端口接到+12v 的高电平给步进电机供电。只需在软件编写上控制算法便可以调节这四个端口的高低电平来控制步进电机的开启与停止,正反转以及工作模式。步进电机硬件接线图如图 6 所示。图 6 步进电机模块原理图4.2.4 工作状态显示模块l

15、ed 发光二极管显示步进电机的工作状态,它们分别接到单片机的 p3.5p3.7。图 7 工作状态显示模块原理图4.2.5 4 位数码管显示步数模块led 数码管实际上是由七个发光管组成 8 字形构成的,加上小数点就是 8 个。这些段分别由字母 a,b,c,d,e,f,g,dp 来表示。当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的字样了。通过分时轮流控制各个 led 数码管的 com 端,就使各个数码管轮流受控显示,这就是动态驱动。p0 口和 p2 口的前四个分别接步数显示中对数码管的字段控制及数码管片选,如图 8所示,这里主要是由软件算法来实现单片机输出的控制。图 8

16、 数码管显示模块原理图开始数码管显示清零启动?选择工作模式正转?b 赋予正向指针增量b 赋予反向指针增量红灯亮黄灯亮p3 输出控制模块使电机运转p1 口改变?步数自增一调用步数显示程序绿灯亮nnnyyy5 软件设计5.1 系统总体设计图 9 系统总流程图设计说明:首先是数码管显示清零,单片机再读入 p1 口输入的按键状态,先判断是否启动,如果没有启动则是绿灯亮并再判断,如果启动了,就接着判断所需的电机工作模式,再读入 p1 口状态判断电机的转向,输出控制信号为正转红灯亮,反转黄灯亮,由此可以让步进电机按照指定的方式运转,并且累计步数再显示到数码管上。最后检验 p1 口是否状态改变,如果改变则步

17、数清零重新开始判断,不改变则继续转动。5.2 步进电机工作模块5.2.1 步进电机的工作方式说明(1)四相单四拍工作方式在这种工作方式下,a、b、c、d 三相轮流通电,电流切换三次,磁场旋转一周,转子向前转过一个齿距角。因此这种通电方式叫做三相单三拍工作方式。这时步距角b(度)为: mzb/360 1式中:m定子相数; z 转子齿数表 1 单四拍的相位控制 控制位步序p1.7p1.6p1.5p1.4p1.3d 相p1.2c 相p1.1b 相p1.0a 相工作状态控制模型100000001a01h200000010b02h300000100c04h400001000d08h(2)四相双四拍工作方

18、式这种工作方式每次都是有两相导通,两相绕组处在相同电压之下,以 abbccddaab(或反之)方式通电,故称为双四拍工作方式。以这种方式通电,转子齿所处的位置相当于八拍控制方式中去掉单四拍后的四个位置。它的步距角计算公式与单四拍时的公式相同。表 2 双四拍的相位控制控制位步序p1.7p1.6p1.5p1.4p1.3d 相p1.2c 相p1.1b 相p1.0a 相工作状态控制模型100000011ab03h200000110bc06h300001100cd0ch400001001da09h(3)四相八拍工作方式在这种工作方式下,绕组以 aabbbcccdddaa 时序(或反时序)转换 8 次,磁

19、场旋转一周,转子前进一个齿距,每次切换均使转子转动 0.9,故这种通电方式称为四相八柏工作方式。其步距角b为: mzmzb/1802/360 2表 3 六拍的数学模型 控制位步序p1.7p1.6p1.5p1.4p1.3p1.2c 相p1.1b 相p1.0a 相工作状态控制模型100000001a01h200000011ab03h300000010b02h400000110bc06h500000100c04h600001100cd0ch700001000d08h800001001da09h5.2.2 设计说明及流程图设计说明:在此设计中,采用的是四相步进电机,对于步进电机模块的程序设计采用循环程

20、序设计方法。先把正反转向的控制模型存放在内存单元中,然后再逐一从单元中取出控制模块并输出。首先启动,通过 p1 口读入所需的工作方式,即选择步进电机的拍数,然后读入正反转的控制,再来输出对应的控制模型来驱动步进电机转动。取出要显示的数据送一位位段码到 p0 口输出送位选码到 p2.0-p2.3 输出延时4 位显示完修改数组地址求下一位选码将该数据化为 10 进制数,每位分别储存扫描 50 次完计数减 1开始返回5.3 数码管步数显示模块设计说明:步数显示模块是整个程序里的一个子程序。其是用 4 位八段数码管来显示工作步数。先将要显示的数化为 10 进制数,每位分别储存,从 p0 口输出显示码,

21、p2 口输入位选码,需要一定的延时,让此位数字显示闪烁出来。然后修改数组地址,求下一位位选码继续显示,直至输出四位数。这个扫描过程重复 50 次,保证人眼能观察到步数显示。流程图如图 11:图 11 数码管显示模块流程图6 仿真调试记录如图 12 所示,当选择电机工作在单四拍,正转的模式下,sw11、sw1 接高电平,sw12、sw13 接低电平,系统启动,sw14 接高电平,电机开始转动。led 四位显示屏显示工作步数,led 指示灯红灯亮显示电机正转的状态。图 12 仿真图7 心得体会本次课设是在实习之中穿插进行的,所以时间比较紧张,给课设的顺利完成增加了难度。计算机控制技术是一门应用性很

22、强综合性很强的学科,在这次课设中,我充分感受到了这一点,在老师给的课题之中,是来自于各个方面各个领域的应用,不得不说,计算机控制很强大,确实改变了我们的生活。课设里最困难的部分就是编写程序和仿真调试,也许硬件连接没问题,程序运行没问题,但是,当把程序导入,发现电动机就是不转,灯就是不亮,数码管就是乱跳,这是很考验耐心的时候,一遍一遍地去调试程序,修改连接部分,有时真的看着很崩溃,但是当你不放弃地调试,才有仿真成功的可能,在这种反复中,对我们自身的能力是提高很多的。另一个收获就是关于软件的使用了。proteus,keil51,以前好像也用过,但是平时较少接触,这次的课设让我比较熟练的掌握了这两个

23、学习软件强大的功能,而且发现从proteus 里导出来的电路图特别漂亮和清晰。计算机控制技术一直是自己比较喜欢的一门学科,拿到课程设计的题目也想着可以好好检验自己的学习成果,一直认为,期末考试是所谓的应试教育,而课程设计似乎更加地考验所学的知识,所谓实践与理论相结合就是这个道理吧。课程设计总能让我有一种我站在山面前的感觉,看上去比较陌生高大,但是攀登的技巧早已在平时的学习中习得,不断地去攀登,不断地在回味课堂上老师讲的东西,书本上的东西,这是一种奇妙的体验。我明白遇到的电路或者课题并不一定在你的知识范围之内,而面对新的东西,我们要冷静地去寻求解决之道,去搜寻网络资源,图书馆资源以及和同学们的讨

24、论之中,再结合自己所学过的知识来吃透理解那些未知的东西,扩宽知识面,这样就会觉得学到了远远超过课堂的东西,但是却源于课堂,想必这就是课设的意义吧,很有收获。附录:程序清单#include reg52.h /motorsbit f1 = p30;sbit f2 = p31;sbit f3 = p32;sbit f4 = p33;/sbit tim=p34;#define m 500 /步进电机驱动unsigned char motorstep=0;unsigned int motortimer = 0;unsigned int tim,ct,step=0,tim1,num;void initmo

25、tor() f1 = 1; f2 = 1; f3 = 1; f4 = 1; void setmotor() / if(speed = 0) return; if(p1&0 x01)/单四 if(p1&0 x10)/ 正 switch(motorstep) case 0: if(tim) p3=0 xb1;/f1 = 0; f2 = 0;f3 = 0;f4 = 1; motorstep = 1; tim=0; break; case 1: if(tim) p3=0 xb2;/f1 = 1; f2 = 0;f3 = 0; f4 = 0; motorstep = 2;tim=0; b

26、reak; case 2: if(tim) p3=0 xb4;/f1 = 0; f2 = 1; f3 = 0; f4 = 0; motorstep = 3;tim=0; break; case 3: if(tim) p3=0 xb8;/f1 = 0; f2 = 0; f3 = 1; f4 = 0; motorstep = 0;tim=0; break; else /单四反 switch(motorstep) case 0: if(tim) p3=0 x71;/f1 = 0; f2 = 0;f3 = 0;f4 = 1; motorstep = 1; tim=0; break; case 1: i

27、f(tim) p3=0 x78;/f1 = 0; f2 = 0;f3 = 1; f4 = 0; motorstep = 2;tim=0; break; case 2: if(tim) p3=0 x74;/f1 = 0; f2 = 1; f3 = 0; f4 = 0; motorstep = 3;tim=0; break; case 3: if(tim) step+; p3=0 x72;/f1 = 1; f2 = 0; f3 = 0; f4 = 0; motorstep = 0;tim=0; break; else if(p1&0 x02) /双四正转 if(p1&0 x10)/

28、则正转switch(motorstep) case 0: if(tim) p3=0 xb3;/f1 = 0; f2 = 0;f3 = 1;f4 = 1; motorstep = 1; tim=0; break; case 1: if(tim) p3=0 xb6;/f1 = 0; f2 = 1;f3 = 1; f4 = 0; motorstep = 2;tim=0; break; case 2: if(tim) p3=0 xbc;/f1 = 1; f2 = 1; f3 = 0; f4 = 0; motorstep = 3;tim=0; break; case 3: if(tim) p3=0 xb

29、9; /f1 = 1; f2 = 0; f3 = 0; f4 = 1; motorstep = 0;tim=0; break; else /双四反 switch(motorstep) case 0: if(tim) p3=0 x73;/f1 = 0; f2 = 0;f3 = 1;f4 = 1; motorstep = 1; tim=0; break; case 1: if(tim) p3=0 x79;/ f1 = 1; f2 = 0; f3 = 0;f4 = 1; motorstep = 2;tim=0; break; case 2: if(tim) p3=0 x7c;/f1 = 1; f2

30、= 1;f3 = 0;f4 = 0; motorstep = 3;tim=0; break; case 3: if(tim) p3=0 x76;/f1 = 0; f2 = 1; f3 = 1; f4 = 0; motorstep = 0;tim=0; break; else if(p1&0 x04)/八拍 if(p1&0 x10)/则正转 switch(motorstep) case 0: if(tim) p3=0 xb1;/f1 = 0; f2 = 0;f3 = 0;f4 = 1; motorstep = 1; tim=0; break; case 1: if(tim) p3

31、=0 xb3;/f1 = 1; f2 = 0;f3 = 0; f4 = 1; motorstep = 2;tim=0; break; case 2: if(tim) p3=0 xb2;/f1 = 1; f2 = 0; f3 = 0; f4 = 0; motorstep = 3;tim=0; break; case 3: if(tim) p3=0 xb6;/f1 = 1; f2 = 1; f3 = 0; f4 = 0; motorstep = 4;tim=0; break; case 4: if(tim) p3=0 xb4;/ f1 = 0; f2 = 1; f3 = 0; f4 = 0; mo

32、torstep = 5;tim=0; break; case 5: if(tim) p3=0 xbc;/f1 = 0; f2 = 1; f3 = 1; f4 = 0; motorstep = 6;tim=0; break; case 6: if(tim) p3=0 xb8;/f1 = 0; f2 = 0; f3 = 1; f4 = 0; motorstep = 7;tim=0; break; case 7: if(tim) p3=0 xb9;/f1 = 0; f2 = 0; f3 = 1; f4 = 1; motorstep = 0;tim=0; break; else /八拍反 switch

33、(motorstep) case 0: if(tim) p3=0 x71;/ f1 = 0; f2 = 0;f3 = 0;f4 = 1; motorstep = 1; tim=0; break; case 1: if(tim) p3=0 x79;/ f1 = 0; f2 = 0;f3 = 1; f4 = 1; motorstep = 2;tim=0; break; case 2: if(tim) p3=0 x78;/p3=0 x78;f1 = 0; f2 = 0; f3 = 1; f4 = 0; motorstep = 3;tim=0; break; case 3: if(tim) p3=0 x7c;/f1 = 0; f2 = 1; f3 = 1; f4 = 0; motorstep = 4;tim=0; break; case 4: if(tim) p3=0 x74;/ f1 = 0; f2 = 1; f3 = 0; f4 = 0; motorstep = 5

温馨提示

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

评论

0/150

提交评论