当前位置:文档之家› 基于51单片机步进电机课程设计概要

基于51单片机步进电机课程设计概要

信息与电气工程学院课程设计说明书(2012/2013学年第二学期)课程名称:单片机课程设计题目:步进电机控制实验专业班级:自动化1002班学生姓名:***学号:*******指导教师:苗敬利,王巍设计周数:2周设计成绩:13年6 月17 日目录第1章设计目的............................... 错误!未定义书签。

第2章设计任务与要求.. (3)第3章设计思路与方案 (4)3.1 控制电机正/反向转 (4)3.2 控制电机运转速度 (5)第4章硬件电路设计 (5)4.1 主控模块 (5)4.2 驱动控制模块 (6)4.3 按键控制模块 (7)4.4 显示模块 (8)第5章系统软件设计 (9)5.1 主程序 (9)5.2 子程序 (10)第6章系统仿真 (10)6.1 KEIL调试控制程序 (10)6.2 Proteus仿真 (11)第7章收获与体会 (12)附录1 总电路图 (15)附录2 源程序清单 (16)步进电机简易控制系统设计第一章设计目的步进电机是现代数字控制技术中最早出现的执行部件,步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。

在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。

可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。

需要单片机产生脉冲序列和方向控制控制信号。

步进电机的特点是可以将数字脉冲控制信号直接转换为一定数值的机械角位移.并且能够自动产生定位转矩使转轴锁定。

对控制系统的研制中最基本的要求就是性能可靠和结构简单。

利用AT89S52单片机来设计和开发步进电机的控制系统,可以很好地满足这一要求。

驱动程序写入AT89S52单片机中,通过程序控制步进电机的转速与转向。

实现软件与硬件相结合的控制方法,使步进电机运行稳定、可靠性高,达到对步进电机的最佳控制。

第2章设计任务与要求(1)能用按键控制步进电机的正反装运行。

(2)能在一定范围内控制电机的加速和减速。

(3)在不断电的情况下能通过一个按钮能随时控制电机的停止。

(4)能显示电机当前的运行情况。

第3章设计思路与方案对步进电动机的控制,接口采用软件方法控制步进电动机的旋转。

步进电动机的驱动电路由ULN2003A芯片实现,并通过90C52芯片的P1.0~P1.6端口引脚出发,然后通过ULN2003A芯片再驱动电动机。

操作部分共分为五个操作按钮:正转、反转、暂停、加速、减速。

其中正反转通过接入步进电机绕组的不同相序来实现。

加速、减速是通过延时时间的改变调整输入电机绕组的频率实现。

停止按钮则保证随时可以在不断电源情况下暂停。

五个操作按键分别通过90C52芯片的P3.0~P3.4口读取正/反转控制信号(K1、K2)、启/停(K0)以及加速/减速控制(K3、K4)的值。

对步进电机简易控制系统的设计,其具体情况可以根据任务要求从以下几个方面来考虑:3.1 控制电机正/反向转步进电动机某一项绕组通电时,在其内部形成N-S极,产生磁场,在磁场的作用下,转子将会转动,步进一步。

若步进电动机按顺序给绕组通电,步进电动机将沿顺时针方向转动。

若步进电动机按逆序给绕组通电,则步进电动机将沿逆时针方向转动。

因而只要控制脉冲输出的顺序,就可实现对步进电动机正/反转的控制。

3.2 控制电机运转速度步进电动机运转的速度是由输入到电机绕组的频率所决定的。

频率越高,电动机运转的速度越快,否则,速度就越慢。

因而通过延时程序控制输出脉冲的频率,就可以实现对步进电动机转速的控制。

第4章硬件电路设计步进电机简易控制系统设计包含了主控模块、按键控制模块、驱动控制模块、显示模块四个模块。

其功能实现是首先利用按键模块输入所要执行的任务,然后通过主控模块调用所对应的程序并把信息送给步进电机,使电机按照所按下的按钮命令来运转,同时在显示屏上显示当下的运行状态。

从而实现步进电机简易控制系统设计的功能。

其硬件总电路图如附录一所示。

4.1 主控模块主控模块采用的是89C52单片机芯片来控制。

89C52是一个8位单片机,片内ROM 全部采用FLASH ROM技术,晶振时钟为12MHz。

89C52是标准的40引脚双列直插式集成电路芯片,有4个八位的并行双向I/O端口,分别记作P0、P1、P2、P3。

第31引脚需要接高电位使单片机选用内部程序存储器;P3口的引脚10到引脚14分别接正转按钮、反转按钮、暂停按钮、加速按钮、减速按钮;引脚1到引脚7分别接芯片LN2003A的1、2、3、4引脚。

芯片接线简图如图1所示。

图1 90C52芯片图4.2 驱动控制模块驱动电路主要是利用PNP、NPN、二极管等组成的电路,电路图如下图2所示,电路中的PC0、PC1、PC2、PC3分别接单片机AT89C52的P1.0、P1.1、P1.2、P1.3;电路接5V高电平,目的是驱动电机,使电机正常工作。

图2 驱动电路图4.3 按键控制模块按键模块有五个按钮,正转按钮、反转按钮、加速按钮、减速按钮和暂停按钮,它们分别控制电机的正向转动、反向转动、加速、减速和随时暂停。

如下图2所示:K1正向转动按钮一端接单片机AT89C52的P3.0(引脚10),K2反向转动按钮一端接单片机AT89C52的P3.1(引脚11),K3暂停按钮接一端单片机AT89C52的P3.2(引脚12),K4是加速按钮一端接单片机AT89C52的P3.3(引脚13),K4是减速按钮一端接单片机AT89C52的P3.4(引脚14),同时都接地。

当按下其中任意一个键时,其状态的变换都会通过相应的端口输入单片机,从而完成控制的输入。

图3 按键控制模块图4.4 显示模块使电机正常工作。

P2.0口控制位显示,P0.0~P0.6控制段显示。

同时都通过一个上拉电阻接高电平,上拉电阻起到限流作用。

图4 显示模块第5章系统软件设计5.1 主程序主程序的源程序见附录二源程序清单表,正转子程序及主程序设计流程图如下图4 图5所示:图5图65.2 子程序子程序有正\反转子程序、正转加\减速子程序、反转加\减速子程序、延时子程序和显示子程序。

它们的源程序见附录二源程序清单表。

第6章系统仿真6.1 KEIL调试控制程序调试程序具体步骤如下:(1)打开Keil编译软件。

(2)新建一个项目,在项目里进行设置,转换成HEX文件。

(3)将刚写好的汇编语言程序添加进去。

(4)点击编译生成后缀名为“. HEX”的文件。

6.2 Proteus仿真打开 Proteus 上的单片机控制步进电机电路图,点击AT89C52单片机,调用后缀名为.”HEX”的文件。

点击运行,观察现象。

当按下Proteus软件上的开始按钮时,电机不转动。

其显示如图6所示:图7 暂停转动图当按下K2按钮时,电机则正向转动,电机转动一段时间后的显示图如图8所示:图8 反向转动图当按下K1按钮时,电机开始正向转动,电机上显示的是转过的角度。

下面是当电机反向转动一段时间后的显示图如图7所示:图9 正向转动图当按下按钮K4或K5时,电机相应的做加速转动或减速转动,但加速或减速到一定范围是则不能再加速或减速了。

K3是控制电机的暂停,任意时刻按下K3按钮,电机就停止转动。

当再次按下按钮K1或K2按钮时电机又重新开始工作。

第7章收获与体会此次课程设计也许我们小组的每一位成员都收获了许多。

实验前,我们对单片机电脑仿真软件完全没有概念,而且我们收到的方案要求比较迟,所以在接收到方案时我们完全不知道自己究竟要干什么。

然后我们上网查了很多资料,并且学着用isis及Keil uVision2软件去进行仿真分析,此次课程设计使我对步进电机的控制有了更深的了解,对单片机也有了更高层次的了解。

也使我意识到许多地方的缺陷,所谓基础不牢地洞山摇。

单片机编程是用汇编语言进行编程,也就需要我们对电路的分析,然后总结,查阅相关资料才能变成好的程序,编程讲究的是多动手写,自己写,用自己的思路,不怕写错,写错再改,懂得有新的思想这样才能提高。

设计前首先要考虑好要实现的基本功能,选择和设计好相应的硬件电路及程序架构,软硬结合,同时考虑到以后想要扩展功能,因此硬件电路及程序架构应有可扩展的潜力,这就要求进行程序设计应尽可能考虑利用各种中断,使CPU资源有效利用,同时尽可能扩展IO口,实现IO口的最大利用。

如若只是利用查询方式,则光是实现步进电机的控制与发光二极管的控制,就已经是相当的勉强。

其次,要考虑到步进电机的步距角及要求的最小的脉冲周期,这就涉及到延时程序的延时时间选择,要使电机转得动,延时时间不能过小,又要转的明显,延时时间不能过大,同时,又要使加速、常速、减速的梯度比较明显,即延时时间的控制要有技巧。

最后,成员的有效分工,充分要利用各成员的优势,能使事倍功半。

通过本次实验,我们小组受益匪浅。

一方面,我们将课堂上的理论知识应用到了实际,加强巩固了理论知识,也提高了实际动手能力,通过实践反馈,了解到我们自身知识面的不足。

另一方面,在实验过程中,遇到问题时候,我们小组列出可能问题,一一进行排查,找出问题的所在,队员之间分工明确,团结合作,本次实验正是通过队员之间的合作实现的。

附录1 总电路图附录2源程序清单;程序功能:开关控制步进电机正反转;数码管显示0表示电动机正转;1表示电动机反转;2表示电动机正转加速;3表示电动机正转减速;4表示电动机反转加速;5表示电动机反转减速;键的端口定义 K1 EQU P3.0 ;正转键K2 EQU P3.1 ;反转键K3 EQU P3.2 ;停止键K4 EQU P3.3 ;加速K5 EQU P3.4 ;减速;主程序STOP: MOV P1, #0FFH ;关闭P1口LOOP: JNB K1, Z_M2 ;正转键按下转正转扫描部分 JNB K2, F_M2 ;反转键按下转反转扫描部分JNB K3, STOP1 ;停止键按下转停止部分JMP LOOP;----------------------------- ;键盘消抖STOP1: ACALL DELAYJNB K3, $ACALL DELAYJMP STOPZ_M2: ACALL DELAYJNB K1, $ACALL DELAYJMP Z_MF_M2: ACALL DELAYJNB K2, $ACALL DELAYJMP F_M;--------------------------- ;正转子程序Z_M: MOV R0,#00HZ_M1:MOV R7,#0ACALL DISPLAYMOV A, R0MOV DPTR, #TABLEMOVC A,@A+DPTRJZ Z_MMOV P1,AJNB K3, STOP1JNB K2, F_M2JNB K4, ACC_M2_ZZJNB K5, DLY_M2_ZZACALL DELAYINC R0JMP Z_M1RET;----------------------------- ;反转子程序F_M: MOV R0,#05HF_M1:MOV R7,#1ACALL DISPLAYMOV A, R0MOV DPTR, #TABLEMOVC A,@A+DPTRJZ F_MMOV P1,AJNB K3, STOP1JNB K1, Z_M2JNB K4, ACC_M2_FZJNB K5, DLY_M2_FZACALL DELAYINC R0JMP F_M1RET;-----------------------------;正转加速子程序ACC_M2_ZZ: MOV R0,#00HACC_M1: MOV A, R0MOV DPTR, #TABLEMOVC A,@A+DPTRJZ ACC_M2_ZZMOV P1,AJNB K3, STOP1JNB K5, DLY_M2_ZZJNB K2, F_M2ACALL DELAY1INC R0MOV R7,#2ACALL DISPLAYJMP ACC_M1RET;-----------------------------;正转减速子程序DLY_M2_ZZ:MOV R0,#00HACC_M2: MOV A, R0MOV DPTR, #TABLEMOVC A,@A+DPTRJZ DLY_M2_ZZMOV P1,AJNB K3, MID1JNB K2, F_M2JNB K4, ACC_M2_ZZACALL DELAY2INC R0MOV R7,#3ACALL DISPLAYJMP ACC_M2RETMID1: LJMP STOP1MID2: LJMP Z_M2;-----------------------------;反转加速子程序ACC_M2_FZ: MOV R0,#05HDLY_M1: MOV A,R0MOV DPTR, #TABLEMOVC A,@A+DPTRJZ ACC_M2_FZMOV P1,AJNB K3, MID1JNB K1, MID2JNB K5, DLY_M2_FZACALL DELAY1INC R0MOV R7,#4ACALL DISPLAYJMP DLY_M1RET;-----------------------------;反转减速子程序DLY_M2_FZ: MOV R0,#05HDLY_M2: MOV A, R0MOV DPTR, #TABLEMOVC A,@A+DPTRJZ DLY_M2_FZMOV P1,AJNB K3, MID1JNB K1, MID2JNB K5, ACC_M2_FZACALL DELAY2INC R0MOV R7,#5ACALL DISPLAYJMP DLY_M2RET;----------------------------- ;延时子程序DELAY1:MOV R1,#10JMP D1DELAY2:MOV R1,#100JMP D1DELAY: MOV R1,#40D1: MOV R2,#248DJNZ R2,$DJNZ R1,D1RETDISPLAY:PUSH ACC ;显示子程序PUSH DPHPUSH DPLMOV A,R7CHANG: MOVC A,@A+DPTRMOV P0,A CLR P2.0ACALL DELAY2SETB P2.0POP DPLPOP DPHPOP ACCRETTAB: DB 3FH,06H,5BH,4FH ;显示字符存放表DB 66H, 6DH, 7DH, 07HDB 7FH, 6FH, 77H, 7CHDB 39H, 5EH, 79H, 71H ;-----------------------------TABLE: DB 0FCH, 0F9H, 0F3H, 0F6H ;正反转编码存放表DB 00DB 0F3H, 0F9H, 0FCH, 0F6HDB 00/* DB 0F7H, 0F3H, 0FBH, 0F9HDB 00H*/;-------------------------------END。

相关主题