三相步进电机的计算机控制系统课程设计.docx

上传人:b****5 文档编号:14416635 上传时间:2023-06-23 格式:DOCX 页数:19 大小:216.39KB
下载 相关 举报
三相步进电机的计算机控制系统课程设计.docx_第1页
第1页 / 共19页
三相步进电机的计算机控制系统课程设计.docx_第2页
第2页 / 共19页
三相步进电机的计算机控制系统课程设计.docx_第3页
第3页 / 共19页
三相步进电机的计算机控制系统课程设计.docx_第4页
第4页 / 共19页
三相步进电机的计算机控制系统课程设计.docx_第5页
第5页 / 共19页
三相步进电机的计算机控制系统课程设计.docx_第6页
第6页 / 共19页
三相步进电机的计算机控制系统课程设计.docx_第7页
第7页 / 共19页
三相步进电机的计算机控制系统课程设计.docx_第8页
第8页 / 共19页
三相步进电机的计算机控制系统课程设计.docx_第9页
第9页 / 共19页
三相步进电机的计算机控制系统课程设计.docx_第10页
第10页 / 共19页
三相步进电机的计算机控制系统课程设计.docx_第11页
第11页 / 共19页
三相步进电机的计算机控制系统课程设计.docx_第12页
第12页 / 共19页
三相步进电机的计算机控制系统课程设计.docx_第13页
第13页 / 共19页
三相步进电机的计算机控制系统课程设计.docx_第14页
第14页 / 共19页
三相步进电机的计算机控制系统课程设计.docx_第15页
第15页 / 共19页
三相步进电机的计算机控制系统课程设计.docx_第16页
第16页 / 共19页
三相步进电机的计算机控制系统课程设计.docx_第17页
第17页 / 共19页
三相步进电机的计算机控制系统课程设计.docx_第18页
第18页 / 共19页
三相步进电机的计算机控制系统课程设计.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

三相步进电机的计算机控制系统课程设计.docx

《三相步进电机的计算机控制系统课程设计.docx》由会员分享,可在线阅读,更多相关《三相步进电机的计算机控制系统课程设计.docx(19页珍藏版)》请在冰点文库上搜索。

三相步进电机的计算机控制系统课程设计.docx

三相步进电机的计算机控制系统课程设计

目录

1设计任务及要求1

2方案比较及选择1

2.1电机驱动选择方案1

2.2LED显示选择方案1

2.3按键状态的读取1

3系统实现的原理2

3.1步进电机控制工作原理2

3.1.1步进电机的启停控制2

3.1.2步进电机的转向控制2

3.2系统设计思路2

3.3系统的整体框图3

4系统的硬件设计3

4.1总体设计3

4.2步进电机控制电路4

4.2.1启/停控制、正/反转控制、工作模式控制电路分析4

4.2.2步进电机控制电路5

4.3显示电路6

4.3.1发光二极管显示电路6

4.3.2八段数码管显示电路6

5系统软件设计7

5.1总体设计7

5.1.1步进电机的工作方式7

5.1.2系统总体流程图8

5.2关键模块设计10

5.2.1.三相步进电机模块设计10

5.2.2显示模块设计11

6系统仿真12

7小结及体会12

参考文献14

附录15

三相步进电机控制系统的设计

1设计任务及要求

设计一个三相步进电机控制系统,要求系统具有如下功能:

用K0-K2做为通电方式选择键,K0为三相单三拍,K1为三相双三拍,K2为三相六拍;K3为启动/停止控制、K4方向控制;用4位LED数码管显示工作步数。

用3个发光二极管显示状态:

正转时红灯亮,反转时黄灯亮,不转时绿灯亮。

2方案比较及选择

2.1电机驱动选择方案

方案1:

使用功率三极管等电子器件搭建成功率驱动电路来驱动电机的运行。

优点是电路简单,但信号不够稳定,器件较大而不便电路的集成。

方案2:

使用专门的电机驱动芯片ULN2004A来驱动电机运行。

其优点是便于电路的集成,且驱动简单,驱动信号稳定,不受外部干扰。

通过对方案的比较,我选择使用电机驱动芯片来作为驱动。

2.2LED显示选择方案

方案1:

把所要显示的数据通过专用的七段显示芯片的转换输出给LED显示屏。

其优点是输出简单,可以简化程序,但增加了芯片的费用。

方案2:

通过软件把所要的数据转化为七段显示的数据,直接通过单片机接口来显示,其优点是简化了电路,但增加了软件编写的负担。

通过对方案的比较,我选择通过软件编写来输出显示信号。

2.3按键状态的读取

方案1:

把按键接到单片机的中断口,若有按键按下,单片机接收到中断信号,再通过软件编写的中断程序来执行中断,优点是接线简单,简化了电路,但软件编写较为复杂,不易掌握。

方案2:

不使用中断,直接把开关分别接在单片机的接口上,通过查询端口信号来动作。

其优点是程序得到简化,可读性加强。

通过对方案的比较,我选择通过查询方式来读取端口信号。

3系统实现的原理

3.1步进电机控制工作原理

3.1.1步进电机的启停控制

步进电机由于其电气特性,运转时会有步进感,即振动感。

为了使电机转动平滑,减小振动,可在步进电机控制脉冲的上升沿和下降沿采用细分的梯形波,可以减小步进电机的步进角,提高电机运行的平稳性。

在步进电机停转时,为了防止因惯性而使电机轴产生顺滑,则需采用合适的锁定波形,产生锁定磁力矩,锁定步进电机的转轴,使步进电机的转轴不能自由转动。

3.1.2步进电机的转向控制

如果给定工作方式正序换相通电,步进电机正转。

若步进电机的励磁方式为三相六拍,即A-AB-B-BC-C-CA。

如果按反序通电换相,即则电机就反转。

其他方式情况类似。

3.2系统设计思路

此次我们所设计的是一个步进电机控制系统,主要由单片机80C51,3相步进电机,7段数码管,及一些其他相关元件设计而成。

可以通过开关来控制系统的启/停工作,当系统运转时,用开关来控制方向,并使相应的指示灯亮起,同样由开关来选择工作模式。

运转时,用4位7段数码管来输出步数。

最后根据思路所设计出来的硬件图设计相适应的软件。

3.3系统的整体框图

图1系统的整体框图

4系统的硬件设计

4.1总体设计

设计一个单片机三相步进电机控制系统要求系统具有如下功能:

(1)用K0-K2做为通电方式选择键,K0为单三拍,K1为双三拍,K2为三相六拍;

(2)K3、K4分别为启动和方向控制;

(3)正转时红色指示灯亮,反转时黄色指示灯亮,不转时绿色指示灯亮;

(4)用4位LED显示工作步数。

根据设计要求用PROTEUS所做的硬件连线图如下图1:

 

图2总体硬件连线

 

4.2步进电机控制电路

4.2.1启/停控制、正/反转控制、工作模式控制电路分析

原理图如下:

图3按键控制图

(1)K3为启/停控制开关,控制整个系统的开启和关闭。

(2)K4为正/反转控制开关,控制步进电机的转向。

(3)K0-K3为工作模式控制开关,KO接电时,为步进电机单三拍工作模式;K1接电时,为步进电机双三拍工作模式;K2接电时,步进电机工作模式为三相六拍。

4.2.2步进电机控制电路

将80c51的P1.0-P1.3作为步进电机的输出控制口。

原理图如下:

图4步进电机的输出控制口

4.3显示电路

4.3.1发光二极管显示电路

用3个不同颜色的发光二极管来作为指示灯显示,将P3.5接红灯,P3.6接黄灯,P3.7接绿灯,正转时红色指示灯亮,反转时黄色指示灯亮,不转时绿色指示灯亮。

原理图如下:

图5指示灯接线图

4.3.2八段数码管显示电路

由80c51的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

0

0

0

0

0

0

0

1

A

01H

2

0

0

0

0

0

0

1

0

B

02H

3

0

0

0

0

0

1

0

0

C

04H

表1

(2)三相六拍工作方式

在这种工作方式下,绕组以A—AB—B—BC—C—CA—A时序(或反时序)转换6次,磁场旋转一周,转子前进一个齿距,每次切换均使转子转动1.5°,故这种通电方式称为三相六柏工作方式。

其步距角θb为:

θb=360/2mz=180/mz(公式2)

六拍的数学模型:

步序

控制位

工作

状态

控制

模型

P1.7

P1.6

P1.5

P1.4

P1.3

P1.2

C相

P1.1

B相

P1.0

A相

1

0

0

0

0

0

0

0

1

A

01H

2

0

0

0

0

0

0

1

1

AB

03H

3

0

0

0

0

0

0

1

0

B

02H

4

0

0

0

0

0

1

1

0

BC

06H

5

0

0

0

0

0

1

0

0

C

04H

6

0

0

0

0

0

1

0

1

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……。

双三拍的数学模型:

步序

控制位

工作

状态

控制

模型

P1.7

P1.6

P1.5

P1.4

P1.3

P1.2

C相

P1.1

B相

P1.0

A相

1

0

0

0

0

0

0

1

1

AB

03H

2

0

0

0

0

0

1

1

0

BC

06H

3

0

0

0

0

0

1

0

1

CA

05H

表3

5.1.2系统总体流程图

设计说明:

首先复位单片机,然后从P3口读出开关状态,判断是否启动,没启动绿灯亮重新确认启动。

启动后再次读取P3口数据,判断工作方式并将对应的用来存储步进电机工作方式字的数组首地址值给q。

由P3.4口的双向开关来控制步进电机的正反转,如果是正转则红灯亮,反转则绿灯亮。

在电机每走一步后,步数记数加1,然后通过LED显示把工作步数显示出来。

再从P3口把状态信息读出来,与之前的P3口的状态信息进行比较。

如果状态信息没有改变,电机继续运行。

如果状态信息改变了,就需要重新返回程序的开端,对电机的运行状态进行判断,让电机重新以新的状态运行。

由此,开关的状态在电机每走一步都会查询一遍,做到实时地反映。

 

图7总体流程图

5.2关键模块设计

5.2.1.三相步进电机模块设计

设计说明:

在此设计中,采用的是三相步进电机,对于步进电机模块的程序设计采用循环程序设计方法。

先把正反转向的控制模型存放在内存单元中,然后再逐一从单元中取出控制模块并输出。

首先启动,选择步进电机的拍数,输入步数,然后读入正反转的控制模型驱动步进电机转动。

三相步进电机的流程框图:

图8三相步进电机的流程框图

5.2.2显示模块设计

设计说明:

显示模块是用4位八段数码管来显示工作步数。

先将显示码存入数组中,指向最左边一位,然后取出要显示的数据,指向换码表首地址,取出显示码,从P0口输出显示码,P2口输入位选码,显示出4位工作步数,最后修改数组地址,求下一位位选码继续显示。

图9显示模块的程序框图

6系统仿真

当选择电机工作在单三拍,正转的模式下,K0、K4置高电平,K1、K2置低电平,系统启动,K3置高电平,电机开始转动。

LED四位显示屏显示工作步数,LED指示灯红灯亮显示电机正转的状态。

仿真图如下:

 

图10系统仿真图

7小结及体会

经过这个学期对微机的深入学习,并且在老师的悉心指导和严格要求下,我们终于完成了三相步进电机设计课程。

从书本上的知识到自己亲手的课程设计,每一步对我们来说无疑是巨大的尝试和挑战,也成就了我们目前在大学期间独立完成的最大的项目。

记得在刚接到这个课题时,由于对相关知识不是很了解,我们都有些茫然不知所措。

设计好一个步进电机需要什么专业知识?

带着这个疑问我们开始了地学习和实验:

去图书馆查阅相关资料、上网去了解相关的内容,渐渐头脑中的概念清晰了起来。

在具体设计的过程中,我们遇到了更大的困难。

我们不断地给自己提出新的问题,然后去论证、推翻,再接着提出新的问题。

在这个循环往复的过程中,我们这篇稚嫩的设计日臻完善。

虽然我们的设计作品不是很成熟,即使借鉴前人的很多资料仍然还有很多不足之处,但我仍然心里有一种莫大的幸福感,因为我们实实在在地走过了一个完整的设计所应该走的每一个过程,并且享受了每一个过程。

 

参考文献

[1]于海生编著.《计算机控制技术》.北京:

机械工业出版社.2005

[2]张义和、王敏男等编著.《例说51单片机》.北京:

人民邮电出版社.2008

[3]张靖武,周灵彬编著.《单片机系统的PROTEUS设计与仿真》.北京:

电子工业出版社,2007.

[4]求是科技编著.《单片机典型模块设计实例导航》.北京:

人民邮电出版社,2008

[5]顶明亮、唐前辉编著.《51单片机应用设计与仿真:

基于keil与proteus》.

北京:

北京航空航天大学出版社,2009

 

附录

总程序如下:

#include

#include

voiddelay1(void);

voiddelay2(void);

voiddisplay(int);

intbs=0;

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();}

a=P3;//判断工作模式

if(a&0x01)//方式1模型

q=done1;

if(a&0x02)//方式2模型

q=done2;

if(a&0x04)//方式3模型

q=done3;

if(a&0x10)//判断电机是否要正转

{P3=0x80;//P3.4口为1,电机正转,红灯亮

b=0;}

else

{P3=0x40;//P3.4口为,电机反转,黄灯亮

if(a&0x04)b=7;

elseb=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;//若为停止信号,总步数清零

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<50;t++)//扫描50次

{k=0x08;//位选码指向最左一位,第四位

for(i=0;i<4;i++)

{P2=k;//从P2口输入位选码

P0=~(tab[num[i]]);//取出显示码,并从P0口输出显示码

k=k>>1;//求下一个位选码

delay2();

}

}

}

voiddelay2()

{inti,j;

for(i=0;i<10;i++)

for(j=0;j<60;j++);

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2