基于单片机的步进电机课程设计报告.docx
《基于单片机的步进电机课程设计报告.docx》由会员分享,可在线阅读,更多相关《基于单片机的步进电机课程设计报告.docx(11页珍藏版)》请在冰点文库上搜索。
基于单片机的步进电机课程设计报告
设计题目:
基于单片机的步进电机控制系统设计
设计目的:
综合运用所学的《单片机原理及应用》的理论知识,通过实践加强对所学知识的理解,具备设计单片机应用设计系统的能力。
以单片机为核心设计一个步进电机控制系统,要求能够通过键盘设置步进电机的正转和反转,加速和减速。
并在LED数码管显示器上显示步进电机转速。
通过了解系统的软硬件构成及其特点,详细掌握怎样通过单片机控制其输出来控制步进电机的运转,并对应地在数码管上显示出来,更加系统的了解步进电机的组成,工作原理,控制方法。
设计要求:
【1】进行方案论证,说明步进电机控制系统的工作原理
【2】设计控制系统所需的硬件电路,给出电路原理图和元器件清单。
【3】给出软件流程图并编写程序源代码。
【4】完成系统的调试,给出调试结果并分析。
【5】了解单片机的内部结构,组成,学习单片机的工作原理以及内部工作状态,并熟悉在不同时刻,单片机的输入输出情况
【6】了解步进电机的分类和用途,掌握步进电机的内部结构以及工作原理,并学习单片机简单控制步进电机的正转和反转,加速和减速
【7】使用keil和proteus等软件进行系统的仿真,并在开发板硬件上实现。
锻炼自己的编程,调试能力。
设计条件:
步进电机的工作原理
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件步进电机。
在非超载的情况下,电机的转速,停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号时,它就驱动步进电机按设定的方向转动一个固定的角度。
称为“步距角”。
它的旋转是以固定的角度一步一步运行的,可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的,同时也可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
电机的位置和速度与导电次数(脉冲数)和频率成一一对应关系。
而方向由导电顺序决定
(贴图:
电机结构)
步进电机的控制是通过脉冲信号来控制的,将电脉冲信号转变为角位移或线位移的开环控制元件。
怎样产生这个脉冲信号和产生怎样的信号是电机控制的关键。
用单片机来产生这个脉冲信号,通过单片机的P1口输出脉冲信号。
因为所选电机是两相的,所以只需P1口的低四位p1.0到p1.3分别接在电机的四根电线上,通过程序调整电机的转速,通过键盘的按钮,就可以改变延时时长从而改变电机的转速。
p0口接在led数码管上,可以显示当前的电机转速和按钮状态。
(画图:
控制逻辑框图)
步进电机选择:
步进电机28BYJ5VDC型四相八拍电机,电压为DC5V。
当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地转动。
每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一个步距角。
当通电状态的改变完成一个循环时,转子转过一个齿距。
四相步进电机可以在不同的通电方式下运行,常见的通电方式有单四拍(A-B-C-D-A),双四拍(AB-BC-CD-DA-AB),八拍(A-AB-B-BC-C-CD-D-DA-A)
由于单片机接口信号不够大需要通过ULN2003放大再连接到相应的电机接口,
控制步进电机的速度
如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它就会再转一步。
两个脉冲的间隔时间越短,步进电机就转的越快。
调整单片机发出的脉冲频率,就可以对步进电机进行调速。
具有实现用延时时间的长短来决定。
延时时间的方案是:
虽然可以采用定时的方法,比较精确的控制延时的时间,但是我们在这里不而是采用消耗指令的方法达到延时的效果,此方案虽占用大量的CPU空间,降低了单片机的使用效率而且延时间不易计算。
但易理解。
对于初学者来说,有很强的可操作性。
单片机的选择:
采用Stc89c52单片机,该单片机应用广泛,集成度高,可靠性强,结构简单,价格低廉,易于使用,是宏晶科技推出的新一代超强抗干扰,高速低功耗的单片机。
他的功能已完全能够实现本设计的要求。
对于学校的学生而言。
性价比尤为突出,更多的被我们所第一时间采用。
(贴图:
单片机)
驱动电路的选择:
使用达林顿驱动芯片ULN2003,该芯片为集电极开路驱动芯片,能驱动四相步进电机,它的每一对达林顿都串联一个2.7k的基极电阻,在5v的工作电压下它能与TTL和CMOS电路直接相连。
可以直接处理原先需要标准逻辑缓冲器。
ULN2003是高压大电流达林顿晶体管系列产品。
具有电流增益高,工作电压高,温度范围宽。
带负载能力强等特点。
适应于各类要求高速大功率驱动的系统。
缺点是如果用于驱动直流电机的话,只能换一个方向转动。
换向要改变电机的接法。
(贴图:
驱动电路)
显示电路的选择:
采用6位LED数码管的最后两位显示。
利用74HC573芯片接P2.6和P2.7分别控制段选和位选。
(贴图)
按键的选择:
独立按键。
考虑到控制要求的条件,我们采用独立按键就可达到我们想要的目的。
且容易变成和实现。
矩阵虽也可完成,但程序设计太过复杂,因为时间紧,任务中,采用独立按键。
K1接P3.4暂停控制(预实现)。
K2接P3.5正反转控制。
K3接P3.6加速控制。
K4接P3.7减速控制。
(贴图)
报警电路:
实现高速太高和低速太低报警。
当所加频率太高,达到9时长报警。
当所加频率太低,到0时滴滴滴短报警。
(贴图)
程序设计:
#include
sbitdula=P2^6;
sbitwela=P2^7;
sbitbeep=P2^3;
sbitjia_key=P3^6;
sbitjian_key=P3^7;
sbitzf_key=P3^5;
bitflag=0;
bitstopflag;
Unsignedchar,num=1,show_num=0,maichong=10,table_begin=0;
unsignedcharcodetable1[]={0x01,0x02,0x04,0x08,0x08,0x04,0x02,0x01};
unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
voiddelay(unsignedchari)
{unsignedcharj,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
voiddispose()
{switch(num)
{case0:
show_num=0;
maichong=10;
beep=0;
delay(100);
beep=1;
break;
case1:
show_num=1;
maichong=9;
break;
case2:
show_num=2;
maichong=8;
break;
case3:
show_num=3;
maichong=7;
break;
case4:
show_num=4;
maichong=6;
break;
case5:
show_num=5;
maichong=5;
break;
case6:
show_num=6;
maichong=4;
break;
case7:
show_num=7;
maichong=3;
break;
case8:
show_num=8;
maichong=2;
break;
case9:
show_num=9;
maichong=1;
beep=0;
delay(10);
beep=1;
break;
case10:
show_num=0;
maichong=0;
break;
}
if(flag==0)
{table_begin=0;}
elsetable_begin=4;
}
voiddisplay()
{
dula=0;
P0=table[show_num];
dula=1;
dula=0;
P0=0xdf;
wela=1;
wela=0;
delay(5);
P0=table[0];
dula=1;
dula=0;
P0=0xef;
wela=1;
wela=0;
delay(5);
}
voidqudong()
{
unsignedchari,j;
for(j=0+table_begin;j<4+table_begin;j++)
{
P1=table1[j];
for(i=0;i{
display();
}
}
}
voidkey()
{
if(jia_key==0)
{
delay(5);
if(jia_key==0)
{
num++;
if(num==10)
num=9;
while(jia_key==0);
}
}
if(jian_key==0)
{
delay(5);
if(jian_key==0)
{if(num!
=0)
num--;
else
num=0;
while(jian_key==0);
}
}
if(zf_key==0)
{
delay(5);
if(zf_key==0)
{flag=~flag;
while(zf_key==0);
}
}
voidmain()
{while
(1)
{key();
dispose();
qudong();
}
}
体会总结
本次课程设计是我到目前为止觉得最有意义也是收获最大的一次实验设计,可以说虽在实践的过程中麻烦复杂,但是在做出一点成功之后,很有成就感。
身为电子系自动化专业的学生,设计是我们将来必须的技能,而这次课程设计恰恰是给我们一个应用自己所学知识的平台。
因为这次课程设计需要动脑动手,把自己课堂上学到的软件和硬件知识全部应用进来,要想完成好这次课程设计,首先需要弄懂步进电机的工作原理,与外部电路的连接,单片机原理,C语言程序设计等。
这其中有以前课堂上学过的也有需要我们自学研究的。
这不仅考察了自己原来的知识程度还加强了我们独立获取知识并加以运用的能力。
这次课程设计我不仅学到了很多知识,还制作出了自己想要的控制任务。
很有成就感。
在这次三人小组的分工合作中,使我体会到了分工合作的力量和重要性。
在合作团结中,通过相互帮助相互指点,使我们彼此负责的那部分任务都有了更好的了解和掌握。
通过这次课程设计,我对步进电机的了解拓宽了,对单片机和外围电路的认识也更加清晰了,这为我以后工作提供了坚实的基础。
在摸索该如何设计电路使之实现所需功能的过程中还培养了我的设计思维,增加了实际动手能力,让我体会到了设计电路的艰辛的同时,更让我体会到了成功的喜悦。
两个星期过去了,看着自己的劳动成果,心理满是欣慰。
最后,感谢老师和同学们的悉心指导和帮助。
参考文献
【1】周国运,单片机原理及应用(C语言版)。
中国水利水电出版社2012.1
【2】李蒙,毛建东,单片机原理及应用【M】。
中国轻工业出版社,2010.2
【3】郭天祥,51单片机C语言教程【M】。
北京:
电子工业出版社。
2009.12
【4】谭浩强,C语言设计。
北京:
清华大学出版社,2005.7
【5】徐益民,步进电机的单片机控制系统的设计。
哈尔滨:
黑龙江科技学院,2005