三相步进电机控制程序及电路.docx

上传人:b****5 文档编号:28838295 上传时间:2023-07-20 格式:DOCX 页数:12 大小:87KB
下载 相关 举报
三相步进电机控制程序及电路.docx_第1页
第1页 / 共12页
三相步进电机控制程序及电路.docx_第2页
第2页 / 共12页
三相步进电机控制程序及电路.docx_第3页
第3页 / 共12页
三相步进电机控制程序及电路.docx_第4页
第4页 / 共12页
三相步进电机控制程序及电路.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

三相步进电机控制程序及电路.docx

《三相步进电机控制程序及电路.docx》由会员分享,可在线阅读,更多相关《三相步进电机控制程序及电路.docx(12页珍藏版)》请在冰豆网上搜索。

三相步进电机控制程序及电路.docx

三相步进电机控制程序及电路

课程论文

题目:

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

课程名称:

Proteus

学生姓名:

刘卫东

学生学号:

系别:

电子工程学院

专业:

通信工程

年级:

2012级

任课教师:

王丽

电子工程学院制

2015年4月

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

学生:

刘卫东

指导教师:

王丽

电子工程学院通信工程

1系统硬件介绍

1.1AT89C51单片机简介

AT89C51是一种带4k字节闪烁可编程课擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

主要特性:

(1)与MCS-51兼容

(2)4K字节可编程闪烁存储器

(3)寿命:

1000写/擦循环

(4)数据保留时间:

10年

(5)全静态工作:

0Hz-24Hz

(6)三级程序存储器锁定

(7)128*8位内部RAM

(8)32可编程I/O线

(9)两个16位定时器/计数器

(10)5个中断源

(11)可编程串行通道

(12)低功耗的闲置和掉电模式

(13)片内振荡器和时钟电路

1.2ULN2003A芯片介绍

经常在以下电路中使用,作为:

1、显示驱动

2、继电器驱动

3、照明灯驱动

4、电磁阀驱动

5、伺服电机、步进电机驱动等电路中。

基本参数:

模块配置:

7NPN

电压,Vceo:

50V

集电极直流电流:

500mA

直流电流增益hFE:

1000

工作温度范围:

-20°Cto+85°C

封装类型:

PDIP

引脚数:

16

封装类型:

DIP

晶体管数:

7

表面安装器件:

通孔安装器件标号:

2003

最大连续电流,Ic:

500mA

芯片标号:

2003

输入电压最大:

30V

输入类型:

5VTTLCMOS

输出电压最大:

50V

输出电流最大:

0.6A

通道数:

7

2硬件电路设计

2.1总体的硬件设计

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

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

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

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

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

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

图1总体硬件连线

2.2三相步进电机控制电路

2.2.1启/停控制、正/反转控制、工作模式控制电路分析原理图如图2所示;

图2按键控制图

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

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

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

(4)K5速度控制(快慢两档)。

2.2.2步进电机驱动电路

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

电路图如下所示:

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

2.3LED显示电路

2.3.1发光二极管显示电路

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

图如下:

图4指示灯接线图

2.3.2八段数码管显示电路

由80C51的P0口取出显示码,从80C51的P2.0-P2.3输出位选码,设计中我们主要用到4位显示步数既可。

原理图如下:

图5显示器接线图

3程序设计流程图

设计说明:

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

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

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

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

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

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

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

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

图6总体流程图

4仿真结果与分析

4.1三相步进电机三种工作方式

图7为步进电机工作在三相单三拍,此时K0,K3接高电平,K1,K2接低电平启动;图8为步进电机工作在三相双三拍,此时K1,K3接高电平,K0,K2接低电平;图9为步进电机工作在三相六拍,此时K0,K1接低电平,K2,K3接高电平;若K4接高电平则反转,低电平则正转;若K5接高电平速度快,接低电平速度慢。

这三种工作方式工作不同,三相单三拍时,通电顺序为A-B-C-A;三相双三拍时,通电顺序为AB-BC-CA-AB;三相六拍时,通电顺序为A-AB-B-BC-C-CA-A;以上通电方式是三种工作方式正转的情况,若要反转,则通电方式放过来即可。

图7步进电机工作在三相单三拍

图8步进电机工作在三相双三拍

图9步进电机工作在三相六拍

4.2相步进电机启动和停止

图15为步进电机工作在启动状态,此时步进电机工作在三种方式之一,K3接高电平。

图10步进电机工作在启动状态

图11为步进电机工作在停止状态,此时步进电机工作在三种方式之一,K3接低电平。

图11步进电机工作在停止状态

4.3三相步进电机正转和反转

图12为三相步进电机工作在正转状态,此时K4接低电平。

图12为三相步进电机工作在正转状态

图13为三相步进电机工作在反转状态,此时K4接高电平

图13为三相步进电机工作在反转状态

4.4三相步进电机速度控制

图14为三相步进电机处于快速度状态,此时K5接高电平。

图14为三相步进电机处于高速度状态

图15为三相步进电机处于慢速度状态,此时K5接低电平

图15为三相步进电机处于慢速度状态

5总结

经过一个星期的努力和付出,完成了本次<>课程设计,通过本次课程设计提高了我的设计方案和分析问题的能力,加深了对理论知识的理解,做到了理论知识与实践的联系。

学会了Proteus这个仿真软件的运用,积累进行课程设计的经验。

首先通过本次课程设计,熟练地掌握了三相步进电机控制系统的设计,了解其工作原理,以及电路所用到一些芯片的工作状况,如80C51单片机芯片和ULN2003A驱动芯片以及7SEG-MPX4-CC四位共阴二极管显示器阴,熟悉了它们各自的特点和用途。

通过本次课程设计,对理论知识有了更深入的理解,感受到proteus的魅力。

其次,通过本次课程设计,大大提高了自己的动手能力和设计能力,加深对Proteus软件功能的理解,学会用这个软件设计三相步进电机控制系统,将理论知识与实践相联系,为以后在学习和工作的发展打下一个良好的基础。

然后,通过该课程设计,初步理解了利用计算机控制技术进行三相步进电机控制系统的设计。

参考文献

[1]于海生编着.计算机控制技术[M].北京:

机械工业出版社.2005.

[2]谭浩强编着.C程序设计(第三版)[M].北京:

清华大学出版社.2008.

[3]彭虎、周佩琳编着.微机原理与接口技术[M].北京:

电子工业出版社.2007.

[4]刘教瑜、曾勇编着.单片机原理与应用[M].武汉:

武汉理工大学出版社.2008.

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

基于keil与proteus[M].

北京:

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

[6]徐安编着.微型计算机控制技术[M].北京:

科学出版社.2005.

[7]杨立编着.计算机控制与仿真技术[M].北京:

中国水利水电出版社.2006.

[8]彭旭昀编着.机电控制系统原理及工程应用[M].北京:

机械工业出版社.2006.

[9]杨益强、李长虹编着.控制器件[M].北京:

中国水利水电出版社.2005.

附录:

#include

#include

voiddelay1(void);

voiddelay2(void);

voiddisplay(int);

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

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

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

q=done1;

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

q=done2;

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

q=done3;

if(a&0x20)

cishu=5;

elsecishu=50;

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

{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-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1