基于单片机步进电机转动速度,角度的简单键盘控制设计_第1页
基于单片机步进电机转动速度,角度的简单键盘控制设计_第2页
基于单片机步进电机转动速度,角度的简单键盘控制设计_第3页
基于单片机步进电机转动速度,角度的简单键盘控制设计_第4页
基于单片机步进电机转动速度,角度的简单键盘控制设计_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

北方民族大学论文题目:基于单片机步进电机控制系统院(部)名称:电气信息工程学院组长姓名:=专业:测控技术与仪器学号:20100259指导教师姓名:组员:论文提交时间:论文答辩时间:学位授予时间:北方民族大学教务处制

摘要随着微电子和计算机技术的发展步进电机的需求量与日俱增它广泛用于打印机、电动玩具等消费类产品以及数控机床、工业机器人、医疗器械等机电产品中其在各个国民经济领域都有应用。研究步进电机的控制系统对提高控制精度和响应速度、节约能源等都具有重要意义。步进电机是一种能将电脉冲信号转换成角位移或线位移的机电元件步进电机控制系统主要由步进控制器,功率放大器及步进电机等组成。采用单片机控制,用C语言编写软件代替上述步进控制器,使得线路简单,成本低,可靠性大大增加。软件编程可灵活产生不同类型步进电机励磁序列来控制各种步进电机的运行方式。本设计是采用AT89C51单片机对步进电机的控制,通过I/O口输出的时序方波作为步进电机的控制信号,信号经过芯片ULN2003驱动步进电机。实践证明,基于单片机控制的步进电机比传统的步进控制器具有更好的性能更加简单、方便、可靠。本设计的主要研究对象就是开环伺服系统中最常用的执行器件———步进电机。关键词:步进电机单片机正反转控制速度控制角度控制LED发光二极管目录TOC\o"1-3"\h\u1560前言 ⑤可反复进行系统试验。使用方便是ATMEL公司89系列单片机被广泛应用的一个主要因素。一般的OTP产品,一旦错误编程就成了废品,而89系列单片枫内部采用了Flash存储器,所以,错误编程后仍可以重新编程,直到正确为止。其次是它可反复进行系统试验。用89系列单片枕设计的系统,可以反复进行系统试验,每次试验可以编入不同的程序,这样可以保证用户的系统设计达到最优,而且还可以随用户的需要和发展进行修改,使系统能不断追髓用户的最新要求。89系列单片机可分为标准型号,低档型号和高档型号。鉴于以上的优点,经过分析比较,根据本课题的特点,选用ATMEL公司89系列懿标准型单片机ATC89C51。1.2步进电机及驱动的选取步进电机又称电脉冲马达。它是将电脉冲信号转换成机械角位移的执行元件。输入一个电脉冲就转动一步,即每当电机绕组接受一个电脉冲,转子就转过一个相应的步距角。转子的角位移的大小及转速分别与输入的电脉冲数及其频率成正比。并在时间上与输入脉冲同步。只要控制输入电脉冲的数量、频率以及电机绕组通电相序即可获得所需的转角、转速及转向,很容易用微机实现数字控制。 步矩角的大小与通电方式和转子齿数有关,其大小可用下式计算:a=360°/(zm)式中:z-转子齿数;m-运行拍数,通常等于相数或相数整数倍,即m=KN(N为电动机相数,单拍时K=1,四相八拍或双拍K=2)。本设计步进电机采用四相五线混合式步进电机,直径:28mm;电压:5V;步进角度:5.625x1/64;减速比:1/64;单个重:0.04KG;5线4相可以用普通uln2003芯片驱动,也可以接成2相使用。四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。单四拍与双四拍的步距角相等,但单四拍的转动力矩小。八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。例如:八拍工作方式A-AB-B-BC-C-CD-D-DA。1.3驱动芯片的选取步进电机的驱动芯片选用ULN2003A,ULN200A电路具有以下特点:电流增益高(大于1000);带负载能力强(输出电流大于500mA);温度范围宽(-40~85℃);工作电压高(大于50V)。引出端脚的功能符号引出端序号符号功能引出端序号符号同意功能11B输入9COM公共端22B输入107C输出33B输入116C输出44B输入125C输出55B输入134C输出66B输入143C输出77B输入152C输出8E发射极161C输出ULN2003A型高压大电流达林顿晶体管阵列电路的输入脉冲占空比、输出路数与输出电流的关系曲线如图3所示,从图3可以看出,随着输入脉冲的占空比以及输出路数的增加,允许的输出电流随之降低,也就是说:电路的输出路数的增加将导致电路的驱动能力下降。图4所示为ULN2003A电路输出电流Ic、输出电压VCE和输入电流I1三者之间的关系曲线,从图4可以看出,随着输入电流的增加,输出电压随之降低,而随着输出电流的增加,输出电压也随之增加。ULN2003A主要电特性特性符号条件

(若无其它规定,TA=-40~85℃)规范值单位最小最大直流放大倍数hEFVCE=2V,Ic350mA1000-集电极-发射极饱和电压VCE(sat)IB=500μA,IC=350mA-1.6V箝位二极管正向电压VFIF=350mA,输入开路-2.0V集电极截止电流ICEXVCE=50VIi=0mA-50μAVi=6V-500μA箝位二极截止电流IFEXVF=50VTA=25-50μAVi=85-100μA集电极最大电压Vamx空载50-V集电极最大电流ImaxVCE=2V500-mA开态延迟时间tonVCE=5V,16kHz的方波输入-1.0μS关态延迟时间toffVCE=5V,16kHz的方波输入-1.0μS2.单片机的主要系统电路2.1时钟电路单片机的时钟信号用来提供单片机片内各种微操作的时间基准,时钟信号通常用两种电路形式得到:内部振荡和外部振荡。MCS-51单片机内部有一个用于构成振荡器的高增益反向放大器,引脚XTALl和XTAL2分别是此放大电器的输入端和输出端,由于采用内部方式时,电路简单,所得的时钟信号比较稳定,实际使用中常采用这种方式,如图所示在其外接晶体振荡器(简称晶振)或陶瓷谐振器就构成了内部振荡方式,片内高增益反向放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起可构成一个自激振荡器并产生振荡时钟脉冲。图中外接晶体以及电容C2和C3构成并联谐振电路,它们起稳定振荡频率、快速起振的作用,其值均为30PF左右,晶振频率选12MHz。 30PF ATC89C51 ATC89C51 XTAL2 VCCGND 12M 10UF RESET GND 30PF XTAL1 1KΩ 时钟电路复位电路2.2复位电路为了初始化单片机内部的某些特殊功能寄存器,必须采用复位的方式,复位后可使CPU及系统各部件处于确定的初始状态,并从初始状态开始正常工作。单片机的复位是靠外电路来实现的,在正常运行情况下,只要RST引脚上出现两个机器周期时间以上的高电平,即可引起系统复位。但如果RST引脚上持续为高电平,单片机就处于循环复位状态。复位后系统将输入/输出(I/O)端口寄存器置为FFH,堆栈指针SP置为07H,SBUF内置为不定值,其余的寄存器全部清0,内部RAM的状态不受复位的影响,在系统上电时RAM的内容是不定的。复位操作有两种情况,即上电复位和手动(开关)复位。本系统采用上电复位方式。3.软件设计3.1软件流程图系统软件程序设计主要包括:主程序设计.键盘扫描,电机控制正反转,速度,角度控制程序等。 开始键盘扫描 总开关是否打开 否是 角度档位设置与转速按键设置 步进电机正反转选择角度 对应的指示灯亮是 启动工作对应的指示灯亮 是 结束 步进电机停止工作对应的指示灯熄灭 3.2语言软件的选取 本系统下位机以单片机为核心,采用C语言编程。C语言是书写程序的一种软件语言,它是计算机软件设计的重要工具。在系统软件开发、实时控制的和实时处理领域中有着不可替代的地位。用C语言编程使编程简洁易懂,进而进行高质量的设计,而且它不独立于具体机器,是一种非常通用的高级程序设计语言,采用C语言编程,因此,在已经有众多高级语言和可视化集成开发环境工具的今天,C语言有着重要的有效的程序设计语言地位。仿真仿真使用protues软件,仿真图如下元件清单ATC89S51单片机,九个开关四个LED二极管,四个三极管,一个12M晶振,电容两个,排阻一件,ULN2003A,步进电机。结论经过这个学期对微机的深入学习,并且在老师的悉心指导和严格要求下,我们终于完成了四相步进电机设计课程。从书本上的知识到自己亲手的课程设计,每一步对我们来说无疑是巨大的尝试和挑战,也成就了我们目前在大学期间独立完成的最大的项目。记得在刚接到这个课题时,由于对相关知识不是很了解,我们都有些茫然不知所措。设计好一个步进电机需要什么专业知识?带着这个疑问我们开始了地学习和实验:去图书馆查阅相关资料、上网去了解相关的内容,渐渐头脑中的概念清晰了起来。在具体设计的过程中,我们遇到了更大的困难。我们不断地给自己提出新的问题,然后去论证、推翻,再接着提出新的问题。在这个循环往复的过程中,我们这篇稚嫩的设计日臻完善。虽然我们的设计作品不是很成熟,即使借鉴前人的很多资料仍然还有很多不足之处,但我仍然心里有一种莫大的幸福感,因为我们实实在在地走过了一个完整的设计所应该走的每一个过程,并且享受了每一个过程。致谢首先,我们要感谢毛老师指导,毛老师在各个方面都给予了我无微不至的关怀和帮助,他对工作一丝不莓,严谨治学的态度,使我深受启发和感动,在此表达对他的深深敬意和感激之情。同时还要感谢我的组员同学积极和配合上,并向所有帮助和关心着我们的老师和同学们,在此道一声谢谢。参考文献单片机原理与接口技术模拟电子技术数字电路C语言教程附件1.C语言程序部分:#include<reg52.h>#include<intrins.h>typedefcharint8;typedefunsignedcharuint8;typedefunsignedintuint16;sbitKeyin_1=P0^3;sbitKeyin_2=P0^4;sbitKeyin_3=P0^5;sbitD1=P2^0;sbitD2=P2^1;sbitD3=P2^2;sbitD4=P2^3;/*================延时函数==================*/voiddelay_1(uint8dat){while(dat--);}/*================键盘函数=================*/uint8keyboard_1(void){ staticuint8dat=0; uint8a[]={0XFe,0XFd,0XFb},i, b[3][3]={1,2,3, 4,5,7, 9,11,15}; for(i=0;i<3;i++) { P0=a[i]; if(!Keyin_1) { delay_1(20); if(!Keyin_1) { dat=b[i][0]; while(!Keyin_1); returndat; } } if(!Keyin_2) { delay_1(20); if(!Keyin_2) { dat=b[i][1]; while(!Keyin_2); returndat; } } if(!Keyin_3) { delay_1(20); if(!Keyin_3) { dat=b[i][2]; while(!Keyin_3); returndat; } } } return0;}/*===================角度速度控制函数=============*/voidmotor_1(uint8dat){ int8i,a[]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9}; staticbitON=0,RL=0,ST=0; staticuint16K=8,L=64,M=0,N=0; P1=0X00; if(dat==1){ON=~ON;D1=~D1;} if(ON) { if(dat==2){RL=~RL;D2=~D2;} if(dat==3){if(L==64)L=8;elseL=64;D3=~D3;} if(dat==4)K--; if(dat==5)K++; if(dat==15)ST=1; M=L*K; if(dat>5&&dat<13)N=23*dat; if(!RL) { if(ST)while(M--) { for(i=0;i<8;i++) { D4=0; P1=a[i]; delay_1(N); } if(keyboard_1()==1){ON=0;break;} } } if(RL) { if(ST)while(M--)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论