单片机控制步进电机Word文件下载.docx
《单片机控制步进电机Word文件下载.docx》由会员分享,可在线阅读,更多相关《单片机控制步进电机Word文件下载.docx(14页珍藏版)》请在冰点文库上搜索。
第一章设计要求和目的
1.设计要求
1)可实现步进电机起停控制,一键实现;
2)可实现步进电机正反转控制,一键实现;
3)可实现步进电机步数控制,分别按不同的键来控制步数,步数分别为3、6、9、12、15、18、21、24、27步
4)要可以实现自锁功能,当键按下后,键盘上锁,不进电机不接受步数输入,也不会转。
5)电机运转要有正转反转指示灯。
6)电机在运转过程中,如果过热,则电机停止运转,同时红色指示灯亮,同时警报响。
本题目的关键之处是:
如何生成控制步进电机的脉冲序列。
2.设计目的
1)了解步进电机的内部结构
2)掌握步进电机的转动以及三相单三拍的运动原理
3)掌握步进电机的接口与控制
4)掌握单片机的内部结构,输出接口以及控制原理
第二章设计方案论证
设计方案
本系统中89C51作为控制系统的核心,用按键分别实现步进电机开关的起停、正反转以及速度控制,步进电机类型为三相四线(5V),工作于单双拍混合方式,采用单片机外围接口来驱动其工作。
整体设计以模块划分为主,硬件、软件相结合,分模块进行设计和调试,最后将各个模块衔接起来。
方案论证
本设计采用51单片机AT89C51(晶振频率为12MHZ)对三相四线制步进电机进行控制。
通过I/O口输出的具有时序的方波作为步进电机的控制信号,信号从P0口输出来控制步进电机。
电动机的步数控制通过P1口和P3.0口控制,由矩阵开关来输入。
步进电机的运转由P3.1口控制,当开关闭合电机运转。
步进电机的正转和反转由P3.2和P3.3来控制,当P3.2闭合时,可以实现电机的正转。
当P3.3闭合时可以实现步进电机的反转。
第三章步进电机概述
3.1步进电机的组成
步进电机是机电控制中一种常用的执行机构,它的用途是将电脉冲转化为角位移,它的的驱动电路根据控制信号工作,控制信号由单片机产生。
当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,控制换相顺序,即通电控制脉冲必须严格按照一定顺序分别控制各相的通断。
通过控制脉冲个数即可以控制角位移量,从而达到准确定位的目的。
控制步进电机的转向,即给定工作方式正序换相通电,步进电机正转,若按反序通电换相,则电机就反转。
控制步进电机的速度,即给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步,两个脉冲的间隔越短,步进电机就转得越快。
同时通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
3.2步进电机的旋转原理
步进电机的转子上均匀地分布着40个齿,齿间(齿距)夹角为9°
(360°
/40),定子上有6个大齿,相差180°
的两个大齿组成一相,共有A、B、C三相。
每个大齿上有若干个与转子上一样的小齿。
定子的每一相都有励磁绕组。
1.三相三拍运行方式
(1)当A相通电时,B相、C相不通电:
A相定子上的齿与转子上的齿对齐(通电后磁场力作用的结果),迫使电机旋转3°
;
B相定子上的齿顺时针超前转子上相应的齿3°
C相定子上的齿顺时针超前转子上相应的齿6°
。
(2)当B相接通电时,A相、C相不通电:
B相齿对齐,电机旋转3°
C相超前3°
A相超前6°
(3)当C相通电时,B相、A相不通电。
C相齿对齐,电机旋转3°
A相超前3°
B相超前6°
因此,如果定子A、B、C三相按A→B→C→A的顺序依次通电,则步进电机将不断地按顺时针方向转动。
每一次通电转3°
,每三次通电才走完一个齿距,因此叫三相三拍。
如果把顺时针叫正转,那么当通电顺序按A→C→B→A进行时,则电机反时针旋转,叫反转。
可见控制步进电机正转反转只是三相绕组通电顺序不同而已。
3.3步进电机的特点
1.一般步进电机的精度为步进角的3-5%,且不累积。
2.步进电机外表允许的最高温度。
步进电机温度过高首先会使电机的磁性材料退磁,从而导致力矩下降乃至于失步,因此电机外表允许的最高温度应取决于不同电机磁性材料的退磁点;
一般来讲,磁性材料的退磁点都在摄氏130度以上,有的甚至高达摄氏200度以上,所以步进电机外表温度在摄氏80-90度完全正常。
3.步进电机的力矩会随转速的升高而下降。
当步进电机转动时,电机各相绕组的电感将形成一个反向电动势;
频率越高,反向电动势越大。
在它的作用下,电机随频率(或速度)的增大而相电流减小,从而导致力矩下降。
4.步进电机低速时可以正常运转,但若高于一定速度就无法启动,并伴有啸叫声。
步进电机有一个技术参数:
空载启动频率,即步进电机在空载情况下能够正常启动的脉冲频率,如果脉冲频率高于该值,电机不能正常启动,可能发生丢步或堵转。
在有负载的情况下,启动频率应更低。
如果要使电机达到高速转动,脉冲频率应该有加速过程,即启动频率较低,然后按一定加速度升到所希望的高频(电机转速从低速升到高速)。
步进电动机以其显著的特点,在数字化制造时代发挥着重大的用途。
伴随着不同的数字化技术的发展以及步进电机本身技术的提高,步进电机将会在更多的领域得到应用。
第四章硬件的设计
4.1单片机系统设计
本系统中采用单片机作为微控制器。
其片内资源有32个并行I/O口,5个中
断源,包括2个16位定时器,2个外部中断和一个串行中断。
4.2系统复位电路
复位是单片机的初始化操作,只要给RESET引脚加上2个机器周期以上的高电平信号,即可使单片机复位。
除了进入系统的正常初始化之外,当程序运行出错或是操作错误使系统处于死锁状态时,为了摆脱死锁状态,也需要按复位键重新复位。
在系统中,为了实现上述的两项功能,常采用的按键电平复位电路,如图5所示。
图5按键电平复位电路
从图中可以看出,当系统得到工作电压的时候,复位电路工作在上电自动复位状态,通过外部复位电路的电容充电来实现,只要Vcc的上升时间不超过1ms就可以实现自动上电复位功能。
在本系统中,采用10uF的电容和10kΩ的电阻来实现复位电路。
当系统出错时,直接按开关实现模拟系统上电复位的功能,从而实现系统重新复位启动。
4.3时钟电路
时钟电路是用于产生单片机工作时所必需的时钟信号。
时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准的,有条不紊地一拍一拍地工作。
时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。
在本系统中采用内部时钟方式的电路,如图6所示。
图6时钟电路
电路中的由于晶振为11.0592MHz,所以电容C1、C2典型值为30pF。
外接电容的值虽然没有严格的要求,但是电容的大小会影响振荡器的稳定性和起振的快速性。
同时,在系统中采用11.0592MHz的晶体振荡器来产生时钟脉冲。
一方面,可以满足系统在设计时的机器周期的需要;
另一方面,在进行串行口通讯的时候能够提供精准的通讯波特率。
4.4步进电机控制设计
本系统中我们用单片机的P0^0接步进电机的A端控制信号,P0^1接B的控制信号,P0^2接C的控制信号,P0^3接D的控制信号,步进电机工作于单双拍混合模式。
4.5按键设计
用矩阵按键来控制步进电机的步数,其输入到P1口,当按键按下,其相应的步数应得以实现。
步进电机的启动与停止收开关控制,其输入到P3.1口,正转开关输入到P3.2口,反转开关输入到P3.3口。
第五章软件设计
5.1软件选择单三拍的工作方式
单三拍的通电方式为A→B→C→A……,要想达到这个目的,只需依次向P1口输出如下控制字:
P1.2P1.1P1.0编码
(C相)(B相)(A相)
001(01H)A相通,B、C相断
010(02H)B相通,A、C相断
100(04H)C相通,A、B相断
要想控制步进电机反转,只需把输出的控制字的次序按:
01H(A)→04H(C)→02H(B)→01H(A)→组合即可。
5.2程序流程图
第六章设计总结与心得
课程设计总结
本次课程设计我们采用AT89C51单片机做了一个步进电机的控制系统。
通过这两周的努力我们学到了很多。
首先基本熟悉了MCS51系列单片机的输入输出、外部中断、串行口中断等单片机的内部资源功能,熟悉并掌握了按键设计,和28BYJ—48类型步进电机的工作原理等。
经过进两周的课程设计,最大的感受就是“只要你想做,你就能做到”。
最初开始对步进电机的控制等方面可以说是一片空白。
但是后来经过慢慢的查找资料,分析资料和实验调试最终还是成功了。
另外就是实验过程中,难免会出现一些问题,比如说单片机不工作、电机不转等,遇到问题并不可怕,可怕的是不着手去解决问题。
我们仔细分析各个模块,不断测试发送和接收的数据终于将系统运行流畅了。
这两周我们不仅学到了相关专业知识,更学到了很多调试程序的经验和方法。
相信这次的成功会给增强我们以后做事的信心。
这次为期两周的课程设计,我们所做的是利用89C51设计步进电机控制电路。
其实步进电机的原理很简单,就是将给定的电脉冲信号转变成角位移。
在这次课程设计中,我所做的主要是硬件电路设计。
软件方面,主要就是我们的组长了。
在后来,我也在组长他们的帮助下对程序有所掌握。
因为编写程序是需要长时间积累的,所以我想我很难独立完成的。
这是我们在学习单片机后第一次近距离接触单片机,通过这次实践,我们终于可以将理论与实践相结合进而更好地去理解掌握课本知识。
在整个课程设计的过程中,我感觉我们这个团队真得太重要了。
尽管可能每个人在其中的作用有轻有重,但是我们相信如果我们失去其中任何一位,我们将不会这么顺利地完成这次课设任务的。
很珍惜这次团结协作的机会,我们非常开心。
总之来说,我们的这次课题设计是很成功的,我们成功的实现了单片机控制步进电机的步数控制,控制步进电机的正反转。
同时也理解了怎样合作,怎样组合。
我们队的人员都无私的奉献,积极的互相帮助,我相信我们通过这次的合作不仅仅收获到知识,更正要的是团队合作,因为我们以后的工作可能会很注重团队合作,因此我们的这次设计为我们以后的工作打下了很好的基础。
参考文献
[1]谢辉.单片机原理及应用.[M]北京:
化学工业出版社,2010.8
[2]刘海宽.单片机实验与实训教程.[M]南京:
东南大学出版社,2009.1
[3]楼然苗等.51系列单片机设计实例.[M]北京:
北京航空航天大学出版社,2003.3
[4]周向红.51系列单片机应用与实践教程.[M]北京:
北京航空航天大学出版社,2008
[5]张志良.单片机原理与控制技术.第2版.北京:
机械工业出版社,2005
[6]李光飞,楼然苗等.单片机课程设计实例指导.北京:
清华大学出版社,2004
附录A
#include<
reg52.h>
#include<
intrins.h>
#defineucharunsignedchar
#defineuintunsignedint
sbitStart=P3^2;
//开始键
sbitzz=P3^3;
//正转键
sbitfz=P3^4;
//反转键
unsignedcharcodeF_Rotation[4]={0x08,0x10,0x20,0x40};
unsignedcharcodeB_Rotation[4]={0x40,0x20,0x10,0x08};
voidDelay(unsignedinti)//延时
{
while(--i);
}
voidDelay_1ms(uinti)//延时程序
ucharx,j;
for(j=0;
j<
i;
j++)
for(x=0;
x<
=148;
x++);
voiddelay()
inti,j;
for(i=0;
i<
=10;
i++)
j<
=2;
j++)
;
voidDelay1(uintdel)
uinti,j;
del;
1827;
j++)
;
ucharKeyscan(void)//按键程序
uchari,j,temp,Buffer[4]={0xef,0xdf,0xbf,0x7f};
4;
{
P1=Buffer[j];
delay();
temp=0x01;
for(i=0;
{
if(!
(P1&
temp))
{
return(i+j*4);
}
temp<
<
=1;
}
}
voidmain()//主函数
uchari;
uintb,a=0;
while
(1)
{
P1=0xf0;
if(P1!
=0xf0)
Delay_1ms(15);
//按键消抖
if(P1!
b=Keyscan();
读键值
}
a=32*b;
//设置步进电机的步数,一圈为64步
if(fz==0)//是否为反转
{Delay1
(2);
if(fz==0)
{while(a--)
for(i=0;
i<
i++)
{
P0=F_Rotation[i];
//反转
Delay(500);
elseif(zz==0)
{Delay1
(2);
if(zz==0)//是否为正转
{while(a--)
P0=B_Rotation[i];
//反转
}
if(a==0)//步数是否转完
return;
//转完返回
附录B