单片机控制步进电机课程设计报告.docx
《单片机控制步进电机课程设计报告.docx》由会员分享,可在线阅读,更多相关《单片机控制步进电机课程设计报告.docx(14页珍藏版)》请在冰豆网上搜索。
单片机控制步进电机课程设计报告
郑州科技学院
《单片机》课程设计
题目单片机控制步进电机
学生姓名
专业班级电气工程及其自动化班
学号
院(系)电气工程学院
指导教师
完成时间2015年11月13日
1前言
步进电动机是一种将电脉冲信号转换成角位移或线位移的机电元件。
步进电动机的输入量是脉冲序列,输出量则为相应的增量位移或步进运动。
正常运动情况下,它每转一周具有固定的步数;做连续步进运动时,其旋转转速与输入脉冲的频率保持严格的对应关系,不受电压波动和负载变化的影响。
由于步进电动机能直接接受数字量的控制,所以特别适宜采用微机进行控制。
能够实现步进电机控制的方式有多种,可以采用前期的模拟电路、数字电路或模拟与数字电路相结合的方式,也可以采用单片机控制方式。
本文介绍一种用STC89C52作为核心部件进行逻辑控制及信号产生的单片机技术和C语言编程设计的步进电机控制系统,步进电机背景与现状、硬件设计、软件设计及其仿真都做了详细的介绍,使我们不仅对步进电机的原理有了深入的了解,也对单片机的设计研发过程有了更加深刻的体会。
本控制系统采用单片机控制,通过人为按动开关实现步进电机的正反转,复位。
具有灵活方便、适用范围广的特点,基本能够满足实践需求。
2总体设计方案与论证
2.1步进电机原理及控制技术
由于步进电机是一种将电脉冲信号转换成直线或角位移的执行元件,它不能直接接到交直流电源上,而必须使用专业设备,步进电机控制驱动器,典型步进电机控制系统如图2-1所示:
图2-1步进电机运行过程中频率变化曲线
控制器可以发出脉冲频率从几赫兹到几千赫兹可以连续变化的脉冲信号,它为环形分配器提供脉冲序列,环形分配器的主要功能是把来自控制环节的脉冲序列按一定的规律分配后,经过功率放大器的放大加到步进电机驱动电源的各项输入端,以驱动步进电机的转动,环形分配器主要有两大类:
一类是用计算机软件设计的方法实现环形分配器要求的功能,通常称软环形分配器。
另一类是用硬件构成的环形分配器,通常称硬环形分配器。
功率放大器主要对环形分配器的较小输出信号进行放大,以达到驱动步进电机的目的,步进电机的基本控制包括转向控制和速度控制两个方面。
从结构上看,步进电机分为三相单三拍、三相双三拍和三相六拍3种,其基本原理如下:
1)换相顺序的控制
通电换相这一过程称为脉冲分配。
例如,三相步进电机在单三拍的工作方式下,其各相通电顺序为A→B→C→A,通电控制脉冲必须严格按照这一顺序分别控制A、B、C相的通断。
三相双三拍的通电顺序为AB→BC→CA→AB,三相六拍通电顺序A→AB→B→BC→C→CA→A。
2)步进电机的换向控制
如果给定工作方式正序换相通电,步进电机正转。
若步进电机的励磁方式为三相六拍,即A→AB→B→BC→C→CA→A。
如果按反序通电换相,即A→AC→C→CB→B→BA→A,则电机就反转。
其他方式情况类似。
3)步进电机的起停控制
步进电机由于其电气特性,运转时会有步进感。
为了使电机转动平滑,减小振动,可在步进电机控制脉冲的上升沿和下降沿采用细分的梯形波,可以减小步进电机的步进角,跳过电机运行的平稳性。
在步进电机停转时,为了防止因惯性而使电机轴产生顺滑,则需采用合适的锁定波形,产生锁定磁力矩,锁定步进电机的转轴,使步进电机转轴不能自由转动。
2.2方案论证
本系统选用的单片机为STC89C52。
步进电机型号为28BYJ48,该电机共有四相绕组,工作电压为+5V,可以和单片机共用一个电源。
步进电机的四相绕组用P1口的P1.0-P1.3控制,由于P1口驱动能力不够,因而用一片ULN2003A增加驱动能力。
使用P0口接发光二极管,用来显示当前状态,P3口控制电机正反转。
2.3系统总体硬件框图
根据系统要求画出基于STC89C52单片机的控制步进电机的控制框图如图2-2所示。
图2-2基于STC89C52单片机的控制步进电机控制框图
系统主要包括单片机、复位电路、晶振电路、按键电路、步进电机及驱动电路几部分。
3单元电路设计
3.1最小控制系统
单片机最小控制系统或者称为最小应用系统如图3-1,就是用最少的元件组成的单片机可以工作的系统。
本次设计使用STC89C52单片机,该型单片机是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,完全可以满足本设计需要。
对STC89C52单片机来说,最小控制系统一般应该包括:
复位电路、时钟电路。
复位电路:
复位电路采用手动复位,所谓手动复位,是指通过接通一按钮开关,使单片机进入复位状态。
时钟电路:
用22PF的电容和12M晶体振荡器组成为整个电路提供时钟频率。
单片机的时钟信号通常用两种电路形式电路得到:
内部震荡方式和外部中断方式。
在引脚XTAL1和XTAL2外部接晶振电路器(简称晶振)或陶瓷晶振器,就构成了内部晶振方式。
由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。
内部振荡方式的外部电路其电容值一般在5~30pF,晶振频率的典型值为12MHz,采用6MHz的情况也比较多。
内部振荡方式所得的时钟信号比较稳定,实用电路实用较多。
图3-1最小控制系统电路
3.2驱动电路
如图3-2所示,选用ULN2003A作为驱动芯片,通过单片机P1.0~P1.3输出脉冲到ULN2003A的1B~4B口,经信号放大后从1C~4C口分别输出到电机的A、B、C、D相。
图3-2驱动电路
3.3按键电路
如图3-3为按键电路,K1,K2分别接P3.0,P3.1控制步进电机正反转,K3用作停止。
图3-3按键电路
3.4显示电路
如图3-4所示,发光二极管D1,D2,D3分别连接P0.0,P0.1,P0.2,同时发光二极管必须串联限流电阻再接电源。
D1发光对应正转,D2发光对应反转,D3发光对应停止。
图3-4显示电路
4程序设计
程序设计流程图4-1所示,主要包括键盘扫描模块,步进电机正转模块,步进电机反转模块,步进电机定时模块,具体的源程序可参考附录4。
图4-1步进电机正反转流程图
5软件仿真
本系统使用proteus仿真软件进行仿真,在制作完成仿真图后,点击开始按钮,开始运行仿真。
发光二极管D3点亮,单片机通电复位,电机停止运行。
如图5-1,按下K1开关后,发光二极管D1点亮,步进电机开始顺时针转动,无异常。
图5-1步进电机正转
如图5-2,按下K3开关后,步进电机停止转动,D3点亮。
图5-2步进电机停止
如图5-3,按下K2开关,步进电机逆时针转动,D2点亮,无异常。
图5-3步进电机反转
再次按下K3后,步进电机停止运行,K3点亮,电路仿真无异常,达到了预期目的。
6硬件的制作与调试
按照元器件清单拿到所需元器件后,进行实际焊接工作。
具体过程不再赘述,这里写下几点需要注意的。
1)电解电容正负极的判断与焊接
在电路中C3为电解电容,电解电容是电容的一种,金属箔为正极(铝或钽),与正极紧贴金属的氧化膜(氧化铝或五氧化二钽)是电介质,阴极由导电材料、电解质(电解质可以是液体或固体)和其他材料共同组成,因电解质是阴极的主要部分,电解电容因此而得名。
同时电解电容正负不可接错。
在拿到一个电解电容后首先要判断正负极,最明显的标志是负极有一个条形标志。
或者根据引脚的长度来判断,引脚长的为正极这和发光二极管的判断方法是一样的。
而在仿真图中,电解电容的负极为画有阴影的一端。
2)28BYJ48步进电机的接线
该步进电机一共有5根线,依次为红、橙、黄、粉、蓝5根线。
其中红色为电源端需接+5V电源,其他4根必须依次和ULN2003A输出端相接,不可接错,否则电机转动异常甚至无法转动。
7总结
通过单片机课程设计,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。
创新,是要我们学会将理论很好地联系实际,并不断地去开动自己的大脑,从为人类造福的意愿出发,做自己力所能及的,别人却没想到的事。
使之不断地战胜别人,超越前人。
同时,更重要的是,我在这一设计过程中,学会了坚持不懈,不轻易言弃。
设计过程,也好比是我们人类成长的历程,常有一些不如意,也许这就是在对我们提出了挑战,勇敢过,也战胜了,胜利的钟声也就一定会为我们而敲响。
同时我对步进电动机有了深入的了解,平时我们接触的电动机主要是直流电动机和交流电动机,很少见到步进电动机,所以对于步进电动机比较陌生。
通过老师指导,然后自己在课后翻阅书籍和上网,搜集到了不少有关步进电动机的知识。
步进电机调速系统适用各种现场自动化控制,特别应用于小功率负载的控制;具有成本底,性能稳定,可靠性高等优点。
步进电机作为执行元件,在科技的进步中起到了非常重要的作用,而步进电机调速系统可方便地应用与各种自动化控制系统与领域。
在这次课程设计中,通过用单片机控制步进电机的正、反转,我也对单片机的知识也进行了复习和巩固俗话说的好,实践是检验真理的唯一标准,学习再多的理论也只能纸上谈兵,只有把理论应用到实践中,才能检验出理论的真伪。
课程设计是对大学所学课程的一个高度的综合。
使零散的知识系统化,形成了一种能力,这也是课程设计所要达到的目的。
这也为我们走入社会打下一个良好的基础,为走入社会对知识与理论的应用做了一个好的铺垫。
参考文献
[1]张洪润,蓝清华.单片机应用技术教程[M].北京:
清华大学出版社,1997.45~89
[2]王福瑞,等.单片机微机测控系统设计大全[M].北京:
北京航空航天大学
出版社,1998.45~67
[3]陈理壁.步进电机及其应用[M].上海:
上海科学技术出版社,1989.67~109
[4]刘保延.步进电机及其驱动控制系统[M].哈尔滨:
哈尔滨工业大学出版社,1992.56~87
[5]丁元杰著.单片微机原理及应用[M].机械工业出版社,2010.125~154
附录1:
总体电路原理图
附录2:
实物图
附录3:
元器件清单
序号
名称
型号规格
数量
1
单片机
STC89C52
1
2
发光二极管
3
3
步进电机
28BYJ48
1
4
驱动IC
ULN2003A
1
5
电阻
220
3
6
电阻
10K
1
7
按键开关
3
8
晶振
12MHZ
1
9
电容
10uf
1
10
电容
22PF
2
11
导线
若干
附录4:
源程序
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitK1=P3^0;
sbitK2=P3^1;
sbitK3=P3^2;
bitff=1;
voidTrunMotor(unsignedlongangle);
voidmain()
{
ucharN=3;
while
(1)
{
if(K1==0)
{
ff=1;
TrunMotor(360*3);
P1=0xff;
P0=0;
}
elseif(K2==0)
{
ff=0;
TrunMotor(360*3);
P1=0xff;
P0=0;
}
else
{
P0=0xfb;
P1=0x03;
}
}
}
VoidDelay10ms(unsignedcharc){
{
unsignedchara,b;
for(;c>0;c--)
{
for(b=38;b>0;b--)
{
for(a=13;a>0;a--);
}
}
}
voidTrunMotor(unsignedlongangle)
{
unsignedchartmp;
unsignedcharindex=0;
unsignedlongbeats=0;
unsignedcharcodeBeatCode[8]={
0x0E,0x0C,0x0D,0x09,0x0B,0x03,0x07,0x06};
unsignedcharcodeBeatCode1[8]={
0x06,0x07,0x03,0x0B,0x09,0x0D,0x0C,0x0E};
beats=(angle*4076)/360;
while(beats--)
{
tmp=P1;
tmp=tmp&0xF0;
if(ff)
{
tmp=tmp|BeatCode1[index];P0=0xfe;
}
else
{
tmp=tmp|BeatCode[index];P0=0xfd;
}
P1=tmp;
index++;
index=index&0x07;
Delay10ms
(1);
}
}