当前位置:文档之家› 步进电机控制系统设计

步进电机控制系统设计

课程设计任务书设计题目:微机步进电机控制系统设计设计目的:1.巩固和加深课堂所学知识;2.学习掌握一般的软硬件的设计方法和查阅、运用资料的能力;3.通过步进电机控制系统设计与制作,深入了解与掌握步进电机的运行方式、方向、速度、启/停的控制。

设计任务及要求:(在规定的时间内完成下列任务)任务:控制四相步进电机按双八拍的运行方式运行。

按下开关SW1时启动步进电机,按ESC键停止工作。

采用循环查表法,用软件来实现脉冲循环分配器的功能对步进电机绕组轮流加电。

要求对题目进行功能分析(四项功能:快速顺时针旋转,慢速顺时针旋转,快速逆时针旋转和慢速逆时针旋转),进行步进电机远程控制系统硬件电路设计,画出电路原理图、元器件布线图、实验电路图;绘制程序流程图,进行步进电机控制程序设计(采用8086汇编语言);系统调试、运行,提交一个满足上述要求的步进电机控制系统设计。

时间安排:(部分时间,某些工作可以自己安排重叠进行)具体要求:设计报告撰写格式要求(按提供的设计报告统一格式撰写),具体内容如下:①设计任务与要求②总体方案与说明③硬件原理图与说明④实验电路图与说明⑤软件主要模块流程图⑥源程序清单与注释⑦问题分析与解决方案(包括调式记录、调式报告,即在调式过程中遇到的主要问题、解决方法及改进设想);⑧小结与体会附录:①源程序(必须有简单注释)②使用说明③参考资料指导教师签名:08 年12 月01 日教研室主任(或责任教师)签名:年月日目录第1章需求分析 (1)1.1课程设计题目 (1)1.2步进电机介绍 (1)1.3课程设计任务及要求 (1)1.4软硬件运行环境及开发工具 (1)第2章概要设计 (2)2.1设计原理及实现方法 (2)2.1.1 步进电机控制原理 (2)2.1.2微机步进电机控制系统原理图 (2)2.1.3 运行方式与方向的控制——循环查表法 (3)2.1.4步进电机的启/停控制——设置开关 (4)2.2微机步进电机控制系统设计流程图 (4)第3章详细设计 (5)3.1 硬件设计与实现 (5)3.2软件设计 (5)3.2.1正向慢转子程序 (5)3.2.2正向快转子程序 (6)3.2.3反向慢转子程序 (6)3.2.4反向快转子程序 (6)3.2.5长延时子程序 (7)3.2.6短延时子程序 (7)第4章系统调试与操作说明 (7)4.1系统调试 (7)4.2 操作说明 (8)第5章课程设计总结与体会 (8)参考文献 (9)附录微机步进电机控制系统源程序 (9)第1章需求分析1.1课程设计题目微机步进电机控制系统设计1.2步进电机介绍步进电机是一种将电脉冲信号转换成相应的角位移和线位移的电磁机械装置,是一种输出与输入数字脉冲对应的增量驱动元件。

步进电机具有快速启动和停止的能力,它的步矩角和转速不受电压波动和负载变化的影响,也不受环境条件如:温度、气压、冲击和振动等影响,仅与脉冲频率有关。

它每转一周都有固定的步数,在不丢失步的情况下运行,其步矩误差不会长期累积。

正因为步进电机具有快速启动、精确步进以及能直接接收数字量的特点,所以在定位场合中得到了广泛的应用。

随着微机的发展,步进电机的使用领域将更加广阔。

1.3课程设计任务及要求任务:控制四相步进电机按双八拍的运行方式运行。

将开关K2置高电平时启动步进电机,将K2键置低电平时,停止工作。

步进电机的加电采用循环查表法,用软件来实现脉冲循环分配器的功能对步进电机绕组轮流加电。

要求:要使电机能通过控制实现四项功能:快速顺时针旋转,慢速顺时针旋转,快速逆时针旋转和慢速逆时针旋转,进行步进电机控制系统硬件电路设计,画出电路原理图、元器件布线图、实验电路图;绘制程序流程图,进行步进电机控制程序设计(采用汇编语言)。

1.4软硬件运行环境及开发工具硬件:唐都TDN86/88实验平台、PC机一台开发语言:汇编语言第2章概要设计2.1设计原理及实现方法2.1.1 步进电机控制原理步进电机是将电脉冲信号转换成角位移的一种机电式数模转换器。

其旋转的角位移与输入脉冲的个数成正比;转速与输入脉冲的频率成正比;转动方向和输入脉冲对绕组加电的顺序有关。

因此,步进电机旋转的角度位移、转速以及方向均受输入脉冲的控制。

步进电机在系统中是一种执行元件,都要带负载,因此需要功率驱动。

在电子设备中,一般所需功率较小,常采用达林复合管作功率驱动。

驱动原理如图2.1所示。

图2.1 步进电机驱动原理图2.1.2微机步进电机控制系统原理图步进电机接口的硬件部分主要是提供输送相序代码的并行数据线(8根),以及保护电机绕组的器件,所以接口电路以8255A为主芯片,将PA口作数据口,传送加电代码,再加上锁存器74LS373作绕组保护。

另外,还有功率驱动管TIP122,以及二极管、开关K0、K1、K2。

本实验采用A口作为控制口,B口作为输出口,PA0、PA1、PA2分别接开关的K0、K1、K2,PB0、PB1、PB2、PB3分别接motor unit的ABCD。

微机步进电机控制系统原理图如图2.2所示。

图2.2 微机步进电机控制系统原理图2.1.3 运行方式与方向的控制——循环查表法步进电机的运行方式是指各相绕组循环轮流通电的方式。

本次设计采用的是双八拍,即 步进电机的运行方式及方向控制采用 循环查表法。

循环查表法是将各绕组加电顺序的控制代码编制成一张步进电机相序表(如表2.1所示),存放在内存区,在设置一个地址指针。

表 2.1 步进电机相序表2.1.4步进电机的启/停控制——设置开关K0——控制步进电机旋转速度的快慢,K0=0 表示慢转,K0=1表示快转;K1——控制步进电机旋转方向,K1=0表示正转,K1=1表示反转;K2——控制步进电机的启/停,K2=0表示停,K2=1表示启动。

2.2微机步进电机控制系统设计流程图图2.3 微机步进电机控制系统设计流程图第3章详细设计3.1 硬件设计与实现本电路的设计是利用8255A的A口作为输入口,B口作为输出,C口没有用到。

PA0~~PA2分别用来控制步进电机的开启/停止、正反向、快慢转。

PB0~~PB3作为输出口,分别接步进电机的ABCD端口,输出相序表中的加电编码,从而使步进电机可以开始运转。

具体的接线如图3.1所示:图3.1 微机步进电机控制系统连线图3.2软件设计实现步进电机运行方式、方向和速度以及启/停的控制,是接口软件设计的主要任务。

为此,在编写程序之前,要建立一个相序表。

相序表的建立应根据步进电机运行方式的要求及各绕组与8255A端口连接情况来确定加电代码。

根据上图的连接情况,可以写出相序表中双八拍运行方式的加电代码为:03H,07H,06H,0EH,0CH,0DH,09H,0BH。

在8259初始化完毕后,取出相序表的首地址,将其存如BX。

当要求步行电机正转时,首地址进行加1操作。

在次过程中要检查指针是否指到末地址。

若是,指针减7,回到首地址,如此循环。

当要求反转时,将首地址进行加7操作到达末地址,在进行减1操作,在次过程找要检查指针是否到达首地址。

如是,则将指针加7回到末地址。

根据设计流程图,软件设计部分将本系统分为6个子程序,分别是正向慢转子程序、正向快转子程序、反向慢转子程序、反向快转子程序、长延时子程序、短延时子程序。

3.2.1正向慢转子程序ZM:MOV AL,[BX]CMP AL,0BH ; 检查是不是最后一个加电代码JNZ XH1SUB BX,8XH1:INC BX ; 指针作加1运算,及实现向后移动MOV AL,[BX]OUT 61H,AL ;从B口输出CALL DELAY1 ;调用长延时JMP A13.2.2正向快转子程序ZK:MOV AL,[BX]CMP AL,0BHJNZ XH2SUB BX,8XH2: INC BXMOV AL,[BX]OUT 61H,ALCALL DELAY2 ;调用短延时JMP A13.2.3反向慢转子程序FM:MOV AL,[BX]CMP AL,03H ;检查是不是第一个加电码JNZ FXH1ADD BX,8 ;若是第一个加电码,则指针加8跳到最后一个加电码FXH1:DEC BX ;指针减1,实现向前移动MOV AL,[BX]OUT 61H,ALCALL DELAY1 ;调用长延时子程序JMP A13.2.4反向快转子程序FM:MOV AL,[BX]CMP AL,03H ;检查是不是第一个加电码JNZ FXH1ADD BX,8 ;若是第一个加电码,则指针加8跳到最后一个加电码FXH1:DEC BX ;指针减1,实现向前移动MOV AL,[BX]OUT 61H,ALCALL DELAY2 ;调用短延时子程序JMP A13.2.5长延时子程序DELAY1:PUSH CXMOV CX,0E300H ;通过修改CX的值来提高旋转的速度ADD1: PUSH AXPOP AXLOOP ADD1POP CXRET3.2.6短延时子程序DELAY2:PUSH CXMOV CX,06300H ; CX的值就为循环的次数,通过循环来达到延时ADD2: PUSH AXPOP AXLOOP ADD2POP CXRET第4章系统调试与操作说明4.1系统调试在刚开始,从网上找了一个程序,运行之后,步进电机能够按照需求运转,但是后来同学提醒实现单步运行,这个时候就出现了问题,当要步进点击停止时,moto union 的指示灯总是停在相同的位置,而且单步运行时的灯的顺序并不是按照相序表来变化的,仅仅电机能转而已,所以最后舍弃了这个程序,开始自己写。

首先就是要让步进电机转起来,转起来的前提就是要读去相序表,在这个过程中,我一直采用的是单步运行方式,在单步运行时,能够顺利的读取相序表,但是当我运行时,就出现了问题,因为当读到最后一个时,不能返回来,每次只能顺序读一次。

最后和同学讨论,得到了解决方法,在正转时,每次都判断是不是到了最后一个加电码,如果是,则指针减8(因为正转时,每次指针都要加1),这样就又回到了首地址了。

在整个程序中,延时程序调试的次数最多了,刚开始,用的数值不是很大,这样电机转的速度很快,导致指示灯一直亮着,而且快、慢转几乎很难分清。

最后经过不断的试验,将数据调到了一个比较合理的值,即转的不是很快,灯能正常显示,又能很好的区分快慢转了。

4.2 操作说明首先打开唐都TDN86/88实验平台,按照微机步进电机控制系统连线图(图3.2)连接电路图。

然后在PC机上运行WMD86 4.0,将源代码导入,编译,运行。

各个开关控制步行电机的状态如表4.1所示。

第5章课程设计总结与体会这课程设计,花了差不多7天的时间,在这些天时间里不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

相关主题