基于AT89S52单片机的控制步进电机.docx
《基于AT89S52单片机的控制步进电机.docx》由会员分享,可在线阅读,更多相关《基于AT89S52单片机的控制步进电机.docx(15页珍藏版)》请在冰豆网上搜索。
![基于AT89S52单片机的控制步进电机.docx](https://file1.bdocx.com/fileroot1/2023-2/3/d787568a-dab9-48a0-8309-7942f364cfbc/d787568a-dab9-48a0-8309-7942f364cfbc1.gif)
基于AT89S52单片机的控制步进电机
单片机系统开发与应用工程实习报告
选题名称:
基于AT89S52单片机的控制步进电机
系(院):
计算机工程学院
专业:
计算机科学与技术(嵌入式软件技术与设计)
班级:
姓名:
学号:
指导教师:
学年学期:
2009~2010学年第2学期
2010年5月30日
摘要:
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。
可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
由于脉冲信号数与步距角的线性关系,加上步进电机只有周期性的误差而无累积误差等特点,使得在速度、位置等控制领域用步进电机来控制变的非常的简单。
关键词:
步进电机;单片机;步距角
目录
1课题综述1
1.1课题来源和意义1
1.2预期目标1
2系统分析1
2.1框图设计1
2.2晶振电路2
3系统设计2
3.1硬件连接图2
3.2按键功能3
3.3单片机3
3.4驱动电路4
4软件设计5
4.1软件流程图5
4.2激磁方式5
5程序代码6
总结11
参考文献12
1课题综述
1.1课题来源和意义
步进电机是一种将电脉冲转换成相应角位移或线位移的电磁机械装置,也是一种能把输出机械位移增量和输入数字脉冲对应的驱动器件。
步进电机具体有快速启动、停止的能力,精度高、控制方便,因此,在工业上得到广泛应用。
1.2预期目标
(1)开始通电时,步进电机停止转动。
(2)单片机分别接有按键开关K1、K2和K3,用来控制步进电机的转向,要求如下:
●当按下K1时,步进电机正转。
●当按下K2时,步进电机反转。
●当按下K3时,步进电机停止转动。
(3)正转采用1相激磁方式,反转采用1~2相激磁方式。
2系统分析
2.1框图设计
根据系统要求画出基于AT89S52单片机的控制步进电机的控制框图如图2-1所示。
图2-1基于AT89S52单片机的控制步进电机的控制框图
系统主要包括单片机、复位电路、晶振电路、按键电路、步进电机及驱动电路几部分。
2.2晶振电路
AT89S52单片机有一个用于构成内部振荡器的反相放大器,XTAL1和XTAL2分别是放大器的输入、输出端。
石英晶体和陶瓷谐振器都可以用来一起构成自激振荡器。
晶振模块自带振荡器、提供低阻方波输出,并且能够在一定条件下保证运行。
最常用的两种类型是晶振模块和集成RC振荡器(硅振荡器)。
晶振模块提供与分立晶振相同的精度。
硅振荡器的精度要比分立RC振荡器高,多数情况下能够提供与陶瓷谐振槽路相当的精度。
图2-2为晶振电路。
图2-2晶振电路
3系统设计
3.1硬件连接图
根据图2-1,可以设计出单片机控制步进电机的硬件电路图,如图3-1所示。
图3-1硬件连接图
3.2按键功能
按键采用3个功能键,K1、K2和K3按键开关分别接在单片机的P0.0~P0.2引脚上,用来控制步进电机的转向,作为控制信号的输入端键。
按K1时,步进电机正传;按K2时,步进电机反转;按K3时,步进电机停止转动。
3.3单片机
At89s52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
。
At89s52主要技术参数如下:
●与MCS-51单片机产品兼容
●8K字节在系统可编程Flash存储器
●1000次擦写周期
●全静态操作:
0Hz~33MHz
●三级加密程序存储器
●32个可编程I/O口线
●三个16位定时器/计数器
图3-2AT89S52引脚图
3.4驱动电路
单片机的输出电流太小,不能直接与步进电机相连,需要增加驱动电路。
对于电流小于0.5A的步进电机,可以采用ULN2003类的驱动IC。
ULN2003技术参数如下所示。
最大输出电压:
50V。
最大连续输出电流:
0.5A。
最大连续输入电流:
25mA。
功耗:
1W。
如图3-3所示为2001/2002/2003/2004系列驱动器引脚图,图3-3左侧1~7引脚为输入端,接单片机P1口的输出端,引脚8接地;右侧10~16引脚为输出端,接步进电机,引脚9接电源+5V,该驱动器可提供最高0.5A的电流。
图3-3ULN2003
4软件设计
4.1软件流程图
程序设计流程图如图4-1所示,主要包括键盘扫描模块、步进电机正转模块、步进电机反转模块和步进电机定时模块。
图4-1程序设计流程图
4.2激磁方式
步进电机正转采用1相激磁方式,正转工作时序如表4-2所示;步进电机反转采用1~2相激磁方式,工作时序如表4-3所示。
表4-2相激磁方式正转时序
步进数
P1.3
P1.2
P1.1
P1.0
代码
1
1
1
0
0
0FCH
2
1
0
0
1
0F9H
3
0
0
1
1
0F3H
4
0
1
1
0
0F6H
表4-3相激磁方式反转时序
步进数
P1.3
P1.2
P1.1
P1.0
代码
1
0
1
1
1
0F7H
2
0
0
1
1
0F3H
3
1
0
1
1
0FBH
4
1
0
0
1
0F9H
5
1
1
0
1
0FDH
6
1
1
0
0
0FCH
7
1
1
1
0
0FEH
8
0
1
1
0
0F6H
5程序代码
#include
sbitp00=P0^0;
sbitp01=P0^1;
sbitp02=P0^2;
unsignedcharcodeForward[4]={0xFC,0xF9,0xF3,0xF6};//正转表格
unsignedcharcodeReturn[8]={0xF7,0xF3,0xFB,0xF9,0xFD,0xFC,0xFE,0xF6};//反转表格
voiddelay(unsignedinti)//延时
{
while(--i);
}
/***********步进电机正转P0口的第三口,P0^2***********************/
voidturnfor(void)
{
unsignedchari;
while
(1)
{
if(p00==0)
{
delay(1000);
if(p00==0)
break;
}
if(p01==0)
{
if(p01==0)
break;
}
for(i=0;i<4;i++)
{
P1=Forward[i];
delay(2000);
}
}
}
/********************步进电机反转P0口的第二口,P0^1*********************/
voidretur(void)
{
unsignedchari;
while
(1)
{
if(p00==0)
{
delay(1000);
if(p00==0)
break;
}
if(p02==0)
{
delay(1000);
if(p02==0)
break;
}
for(i=0;i<8;i++)
{
P1=Return[i];
delay(2000);
}
}
}
/*****************步进电机停止转动P0口的第一口,P0^0*******************/
voidstop(void)
{
while
(1)
{
if(p01==0)
{
delay(1000);
if(p01==0)
break;
}
if(p02==0)
{
if(p02==0)
break;
}
}
}
/************************步进电机转动主函数*******************************/
voidMain(void)
{
stop();
while
(1)
{
if(p00==0)
{
delay(1000);
if(p00==0)
stop();
}
if(p01==0)
{
delay(1000);
if(p01==0)
retur();
}
if(p02==0)
{
delay(1000);
if(p02==0)
turnfor();
}
}
}
总结
在单片机课程设计的学习过程中,我把老师以前教导的内容反馈到实践中来,在实践中验证了学习到的理论,同时也对理论知识进行了巩固。
虽然说对于单片机技术依然处于入门阶段,但是通过课程设计让我体验到了单片机技术的魅力。
看一堆元器件在自己手工焊接下成为一个能正常工作的电子产品,让我有巨大的成就感。
在焊接元器件的时候,生疏的焊接技巧得到锻炼,焊点越来越美观。
同时在设计之初就考虑到元器件的排布,为了让成品更好看,我还将焊接好的元器件拆下从新布局。
在硬件部分完成后,开始设计软件。
刚开始使用汇编,但是对于汇编掌握的不够好,于是不得不用C来编写。
但是也从中感受到用高级语言编写的高效,快捷,简便。
经过一周的努力,顺利完成课程设计。
从硬件到软件,都是自己付出的成果。
虽然有一些遗憾,比如没能用汇编写出程序,但是收获是巨大的,课程设计完成后,我的目标就是用汇编将源程序进行改写,来锻炼自己对汇编语言的熟练程度以及理解。
最重要的是,我从这次课程设计中得到了信心,很久没有像这样的机会体验到巨大的成就感,这成就感会让自己受用一生,帮助自己取得更大的成就。
参考文献
1.胡汉才,单片机原理及其接口技术。
清华大学出版社,1996
2.王晓明,电动机的单片机控制。
北京航空航天大学出版社,2002
3.曾一江,单片机原理与接口技术。
北京:
科学出版社,2006
4.何立民,MCS-51系列单片机应用系统设计。
北京:
北京航空航天大学出版社,1990
5.任志锦,电机与电气控制。
北京:
机械工业出版社,2002
6.彭沛夫,张桂芳,微机控制技术与实验指导。
北京:
清华大学出版社,2005
7.杨渝钦,控制电机。
北京:
机械工业出版社,1995
指导教师评语
学号
姓名
班级
选题
名称
基于AT89S52单片机的控制步进电机
序号
评价内容
权重(%)
得分
1
考勤记录、学习态度、工作作风与表现。
5
2
自学情况:
上网检索机时数、文献阅读情况(笔记)。
10
3
论文选题是否先进,是否具有前沿性或前瞻性。
5
4
成果验收:
是否完成设计任务;能否运行、可操作性如何等。
20
5
报告的格式规范程度、是否图文并茂、语言规范及流畅程度;主题是否鲜明、重心是否突出、论述是否充分、结论是否正确;是否提出了自己的独到见解。
30
6
文献引用是否合理、充分、真实。
5
7
答辩情况:
自我陈述、回答问题的正确性、用语准确性、逻辑思维、是否具有独到见解等。
25
合计
指导教师(签章):
年月日