步进电机控制系统设计毕业设计论文Word格式文档下载.docx
《步进电机控制系统设计毕业设计论文Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《步进电机控制系统设计毕业设计论文Word格式文档下载.docx(31页珍藏版)》请在冰豆网上搜索。
![步进电机控制系统设计毕业设计论文Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2023-2/5/b17ccd57-e10d-422c-945a-88d0dd9e30e3/b17ccd57-e10d-422c-945a-88d0dd9e30e31.gif)
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、按下不同的键,分别使步进电机实现正反旋转;
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按键是否按下
K2);
n=2;
//若K2按键按下,则n记为2
if(K3==0)//判断K3按键是否按下
K3);
m=3;
//若K3按键按下,则m记为3
Speed=10;
//转速变量为10
}
if(K4==0)//判断K4按键是否按下
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]&
//取数据
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;
GPIO_DIG=DIG_CODE[n];
//送段码,此处为正反转显示
LSB=1;
LSC=1;
GPIO_DIG=DIG_CODE[bw];
//送段码,此处为转速百位显示
GPIO_DIG=DIG_CODE[sw];
//送段码,此处为转速十位显示
GPIO_DIG=DIG_CODE[gw];
//送段码,此处为转速个位显示
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
1
正转高速
正转慢速
正转初速
2
反转高速
反转慢速
反转初速
待机
表二:
按键与电机运行关系表
后按
先按
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].北京:
[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按键是否按下