四相步进电机控制电路的设计与制作
开放性实验设计(论文)
题
姓目 名 四相步进电机控制电路的设计与制作 伍玉鑫、王钊
电气信息学院
电气工程及其自动化2012级
西南石油大学 教学院系 专业年级 指导教师 单 位
完成日期
2015 年 5 月 5 日
Southwest Petroleum University
Graduation Thesis
Design and fabrication of four stepper motor control circuit
Grade : 2012
Name : Wu yuxin Wang zhao
Instructor: Jin tao
School of Electrical Engineering and Information
2015-5-5
目录
摘要 ........................................................................ 4
1 课程设计任务和要求 ........................................................ 6
1.1课程设计任务 ............................................................ 6
1.2课程任务要求 ............................................................ 6
4.四相步进电机的工作性能可靠,电路设计简单. ................................. 6
2 课程设计的方案比较及选择 .................................................. 7
2.1 步进电机驱动方案选择 .................................................... 7
2.2 LED显示方案选择 ........................................................ 7
2.3 控制状态的读取 .......................................................... 7
3 控制系统的工作原理 ........................................................ 7
3.1 四相步进电机控制工作原理 ................................................ 8
3.2 控制系统的设计思路 ...................................................... 9
3.3 控制系统的整体框图 ...................................................... 9
4 控制系统的硬件设计 ....................................................... 10
4.1 总体的硬件设计 ......................................................... 10
4.2 四相步进电机控制电路 ................................................... 11
4.3 LED显示电路 ........................................................... 12
5控制系统的软件设计 ....................................................... 14
5.1 总体的软件设计 ......................................................... 14
5.2 系统关键模块设计 ....................................................... 17
6 系统仿真结果 ............................................................. 20
6.1 四相步进电机四种工作方式 ............................................... 20
6.2 相步进电机启动和停止 ................................................... 22
6.3 四相步进电机正转和反转 ................................................. 22
6.4 四相步进电机速度控制 ................................................... 23
心得体会 ................................................................... 25
参考文献 ................................................................... 26
附录1:总电路图 ........................................................... 27
附录2:源程序 ............................................................. 28
摘要
本次计算机控制技术课程设计的题目是:四相步进电机控制系统的设计。本次课程设计使用80c51单片机作为主控芯片,利用ULN2003A集成电路作为四相步进电机的驱动电路,采用单极性驱动方式,使四相步进电机能在(1)四相单四拍,(2)四相双四拍,(3)四相八拍四种工作方式下正常工作;能实现的功能有:启动/停止控制、方向控制;速度控制(快慢两档);用4位LED数码管显示工作步数。用3个发光二极管显示状态:正转时红灯亮,反转时黄灯亮,不转时绿灯亮。本次课程设计采用80C51单片机作为主控芯片,程序采用C语言来编写,驱动电路采用ULN2003A集成电路,显示器采用7SEG-MPX4-CC,即四位共阴二极管显示器,P0接段码,并用8 只1SW欧左右电阻上拉。P2的4 位IO口接位选码。用四个发光二极管显示电路的转动状况,红灯指示正传,黄灯指示反转,绿灯指示不转。采用Proteus软件进行仿真。在SWeil uVsuon3编程环境下编程和编译生成HEX文件,导入到80C51单片机,实现对各个模块的控制,实现我们所需要的功能。
本次设计的方案电路结构比较简单,设计思路很清晰清晰,用 Proteus软件进行联调仿真,结果比较直观。在这次课程设计学习中我学到了很多知识,知道了四相步进电机控制系统的组成以及怎样用80C51单片机去控制它,四相步进电机的工作方式压,这对我在课堂所学的计算机控制技术知识是个巩固和加强,让我把课堂所学的理论知识真实的用到实践中,亲自动手,增强了我的动手设计能力,对自己将来的学习和工作发展起到了很好的作用。
关键字: 四相步进电机 单片机 Proteus
Abstract The computer control technology curriculum design topic is: the design of three-phase stepper motor control system. The curriculum design using 80C51 microcontroller as the main control chip, drive circuit based on ULN2003A integrated circuit as the three-phase stepper motor, using unipolar drive mode, the three-phase stepper motor in three-phase three steps(1), (2) three phase double shot three, (3) normal three-phase six beat three under the working mode; can realize the function: start / stop control, direction control; speed control(speed two grades); with 4 LED digital tube display work steps. With 3 light emitting diode display status: forward when the red light, a reversal of the yellow light, green light is not rotated. The curriculum design using 80C51
microcontroller as the main control chip, the program is written by C, the drive circuit adopts a
ULN2003A integrated circuit, display using7SEG-MPX4-CC, which is the four common cathode LED display, P0 code, and using 8 1SW ohm pull-up resistor. 4 IO P2 port is connected with the selected code. With three light emitting diode display rotational status circuit, a red light indicating the story, the yellow light indicating reversal, lights do not turn. Using Proteus simulation software. Programming in keil uVsuon3 programming environment and compiler generated HEX file, into the 80C51 microcontroller ,realize the control of each module, to achieve the functions we need. The design scheme of circuit structure is relatively simple, very clear design ideas clearly ,using Proteus software debugging simulation results, more intuitive. In the curriculum design learning I learned a lot of knowledge, know the composition of the three-phase stepper motor control system and how to use the 80C51 microcontroller to control it, three-phase stepper motor working pressure, which I learned in the classroom computer control technology is to consolidate and strengthen the knowledge, let me put the theory of knowledge in classroom the real practical use, hands-on, enhance my ability to do design, a good effect on their future learning and work development.
Keywords: three-phase stepper motor microcontroller Proteus
四相步进电机控制系统的设计
1 课程设计任务和要求
1.1课程设计任务
设计一个四相步进电机控制系统,要求系统具有如下功能:用SW0-SW2做为通电方式选择键,SW0为四相单四拍,SW1为四相双四拍,SW2为四相八拍;SW3为启动/停止控制、SW4方向控制;SW5速度控制(快慢两档);用4位LED数码管显示工作步数。用3个发光二极管显示状态:正转时红灯亮,反转时黄灯亮,不转时绿灯亮。
要求完成的主要任务:
1.硬件设计:系统总原理图及各部分详细原理图
2.软件设计:系统总体流程图、步进电机单四拍,双四拍,四相八拍各模块流程图、显
示模块流程图等
3.编写程序:能够完成上述任务
4.完成符合要求的设计说明书。
1.2课程任务要求
题目要求设计一个四相步进电机控制系统,它需要具有以下几个基本功能:
1.四相步进电机控制系统能实现四种运行方式,能够以四相单四拍工作方式运行,通电顺序为:A-B-C-D-A;四相双四拍工作方式运行,通电顺序为:AB-BC-CD-DA-AB;四相八拍工作方式运行,通电顺序为:A-AB-B-BC-C-CD-D-DA-A,因此要输出相应的控制字进行控制。
2.四相步进电机控制系统能实现正转和反转和调速(快和慢)控制,能够改变电机运行的方向和速率.
3.四相步进电机控制系统有显示功能,可以采用共阴极的LED数码管对步数进行显示。
4.四相步进电机的工作性能可靠,电路设计简单.
2 课程设计的方案比较及选择
2.1 步进电机驱动方案选择
方案1:使用功率四极管等电子器件搭建成功率驱动电路来驱动电机的运行。这种方案的驱动电路的优点是使用电子器件联接,电路比较简单,但容易受干扰,信号不够稳定,缺点是器件较大而不便电路的集成,使用时很不方便,联接时容易出错误。
方案2:使用专门的电机驱动芯片ULN2003A来驱动电机运行。驱动芯片的优点是便于电路的集成,且驱动电路简单,驱动信号很稳定,不易受外界环境的干扰,因而设计的四相步进电机控制系统性能更好。
通过对两种方案的比较,我选择方案2使用ULN2003A电机驱动芯片来作为驱动。
2.2 LED显示方案选择
方案1:把所需要显示的数据通过专用的七段显示译码器(例如7448)的转换输出给LED显示屏。优点是输出比较简单,可以简化程序,但增加了芯片的费用,电路也比较复杂。
方案2:通过程序把所要的数据转化为七段显示的数据,直接通过单片机接口来显示,其优点是简化了电路,但增加了软件编写的负担。
通过对两种方案进行比较,我选择通过软件编写来输出显示信号,即单片机直接和显示器相连。
2.3 控制状态的读取
方案1:把按键接到单片机的中断口,若有按键按下,单片机接收到中断信号,再通过软件编写的中断程序来执行中断,优点是接线简单,简化了电路,但软件编写较为复杂,不易掌握。
方案2:不使用中断,直接把开关分别接在单片机的接口上,通过查询端口信号来动作。其优点是程序得到简化,可读性加强。
通过对方案的比较,我选择通过查询方式来读取端口信号。
3 控制系统的工作原理
3.1 四相步进电机控制工作原理
3.1.1步进电机的工作原理
图1 步进电机四相接线图
四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。单四拍与双四拍的步距角相等,但单四拍的转动力矩小。八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。 单四拍、双四拍与八拍工作方式的电源通电时序与波形分别如图2.a、b、c所示:
a. 单四拍 b. 双四拍 c.八拍
图2.步进电机工作时序波形图
3.1.2 步进电机的工作方式
四相步进电机可以在四相单拍,四相双拍和四相八拍四种工作过方式下工作。在四相单四拍工作方式运行时,通电顺序为:A-B-C-D;四相双四拍工作方式运行时,通电顺序为:AB-BC-CD-DA;四相八拍工作方式运行时,通电顺序为:A-AB-B-BC-C-CD-D-DA-A,因此要输出相应的控制字进行控制。
3.1.3步进电机的转向控制
如果给定工作方式正序换相通电 ,步进电机正转。若步进电机的励磁方式为四相八拍 ,即 A-AB-B-BC-C-CD-D-DA-A。如果按反序通电换相 ,即则电机就反转。其他方式情
况类似。
3.1.4步进电机的启停控制
步进电机由于其电气特性,运转时会有步进感 ,即振动感。为了使电机转动平滑 ,减小振动 ,
可在步进电机控制脉冲的上升沿和下降沿采用细分的梯形波 ,可以减小步进电机的步进角 ,提高电机运行的平稳性。在步进电机停转时 ,为了防止因惯性而使电机轴产
生顺滑 ,则需采用合适的锁定波形 ,产生锁定磁力矩 ,锁定步进电机的转轴 ,使步进电机的转轴不能自由转动。
3.1.5步进电机的速度控制
步进电动机运转的速度是由输入到A、B、C、D四相绕组的频率所决定的。脉冲的频率越高,电动机运转的速度越快,否则,速度就越慢。因而通过延时程序控制输出脉冲的频率,就可以实现对步进电机速度的控制。
3.2 控制系统的设计思路
此次我所设计的是一个四相步进电机控制系统,主要由单片机80C51,4相步进电机,7段数码管,及一些其他相关元件设计而成。可以通过开关来控制系统的启/停工作,当系统运转时,用开关来控制方向,并使相应的指示灯亮起,同样由开关来选择工作模式。运转时,用4位7段数码管来输出步数。最后根据思路所设计出来的硬件图设计相适应的软件。
3.3 控制系统的整体框图
下图为系统总体设计整体框图,单片机80C51,ULN2003A驱动芯片,四相步进电机,7段LED数码管等一些电路模块组成。
图3 系统的整体框图
4 控制系统的硬件设计
4.1 总体的硬件设计
设计一个单片机四相步进电机控制系统要求系统具有如下功能:
(1) 用SW0-SW2做为通电方式选择键,SW0为单四拍,SW1为双四拍,SW2为四相八拍;
(2) SW3、SW4分别为启动和方向控制;
(3) 正转时红色指示灯亮,反转时黄色指示灯亮,不转时绿色指示灯亮;
(4) 用4位LED显示工作步数。
根据设计要求用PROTEUS所做的硬件连线图如图4:
图4 总体硬件连线
4.2 四相步进电机控制电路
4.2.1启/停控制、正/反转控制、工作模式控制电路分析 原理图如图5所示:
图5 按键控制图
(1)SW0-SW2为工作模式控制开关,SWO接电时,为步进电机单四拍工作模式;SW1接电时,为步进电机双四拍工作模式;SW2接电时,步进电机工作模式为四相八拍, (2)SW3为启动/停止控制开关,控制整个系统的开启和关闭。 (3)SW4为正转/反转控制开关,控制步进电机的转向。 (4)SW5速度控制(快慢两档)。 4.2.2步进电机驱动电路
将80C51的P1.0-P1.3作为步进电机的输出控制口。电路图如下所示:
图6 步进电机的输出控制口
4.3 LED显示电路
4.3.1发光二极管显示电路
用3个不同颜色的发光二极管来作为指示灯显示,将P3.6接红灯,P3.7接黄灯,P3.3接绿灯,正转时红色指示灯亮,反转时黄色指示灯亮,不转时绿色指示灯亮。电路图如下:
图7 指示灯接线图
4.3.2八段数码管显示电路
由80C51的P0口取出显示码,从80C51的P2.0-P2.3输出位选码,设计中我们主要用到4位显示步数既可。原理图如下:
图8 显示器接线图
5控制系统的软件设计
5.1 总体的软件设计
5.1.1步进电机的工作方式 (1)四相单四拍工作方式
在这种工作方式下,A、B、C、D四相轮流通电,电流切换四次,磁场旋转一周,转子向前转过一个齿距角。因此这种通电方式叫做四相单四拍工作方式。A-B-C-D为正转,D-C-B-A为反转这时步距角θb (度)为
θb=
360mz
(公式1)
式中:m──步进电机工作拍数; z ──转子齿数
四相单四拍的数学模型:
表1
(2)双四拍工作方式
在这种工作方式下,每次都是有两相导通,两相绕组处在相同电压之下,以AB─BC─CD─DA─AB (或反之)方式通电,故称为双四拍工作方式。以这种方式通电,转子齿所处的位置相当于八拍控制方式中去掉单四拍后的四个位置。它的步距角计算公式与单四拍时的公式相同。
极分度角/齿距角= R + SW·1/m
进一步化简得齿数z:
z=q(mR+k) (公式2)
式中:m──相数; q──每相的极数; SW──≤ (m - 1)的正整数; R──正整数,为0、1、2、3……。 四相双四拍的数学模型:
表2
(3)四相八拍工作方式
在这种工作方式下,绕组以A—AB—B—BC—C—CD—D—DA—A时序(或反时序)转换8次,磁场旋转一周,转子前进一个齿距,每次切换均使转子转动1. 5°,故这种通电方式称为四相八柏工作方式。其步距角θb 为:
θb=
360
2mz
(公式3)
式中:m──步进电机工作拍数; z ──转子齿数 四相八拍的数学模型:
表3
5.1.2 系统总体流程图
设计说明:首先复位单片机,然后从P3口读出开关状态,判断是否启动,没启动绿灯
亮重新确认启动。启动后再次读取P3口数据,判断工作方式并将对应的用来存储步进电机工作方式字的数组首地址值给q。由P3.4口的双向开关来控制步进电机的正反转,如果是正转则红灯亮,反转则绿灯亮。在电机每走一步后,步数记数加1,然后通过LED显示把工作步数显示出来。再从P3口把状态信息读出来,与之前的P3口的状态信息进行比较。如果状态信息没有改变,电机继续运行。如果状态信息改变了,就需要重新返回程序的开端,对电机的运行状态进行判断,让电机重新以新的状态运行。由此,开关的状态在电机每走一步都会查询一遍,做到实时地反映。
图9 总体流程图
5.2 系统关键模块设计
5.2.1. 四相步进电机模块设计
设计说明:在此设计中,采用的是四相步进电机,对于步进电机模块的程序设计采用
循环程序设计方法。先把正反转向的控制模型存放在内存单元中,然后再逐一从单元中取出控制模块并输出。首先启动,选择步进电机的拍数,输入步数,然后读入正反转的控制模型驱动步进电机转动。 四相步进电机的流程框图:
图10 四相步进电机的流程框图 5.2.2显示模块设计
设计说明:显示模块是用4位八段数码管来显示工作步数。先将显示码存入数组中,指向最左边一位,然后取出要显示的数据,指向换码表首地址,取出显示码,从P0口输出显示码,P2口输入位选码,显示出4位工作步数,最后修改数组地址,求下一位位选码继续显示。
图11 显示模块的程序框图
5.2.3进电机调速模块流程图
图12 步进电机调速模块流程图
如图5.8为步进电机调速模块流程图,当P3.4=1时,即SW5按下,系统选择单位延时程序的循环次数为5,此时步进电机快速运转,当P3.4=0时,即SW5无效,系统选择单位延时程序的循环时间为50次,此时步进电机慢速运转。
6 系统仿真结果
6.1 四相步进电机四种工作方式
图12为步进电机工作在四相单四拍,此时SW0,SW3接高电平,SW1,SW2接低电平启动;图13为步进电机工作在四相双四拍,此时SW1,SW3接高电平,SW0,SW2接低电平;图14为步进电机工作在四相八拍,此时SW0,SW1接低电平,SW2,SW3接高电平;若SW4接高电平则反转,低电平则正转;若SW5接高电平速度快,接低电平速度慢。这四种工作方式工作不同,四相单四拍时,通电顺序为A-B-C-D-A;四相双四拍时,通电顺序为AB-BC-CD-DA;四相八拍时,通电顺序为A-AB-B-BC-C-CD-D-DA;以上通电方式是三种工作方式正转的情况,若要反转,则通电方式放过来即可,
图13 步进电机工作在四相单四拍
图14 步进电机工作在四相双四拍
图15 步进电机工作在四相八拍
6.2 相步进电机启动和停止
图15 为步进电机工作在启动状态,此时步进电机工作在四种方式之一,SW3接高电平。
图16 步进电机工作在启动状态
图16为步进电机工作在停止状态,此时步进电机工作在四种方式之一,SW3接低电平。
6.3 四相步进电机正转和反转
图17为四相步进电机工作在正转状态,此时SW4接低电平。
图17步进电机工作在停止状态
图18为四相步进电机工作在正转状态
图18为四相步进电机工作在反转状态,此时SW4接高电平
图19 为四相步进电机工作在反转状态
6.4 四相步进电机速度控制
图19为四相步进电机处于快速度状态,此时SW5接高电平。
图20为四相步进电机处于高速度状态
图20为四相步进电机处于慢速度状态,此时SW5接低电平
图21 为四相步进电机处于慢速度状态
心得体会
经过一个星期的努力和付出,完成了本次>课程设计,通过本次课程设计提高了我的设计方案和分析问题的能力,加深了对理论知识的理解,做到了理论知识与实践的联系。学会了Proteus这个仿真软件的运用,积累进行课程设计的经验。
大二下学期,我们做的课程设计有微机原理课程设计和自动控制原理,为我们这个学期的课程设计打下一个基础,初步掌握了Proteus这个软件的使用,因而这次使用它更加熟悉。首先通过本次课程设计,熟练地掌握了四相步进电机控制系统的设计,了解其工作原理,以及电路所用到一些芯片的工作状况,如80C51单片机芯片和ULN2003A驱动芯片以及7SEG-MPX4-CC四位共阴二极管显示器阴,熟悉了它们各自的特点和用途。通过本次课程设计,对理论知识有了更深入的理解,感受到计算机控制技术的魅力。
其次,通过本次课程设计,大大提高了自己的动手能力和设计能力,加深对Proteus软件功能的理解,学会用这个软件设计四相步进电机控制系统,将理论知识与实践相联系,为以后在学习和工作的发展打下一个良好的基础 。然后,通过该课程设计,初步理解了利用计算机控制技术进行四相步进电机控制系统的设计。
最后,我明白:知识不是孤立的,相互之间有联系的,我们要学会理解知识点以及学科之间的融合渗透。本次课程设计涉及到了计算机技术,自动控制技术,微机技术,数字电子技术等众多知识,因而我们需要把把各个学科之间的知识融合起来,形成一个整体。认识到Proteus这个软件的强大功能,为以后的学习和工作打下基础。
我相信未来是属于我们的,随着科学技术的发展,计算机控制技术的应用将将越来越广泛,发挥越来越重要的作用。
参考文献
[1] 于海生编著.《计算机控制技术》.北京:机械工业出版社.2005 [2] 谭浩强编著.《C程序设计》(第四版).北京:清华大学出版社.2008 [3] 彭虎、周佩琳编著.《微机原理与接口技术》. 北京:电子工业出版社.2007. [4] 刘教瑜、曾勇编著.《单片机原理与应用》.武汉:武汉理工大学出版社.2008 [5] 顶明亮、唐前辉编著.《51单片机应用设计与仿真:基于SWeil与proteus》. 北京:北京航空航天大学出版社.2009
[6] 徐安编著.《微型计算机控制技术》. 北京:科学出版社. 2005.
[7] 杨立编著.《计算机控制与仿真技术》. 北京:中国水利水电出版社. 2006 [8] 彭旭昀编著.《机电控制系统原理及工程应用》.北京:机械工业出版社.2006 [9] 杨益强、李长虹编著.《控制器件》.北京:中国水利水电出版社》.2005
附录1:总电路图
附录2:源程序
#include #include void delay1(void); void delay2(void); void display(int); int bs=0; int cishu; main() {
char a,b,c,d,j,*q,
done1[8]={0x01,0x02,0x04,0x00,0x01,0x04,0x02,0x00}, done2[8]={0x03,0x06,0x05,0x00,0x03,0x05,0x06,0x00},
done3[14]={0x01,0x03,0x02,0x06,0x04,0x05,0x00,0x01,0x05,0x04,0x06,0x02,0x03,0x00};
P3=0x20; //P3.5口置1,绿灯亮,不工作 delay1(); L: a=P3;
while(!(a&0x08)) //判断是否启动,若没启动则重新启动 { P3=0x20; a=P3; delay1();}
//判断工作模式
if(a&0x01) //方式1模型 q=done1;
if(a&0x02) //方式2模型 q=done2;
if(a&0x04) //方式3模型 q=done3; if(a&0x20) cishu=5; else cishu=50;
if(a&0x10) //判断电机是否要正转
{ P3=0x40; //P3.4口为1,电机正转,红灯亮 b=0;} else
{ P3=0x80; //P3.4口为0,电机反转,黄灯亮 if(a&0x04) b=7; else b=4; } d=b; while(1) { c=*(q+b);
if(c==0) //判断电机步数是否走完 b=d; //步数走完,电机重新再走 else
{ P1=c; //从P1输出电机控制信号
b++; bs++; //总步数加1 display(bs); //显示步数 j=a; a=P3;
if(a!=j) //判断P3口状态信号是否改变 { if(!(a&0x08))
bs=0; //若为停止信号,总步数清零 goto L; }
} //状态信号改变,返回到开始,重新对电机控制
} }
void delay1() { int i,j;
for(i=0;i
void display(int n) {
unsigned char tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67}; unsigned char i,k,t,num[4];
num[0]=n%10; //将总步数的各位分别存在num数组中 num[1]=(n/10)%10; num[2]=(n/100)%10; num[3]=(n/1000)%10; for(t=0;t
{ P2=k; //从P2口输入位选码
P0=~(tab[num[i]]); //取出显示码,并从P0口输出显示码 k=k>>1; //求下一个位选码 delay2(); } }
}
void delay2()
{ int i,j;
for(i=0;i
for(j=0;j
电机型号:step motor 28BYJ-48 5v dc 第31页