基于.51单片机控制步进电机_第1页
基于.51单片机控制步进电机_第2页
基于.51单片机控制步进电机_第3页
基于.51单片机控制步进电机_第4页
基于.51单片机控制步进电机_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

/单片机原理及系统课程设计1引言步进电机又称为脉冲电动机或阶跃电动机.它是基于最基本的电磁感应作用.将电脉冲信号转变为角位移或线位移的开环控制元件。单片机控制的步进电机广泛地应用于工业自动控制、数控机床、组合机床、机器人、计算机外围设备、照相机.大型望远镜.卫星天线定位系统等等。随着经济的发展.技术的进步和电子技术的发展.步进电机的应用领域更加广阔.同时也对步进电机的运行性能提出了更高的要求。步进电机的原始模型起源于1830年至1860年.1870年前后开始以控制为目的的尝试.应用于氩弧灯的电极输送机构中.这被认为最早的步进电机。1950年后期晶体管的发明也逐渐应用在步进电机上.对于数字化的控制变得更为容易。到20世纪60年代后期.在步进电机本体方面随着永磁材料的发展.各种实用性步进电机应运而生。步进电机往后经过不断改良.使得今日步进电机已广泛运用在需要高定位精度、高分解能、高响应性、信赖性等灵活控制性高的机械系统中。在生产过程中要求自动化、省人力、效率高的机器中.我们很容易发现步进电机的踪迹.尤其以重视速度、位置控制、需要精确操作各项指令动作的灵活控制性场合步进电机用得最多。2设计方案与原理4.1设计方案设计一个51单片机四相步进电机控制系统要求系统具有如下功能:〔1由I/O口产生的时序方波作为电机控制信号;〔2信号经过驱动芯片驱动电机的运转;〔3电机的状态通过键盘控制.包括正转.反转.加速.减速.停止和单步运行。4.2设计原理步进电机实际上是一个数字\角度转换器.也是一个串行的数\模转换器。步进电机的基本控制包括启停控制、转向控制、速度控制、换向控制4个方面。从结构上看,步进电机分为三相、四相、五相等类型,本次设计的是四相电机。四相步进电机的工作方式有单四拍、双四拍和单双八拍三种。在本次设计中.我们使用的是四相单八拍的工作方式。通过P1口给A,B,C,D四相依次输出高电平即可实现步进电机的旋转.通过控制两次输出的间隔.即可实现对步进电机的速度控制。图2.1步进电机内部结构截图根据步进电机的相关相序表我们可以正常的控制电机的步进运行。3硬件设计根据设计要求和设计原理.我们可以绘制出基本的功能方框图.以便之后我们连接实际电路时的方便和可靠。用键盘控制具体的功能模块.这样更能直观方便的控制整体的系统.使其达到我们预期的操作效果。图3.1中简单描述了整个单片机系统的控制模式和控制流程.包括通过时钟电路和键盘电路.来控制UNL2803驱动电机动作。图3.1硬件电路功能方框图图3.2截图中是UNL2803中的细节电路.用前四个输入输出口连接步进电机的四个输入口。图3.3截图是单片机的键盘控制电路.对系统的控制功能模块的选择和控制。包括正转启动按钮、反转启动按钮、停止位按钮、加速按钮、减速按钮和单步运行按钮。图3.2步进电机及其驱动电路截图图3.3按键设置及其连接引脚截图以上电路功能截图均出自于proteus仿真软件。4软件设计软件设计中.我们查询键盘按钮控制方式来选择步进电机运行的工作状态。在程序里面对按钮分配的I/O地址分别为正转启动位是P3.0.反转启动为是P3.1.停止位是P3.4.加速位是P3.2.减速位是P3.3.单步执行位是P3.5。通过外部中断INT0和INT1来实现加速减速的外部输入。图4.1主程序流程图程序里面加上了防止正常运行过程中电机的突然转向的阻断。防止电机的意外损坏。在转向之前.必须按下停止按钮.然后再发出电机的下一条控制命令。当然.我们的加速减速通过外中断可以在电机正常运行过程中进行操作。增加了我们系统的可操作性和高可控性。总结在本次课程设计中.首次接触到单片机的应用.接到题目时.对步进电机一无所知.并对如何使用单片机也不甚了解.仅仅知道一些生硬的指令和符号.并不知道它们到底如何使用以及其意义.通过老师指导.然后自己在课后翻阅书籍和上网.搜集到了不少有关步进电动机的知识。通过钻研这些知识.总算对步进电机有了认识.但是这离课程设计需要掌握的知识相差甚远.为了缩短这种差距.只能不断地查阅资料.仔细揣摩。在这次课程设计中.通过用单片机控制步进电机的起动、停止.正、反转.加、减速.也对单片机的知识也进行了复习和巩固。设计仿真电路的过程中.必须要有耐心.在整个电路的设计过程中.花费时间最多的是各个单元电路的连接及电路的细节设计上.如在多种方案的选择中.仔细比较分析其原理以及可行的原因。这就要求对硬件系统中各组件部分有充分透彻的理解和研究.并能对之灵活应用。同时在本次设计过程中.还学会了高效率的查阅资料、运用工具书、利用网络查找资料。发现.在所使用的书籍上有一些知识在实际应用中其实并不是十分理想.各种参数都需要自己去调整.这就要求应更加注重实践环节。那时候觉得学习单片机是那么的枯燥乏味.整天只是学习这个指令做什么.那个指令做什么.觉得学了一点用都没有。现在知道.原来一些生硬的指令组合起来竟然可以实现如此多的实用功能。俗话说的好.实践是检验真理的唯一标准.学习再多的理论也只能纸上谈兵.只有把理论应用到实践中.才能检验出理论的真伪。所以.虽然一周的时间不长.时间过得也很快.但是在这一周过去后.明白了学习与实践相结合的重要性.指引我在以后的学习中应该把理论和实践联系起来。参考文献[1]李华,王思明,张金敏.单片机原理及应用[M].XX:XX大学出版社,2001.4<1>:75-89.[2]黄勤.单片机原理及应用[M].北京:清华大学出版社,2010.4<2>:110-120.附录A仿真界面截图图3.4Proteus仿真截图附录B步进电机相序表表2.2四相八拍步进电机相序表ABCD00010011001001100100110010001001附录C主程序#include<reg51.h>//51芯片管脚定义头文件#include<intrins.h> //内部包含延时函数_nop_<>;#defineucharunsignedchar#defineuintunsignedintucharcodeFFW[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};ucharcodeREV[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};sbitK1=P3^0;//正转sbitK2=P3^1;//反转sbitK3=P3^2;//停止sbitK4=P3^3;//正向单步运行sbitK5=P3^4; //加速sbitK6=P3^5; //减速intnum=2000;voidmotor_ffw<>;voidmotor_rev<>;voidmotor_ffw2<>;/********************************************************//*延时t毫秒/*11.0592MHz时钟.延时约1ms/********************************************************/voiddelay<intt>{uintk;while<t-->{for<k=0;k<20;k++>{}}}/********************************************************//*步进电机正转单步执行/********************************************************/voidmotor_single<>{uchari;for<i=0;i<8;i++>//一个周期转45度{P1=FFW[i];//取数据delay<num>;//调节转速}}/********************************************************//*步进电机正转/********************************************************/voidmotor_ffw<>{uchari;for<i=0;i<8;i++>//一个周期转45度{P1=FFW[i];//取数据 if<K5==0> {break;}//退出此循环程序delay<num>;//调节转速}}/********************************************************//*步进电机反转/********************************************************/voidmotor_rev<>{uchari;for<i=0;i<8;i++>//一个周期转45度{P1=REV[i];//取数据 if<K5==0> {break;}//退出此循环程序delay<num>;//调节转速}}/*********************************************************主程序*********************************************************/voidmain<void>{EA=1;//开放总中断EX0=1;//允许使用外中断0IT0=1;//选择负跳变来触发外中断EX1=1;//允许使用外中断1IT1=1;//选择负跳变来触发外中断while<1>{ if<K1==0> { for<;;>{ motor_ffw<>;//电机正转 if<K5==0> {break;}//退出此循环程序 }} elseif<K2==0>{ for<;;>{ motor_rev<>;//电机反转 if<K5==0> {break;}//退出此循环程序 }} elseif<K6==0> { motor_single<>;

温馨提示

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

评论

0/150

提交评论