基于单片机的步进电机控制系统设计本科生毕业设计论文.docx

上传人:b****2 文档编号:16971796 上传时间:2023-07-20 格式:DOCX 页数:41 大小:589.17KB
下载 相关 举报
基于单片机的步进电机控制系统设计本科生毕业设计论文.docx_第1页
第1页 / 共41页
基于单片机的步进电机控制系统设计本科生毕业设计论文.docx_第2页
第2页 / 共41页
基于单片机的步进电机控制系统设计本科生毕业设计论文.docx_第3页
第3页 / 共41页
基于单片机的步进电机控制系统设计本科生毕业设计论文.docx_第4页
第4页 / 共41页
基于单片机的步进电机控制系统设计本科生毕业设计论文.docx_第5页
第5页 / 共41页
基于单片机的步进电机控制系统设计本科生毕业设计论文.docx_第6页
第6页 / 共41页
基于单片机的步进电机控制系统设计本科生毕业设计论文.docx_第7页
第7页 / 共41页
基于单片机的步进电机控制系统设计本科生毕业设计论文.docx_第8页
第8页 / 共41页
基于单片机的步进电机控制系统设计本科生毕业设计论文.docx_第9页
第9页 / 共41页
基于单片机的步进电机控制系统设计本科生毕业设计论文.docx_第10页
第10页 / 共41页
基于单片机的步进电机控制系统设计本科生毕业设计论文.docx_第11页
第11页 / 共41页
基于单片机的步进电机控制系统设计本科生毕业设计论文.docx_第12页
第12页 / 共41页
基于单片机的步进电机控制系统设计本科生毕业设计论文.docx_第13页
第13页 / 共41页
基于单片机的步进电机控制系统设计本科生毕业设计论文.docx_第14页
第14页 / 共41页
基于单片机的步进电机控制系统设计本科生毕业设计论文.docx_第15页
第15页 / 共41页
基于单片机的步进电机控制系统设计本科生毕业设计论文.docx_第16页
第16页 / 共41页
基于单片机的步进电机控制系统设计本科生毕业设计论文.docx_第17页
第17页 / 共41页
基于单片机的步进电机控制系统设计本科生毕业设计论文.docx_第18页
第18页 / 共41页
基于单片机的步进电机控制系统设计本科生毕业设计论文.docx_第19页
第19页 / 共41页
基于单片机的步进电机控制系统设计本科生毕业设计论文.docx_第20页
第20页 / 共41页
亲,该文档总共41页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于单片机的步进电机控制系统设计本科生毕业设计论文.docx

《基于单片机的步进电机控制系统设计本科生毕业设计论文.docx》由会员分享,可在线阅读,更多相关《基于单片机的步进电机控制系统设计本科生毕业设计论文.docx(41页珍藏版)》请在冰点文库上搜索。

基于单片机的步进电机控制系统设计本科生毕业设计论文.docx

基于单片机的步进电机控制系统设计本科生毕业设计论文

单片机技术与应用

课程设计

 

题目

步进电机控制系统设计

院系

年级

专业

班级

学号

姓名

指导教师

设计时间

课程设计独创性声明:

该课程设计是通过我们小组成员研究合作共同完成。

小组中每个人都付出了努力和汗水。

小组成员之间配合默契,分工明确。

我们在题目的基础上有所突破。

除了文中特别加以标注的参考文献外,本次课程设计中不包含其他人已经发表或撰写过的研究成果。

学生签名:

实训报告成绩:

项目

评分比例

平时考核

30%

实训报告

30%

答辩

40%

实训成绩

 

指导教师(签字):

年月日

 

步进电机控制系统设计

摘要

本设计通过ATMEL89C51单片机对步进电机进行控制,主要介绍了步进电机控制器、驱动电路和LED显示电路的设计,实现了步进电机的控制。

具有以下功能:

1、按下不同的键,分别使步进电机实现顺时针和逆时针旋转;2、电机运转状态可以是正反转,加速减速;3、通过LED数码管显示电机运行状态特点。

该系统具有成本低、控制方便的特点。

关键词:

单片机步进电机调速控制

Steppermotorcontrolsystemdesign

Abstract

ThedesignbyATMEL89C51Microcontrollersteppermotorcontrol,mainlythesteppermotorcontroller,drivecircuitandLEDdisplaycircuitdesigntoachieveasteppermotorcontrol.Ithasthefollowingfeatures:

1.Pressdifferentkeys,respectivelysteppermotorclockwiseandcounterclockwise;2,motorrunningstatemaybereversing,accelerationanddeceleration;3,throughtheLEDdigitaldisplaymotorrunningfeatures.Thesystemislowcost,convenientcontrolfeatures.

Keywords:

microcontroller;Steppermotor;SpeedControl

 

1.引言

1.1步进电机

步进电机是一种将电脉冲转化为角位移的执行机构。

电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。

步进电机最早是在1920年由英国人所开发。

1950年后期晶体管的发明也逐渐应用在步进电机上,这对于数字化的控制变得更为容易。

以后经过不断改良,使得今日步进电机已广泛运用在需要高定位精度、高分解性能、高响应性、信赖性等灵活控制性高的机械系统中[4]。

在生产过程中要求自动化、省人力、效率高的机器中,我们很容易发现步进电机的踪迹,尤其以重视速度、位置控制、需要精确操作各项指令动作的灵活控制性场合步进电机用得最多。

步进电机作为执行元件,是机电一体化的关键产品之一, 广泛应用在各种自动化控制系统中。

随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用[14]。

1.2研究的目的和意义

步进电机是将电脉冲信号变换成角位移或直线位移的执行部件。

步进电机可以直接用数字信号驱动,使用非常方便。

一般电动机都是连续转动的,而步进电动机则有定位和运转两种基本状态,当有脉冲输入时步进电动机一步一步地转动,每给它一个脉冲信号,它就转过一定的角度。

步进电动机的角位移量和输入脉冲的个数严格成正比,在时间上与输入脉冲同步,因此只要控制输入脉冲的数量、频率及电动机绕组通电的相序,便可获得所需的转角、转速及转动方向[5]。

在没有脉冲输入时,在绕组电源的激励下气隙磁场能使转子保持原有位置处于定位状态。

因此非常适合于单片机控制。

步进电机还具有快速启动、精确步进和定位等特点,因而在数控机床,绘图仪,打印机以及光学仪器中得到广泛的应用。

步进电动机已成为除直流电动机和交流电动机以外的第三类电动机。

步进电机可以作为一种控制用的特种电机,利用其没有积累误差(精度为100%)的特点,广泛应用于各种开环控制。

随着微电子和计算机技术的发展,步进电动机的需求量与日俱增,研制步进电机驱动器及其控制系统具有十分重要的意义。

1.3步进电机工作原理

1.3.1步进电机的控制

1.换相顺序控制:

通电换相这一过程称为脉冲分配。

例如:

混合式步进电机的工作方式,其各相通电顺序为A-B-C-D,通电控制脉冲必须严格按照这一顺序分别控制A,B,C,D相的通断。

2.控制步进电机的转向控制:

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

3.控制步进电机的速度控制:

如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。

两个脉冲的间隔越短,步进电机就转得越快。

1.3.2步进电机的工作过程

图1.1步进电机原理图

开关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相绕组磁极产生错齿。

依次类推,A、B、C、D四相绕组轮流供电,则转子会沿着A、B、C、D方向转动。

四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。

单四拍与双四拍的步距角相等,但单四拍的转动力矩小。

八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度[1]。

单四拍、双四拍与八拍工作方式的电源通电时序与波形分别如图1.2a、b、c所示:

a.单四拍b.双四拍c八拍

图1.2步进电机工作时序波形图

对步进电机四个绕组依次实现如下方式的循环通电控制:

单四拍运行:

正转A-B-C-D;反转D-C-B-A

双四拍运行:

正转AB-BC-CD-DA;反转DC-CB-BA-AD

八拍运行:

正转A-AB-B-BC-C-CD-D-DA

本实验使用的是单双八拍循环控制

1.3.3步进电机的转速计算

四相步进电机有两种运行方式,一、四相四拍;二、四相八拍。

1.拍数:

完成一个磁场周期性变化所需脉冲数或导电状态用n表示,或指电机转过一个齿距角所需脉冲数,以四相电机为例,有四相四拍运行方式即AB-BC-CD-DA-AB,四相八拍运行方式即A-AB-B-BC-C-CD-D-DA-A.

2.步距角:

对应一个脉冲信号,电机转子转过的角位移用θ表示。

θ=360度(转子齿数J*运行拍数),以常规二、四相,转子齿为50齿电机为例。

四拍运行时步距角为θ=360度/(50*4)=1.8度(俗称整步),八拍运行时步距角为θ=360度/(50*8)=0.9度(俗称半步)[11]。

这两个概念清楚后,我们再来计算转速,以基本步距角1.8°的步进电机为例(现在市场上常规的二、四相混合式步进电机基本步距角都是1.8°),四相八拍运行方式下,每接收一个脉冲信号,转过0.9°,如果每秒钟接收400个脉冲,那么转速为每秒400X0.9°=360°,相当与每秒钟转一圈,每分钟60转。

其他情况同理可以计算得出。

2.系统概述

2.1系统实现功能

1、按下不同的键,分别使步进电机实现正反旋转;

2、电机运转状态可以是正反转,加速减速;

3、通过LED数码管显示电机转速与运行状态特点;

4、按下复位键即可停止运行。

2.2系统总体构成

系统由AT89C52单片机、复位电路和晶振电路构成的单片机最小系统,按键电路模块,数码管显示模块和电机驱动模块构成。

图2.1系统总体构成框架图

 

2.3系统工作流程

2.3.1主程序框图

图2.2.主程序框图

 

系统主程序先要定义相关引脚数据,声明相关函数,然后进入到主程序,主程序我这边是放的按键处理程序,通过按键选择正反加减速;按键处理程序之后是调用电机旋转函数,实现电机的正反加减速运行;电机旋转程序之后是调用数码管显示程序,用来显示电机正反加减速和转速;然后在进行按键处理程序,循环进行。

 

2.3.2按键处理程序框图

 

图2.3按键处理程序框图

 

按键处理程序放在主函数里面,主要判断按键状态,如果有按键按下,那么定义相关数据,与之后电机旋转函数共同实现相关功能。

 

3.硬件电路设计

硬件方面采用的是普中科技的一款STC89C52单片机开发板,其具备本次设计所需的所有模块。

查看其单片机开发板说明得知,各个模块之间的相关电路已经通过一定的方式连接,所以在硬件设计过程中需要根据其说明来连线,也需要更改相关程序来适应其电路。

3.1单片机最小系统

单片机最小系统或者称为最小应用系统,就是用最少的元件组成的单片机可以工作的系统,对52系列单片机来说,最小系统一般应该包括:

单片机、复位电路、晶振电路。

图3.1最小系统

2.3.1AT89C52单片机简介

AT89C52单片机是ATMEL公司推出的高档型AT89S系列单片机中的增强型产品。

关于其功能原理及其应用不再赘述。

这里只介绍本实验用到的端口和功能。

(1)VCC(40):

电源+5V。

(2)VSS(20):

接地,也就是GND。

(3)XTL1(19)和XTL2(18):

振荡电路。

单片机是一种时序电路,必须有脉冲信号才能工作,在它的内部有一个时钟产生电路,有两种振荡方式,一种是内部振荡方式,只要接上两个电容和一个晶振即可;另一种是外部振荡方式,采用外部振荡方式时,需在XTL2上加外部时钟信号。

(4)PSEN(29):

片外ROM选通信号,低电平有效。

(5)ALE/PROG(30):

地址锁存信号输出端/EPROM编程脉冲输入端。

(6)RST/VPD(9):

复位信号输入端/备用电源输入端。

(7)EA/VPP(31):

内/外部ROM选择端

(8)P0口(39-32):

双向I/O口。

(9)P1口(1-8):

准双向通用I/0口。

(10)P2口(21-28):

准双向I/0口

图3.2.AT89C52单片机引脚图

2.3.2复位电路

复位电路采用手动复位和上电自动复位。

上电自动复位:

在单片机上电的瞬间,RC电路充电,由于电容上电电压不能突变,所以RST引脚出现高电平,RST引脚出现的高电平将会随着对电容C的充电过程而逐渐回落。

手动复位:

当按下复位按钮时,RST出现高电平,实现复位。

本设计方案中将复位按键作为停止键使用,当按下复位按钮之后,电路停止运行,回到刚通电时状态。

图3.3复位电路

2.3.3振荡电路

振荡电路与复位电路组成单片机最小系统,本电路为12MHz晶振电路。

图3.4晶振电路

3.3按键电路模块

K1~K4为本次设计的实现点机正反加减速旋转的开关按键,与P3口相连。

K2,K3为正反转控制按键,K1,K4为加减速控制按键,当K2或者K3按下时,电机才会转动。

图3.5独立按键电路

 

3.4数码管显示电路模块

数码管显示电路由74573及数码管构成,与单片机P0口相连。

数码管显示电路必须要和138译码器电路组合使用才能正常显示相关数字,否则无效。

本设计采用的是前三位显示电机转速,后两位显示电机正反转(数字1和2表示)和加减速(数字3和4表示)。

图3.6.数码管显示电路

3.4.1位码选择电路

位码选择电路采用138译码器在本电路中起到位码选择的作用,与P2口相连,本设计需要用到总共8个数码管,其中有字符显示的有5个。

图3.7138译码器

 

3.4.2LED电路

由于在硬件方面缺少步进电机,所以采用LED发光二极管代替步进电机,实现现象(仿真中不涉及,在硬件上体现)。

 

图3.8LED电路

3.5电机驱动模块

本设计采用UN2003驱动五项四线步进电机。

 

图3.9UN2003电机驱动电路

4.软件电路设计

4.1按键处理程序设计

4.1.1按键处理程序框图

 

图4.1按键处理程序框图

 

按键处理程序放在主函数里面,主要判断按键状态,如果有按键按下,那么定义相关数据,与之后电机旋转函数共同实现相关功能。

4.1.2按键处理程序代码

if(K1==0)//判断K1按键是否按下

{

while(!

K1);

n=1;//若K1按键按下,则n记为1

}

if(K2==0)//判断K2按键是否按下

{

while(!

K2);

n=2;//若K2按键按下,则n记为2

}

if(K3==0)//判断K3按键是否按下

{

while(!

K3);

m=3;//若K3按键按下,则m记为3

Speed=10;//转速变量为10

}

if(K4==0)//判断K4按键是否按下

{

while(!

K4);

m=4;//若K4按键按下,则m记为4

Speed=20;//转速变量为20

}

4.2电机旋转程序设计

4.2.1电机旋转程序框图

图4.2电机旋转程序框图

 

电机旋转程序为调用函数,通过判断按键处理程序给出的n的值来判定是正转还是反转,判断m的值来确定加减速。

4.2.2电机旋转程序代码

voidMotor()

{

unsignedchari;

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

{

if(n==1)

GPIO_MOTOR=FFW[i]&0x1f;//取数据

if(n==2)

GPIO_MOTOR=FFZ[i]&0x1f;//取数据

Delay(Speed);//调节转速

display();//调用显示函数

}

}

4.3数码管显示程序设计

4.3.1数码管显示框图

图4.3数码管显示框图

数码管显示电路主要包含显示电机转速,电机所处正反加减状态的功能。

通过138译码器电路选择相应位码。

4.3.2数码管显示程序代码

voiddisplay()

{

LSA=1;LSB=0;LSC=0;//数码管位选

GPIO_DIG=DIG_CODE[m];//送段码,此处为高低速显示

Delay

(2);

LSA=0;LSB=0;LSC=0;//数码管位选

GPIO_DIG=DIG_CODE[n];//送段码,此处为正反转显示

Delay

(2);

LSA=1;LSB=1;LSC=1;//数码管位选

GPIO_DIG=DIG_CODE[bw];//送段码,此处为转速百位显示

Delay

(2);

LSA=0;LSB=1;LSC=1;//数码管位选

GPIO_DIG=DIG_CODE[sw];//送段码,此处为转速十位显示

Delay

(2);

LSA=1;LSB=0;LSC=1;//数码管位选

GPIO_DIG=DIG_CODE[gw];//送段码,此处为转速个位显示

Delay

(2);

}

5.系统调试

5.1软件仿真

利用Proteus仿真软件按照电路DXP原理图进行仿真电路的搭建,并进行相关调试与仿真,仿真图结果下图5.1、图5.2所示:

图5.1仿真图数码管结果

图5.2仿真图电机

仿真结果为高速正转,转速187转每分钟。

Proteus仿真图全图见附件。

5.2实物调试

开发板我们选择的是普中科技的一款STC89C51单片机开发板,由于没有步进电机,所以为了实现功能,用了4个led发光二极管来代替步进电机,通过观察发光二极管的点亮顺序与亮灭速度来表现步进电机的正反、快慢旋转。

实物图如下图所示(图示为高速正转,转速187转/min):

图5.3硬件实物结果图

5.3调试结果及现象说明

软件调试实现了按键控制电机正反高低速旋转运行与转速显示,硬件调试则实现了led数码管正反快慢速循环点亮与数码管显示。

相关现象说明如下表表5.1与表5.2所示:

表5.1:

数码管显示与电机运行关系表

第7位显示

第8位显示

3

4

0

1

正转高速

正转慢速

正转初速

2

反转高速

反转慢速

反转初速

0

待机

待机

待机

表二:

按键与电机运行关系表

后按

先按

K1

K4

无按键

复位

K2

正转高速

正转慢速

正转初速

停止运行

K3

反转高速

反转慢速

反转初速

停止运行

无按键

不运行

不运行

不运行

停止运行

复位

停止运行

停止运行

停止运行

停止运行

6.总结

该系统设计通过单片机AT89S52来控制步进电机的运转状况,实现了占用CPU时间少,效率高;易控制步进电机的转速;易控制电机的转向;提高了步进电机的步进精度等。

本次课程设计在实现过程中,出现的问题主要在数码管显示方面。

在基础电路设计方面,通过K1~K4按键实现步进电机正反加减速运行方面实现较为容易,当加上数码管显示电路就出现了不少问题。

经过不断的调试,修改延时时间,最后基本解决问题。

通过这次的单片机课程设计,我们收获了很多。

对单片机,尤其是89c51单片机的理解又进了一步,对c语言编程有了更清楚的认识,更是领略了单片机世界的神奇。

 

7.参考文献

[1] 张洪润,蓝清华.单片机应用技术教程[M].北京:

清华大学出版社,1997. 

[2] 秦曾煌.电工学[M].北京:

高等教育出版社,1999. 

[3] 常斗南,等.可编程序控制器原理、应用、实验[M].北京:

机械工业出版社,1998. 

[4] 于海生,等.微型计算机控制技术[M].北京:

清华大学出版社,1999. 

[5] 王福瑞,等.单片机微机测控系统设计大全[M].北京:

北京航空航天大学出版社,1998. 

[6] 陈理壁.步进电机及其应用[M].上海:

上海科学技术出版社,1989. 

[7] 刘保延,等.步进电机及其驱动控制系统[M].哈尔滨:

哈尔滨工业大学出版社,1997. 

[8] 季维发,过润秋,严武升等.机电一体化技术[M].北京:

电子工业出版社,1995. 

[9] 郭敬枢,庄继东,孔峰.微机控制技术[M].重庆:

重庆大学出版社,1994. 

[10] 刘国荣.单片微型计算机技术[M].北京:

机械工业出版社,1996. 

[11] 王福瑞.单片微机测控系统设计大全[M].北京:

北京航空航天大学出版社,1998. 

[12] 何立民.单片机应用技术选编[M].北京:

北京航空航天大学出版社,1993. 

[13]康华光,皱筹彬.电子技术基础(数字部分)[M].高等教育出版社.2000

[14]王昊,李昕.集成运放应用电路设计360例[M].电子工业出版社.2007

[15]康华光,陈大钦.电子技术基础(模拟部分)[M].高等教育出版设.2000

[16]张庆双.电源应用电路[M].机械工业出版社.2005

[17]张先庭主编.单片机原理、接口与C51应用程序设计[M].国防工业出版社.2011

[18]李光飞,楼苗然主编.51系列单片机[M].北京航空航天大学出版社.2003

8.附件

8.1程序清单

/*****************************************************************************************************/

//名称:

步进电机控制系统设计

//功能:

实现电机的正反转,快慢转,以及电机的转速显示

/****************************************************************************************************/

#include"reg51.h"

#defineGPIO_MOTORP1//定义端口

#defineGPIO_DIGP0

sbitK1=P3^1;

sbitK2=P3^2;

sbitK3=P3^0;

sbitK4=P3^3;

sbitLSA=P2^2;

sbitLSB=P2^3;

sbitLSC=P2^4;

unsignedcharcodeFFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};//正向驱动数组

unsignedcharcodeFFZ[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};//反向驱动数组

unsignedcharcodeDIG_CODE[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

//数码管段码0~9

unsignedcharSpeed,m,n,z,bw,gw,sw;

voidDelay(unsignedintt);

voidMotor();

voiddisplay();

/*******************************************************************************

*函数名:

Delay

*函数功能:

延时函数

*******************************************************************************/

voidDelay(unsignedintt)

{

unsignedintk;

while(t--)

{

for(k=0;k<80;k++)

{}

}

}

/*******************************************************************************

*函数名:

main

*函数功能:

主函数

*******************************************************************************/

voidmain(void)

{

Speed=15;//定义转速变量,初始值为15

m=0;//初始速度档位显示为0

while

(1)

{

if(K1==0)//判断K1按键是否按下

{

while(!

K1);

n=1;//若K1按键按下,则n记为

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

当前位置:首页 > 求职职场 > 简历

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

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