资源描述
基于单片机ATS控制步进电机正反转(完整资料)
(可以直接使用,可编辑 优秀版资料,欢迎下载)
目 录
第一章 系统分析 1
1.1 框图设计 2
1。2 晶振电路 2
第二章硬件系统设计 3
2。1 硬件连接图 3
2。2 按键功能 3
2.3 单片机AT89S523
2.4 驱动电路 4
2。5 步进电机...。。...。。。..。..。.。.。.。。。.。。。..。...。。。...。。.。。7
第三章软件系统设计 9
3。1 软件流程图 9
3。2 激磁方式 10
附录12
附件A 源程序.。.12
附件B仿真结果.。。..。。....。。.。.。。。..。。。...。.。..。。。。..。。...。15
参考文献 17
致谢..。..。..。......。...。...。。.....。.。...。。。.。..。。。...。。.。..。。.18
摘要
能够实现步进电机控制的方式有多种,可以采用前期的模拟电路、 数字电路或模拟与数字电路相结合的方式。近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测日新月异更新.本文介绍一种用AT89S52作为核心部件进行逻辑控制及信号产生的单片机技术和汇编语言编程设计的步进电机控制系统,步进电机背景与现状、硬件设计、软件设计及其仿真都做了详细的介绍,使我们不仅对步进电机的原理有了深入的了解,也对单片机的设计研发过程有了更加深刻的体会。本控制系统采用单片机控制,通过人为按动开关实现步进电机的开关,复位.该系统还增加了步进电机的加速及减速功能.具有灵活方便、适用范围广的特点,基本能够满足实践需求.
关键词: AT89S52 步进电机 ULN2003
第一章 系统分析
1.1 框图设计
根据系统要求画出基于AT89S52单片机的控制步进电机的控制框图如图2-1所示。
按键电路
复位电路
晶振电路
AT89C52
电源电路
驱动电路
步进电机
图2-1基于AT89C52单片机的控制步进电机的控制框图
系统主要包括单片机、复位电路、晶振电路、按键电路、步进电机及驱动电路几部分。
1。2 晶振电路
AT89C52单片机有一个用于构成内部振荡器的反相放大器,XTAL1 和XTAL2 分别是放大器的输入、输出端。石英晶体和陶瓷谐振器都可以用来一起构成自激振荡器。
晶振模块自带振荡器、提供低阻方波输出,并且能够在一定条件下保证运行。最常用的两种类型是晶振模块和集成RC振荡器(硅振荡器).晶振模块提供与分立晶振相同的精度。硅振荡器的精度要比分立RC振荡器高,多数情况下能够提供与陶瓷谐振槽路相当的精度。图2—2为晶振电路。
图2—2 晶振电路
第二章 系统设计
2.1 硬件连接图
根据图2-1,可以设计出单片机控制步进电机的硬件电路图,如图3-1所示。
图3-1硬件连接图
2。2 按键功能
按键采用3个功能键,K1、K2和K3按键开关分别接在单片机的P2。0~P2.2引脚上,用来控制步进电机的转向,作为控制信号的输入端键。按K1时,步进电机正传;按K2时,步进电机反转;按K3时,步进电机停止转动。
2。3 单片机
At89C52 是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器.使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。。
At89C52主要技术参数如下:
l 与MCS-51单片机产品兼容
l 8K字节在系统可编程Flash存储器
l 1000次擦写周期
l 全静态操作:0Hz~33MHz
l 三级加密程序存储器
l 32个可编程I/O口线
l 三个16位定时器/计数器
图2—2 At89C52引脚图图2—3ULN2003
2.4 驱动电路
单片机的输出电流太小,不能直接与步进电机相连,需要增加驱动电路.对于电流小于0。5A的步进电机,可以采用ULN2003类的驱动IC.
ULN2003技术参数如下所示.
最大输出电压:50V。
最大连续输出电流:0。5A。
最大连续输入电流:25mA。
功耗:1W。
如图2-4所示为2001/2002/2003/2004系列驱动器引脚图,图3—3左侧1~7引脚为输入端,接单片机P1口的输出端,引脚8接地;右侧10~16引脚为输出端,接步进电机,引脚9接电源+5V,该驱动器可提供最高0.5A的电流。
ULN2003 的每一对达林顿都串联一个2。7K 的基极电阻,在5V 的工作电压下它能与TTL 和CMOS 电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据.
ULN2003 工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V 的电压,输出还可以在高负载电流并行运行。
ULN2003 采用DIP—16 或SOP—16 塑料封装.
方框图
方框图
封装外形图
ULN2003内部还集成了一个消线圈反电动势的二极管,可用来驱动继电器。它是双列16脚封装,NPN晶体管矩阵,最大驱动电压=50V,电流=500mA,输入电压=5V,适用于TTL COMS,由达林顿管组成驱动电路。 ULN是集成达林顿管IC,内部还集成了一个消线圈反电动势的二极管,它的输出端允许通过电流为200mA,饱和压降VCE 约1V左右,耐压BVCEO 约为36V。用户输出口的外接负载可根据以上参数估算。采用集电极开路输出,输出电流大,故可直接驱动继电器或固体继电器,也可直接驱动低压灯泡。通常单片机驱动ULN2003时,上拉2K的电阻较为合适,同时,COM引脚应该悬空或接电源。
作用:ULN2003是一个非门电路,包含7个单元,单独每个单元驱动电流最大可达350mA,9脚可以悬空。
比如1脚输入,16脚输出,你的负载接在VCC与16脚之间,不用9脚。
ULN2003是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。可直接驱动继电器等负载.
输入5VTTL电平,输出可达500mA/50V。
ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成. 该电路的特点如下: ULN2003的每一对达林顿都串联一个2。7K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路 直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。
ULN2003 是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统.
图2-4-1ULN2003芯片引脚图
ULN2003芯片引脚介绍
引脚1:CPU脉冲输入端,端口对应一个信号输出端。
引脚2:CPU脉冲输入端。
引脚3:CPU脉冲输入端。
引脚4:CPU脉冲输入端。
引脚5:CPU脉冲输入端。
引脚6:CPU脉冲输入端。
引脚7:CPU脉冲输入端.
引脚8:接地.
引脚9:该脚是内部7个续流二极管负极的公共端,各二极管的正极分别接各达林顿管的集电极.用于感性负载时,该脚接负载电源正极,实现续流作用。如果该脚接地,实际上就是达林顿管的集电极对地接通。
引脚10:脉冲信号输出端,对应7脚信号输入端。
引脚11:脉冲信号输出端,对应6脚信号输入端。
引脚12:脉冲信号输出端,对应5脚信号输入端。
引脚13:脉冲信号输出端,对应4脚信号输入端。
引脚14:脉冲信号输出端,对应3脚信号输入端。
引脚15:脉冲信号输出端,对应2脚信号输入端。
引脚16:脉冲信号输出端,对应1脚信号输入端.
参考电路接法如图2—4-2
图2—4-2参考电路接法
2.5 步进电机
2.5。1步进电机的特点:
1)一般步进电机的精度为步进角的3-5%,且不累积.
2)步进电机外表允许的温度高。步进电机温度过高首先会使电机的磁性材料退磁,从而导致力矩下降乃至于失步,因此电机外表允许的最高温度应取决于不同电机磁性材料的退磁点;一般来讲,磁性材料的退磁点都在摄氏130度以上,有的甚至高达摄氏200度以上,所以步进电机外表温度在摄氏80—90度完全正常.
3)步进电机的力矩会随转速的升高而下降。当步进电机转动时,电机各相绕组的电感将形成一个反向电动势;频率越高,反向电动势越大。在它的作用下,电机随频率(或速度)的增大而相电流减小,从而导致力矩下降。
4)步进电机低速时可以正常运转,但若高于一定速度就无法启动,并伴有啸叫声。步进电机有一个技术参数:空载启动频率,即步进电机在空载情况下能够正常启动的脉冲频率,如果脉冲频率高于该值,电机不能正常启动,可能发生丢步或堵转。在有负载的情况下,启动频率应更低。如果要使电机达到高速转动,脉冲频率应该有加速过程,即启动频率较低,然后按一定加速度升到所希望的高频(电机转速从低速升到高速).
2。5。2步进电机的工作原理:
步进电机是一种用电脉冲进行控制 ,将电脉冲信号转换成相位移的电机 ,其机械位移和转速分别与输入电机绕组的脉冲个数和脉冲频率成正比 ,每一个脉冲信号可使步进电机旋转一个固定的角度.脉冲的数量决定了旋转的总角度 ,脉冲的频率决定了电机运转的速度。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的.可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的.
本次设计采用的电机STEPPER-MOTOR型号步进电机,如图2。5.2
图2。5。2STEPPER—MOTOR型号步进电机
第三章 软件设计
3.1 软件流程图
程序设计流程图如图4—1所示,主要包括键盘扫描模块、步进电机正转模块、步进电机反转模块和步进电机定时模块。
Y
Y
Y
开始
设置堆栈
步进电机停转
按键扫描
K1按下吗
K2按下吗
K3按下吗
步进电机正转模块
步进电机反转模块
步进电机停转
读取表格
输出
结束
N
N
图4—1程序设计流程图
3。2 激磁方式
二相步进马达的激磁方式有下列两种:
(1)。全步激磁全步激磁方式又可分为1 相激磁与2相激磁两种方式,说明如下:
1相激磁每次只激磁一相线圈,每输入一个脉波,便产生一步级的转,如图11所示,由图中可知,当激磁依A→B→A→B→A……相顺序,则马达顺时针方向旋转;若依B→A→B→A→B……相顺序激磁,则马达依逆时针方向旋转。此种激磁方式之优点为线圈消耗功率小,角精确度良好,但其转距小,加上阻尼特性不良,易失步.
图4-2—1
2相激磁每输入一个脉波,将有二相线圈激磁,如图12所示,由图中可知,若依AB→BA→AB→BA→AB……相顺序激磁,则马达顺时针方向旋转:若依BA→AB→BA→AB→BA……相顺序激磁,则马达转向为逆时针方向。此种激磁方式由于同时有两组线圈激磁,输出转距较大,加上阻尼效果良好,故能追踪较高的脉波率,但其缺点为耗电较大,容易发热。
图4—2—2
(2)半步激磁此种激磁方式又称1-2相激磁,激磁一相线圈和二相线圈交互进行,每加入一数字脉波所转动之角度为原步进角的一半,因此分辨率可提高一倍,且运转时相当平滑,故与2相激磁方式同受广泛使用。图13为二相步进马达采用1-2相激磁方式之时序图,由图中可知,若依照A→AB→B→BA→A→AB→B→BA→A→AB……相的顺序激磁,则步进马达将以顺时针方向旋转;但如果依照BA→A→AB→B→BA→A→AB→B→BA……相顺序激磁,则马达逆时针方向旋转
图4-2-3
附录
附件A 源程序
#include <reg52。h>
sbit p00 = P0^0;
sbit p01 = P0^1;
sbit p02 = P0^2;
unsigned char code Forward[4]={0xFC,0xF9,0xF3,0xF6};//正转表格
unsigned char code Return[8]={0xF7,0xF3,0xFB,0xF9,0xFD,0xFC,0xFE,0xF6};//反转表格
void delay(unsigned int i)//延时
{while(——i);}
/*********** 步进电机正转P0口的第三口,P0^2***********************/
void turnfor(void)
{unsigned char i;
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*********************/
void retur(void)
{
unsigned char i;
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*******************/
void stop(void)
{
while(1)
{
if(p01 == 0)
{
delay(1000);
if(p01 == 0)
break;
}
if(p02 == 0)
{if(p02 == 0)
break;
}
}
}
/************************步进电机转动主函数*******************************/
void Main(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();
}
}
}
附件B仿真结果
按下k3键,电动机停止转动
按下k1键,电动机正转
按下k2键,电动机反转
参考文献
[1]李全利,单片机原理及接口技术.高等教育出版社,2003
[2]王晓明,电动机的单片机控制。北京航空航天大学出版社,2002
[3]曾一江,单片机原理与接口技术。北京:科学出版社,2006
[4]何立民,MCS-51系列单片机应用系统设计。北京:北京航空航天大学出版社,1990
[5]任志锦,电机与电气控制。北京:机械工业出版社,2002
[6]彭沛夫,张桂芳,微机控制技术与实验指导。北京:清华大学出版社,2005
[7]杨渝钦,控制电机。北京:机械工业出版社,1995
[8]彭伟。 单片机C语言程序设计实训100例。北京航空航天大学出版社,2010,5
[9]谭浩强。C程序设计(第三版)[M]。北京:清华大学出版社,2007
[10]郭天祥。新概念51单片机C语言教程—-入门、提高、开发、拓展、全攻略[M].电子工业出版社,2011,2
致谢
在单片机课程设计的学习过程中,在陈老师和各位同学的帮助下,我把老师以前教导的内容反馈到实践中来,在实践中验证了学习到的理论,同时也对理论知识进行了巩固。虽然说对于单片机技术依然处于入门阶段,但是通过课程设计让我体验到了单片机技术的魅力。看自己的电动机转起来,让我有巨大的成就感。在硬件部分完成后,开始设计软件。刚开始使用汇编,但是对于汇编掌握的不够好,于是不得不用C来编写。但是也从中感受到用高级语言编写的高效,快捷,简便.经过一周的努力,顺利完成课程设计。从硬件到软件,都是自己付出的成果。虽然有一些遗憾,比如没能用汇编写出程序,但是收获是巨大的,课程设计完成后,我的目标就是用汇编将源程序进行改写,来锻炼自己对汇编语言的熟练程度以及理解。最重要的是,我从这次课程设计中得到了信心,很久没有像这样的机会体验到巨大的成就感,这成就感会让自己受用一生,帮助自己取得更大的成就。
南京XX大学
指导老师:张X
课 程 设 计
基于51单片机的步进电机控制
机械电子工程学院
测控技术与仪器
XXXXX
Xxx
2012年1年4日
步进电机控制系统
[摘要]本课程设计的内容是利用51单片机,达到控制步进电机的启动、停止、正转、反转、两档速度和状态显示的目的,使步进电机控制更加灵活。步进电机驱动芯片采用ULN2803,ULN2803具有大电流、高电压,外电路简单等优点。利用四位数码管增设电机状态显示功能,各项数据更直观。实测结果表明,该控制系统达到了设计的要求.
关键字:步进电机、数码管、51单片机、ULN2803
一 步进电机与驱动电路
1.1 什么是步进电机
步进电机是一种将电脉冲转化为角位移的执行机构.通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时也可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
1.2 步进电机的种类
步进电机分永磁式(PM)、反应式(VR)、和混合式(HB)三种。永磁式步进一般为两相,转矩和体积较小,步进角一般为7.5度 或15度;反应式步进一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。在欧美等发达国家80年代已被淘汰;混合式步进是指混合了永磁式和反应式的优点。它又分为两相和五相:两相步进角一般为1。8度而五相步进角一般为 0。72度.这种步进电机的应用最为广泛。
1。3 步进电机的特点
1.精度高 一般的步进电机的精度为步进角的3-5%,且不累积.可在宽广的频率范围内通过改变脉冲频率来实现调速,快速起停、正反 转控制及制动等,这是步进电动机最突出的优点
2。过载性好其转速不受负载大小的影响,不像普通电机,当负载加大时就会出现速度下降的情况,所以步进电机使用在对速度和位置都有严格要求的场合;
3.控制方便步进电机是以“步”为单位旋转的,数字特征比较明显,这样就给计算机控制带来了很大的方便,反过来,计算机的出现也为步进电机开辟了更为广阔的使用市场;
4.整机结构简单传统的机械速度和位置控制结构比较复杂,调整困难,使用步进电机后,使得整机的结构变得简单和紧凑。
1。4 步进电机的原理
图1是一种四相可变磁阻型的步进电机结构示意图。这种电机定子上有八个凸齿,每一个齿上有一个线圈。线圈绕组的连接方式,是对称齿上的两个线圈进行反相连接,如图中所示。八个齿构成四对,所以称为四相步进电机.
图1
它的工作过程是这样的:当有一相绕组被激励时,磁通从正相齿,经过软铁芯的转子,并以最短的路径流向负相齿,而其他六个凸齿并无磁通。为使磁通路径最短,在磁场力的作用下,转子被强迫移动,使最近的一对齿与被激励的一相对准.在图1(a)中A相是被激励,转子上大箭头所指向的那个齿,与正向的A齿对准.从这个位置再对B相进行激励,如图1中的(b),转子向反时针转过15°.若是D相被激励,如图1中的(c),则转子为顺时针转过15°。下一步是C相被激励.因为C相有两种可能性:A-B—C—D或A—D-C—B.一种为反时针转动;另一种为顺时针转动。但每步都使转子转动15°。电机步长(步距角)是步进电机的主要性能指标之一,不同的应用场合,对步长大小的要求不同.改变控制绕组数(相数)或极数(转子齿数),可以改变步长的大小。它们之间的相互关系,可由下式计算:
Lθ=360 P×N
式中:Lθ为步长;P为相数;N为转子齿数.在图1中,步长为15°,表示电机转一圈需要24步。
1。5 步进电机的驱动
混和步进电机的工作原理
在实际应用中,最流行的还是混和型的步进电机。但工作原理与图1所示的可变磁阻型同步电机相同.但结构上稍有不同.例如它的转子嵌有永磁铁。激励磁通平行于X轴。一般来说,这类电机具有四相绕组,有八个独立的引线终端,如图2a所示。或者接成两个三端形式,如图2b所示。每相用双极性晶体管驱动,并且连接的极性要正确.
图3所示的电路为四相混和型步进电机晶体管驱动电路的基本方式.它的驱动电压是固定的.表1列出了全部步进开关的逻辑时序.
步数
Q1
Q2
Q3
Q4
1
1
0
1
0
2
1
0
0
1
3
0
1
0
1
4
0
1
1
0
5
1
0
1
0
表1
二 方案设计与论证
2。1键盘设计
该系统中只运用到三个控制按钮,即 “正反”,“换挡”,“启停”,由于按钮较少,所以采用独立键电路,这种按键电路的按键结构相对行列式按键电路更简单,更使人易懂.
2。2显示电路设计
如图2。31,采用LED数码管动态显示数据与个项参数,方法简单,容易控制,成本低。
设计如下图
P00
P01
P02
P03
P04
P05
P06
P07
P25
P26
P27
AT89C51
Stc
P24
IN 1
IN 2
IN 3
IN 4
OUT 4
OUT 3
OUT 2
OUT 1
ULN2803
a
b
f
c
g
d
e
[LED1]
a
a
b
b
c
f
d
c
e
g
f
d
g
e
a
b
f
c
g
d
e
a
b
f
c
g
d
e
h
[LED2]
[LED3]
[LED4]
h
h
h
h
图2.31
2.4驱动电路设计
驱动电路可分为:三极管直接驱动(图3),采用斩波恒流驱动方式(图2.41)和芯片驱动电路等。驱动电路的性能直接关系到步进电机走步的准确与稳定.本电路采用驱动芯片ULN2803。ULN2803是一种大电流高电压型器件,外电路简单(图2。42)。
图2.41
图2.42
三电路设计
3。1、设计要点和软硬环境
1、步进电机的设计要点和软硬件环境
步进电机和普通电动机不同之处是步进电机接受脉冲信号的控制。即步进电机是将电脉冲信号转换为机械角位移的执行元件.步进电机的控制可以用硬件,也可以用软件通过单片机实现.硬件方法是采用脉冲分配器芯片进行通用换相控制;而软件方法是用单片机产生控制脉冲来控制步进电机的运行状态,这种方法可简化电路,降低成本。
在用软件控制时,主要设计要点如下:
l 判断旋转方向;
l 按相序确定控制字;
l 按顺序输入控制字;
l 确定控制步数和每一步的延时时间。
由于单片机的驱动电流一般都比较小,不能直接驱动电机工作,所以单片机的I/O口输出必须接驱动电路,即功率驱动,才得以控制电机正常工作。控制框图如下图所示:
控制按钮
单片机
AT89c51
功率驱动
步进电机
数码管显示模块
(2)、相关参数设定:
这里采用四相六线步进电机,这款步进电机的驱动电压12V,步进角为 7.5度 . 一圈 360 度 , 需要 48 个脉冲完成。其相序A-AB-B-BC—C—CD—D—DA。所以其正转控制脉冲为:01h,09h,08h,0ch,04h,06h,02h,03h,00h;反转控制脉冲为:01h,03h,02h,06h,04h,0ch,08h,09h,00h。
单片机的晶振为12MHZ;
(3)、系统电路图:
一、单片机最小系统的硬件原理接线图:
1、 接电源:VCC(PIN40)、GND(PIN20)。加接退耦电容0.1uF
2、 接晶体:X1(PIN18)、X2(PIN19)。注意标出晶体频率(选用12MHz),还有辅助电容20pF
3、 接复位:RES(PIN9)。接上电复位电路,以及手动复位电路,分析复位工作原理
4、 接配置:EA(PIN31)。说明原因。
二、单片机内部I/O部件:(所为学习单片机,实际上就是编程控制以下I/O部件,完成指定任务)
1、 四个8位通用I/O端口,对应引脚P0、P1、P2和P3;
2、 两个16位定时计数器;(TMOD,TCON,TL0,TH0,TL1,TH1)
3、 一个串行通信接口;(SCON,SBUF)
4、 一个中断控制器;(IE,IP)
根据以上的方案比较与论证确定总体方案,确定硬件原理图.原理图如下:
图10
3。2主要器件资料
AT89C51单片机
AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机.AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机.单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS—51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本.AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
·与MCS-51 兼容·4K字节可编程FLASH存储器
·数据保留时间:10年·全静态工作:0Hz-24MHz
·三级程序存储器锁定 ·128×8位内部RAM
·32可编程I/O线 ·两个16位定时器/计数器
·5个中断源 ·可编程串行通道
·低功耗的闲置和掉电模式·片内振荡器和时钟电路
·寿命:1000写/擦循环
ULN2803步进电机控制器
ULN2803是一种大电流型高电压器件 ,步进电机控制器。内部电路如图11
图11
四系统软件设计
4.1程序流程图4.1
电机是否工作
正反转
显示正转
显示反转
是否停机
是否停机
处理电机速度
处理电机速度
停机返回
开始
显示清零
N
Y
N
N
反转
正转
Y
Y
Y
开始始
程序初使化
串口是否发送数据
调用子程序
结束
图4.1
4。2程序设计
根据要求,可以将程序分为以下几个部份:
(1) 键盘输入程序设计
本系统使用的键盘较少,因此采用独立式键盘接口设计。独立式键盘适用于按键数量较少的场合.独立键盘工作原理:通过上拉电阻接到+5V上。无按键,处于高电平状态,有键按下电平为低.在消除抖动影响上是可以采用了软件消抖方法:在第一次检测到有键按下时,执行一段延时子程序后(约5ms),再确认电平是否仍保持闭合状态电平,如果保持闭合状态电平,则确认真正有键按下,进行相应处理工作,消除了抖动的影响。
(2) 步进电机运行步数控制程序
此方案采用单相和双相交差通电处理方式。此方法具有运行速度稳定,运行步数准确无误等优点。
第五章 调试总结
5。1操作控制:
本电路经调试符合题目要求,各项技术指标均达到设计的目的。具体操作控制方法如下:
1、当电机启停按钮时,步进电机根据制定默认状态开始转动;
2、当电机再启停按钮时,步进电机停止转动;
3、当电机换挡按钮时,步进电机速度快速转动;
4、当电机再换挡按钮时,步进电机速度缓慢转动;
5、当电机正反按钮时,步进电机反转;
6、当电机再正反按钮时,步进电机正转;
5。2设计过程中遇到的主要问题以及解决办法
1、仿真时数码管显示有闪烁,在程序中多加上几次display()函数即可。
2、步进电机在仿真调试的时候,出现往返转的情况,即不能正常转动,PROTEUS中的步进电机MOTOR —STEPPER,不知道具体型号,即不知道其内部接线结构,经过反复的调试,才得以解决问题。在仿真调试成功的前提下,进行硬件调试的时候,出现步进电机不转的情况,这是因为仿真的步进电机和硬件的步进电机是两个不同的型号,不同步进电机所允许的最快转动速率是不同的,在设置延时程序的时间参数时,一旦超过此值,电机就不能启动.所以硬件调试时,需要重新设置延时程序的时间参数,问题才得以解决。
3、 第一次烧写程序时烧不进去,不知如何解决。驱动也装好了,各方面都没问题就是不知道问题出在哪里。
5。3 心得体会
步进电机的控制可以用硬件,也可以用软件通过单片机实现。本系统采用了软件方法,即用单片机产生控制脉冲来控制步进电机的运行状态,这种方比采用硬件方法,即采用脉冲分配器芯片进行通用换相控制,电路更加简单,成本更低。
在做本次设计的过程中,我感触最深的当属查阅大量的设计了。为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的.在这次课程设计中,我们运用到了以前所学的专业课知识,如:C语言、模拟和数字电路知识等。虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获.
设计结束了,但是从中得到的知识会让我受益终身.发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。此次设计更锻炼了我的毅力,我觉得做任何事情要善始善终,不要中途放弃,只要自己认真的去对待,再难的问题也能找到办法解决。
最后感谢张老师在我遇到困难时,给予我们的建议与鼓励。
附录一:引用文献
1 何丽民,《单片机初级教程》,北京航空航天大学出版社;
2 沙占友,王彦朋,孟志永,《单片机外围电路设计》,电子工业出版社;ﻫ3 童诗白,华成英,《模拟电子技术基础》,北京高等教育出版社;
4 康华光,陈大钦,《电子技术基础》,北京高等教育出版社;
5 黄继昌,张海贵,郭继忠,《实用单元电路及其应用》,人民邮电出社;
6 谢宜仁,《单片机实用技术问答》,人民邮电出版社;
7 张迎新 《单片机初级教程——单片机基础》,北京航空航天大.
附录二:单片机源程序
/********************************************************************
/*********************************/
/* All CopyAight @2012 黄继鹏 */
/* 南京林业大学 机械电子工程学院 */
/*********************************/
*************************我是分割线*********************************
ﻩP0口控制段选 p1步进电机 P2控制位选
ﻩ 独立键盘 P3.0~P3.2
数码管的第一位为正反转标志位ﻩ0:正转 ﻩ1:反转
数码管的第二位为速度标志位 ﻩ0:单八拍 1:双四拍
数码管的第三位为开关标志位 ﻩ0:关 1:开
ﻩ ﻩ ﻩ *
*********************我还是分割线*********************************
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
void delay(uint xms);ﻩﻩ//延时子函数
void keyscan(); ﻩ//键盘检测子程序
void display();
sbit key1=P3^0; ﻩ//正反转选择
sbit key2=P3^1; ﻩ//速度选择
sbit key3=P3^2;ﻩ //执行键
uchar zx,k,sudu,bu;
int n=0,m=4;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,};//数码管显示编码
/*****************************************************
* 单双八拍工作方式: *
* A-AB-B-BC—C-CD-D—DA (即一个脉冲,转 3.75 度)*
******************************************************/
uchar code FFZ[]={0x11,0x33,0x22,0x66,0x44,0xcc,0x88,0x99}; //反转
uchar code FFW[]={0x99,0x88,0xcc,0x44,0x66,0x22,0x33,0x11}; //正转
/*****************************************************
* 单四拍工作方式: *
* A—B-C-D (即一个脉冲,转 7.5 度)*
******************************************************/
uchar code shuangz[]={0x88,0x22,0x44,0x11};
uch
展开阅读全文