基于AT89C51单片机步进电机控制.doc

上传人:知****量 文档编号:69951926 上传时间:2023-01-12 格式:DOC 页数:18 大小:459.04KB
返回 下载 相关 举报
基于AT89C51单片机步进电机控制.doc_第1页
第1页 / 共18页
基于AT89C51单片机步进电机控制.doc_第2页
第2页 / 共18页
点击查看更多>>
资源描述

《基于AT89C51单片机步进电机控制.doc》由会员分享,可在线阅读,更多相关《基于AT89C51单片机步进电机控制.doc(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、基于AT89C51单片机步进电机控制控制系统项目课程设计论文题目:基于AT89C51单片机步进电机控制 姓 名 陈悟宇 学 号 201103820129 年 级 2011级 专 业 飞行器制造工程 系(院) 机械工程学院 指导教师 徐 波 2014年5月23日目 录摘要:21设计要求22步进电机原理22.1步进电机工作方式22。2框图设计42.3知识点43硬件设计53.1电路原理53.2驱动电路63.3晶振电路63。4总体电路图74软件设计74。1程序流程图74。2程序清单95遇到的问题及解决方案95.1问题95.2解决方法9参考文献9设计心得体会10附录一原器件清单11附录二Proteus

2、仿真图12附录三ULN2003作用及引脚介绍13附录四程序清单14基于AT89C51单片机步进电机控制摘要:步进电机是机电一体化的关键产品之一,被广泛应用在各种自动化控制系统中.由于其精度高、体积小、控制方便灵活,因此在智能仪表和位置控制中得到了广泛的应用。大规模集成电路的发展以及单片机技术的迅速普及,为设计功能强,价格低的步进电机控制驱动器提供了先进的技术和充足的资源。关键词:步进电机 单片机 控制1 设计要求(1) 最小系统:选择AT89C51单片机为核心元件构成系统。有时钟产生电路和复位电路。(2) 控制电路:C语言编程控制。由操作者根据相应的工作需要进行操作。(3) 驱动部分:对单片机

3、输出的脉冲进行功率放大,从而驱动电机转动。(4) 主要功能:实现步进电机的正转,反转,加速,停转。2 步进电机原理2.1 步进电机工作方式由于步进电机是一种将电脉冲信号转换成直线或角位移的执行元件,它不能直接接到交直流电源上,而必须使用专业设备-步进电机控制驱动器,典型步进电机控制系统如图1所示控制器可以发出脉冲频率从几赫兹到几千赫兹可以连续变化的脉冲信号,它为环形分配器提供脉冲序列,环形分配器的主要功能是把来自控制环节的脉冲序列按一定的规律分配后,经过功率放大器的放大加到步进电机驱动电源的各项输入端,以驱动步进电机的转动,环形分配器主要有两大类:一类是用计算机软件设计的方法实现环形分配器要求

4、的功能,通常称软环形分配器.另一类是用硬件构成的环形分配器,通常称硬环形分配器。功率放大器主要对环形分配器的较小输出信号进行放大,以达到驱动步进电机的目的,步进电机的基本控制包括转向控制和速度控制两个方面。从结构上看,步进电机分为三相单三拍、三相双三拍和三相六拍3种,其基本原理如下:(1)换相顺序的控制通电换相这一过程称为脉冲分配。例如,三相步进电机在单三拍的工作方式下,其各相通电顺序为ABCA,通电控制脉冲必须严格按照这一顺序分别控制A、B、C相的通断.三相双三拍的通电顺序为ABBCCAAB,三相六拍的通电顺序为AABBBCCCAA.(2)步进电机的换向控制如果给定工作方式正序换相通电,步进

5、电机正转。若步进电机的励磁方式为三相六拍,即AABBBCCCAA。如果按反序通电换相,即AACCCBBBAA,则电机就反转。其他方式情况类似。(3)步进电机的速度控制如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。两个脉冲的间隔越短,步进电机就转得越快.调整送给步进电机的脉冲频率,就可以对步进电机进行调试。(4)步进电机的起停控制步进电机由于其电气特性,运转时会有步进感。为了使电机转动平滑,减小振动,可在步进电机控制脉冲的上升沿和下降沿采用细分的梯形波,可以减小步进电机的步进角,跳过电机运行的平稳性.在步进电机停转时,为了防止因惯性而使电机轴产生顺滑,则需采用合适的锁定波

6、形,产生锁定磁力矩,锁定步进电机的转轴,使步进电机转轴不能自由转动。 (5)步进电机的加减速控制在控制系统中,通过实验发现,如果信号变化太快,步进电机由于惯性跟不上电信号的变化,这时就会产生堵转和失步象.所有步进电机在启动时,必须有加速过程,在停止时波形有减速过程。理想的加速曲线一般为指数曲线,步进电机整个降速过程频率变化规律是整个加速过程频率变化规律的逆过程。选定的曲线比较符合步进电机升降过程的运行规律,能充分利用步进电机的有效转矩,快速响应性好,缩短了升降速的时间,并可防止失步和过冲现象。实际的控制系统中,根据负载的情况来选择步进电机.步进电机能响应不失步的最高步进频率称为“启动频率,于此

7、类似“停止频率是指系统控制信号突然关断,步进电机不冲过目标位置的最高步进频率。电机的启动频率、停止频率和输出转矩都要和负载的转动惯量相适应,有了这些数据,才能有效地对电机进行加减速控制。加速过程有突然施加的脉冲启动频率f0.步进电机的最高启动频率(突跳频率)一般为0.1KHz到34KHz,而最高运行频率则可以达到N*102KHz,以超过最高启动频率的频率直接启动,会产生堵转和失步的现象。2.2 框图设计 根据C51芯片的工作方式设计总体设计方框图如图 2 所示.XTAL RST P3 P1.0P1.3 内部时钟产生电路 复位电路电机 ULN2003P0.0P0。6 键盘控制 电路 控制信号P2

8、.0P2。6 AT89C51 图2总体设计方框图2.3 知识点l 本项目需要通过学习和查阅资料,掌握和了解如下知识点:l +5V电源原理及设计l 单片机复位电路工作原理及设计l 单片机晶振电路工作原理及设计l ULN2003大电流驱动阵列l AT89C51单片机引脚l 单片机汇编语言及程序设计3 硬件设计本设计的硬件电路只要包括控制电路、最小系统、驱动电路三大部分。最小系统只要是为了使单片机正常工作。控制电路只要由开关和按键组成,由操作者根据相应的工作需要进行操作。显示电路主要是为了显示电机的工作状态和转速。驱动电路主要是对单片机输出的脉冲进行功率放大,从而驱动电机转动.3.1 电路原理 基于

9、AT89C51单片机进电机速度控制原理如图3所示.步进电机的驱动信号必须为脉冲信号,转动的速度和脉冲的频率成正比。步进电机步进角为7。5度,一圈360度,需要 48个脉冲完成。A组线圈对应 P2.4B组线圈对应 P2。5C组线圈对应 P2.6D组线圈对应 P2。7正转次序: AB组-BC组-CD组-DA组 (即一个脉冲,正转 7.5 度)3.2 驱动电路通过ULN2003构成比较多的驱动电路,电路图如图3所示。通过单片机的P1.0P1.3输出脉冲到ULN2003的1B4B口,经信号放大后从1C4C口分别输出到电机的A、B、C、D相。图3步进电机驱动电路3.3 晶振电路晶振电路如图4所示:图4晶

10、振电路3.4 总体电路图把各个部分的电路图组合成总电路图,如图 5所示.图5总体电路图4 软件设计4.1 程序流程图程序分主程序和中断程序,采用C语言编程,计时采用延时程序。步进电机从静止到高速转动需要一个加速的过程,否则电机很容易被“卡住。在此程序中,当转速参数speedlevel为2时,可以算出,此时步进电机的转速为1500RPM,而当转速参数speedlevel 1时,转速为3000RPM.当步进电机停止,如果直接将speedlevel 设为1,此时步进电机将被“卡住”,而如果先把speedlevel 设为2,让电机以1500RPM的转速转起来,几秒种后,再把speedlevel 设为1

11、,此时电机就能以3000RPM的转速高速转动,这就是“加速”的效果。否否停转记录当前步进,等待再次输入改变转速是反转停转转速计数1是是改变转向改变转速初始化延时去抖动开始4.2 程序清单程序清单见附录。5 遇到的问题及解决方案5.1 问题(1).焊接的线路有问题(2).电动机不转(3).要求正转出现发转 5.2 解决方法(1) 检查电路并重新焊接.(2) ULN2003的驱动直接用单片机系统的5V电压,可能力矩不够大,加大驱动电压到12V。(3) ABCD接线反向.参考文献1 周向红. 51系列单片机应用与实践教程M。 北京:北京航空航天大学出版社,2008.2 马淑华,王凤文,张美金。单片机

12、原理与接口技术M.北京:北京邮电大学出版社,2007。3 张靖武,周灵彬.单片机系统的PROTEUS设计与仿真M。北京:电子工业出版社,2007。4 杨居义,杨尧,王益斌,杨晓琴. 单片机课程设计指导 M。 清华大学出版社.2009。5 匿名.ULN2003。DB/OL。http:/设计心得体会设计通过分析步进电机结构、工作原理,查阅步进电机控制系统的相关科技文献,遵循实用、简单、可靠和低成本的原则,设计了一种既可用于精度要求不高,但控制需完备的场合。对本次设计,有以下结论:采用单片机为控制核心,利用其强大的功能,把计算机与集成电路有机的结合起来,组成一个操作方便、交互性强的控制系统。而且整个

13、系统所包含的技术几乎包括了现本科学校控制专业所要求的知识,有利于实践教学取得最大效果。系统软件采用结构化设计,具有易维护性,根据用户新的要求,对软件系统进行少量的修改,使系统功能得到一定程度的提高。课程设计过程中,用到了大量的理论知识,我们通过查资料、上网搜索来获取.这样我们不仅复习了课本上的基本理论知识,也学到了很多新的知识,通过设计,使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,才能提高自己的实际动手能力和独立思考的能力。本人深知该课程还不够好,由于软件和硬件的各方面原因,系统的应用讨论不够,精度还有待于进一步提高。可以肯定,随着技术

14、的不断发展,步进电机的控制应用前景将越来越宽阔,而其控制系统也将向着智能化和网络化的方向发展。本课程设计的研究和探讨还远远不够,还要在现在的基础上,不断吸取新的技术和方法,进一步深化研究深度,争取有更多的收获。附录一原器件清单元件名称型号数量用途单片机AT89C511控制核心步进电机-1实验核心驱动器UNL20031放大信号电源Vcc5V/12V1/1提供电源电容30pF2晶振电路电解电容20F1复位电路按键1控制开关电阻1K1保护电路附录二Proteus 仿真图附录三ULN2003作用及引脚介绍UNL20035作用:ULN2003是大电流驱动阵列,多用于控制电路中,可直接驱动继电器等负载。引

15、脚1:CPU脉冲输入端,端口对应一个信号输出端。引脚2:CPU脉冲输入端.引脚3:CPU脉冲输入端。引脚4:CPU脉冲输入端。引脚5:CPU脉冲输入端。引脚6:CPU脉冲输入端.引脚7:CPU脉冲输入端。引脚8:接地。引脚9:集电极对地接通.引脚10:脉冲信号输出端,对应7脚信号输入端.引脚11:脉冲信号输出端,对应6脚信号输入端。引脚12:脉冲信号输出端,对应5脚信号输入端。引脚13:脉冲信号输出端,对应4脚信号输入端。引脚14:脉冲信号输出端,对应3脚信号输入端。引脚15:脉冲信号输出端,对应2脚信号输入端。引脚16:脉冲信号输出端,对应1脚信号输入端。附录四程序清单基于AT89C51单片

16、机步进电机速度控制程序清单如下:程序中,步进电机的运转控制放在时间中断函数之中,这样主函数就能很方便的加入其它任务的执行,而对步进电机的运转不产生影响.在此程序中,不但实现了步进电机的转速和转向的控制,另外还加了一个停止的功能,以防损坏步进电机甚至烧毁系统。#include static unsigned int count; /计数static int step_index; /步进索引数static bit turn; /步进电机转动方向static bit stop_flag; /步进电机停止标志static int speedlevel; /步进电机转速参数static int spc

17、ount; /步进电机转速参数计数void delay(unsigned int endcount); /延时函数void gorun(); /步进电机控制步进函数void main(void) count = 0; step_index = 0; spcount = 0; stop_flag = 0; P1_0 = 0; P1_1 = 0; P1_2 = 0; P1_3 = 0; EA = 1; /打开CPU中断 TMOD = 0x11; /设定时器0和1为模式1 ET0 = 1; /打开定时器0中断 TH0 = 0xFE; TL0 = 0x0C; /设定时中断 TR0 = 1; /开始计数

18、 turn = 0; speedlevel = 2; delay(10000); speedlevel = 1; do speedlevel = 2; delay(10000); speedlevel = 1; delay(10000); stop_flag=1; delay(10000); stop_flag=0; while(1); void timeint(void) interrupt 1 TH0=0xFE; TL0=0x0C; /设定时中断 count+; spcount-; if(spcount=0) spcount = speedlevel; gorun(); void dela

19、y(unsigned int endcount) count=0; dowhile(countendcount);void gorun() if (stop_flag=1) P1_0 = 0; P1_1 = 0; P1_2 = 0; P1_3 = 0; return; switch(step_index) case 0: /0 P1_0 = 1; P1_1 = 0; P1_2 = 0; P1_3 = 0; break; case 1: /0、1 P1_0 = 1; P1_1 = 1; P1_2 = 0; P1_3 = 0; break; case 2: /1 P1_0 = 0; P1_1 =

20、1; P1_2 = 0; P1_3 = 0; break; case 3: /1、2 P1_0 = 0; P1_1 = 1; P1_2 = 1; P1_3 = 0; break; case 4: /2 P1_0 = 0; P1_1 = 0; P1_2 = 1; P1_3 = 0; break; case 5: /2、3 P1_0 = 0; P1_1 = 0; P1_2 = 1; P1_3 = 1; break; case 6: /3 P1_0 = 0; P1_1 = 0; P1_2 = 0; P1_3 = 1; break; case 7: /3、0 P1_0 = 1; P1_1 = 0; P1_2 = 0; P1_3 = 1; if (turn=0) step_index+; if (step_index7) step_index=0; else step_index-; if (step_index0) step_index=7; 17

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 初中资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁