能力训练步进电机.docx
- 文档编号:12385821
- 上传时间:2023-04-18
- 格式:DOCX
- 页数:20
- 大小:228.04KB
能力训练步进电机.docx
《能力训练步进电机.docx》由会员分享,可在线阅读,更多相关《能力训练步进电机.docx(20页珍藏版)》请在冰豆网上搜索。
能力训练步进电机
摘要
步进电动机是一种将电脉冲信号转换成角位移或线位移的精密执行元件,具有快速起动和停止的特点。
其驱动速度和指令脉冲能严格同步,具有较高的重复定位精度,并能实现正反转和平滑速度调节。
它的运行速度和步距不受电源电压波动及负载的影响,因而被广泛应用于数模转换、速度控制和位置控制系统。
本文在分析了步进电机的驱动特性、步进电机驱动芯片ULN2803的性能、结构的基础上,结合AT89C52单片机,设计出了四相步进电机驱动电路。
本次设计的拓展功能为通过LED指示灯的闪烁顺序以及速度来判别步进电机的转向及转速。
设计实现了通过按键对电机的启动、转动、停止,调速等的控制。
关键字:
步进电机;AT89C52单片机;ULN2803驱动。
1Proteus仿真流程与Keil编译器简介
1.1Proteus仿真流程
(1)工作界面
ProteusISIS的工作界面是一种标准的Windows界面,如图1-2所示。
包括:
标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。
图1.1proteus操作界面
(2)基本操作
1 图形编辑窗口
在图形编辑窗口内完成电路原理图的编辑和绘制。
为了方便作图
坐标系统(CO-ORDINATESYSTEM)。
ISIS中坐标系统的基本单位是10nm,主要是为了和ProteusARES保持一致。
但坐标系统的识别(read-out)单位被限制在1th。
坐标原点默认在图形编辑区的中间,图形的坐标值能够显示在屏幕的右下角的状态栏中。
点状栅格(TheDotGrid)与捕捉到栅格(SnappingtoaGrid)编辑窗口内有点状的栅格,可以通过View菜单的Grid命令在打开和关闭间切换。
点与点之间的间距由当前捕捉的设置决定。
捕捉的尺度可以由View菜单的Snap命令设置,或者直接使用快捷键F4、F3、F2和CTRL+F1。
2 预览窗口
该窗口通常显示整个电路图的缩略图。
在预览窗口上点击鼠标左键,将会有一个矩形蓝绿框标示出在编辑窗口的中显示的区域。
其他情况下,预览窗口显示将要放置的对象的预览。
这种PlacePreview特性在下列情况下被激活:
当一个对象在选择器中被选中、
当使用旋转或镜像按钮时、当为一个可以设定朝向的对象选择类型图标时(例如:
Componenticon,DevicePinicon等等)、当放置对象或者执行其他非以上操作时,placepreview会自动消除、对象选择器(ObjectSelector)根据由图标决定的当前状态显示不同的内容。
显示对象的类型包括:
设备,终端,管脚,图形符号,标注和图形。
在某些状态下,对象选择器有一个Pick切换按钮,点击该按钮可以弹出库元件选取窗体。
通过该窗体可以选择元件并置入对象选择器,在今后绘图时使用。
3 对象选择与放置
通过对象选择按钮,从元件库中选择对象,并置入对象选择器窗口,供今后绘图时使用。
显示对象的类型包括:
设备,终端,管脚,图形符号,标注和图形。
放置对象的步骤如下(Toplaceanobject:
)根据对象的类别在工具箱选择相应模式的图标(modeicon)。
根据对象的具体类型选择子模式图标(sub-modeicon)。
如果对象类型是元件、端点、管脚、图形、符号或标记,从选择器里(selector)选择你想要的对象的名字。
对于元件、端点、管脚和符号,可能首先需要从库中调出。
如果对象是有方向的,将会在预览窗口显示出来,你可以通过预览对象方位按钮对对象进行调整。
最后,指向编辑窗口并点击鼠标左键放置对象。
1.2Keil简介
KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。
运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。
KeilC51开发系统基本知识:
(1)系统概述
KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
下面详细介绍KeilC51开发系统各部分功能和使用。
(2)KeilC51单片机软件开发系统的整体结构
C51工具包的整体结构,uVision与Ishell分别是C51forWindows和forDos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。
开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。
然后分别由C51及C51编译器编译生成目标文件(.OBJ)。
目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。
ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。
2步进电机工作原理
步进电机是一种将电脉冲转化为角位移的执行机构。
通俗一点讲:
当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。
可以通过控制脉冲个来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
本次设计是采用步进电机28BYJ48型四相八拍电机,电压为DC5V—DC12V。
当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地转动。
每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度(一个步距角)。
当通电状态的改变完成一个循环时,转子转过一个齿距。
四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。
单四拍与双四拍的步距角相等,但单四拍的转动力矩小。
八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。
步进电机的主要特性:
1步进电机必须加驱动才可以运转,驱动型号必须为脉冲信号,没有脉冲的时候,步进电机静止,控制输入给步进电机的脉冲数目可以控制步进电机的角位移。
2本次设计所用步进电机的步进角度为7.5度,一圈360度,需要48个脉冲完成。
3步进电机具有瞬间启动和急速停止的优越特性。
4控制步进电机定子绕组的通电顺序可以控制步进电机的转动方向。
5控制输入给步进电机的脉冲的频率可以控制步进电机的转速。
因此,目前打印机,绘图仪,机器人,等等设备都以步进电机为动力核心。
3设计原理及方案
3.1AT89C52单片机介绍
AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。
其主要功能特性有以下几点:
(1)兼容MCS51指令系统
(2)8k可反复擦写(大于1000次)FlashROM;
(3)32个双向I/O口;
(4)256x8bit内部RAM;
(5)3个16位可编程定时/计数器中断;
(6)时钟频率0-24MHz;
(7)2个串行中断,可编程UART串行通道;
(8)2个外部中断源,共8个中断源;
(9)2个读写中断口线,3级加密位;
(10)低功耗空闲和掉电模式,软件设置睡眠和唤醒功能;
(11)有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产品的需求。
AT89C52为8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52相同,其主要用于会聚调整时的功能控制。
功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。
其引脚图如图3.1所示。
图3.1AT89C52引脚图
P0口:
P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。
作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1口:
P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
与AT89C51不同之处是,P1.0和P1.1还可分别作为定时/计数器2的外部计数输入(P1.0/T2)和输入(P1.1/T2EX),参见表3.1。
Flash编程和程序校验期间,P1接收低8位地址。
表3.1P1.0和P1.1的第二功能
引脚号
功能特性
P1.0
T2,时钟输出
P1.1
T2EX(定时/计数器2)
P2口:
P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器(如执行MOVX@RI指令)时,P2口输出P2锁存器的内容。
Flash编程或校验时,P2亦接收高位地址和一些控制信号。
P3口:
P3口是一组带有内部上拉电阻的8位双向I/O口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。
此时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。
P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。
RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
XTAL1:
振荡器反相放大器的及内部时钟发生器的输入端。
XTAL2:
振荡器反相放大器的输出端。
3.2设计方案论证
从该系统的设计要求可知,该系统的输入量为速度和方向,速度应该有增减变化,通常用加减按钮来控制速度,这样,只需要2根口线,一根方向控制线以及一根启停信号线共需要4根输入线。
系统的输出线与步进电机的绕组数有关,这里选用四相八拍的步进电机,该电机共有四相绕组,工作电压为+5V,可以和单片机共用一个电源。
电机的四相绕组用P1口的P1.0到P1.3控制,由于P1口的驱动能力不够,因而用一片2803增加驱动能力,用P0口控制LED灯用于显示转速及转向。
P2口控制数码管用于显示速度是等级。
数码管采用七段共阳数码管。
3.3硬件电路设计
本设计的硬件电路主要包括控制电路,最小系统,驱动电路,显示电路四大部分。
设计框图如图3.2所示。
最小系统是为了使单片机正常工作。
控制电路主要由开关和按键组成,由工作者根据需要进行相应的操作。
显示电路主要是为了显示电机的工作状态太和转速。
驱动电路主要是对单片机输出的脉冲进行功率放大,从而来驱动电机转动。
图3.2系统设计框图
(1)控制电路
根据系统的控制要求,控制电路设置了启停控制,转向控制,加速控制和减速控制按钮,分别是K1、K2、S1、S2。
控制电路如图3.3所示。
通过K1和K2的变化来控制电机的启停和转向。
当开关状态变化时,通过键盘检测程序来检测P1.0和P1.1的状态来调用相应的启停和换向程序。
实现电机的启动停止和正反转的控制。
根据步进电机的工作原理可知,步进电机的转速控制主要是通过控制输入电机的脉冲频率来实现的。
对于单片机来说,主要有软件延时和定时中断两种方法,在此,选用软件延时来实现对速度的控制。
图3.3控制电路原理图
(2)最小系统
单片机最小系统或称为最小应用系统。
一般应包括:
单片机、复位电路、晶振电路。
复位电路使用了独立式键盘,采用手动复位。
即通过手动拨码开关,是单片机进入复位状态。
晶振电路由30PF的电容和一个12M的晶体振荡器组成,为整个电路提供时钟频率。
8051单片机的时钟信号通常有两种获得方式。
内部振荡方式和外部中断方式。
在引脚XTAL1和XTAL2外部接晶振电路,就构成了内部晶振。
由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器产生振荡时钟脉冲。
复位电路和晶振电路图如图3.4所示。
内部振荡方式产生的时钟信号比较稳定,比较实用一点。
图3.4复位及时钟振荡电路
(3)驱动电路
通过ULN2803构成的驱动电路比较多,电路图如图3.5所示。
通过单片机的P1.0~P1.3输出脉冲到ULN2803的1B~4B口,经信号放大后从1C~4C口分别输出到电机的A、B、C、D四个相。
图3.5步进电机驱动电路
(4)显示电路
在前面控制电路中已经讲过,通过控制电路可以控制电机的启动停止、正反转以及加减速。
其中电机的转速的等级分为7级。
为了方便知道电机的转动状态和转速等级,这里设计了显示电路。
通过LED灯的闪烁方向及速度来判别电机的转向和转速。
7段共阳数码管用来显示电机转速的等级。
显示电路如图3.6所示。
图3.6显示电路
(5)总体电路图
把各个部分组合而成的总体电路图如图3.7所示
图3.7系统总体电路图
4软件设计流程
4.1程序流程图
本课程设计制作的步进电机工作方式是四相八拍,并且通过键盘控制电机的启动、停止和加减速度。
在设计时采用了共阳数码管用0到7来指示步进电机的转速等级,正反转指示用8位LED灯的闪烁的不同方式来指示,并且在反转时,蜂鸣器发出响声。
具体的程序设计流程图如图4.1所示。
Y
N
N
Y
N
Y
图4.1程序设计流程图
4.2程序源代码
#include"reg51.h"//头文件
#defineucharunsignedchar//宏定义
#defineuintunsignedint
sbitS1=P3^4;//启停键
sbitS2=P3^5;//正反转控制键
sbitB1=P3^2;//加速键
sbitB2=P3^3;//减速键
ucharspeed=0;//定义速度变量
ucharstep_table1[]={0xfe,0xfc,0xfd,0xf9,0xfb,0xf3,0xf7,0xf6};//步进电机正反转对照表
ucharstep_table2[]={0xf6,0xf7,0xf3,0xfb,0xf9,0xfd,0xfc,0xfe};//步进电机反转指示
ucharled_table3[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//LED左右闪烁
ucharled_table4[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//LED右左闪烁
ucharLED_table[]={0Xc0,0Xf9,0Xa4,0Xb0,0x99,0x92,0x82,0xf8};//LED七段共阳数码管数值表
voiddelay(uinti)//延时函数
{
uintj,k;
for(j=(100-i*10);j>0;j--)
for(k=20;k>0;k--);
}
voidkey()//键盘检测函数用于加速和减速
{
if(B1==0)
{
delay
(1);//延时消抖
if(B1==0)//加速键
{
speed++;
if(speed==8)//速度最高为7,达到7时保持
speed=7;
while(B1==0);//等待按键释放
}
}
if(B2==0)//减速键
{
delay
(1);//延时消抖
if(B2==0)
{
if(speed!
=0)//速度最低为0,减到0时保持
speed--;
else
speed=0;
while(B2==0);//等待按键释放
}
}
P2=LED_table[speed];//速度值送数码管显示
}
/*主函数*/
voidmain()
{ucharm;
while
(1)
{
key();//调用键盘检测函数
if(speed!
=0)//速度为0是电机不转
{
if(S1==1)//启动步进电机
{
for(m=0;m<8;m++)//将step_table1和step_table2值送入P1口
{
if(S2==1)//步进电机正转
{
P0=led_table3[m];//LED正转指示
P1=step_table1[m]&0xff;//电机正转
delay(speed);//通过延时控制速度
}else
{
P0=led_table4[m];//LED反转指示
P1=step_table2[m]&0x1f;//电机反转并且蜂鸣器响
delay(speed);//通过延时控制转速
}
}
}
}
}
}
5仿真结果图
如下图5.1所示为硬件电路的仿真结果
图5.1仿真结果图
当开关K1打在上面时,电机启动,打下面时停止。
当数码管速度级别显示为0时,表明电机速度为零,当速度不为零时电机转动,并且按加速键S1时电机转速变快,LED闪烁也变快。
当按减速键S2时,电机转动速度变慢,LED闪烁变慢。
当K2打在上面时,电机左转,LDE从左往右闪烁。
当K2打在下面时,电机右转,LED从右往左闪烁。
当按下复位开关时,恢复到最初的状态。
6心得体会
通过本次能力训练,我对步进电机的工作原理及其应用有了较深的理解。
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。
这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。
使得在速度、位置等控制领域用步进电机来控制变的非常的简单。
我的题目是用按键控制步进电机的启停、正转和反转,以及其转速的增减。
在这一周中遇到了好多问题,之前对于步进电机,我基本上没有一点了解,学起来比较吃力,不过我并不气馁,在这一周的时间内,我先去图书馆借阅相关书籍,同时也在网上查阅了相关资料,功夫不负有心人,最终我实现了按键对步进电机转动的控制功能。
并通过LED和数码管的显示来反映步进电机的工作状态。
从刚开始的什么都不懂,到现在能画出电路图仿真并做出实物,我觉得这是一个不小的进步,而且我发觉在学习过程中也充满了乐趣。
这次的能力训练让我受益匪浅,无论从知识上还是其他的各个方面。
在这次训练中让我体会到了合作与团结的力量,当遇到不会或是设计不出来的地方,我会询问同学,跟他们一块讨论。
团结就是力量,无论是现在的学习还是在以后的工作中,团结都是至关重要的,有了团结会有更多的理念、更多的思维、更多的情感。
步进电机是一门很重要的工具,老师和一些工作的朋友都曾说过,尽管我们在课堂学到的内容很有限,但在以后的学习中步进电机还需要好好的深入研究和学习,最后感谢老师对我们的精心指导和帮助,感谢同学们对我的帮助。
参考文献
[1]李群芳张士军.单片微型计算机与接口技术.北京:
电子工业出版社.2008
[2]李秀忠.单片机应用技术:
汇编语言.中国劳动社会保障出版社.2006
[3]王守中,聂元铭.51单片机开发入门与典型实例.人民邮电出版社.2009
[4]万福君,潘松峰.MCS-51单片机原理系统设计与应用.清华大学出版社.2008
[5]叶钢,李三波,张莉.单片机原理与仿真设计.北京航空航天大学.2009
[6]于永,戴佳.51单片机C语言常用模块与综合系统设计.电子工业出版社.2007
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 能力 训练 步进 电机