三相步进电机控制系统的设计课程设计论文Word下载.docx
《三相步进电机控制系统的设计课程设计论文Word下载.docx》由会员分享,可在线阅读,更多相关《三相步进电机控制系统的设计课程设计论文Word下载.docx(24页珍藏版)》请在冰豆网上搜索。
2.1电机驱动选择方案6
2.2LED显示选择方案6
2.3按键状态的读取6
3系统实现的原理7
3.1步进电机控制工作原理7
3.1.1步进电机的启停控制7
3.1.2步进电机的工作原理7
3.1.3步进电机的转向控制7
3.1.4步进电机的启停控制8
3.1.5步进电机的速度控制8
3.2系统设计思路8
3.3系统的整体框图9
4系统的硬件设计10
4.1总体设计11
4.2步进电机控制电路12
4.2.1启/停控制、正/反转控制、工作模式控制电路分析13
4.2.2步进电机控制电路11
4.3显示电路12
4.3.1发光二极管显示电路12
4.3.2八段数码管显示电路12
5系统软件设计13
5.1总体设计13
5.1.2系统总体流程图15
5.2关键模块设计17
5.2.1.三相步进电机模块设计17
5.2.2显示模块设计18
5.5.2步进电机调速模块流程图19
6系统仿真20
7小结及体会22
参考文献23
附录24
三相步进电机控制系统的设计
1设计任务及要求
1.1设计任务
设计一个三相步进电机控制系统,要求系统具有如下功能:
K3为启动/停止控制、K4方向控制;
K5加速控制,K6减速控制;
硬件设计:
系统总原理图。
软件设计:
系统总体流程图、步进电机单三拍,双三拍,三相六拍各模块流程图、显示模块流程图等。
编写程序,能够完成上述任务。
1.2任务分析
设计要求设计一个三相步进电机控制系统,分析可以得出它的几个基本功能:
1.三相步进电机控制系统能够以三相单三拍,三相双三拍,三相六拍的方式运行,因此要输出相应的控制字进行控制;
2.三相步进电机控制系统能实现正反转和调速控制,能够改变电机运行的方向和速率;
3.三相步进电机控制系统有显示功能,可以采用共阳极的LED数码管对步数进行显示。
2方案选择
2.1电机驱动选择方案
方案:
使用专门的电机驱动芯片ULN2004A来驱动电机运行。
其优点是便于电路的集成,且驱动简单,驱动信号稳定,不受外部干扰。
2.2LED显示选择方案
通过软件把所要的数据转化为七段显示的数据,通过单片机接口接上具有放大功能的芯片输出到LED显示,这样比较直观。
2.3按键状态的读取
方案:
不使用中断,直接把开关分别接在单片机的接口上,通过查询端口信号来动作。
其优点是程序得到简化,可读性加强
各个部分的选择都综合了成本及实现的难易度,使实现并不是很难而且具有节省材料作用。
3系统实现的原理
3.1步进电机控制工作原理
3.1.1步进电机的启停控制
步进电机由于其电气特性,运转时会有步进感,即振动感。
为了使电机转动平滑,减小振动,可在步进电机控制脉冲的上升沿和下降沿采用细分的梯形波,可以减小步进电机的步进角,提高电机运行的平稳性。
在步进电机停转时,为了防止因惯性而使电机轴产生顺滑,则需采用合适的锁定波形,产生锁定磁力矩,锁定步进电机的转轴,使步进电机的转轴不能自由转动。
3.1.2步进电机的工作原理
图1步进电机三相接线图
如图1所示,U1、V1、W1接电源,分别有三个开关控制,U2、V2、W2分别接地。
如果给处于错齿状态的相通电,则转子在电磁力的作用下,将向磁导率最大(即最小磁阻位置)位置转动,即向趋于对齿的状态转动。
3.1.3步进电机的转向控制
如果给定工作方式正序换相通电,步进电机正转。
若步进电机的励磁方式为三相六拍,即A-AB-B-BC-C-CA。
如果按反序通电换相,即则电机就反转。
其他方式情况类似。
3.1.5步进电机的速度控制
步进电动机运转的速度是由输入到A、B、C三相绕组的频率所决定的。
给的脉冲的频率越高,电动机运转的速度越快,否则,速度就越慢。
因而通过延时程序可以控制输出脉冲的频率,就可以实现对步进电机速度的控制。
3.2系统设计思路
此次我所设计的是一个步进电机控制系统,主要由单片机80C51,3相步进电机,7段数码管,74HC573及一些其他相关元件设计而成。
有红黄绿三个指示灯,通过单刀双掷开关来控制系统的启/停工作,当开关处于不同状态有不同指示灯亮起。
当系统开始运转时,用单刀双掷开关来控制方向,并使相应的指示灯亮起,同样由单刀双掷开关来选择工作模式。
运转时,用4位7段数码管来输出步数,同时可以通过数码管看出电机的运转速度。
最后根据思路所设计出来的硬件图设计相适应的软件。
3.3系统的整体框图
下图为系统总体设计方框图,单片机AT89C51,ULN2003A驱动芯片,三相步进电机,74HC573,7段LED数码管等一些电路模块组成。
图2系统的整体框图
4系统的硬件设计
4.1总体设计
设计一个单片机三相步进电机控制系统要求系统具有如下功能:
(1)用K0-K2做为通电方式选择键,K0为单三拍,K1为双三拍,K2为三相六拍;
(2)K3、K4分别为启动和方向控制;
(3)K5和K6控制加速和减速。
(4)正转时黄色指示灯亮,反转时绿色指示灯亮,不转时红色指示灯亮;
(5)用4位LED显示工作步数。
根据设计要求用PROTEUS所做的硬件连线图如下图1:
图1总体硬件连线
4.2步进电机控制电路
4.2.1启/停控制、正/反转控制、工作模式控制电路分析
原理图如下:
图2按键控制图
(1)K3为启/停控制开关,控制整个系统的开启和关闭。
(2)K4为正/反转控制开关,控制步进电机的转向。
(3)K0-K3为工作模式控制开关,KO接电时,为步进电机单三拍工作模式;
K1接电时,为步进电机双三拍工作模式;
K2接电时,步进电机工作模式为三相六拍,K5加速,K6减速。
4.2.2步进电机控制电路
将80c51的P1.0-P1.3作为步进电机的输出控制口。
图4步进电机的输出控制口
4.3显示电路
4.3.1发光二极管显示电路
用3个不同颜色的发光二极管来作为指示灯显示,将P3.3接红灯,P3.7和开关K3经过与门与非门接绿灯,P3.7接黄灯,正转时黄色指示灯亮,反转时绿色指示灯亮,不转时红色指示灯亮。
图5指示灯接线图
4.3.2八段数码管显示电路
由80c51的P0口取出显示码,74HC573放大P0口的信号,从80c51的P2.0-P2.3输出位选码,设计中我们主要用到4位显示步数既可。
图6led接线图
5系统软件设计
5.1总体设计
5.1.1步进电机的工作方式
(1)三相单三拍工作方式
在这种工作方式下,A、B、C三相轮流通电,电流切换三次,磁场旋转一周,转子向前转过一个齿距角。
因此这种通电方式叫做三相单三拍工作方式。
这时步距角θb(度)为
θb=360/mz(公式1)
式中:
m──定子相数;
z──转子齿数
单三拍的数学模型:
步序
控制位
工作
状态
控制
模型
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
C相
P1.1
B相
P1.0
A相
1
A
01H
2
B
02H
3
C
04H
表1
(2)三相六拍工作方式
在这种工作方式下,绕组以A—AB—B—BC—C—CA—A时序(或反时序)转换6次,磁场旋转一周,转子前进一个齿距,每次切换均使转子转动1.5°
故这种通电方式称为三相六柏工作方式。
其步距角θb为:
θb=360/2mz=180/mz(公式2)
六拍的数学模型:
AB
03H
4
BC
06H
5
6
CA
05H
表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……。
双三拍的数学模型:
表3
5.1.2系统总体流程图
设计说明:
复位单片机,然后从P3口读出开关状态,判断电机是否启动,没启动红灯亮重新确认启动。
启动后再次读取P3口数据,判断工作方式并将对应的用来存储步进电机工作方式字的数组首地址值给q。
由P3.4口的单刀双掷开关来控制步进电机的正反转,正转则黄灯亮,反转则绿灯亮。
在电机每走一步后,步数记数加1,然后通过LED显示把工作步数显示出来。
同时LED也会显示工作的速度。
再从P3口把状态信息读出来,与之前的P3口的状态信息进行比较。
如果状态信息没有改变,电机继续运行。
如果状态信息改变了,就需要重新返回程序的开端,对电机的运行状态进行判断,让电机重新以新的状态运行。
由此,开关的状态在电机每走一步都会查询一遍,做到实时地反映。
图7总体流程图
5.2关键模块设计
5.2.1.三相步进电机模块设计
设计说明:
在此设计中,采用的是三相步进电机,对于步进电机模块的程序设计采用循环程序设计方法。
先把正反转向的控制模型存放在内存单元中,然后再逐一从单元中取出控制模块并输出。
首先启动,选择步进电机的拍数,输入步数,然后读入正反转的控制模型驱动步进电机转动。
三相步进电机的流程框图:
图8三相步进电机的流程框图
5.2.2显示模块设计
显示模块是用4位八段数码管来显示工作步数。
先将显示码存入数组中,指向最左边一位,然后取出要显示的数据,指向换码表首地址,取出显示码,从P0口输出显示码,P2口输入位选码,显示出4位工作步数,最后修改数组地址,求下一位位选码继续显示。
图9显示模块的程序框图
5.5.2步进电机调速模块流程图
如图5.8为步进电机调速模块流程图,当P1.4=1时,即K4按下,系统选择单位延时程序的循环次数为5,此时步进电机快速运转,当P1.4=0时,即K4无效,系统选择单位延时程序的循环时间为50次,此时步进电机慢速运转。
6系统仿真
当选择电机工作在单三拍,正转的模式下,K0、K4置高电平,K1、K2置低电平,系统启动,K3置高电平,K5置高电平,K6低电平,电机开始转动。
LED四位显示屏显示工作步数,LED指示灯黄灯亮显示电机正转的状态。
而且电机处于加速状态,仿真图如下:
图11系统仿真图1
单三拍反转加速如系统仿真图2
图12系统仿真图2
三相六拍停止如系统仿真图3所示
图13系统仿真图3
三相双三拍减速如系统仿真图4所示
图14系统仿真图4
上面就是各种状态和运行方式的显示图,经过对各种状态的测试仿真后,可以确定本次电路与软件的设计是符合要求的,设计成功。
7小结及体会
经过了这段时间的设计,我终于完成了计算机控制技术这门课的课程设计。
通过本次设计,我感到书本上学的知识是远远不够的,要动手做东西才能发现自己的不足。
在设计电路图的过程中我意识到了仔细对于一个设计者是相当重要的,因为一根线小小的差错就让我排除了很长时间,所以在开始连线或者布局的时候一定要想好而且要仔细的操作。
这次设计极大的提高了我的动手能力以及综合分析问题的能力。
让我对这门课有了更深的了解。
让我对自己的本专业也有了更深的体会。
让我能够软硬结合,更好的学好今后的课程。
此外,这次课设让我对proteus和keil软件的使用更加的熟练,在以后的学习中也会用到这两个软件,这样我在以后的学习中能更快的掌握知识,熟练掌握这两个软件之后对于我学习使用新的软件也哟有很大的帮助。
总之,这次课设是受益匪浅的。
相信以后的我对于学习还是工作,都能够拿出做课设时候的努力,做好每一件事情。
参考文献
[1]李发海王岩编著.《电机与拖动基础》.北京:
清华大学出版社.2012
[2]于海生编著.《计算机控制技术》.北京:
机械工业出版社.2005
[3]张靖武,周灵彬编著.《单片机系统的PROTEUS设计与仿真》.北京:
电子工业出版社.2007.
[4]顶明亮、唐前辉编著.《51单片机应用设计与仿真:
基于keil与proteus》.
北京:
北京航空航天大学出版社.2009
[5]彭虎、周佩琳编著.《微机原理与接口技术》.
电子工业出版社.2007.
[6]张义和、王敏男等编著.《例说51单片机》.北京:
人民邮电出版社.2008
附录
程序控制单片机的P0-P3口,其中P0和P2口控制LED上的步数与速度显示,P1控制电机的运转,P3控制运行方式和启停。
总程序如下:
#include<
reg51.h>
#include<
stdio.h>
voiddelay1(void);
voiddelay2(void);
voiddisplay(int);
//控制显示
intbushu=0;
//总步数
intcishu;
//次数(控制速度)
main()
{
chara,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)//单三拍
q=done1;
0x02)//双三拍
q=done2;
0x04)//三相六拍
q=done3;
if(a&
0x20)
cishu=5;
0x40)
cishu=50;
elsecishu=10;
//控制运行速度,加速与减速
if(a&
0x10)//判断电机是否要正转
{P3=0x80;
//使P3.4口为1,电机正转,黄灯亮
b=0;
else
{P3=0x00;
//使P3.4口为1,电机反转,绿灯亮
0x04)b=7;
elseb=4;
}
d=b;
while
(1)
{c=*(q+b);
//判断电机步数是否走完
if(c==0)b=d;
//步数走完,电机重新再走
else
{P1=c;
//从P1输出电机控制信号
b++;
bushu++;
//总步数加1
display(bushu);
//显示步数
j=a;
if(a!
=j)//判断P3口状态信号是否改变
{if(!
0x08))bs=0;
//若为停止信号,总步数清零
gotoL;
}//状态信号改变,返回到开始,重新对电机控制
}
}
voiddelay1()
{inti,j;
for(i=0;
i<
200;
i++)
for(j=0;
j<
300;
j++);
voiddisplay(intn)
{unsignedchartab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67};
unsignedchari,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<
cishu;
t++)//扫描快慢指定次数
{k=0x08;
//位选码指向最左一位,第四位
for(i=0;
4;
{P2=k;
//从P2口输入位选码
P0=~(tab[num[i]]);
//取出显示码,并从P0口输出显示码
k=k>
>
1;
//求下一个位选码
delay2();
voiddelay2()
12;
for(j=0;
65;
本科生课程设计成绩评定表
姓名
性别
男
专业、班级
自动化
课程设计题目:
课程设计答辩或质疑记录:
成绩评定依据:
评定项目
评分成绩
1.考勤、态度(15分)
2.查阅资料能力(10分)
3.系统设计:
包括系统实现原理、框图、方案的说明(20分)
4.硬件电路、程序编写、调试结果(20分)
5.设计说明书质量及规范化、参考文献充分(不少于5篇)(15分)
6.答辩(20分)
总分:
最终评定成绩(以优、良、中、及格、不及格评定)
指导教师签字:
年月日