基于89c51的步进电机设计

上传人:wt****50 文档编号:37806344 上传时间:2018-04-22 格式:DOC 页数:7 大小:153.50KB
返回 下载 相关 举报
基于89c51的步进电机设计_第1页
第1页 / 共7页
基于89c51的步进电机设计_第2页
第2页 / 共7页
基于89c51的步进电机设计_第3页
第3页 / 共7页
基于89c51的步进电机设计_第4页
第4页 / 共7页
基于89c51的步进电机设计_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《基于89c51的步进电机设计》由会员分享,可在线阅读,更多相关《基于89c51的步进电机设计(7页珍藏版)》请在金锄头文库上搜索。

1、 基于 89C51 的步进电机设计一、设计背景步进电机又称为脉冲电动机或阶跃电动机,它是基于最基本的电磁感应作 用,将电脉冲信号转变为角位移或线位移的开环控制元件。单片机广泛地应用 于工业自动控制、数控机床、组合机床、机器人、计算机外围设备、照相机, 大型望远镜、卫星天线定位系统等等。随着经济的发展,技术的进步和电子技术的发展,步进电机的应用领域更 加广阔,同时也对步进电机的运行性能提出了更高的要求。 步进电机的原始模型起源于1830年至1860年,1870年前后开始以控制为目的的 尝试,应用于氩弧灯的电极输送机构中,这被认为最早的步进电机。1950年后期晶体管的发明也逐渐应用在步进电机上,对

2、于数字化的控制 变得更为容易。到20世纪60年代后期,在步进电机本体方面随着永磁材料的发 展,各种实用性步进电机应运而生。步进电机往后经过不断改良,使得今日步 进电机已广泛运用在需要高定位精度、高分解能、高响应性、信赖性等灵活控 制性高的机械系统中。在生产过程中要求自动化、省人力、效率高的机器中,我们很容易发现步 进电机的踪迹,尤其以重视速度、位置控制、需要精确操作各项指令动作的灵 活控制性场合步进电机用得最多。二、设计方案设计一个 51 单片机四相步进电机控制系统要求系统具有如下功能:(1)由 I/O 口产生的时序方波作为电机控制信号;(2)信号经过驱动芯片驱动电机的运转;(3)电机的状态通

3、过键盘控制,包括正转,反转,加速,减速,停止和单步运行。三、设计原理步进电机实际上是一个数字角度转换器,也是一个串行的数模转换器。步进电机的基本控制包括启停控制、转向控制、速度控制、换向控制 4 个方面。从结构上看,步进电机分为双相、三相、四相、五相等类型,本次设计的是四相电机。四相步进电机的工作方式有单四拍、双四拍和单双八拍三种。在本次设计中,我们使用的是双相四拍的工作方式。通过 P1 口给 A,B,C,D 四相依次输出高电平即可实现步进电机的旋转,通过控制两次输出的间隔,即可实现对步进电机的速度控制。四、硬件设计根据设计要求和设计原理,我们可以绘制出基本的功能方框图,以便之后我们连接实际电

4、路时的方便和可靠。用键盘控制具体的功能模块,这样更能直观方便的控制整体的系统,使其达到我们预期的操作效果。图 3.1 中简单描述了整个单片机系统的控制模式和控制流程,包括通过时钟电路和键盘电路,来控制 UNL2803 驱动电机动作。80C51单片机UNL2803步进电机时钟电路键盘电路控制端口驱动电机图 3.1 硬件电路功能方框图五、 软件设计软件设计中,我们查询键盘按钮控制方式来选择步进电机运行的工作状态。在程序里面对按钮分配的 I/O 地址分别为正转启动位是 P3.0,反转启动为是P3.1,停止位是 P3.4,加速位是 P3.2,减速位是 P3.3,单步执行位是 P3.5。通过外部中断 I

5、NT0 和 INT1 来实现加速减速的外部输入。开始延时准备下一拍脉 冲延时值减少是否提速是否达到最高速结束是否设置初始延 迟值输出一拍脉冲是是图 4.1 主程序流程图程序里面加上了防止正常运行过程中电机的突然转向的阻断。防止电机的意外损坏。在转向之前,必须按下停止按钮,然后再发出电机的下一条控制命令。当然,我们的加速减速通过外中断可以在电机正常运行过程中进行操作。增加了我们系统的可操作性和高可控性。总 结在本次课程设计中,首次接触到单片机的应用,接到题目时,对步进电机一无所知,并对如何使用单片机也不甚了解,仅仅知道一些生硬的指令和符号,并不知道它们到底如何使用以及其意义,通过老师指导,然后自

6、己在课后翻阅书籍和上网,搜集到了不少有关步进电动机的知识。通过钻研这些知识,总算对步进电机有了认识,但是这离课程设计需要掌握的知识相差甚远,为了缩短这种差距,只能不断地查阅资料,仔细揣摩。在这次课程设计中,通过用单片机控制步进电机的起动、停止,正、反转,加、减速,也对单片机的知识也进行了复习和巩固。设计仿真电路的过程中,必须要有耐心,在整个电路的设计过程中,花费时间最多的是各个单元电路的连接及电路的细节设计上,如在多种方案的选择中,仔细比较分析其原理以及可行的原因。这就要求对硬件系统中各组件部分有充分透彻的理解和研究,并能对之灵活应用。同时在本次设计过程中,还学会了高效率的查阅资料、运用工具书

7、、利用网络查找资料。发现,在所使用的书籍上有一些知识在实际应用中其实并不是十分理想,各种参数都需要自己去调整,这就要求应更加注重实践环节。 那时候觉得学习单片机是那么的枯燥乏味,整天只是学习这个指令做什么,那个指令做什么,觉得学了一点用都没有。现在知道,原来一些生硬的指令组合起来竟然可以实现如此多的实用功能。俗话说的好,实践是检验真理的唯一标准,学习再多的理论也只能纸上谈兵,只有把理论应用到实践中,才能检验出理论的真伪。所以,虽然一周的时间不长,时间过得也很快,但是在这一周过去后,明白了学习与实践相结合的重要性,指引我在以后的学习中应该把理论和实践联系起来。附录一:步进电机程序仿真图附录二:步

8、进电机程序 #include unsigned char code ZZ4=0xFC,0xF6,0xF3,0xF9; /正转 unsigned char code FZ4=0xFC,0xF9,0xF3,0xF6; /反转sbit K1 = P30; /电机正转设置键 sbit K2 = P31; /电机反转设置键 sbit K3 = P32; /电机减速设置键 sbit K4 = P33; /电机加速设置键 sbit K5 = P34; /电机停止设置键 sbit K6 = P35; /正向单步运转设置键 char g,c; int num=400;void delay(int t) /定义延

9、时函数 unsigned int k=0;for(; t0; t-)for(k=0;k25;k+); void motor_zz()/定义电机正转函数 unsigned char i;g=0x10; for (i=0; i4; i+) P1 = g|ZZi;if(K5=0)break; delay(num); void motor_fz() /定义电机反转函数 unsigned char i; g=0x10; /设置指示灯端口电平for (i=0; i4; i+) P1 =g|FZi;if(K5=0)break; delay(num); void motor_single() /定义单步运转函

10、数 unsigned char i; g=0x10; /设置指示灯端口电平for (i=0; i4; i+) P1 = g|ZZi; /电机运转,指示灯亮delay(num); void main(void) /主函数 EA=1; EX0=1; IT0=1; EX1=1; IT1=1; while(1)if(K1=0) /正转键按下 P2=0xfe;motor_zz(); /电机正转if(K5=0|K2=0|K6=0) / 停止正转 num=400; /速度复位break;P2=0xff;else if(K2=0) /反转键按下 P2=0xfd; motor_fz(); /电机反转if(K5=0|K1=0|K6=0) num=400;/速度复位break; P2=0xff; else if(K6=0) /单步键按下 P2=0xfb;motor_single(); /单步运转P2=0xff; else c=0x40;P1 = c|0x00; P2=0xff; void int0() interrupt 0 /减速中断函数 if(K3=0) num=num+200; void int1() interrupt 2 /加速中断函数if(K4=0) num=num-200; /加速设置

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

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号