步进电机控制及其汇编程序

  • 格式:doc
  • 大小:221.50 KB
  • 文档页数:5

下载文档原格式

  / 5
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

综合实践报告之第二次大作业

题目:步进电机控制设计

说明:在工业电气自动化工程中,步进电机是一种常用的控制设备,它以脉冲信号控制电机的转速,在数控机床、仪器仪表、计算机外围设备以及其它自动设备中有广泛的应用。

步进电机是指一步步走的电动机,所谓“步”指转动角度,每步都会使电机转过一个固定的角度。步进电机有不同的种类,但其控制方法均相同,均以脉冲信号进行驱动,很适合使用单片机来进行控制。 本次大作业要求设计一个步进电机的控制部分。

已知:

采用2相制5线步进电机,其结构如下图所示,线圈中心抽头X1与X2连接在一起;

B 相X1A 相

2相步进电机

步进电机采用1相激磁法,即在每一个瞬间只有一个线圈导通,其它线圈休息; 单片机与步进电机之间可采用ULN2003类的驱动IC ;

要求:

查找资料,设计出步进电机的硬件连接电路图; 给出控制软件流程图;

用汇编语言写出控制软件的代码。

提示:本作业对电机的转动方向不做要求,在实际应用中,改变线圈激磁的顺序可以改变步进电机的转动方向,每送一次激磁信号后应经过一小段时间延时,让步进电机有足够的时间建立激励磁场及转动。可以使用单片机的~端口输出控制信号,经驱动IC 传至步进电机。

电路图设计说明

此控制电路选用AT89S51型单片机作为驱动时序的输出控制器,其输出作为两相四线步进电机的时序信号,经过驱动芯片ULN2003放大后输入到两相四线步进电机的输入端口;单片机作为控制指令的输入按键K1-K3的输入端口,K1为电机正转按键,K2为电机正转按键,K3为电机停止按键,这三个按键均为高电平输入有效,按一下K1电机正转,按一下K2电机反转转,按一下K3电机停止。其硬件电路如图一:

控制程序流程图

由于ULN2003是非们输出电路所以端口输出低电平才是有效驱动电平,其控制程序流程图如图二:

控制程序

K1 BIT

K2 BIT

K3 BIT

K_OLD EQU 30H

K_NEW EQU 31H

;---------------------------------------------------------

ORG 0000H

JMP MAIN

ORG 0030H

;---------------------------------------------------------

MAIN:

MOV SP,#60H

MOV P1,#00H

MOV P0,#0FFH

MOV K_OLD,#04H

MAIN1:

MOV R2,#4 ;给R2赋值4循环移位次数

CALL K_SCAN ;键扫描

MOV A,K_NEW

CJNE A,#00H,MAIN2 ;是否有按键按下

MOV A, K_OLD ;

JMP MAIN4

MAIN2:

CALL DELAY ;延时示去抖动

CALL K_SCAN ;再次判断键是否按下

MOV A,K_NEW

CJNE A,#00H,MAIN3 ; 再次判断键是否按下

MOV A, K_OLD

JMP MAIN4

MAIN3:

MOV K_OLD ,A

MAIN4:

JB ,LOOP1 ;K1按下既输入为001电机正转指令JB ,LOOP2 ;K2按下既输入为010电机反转指令

JB ,LOOP3 ;K3按下既输入为110电机停止指令

JMP MAIN1

;电机正转控制时序

LOOP1:

MOV A,#0FEH

LOPP1A:

MOV P0,A

CALL DELAY ;延时

RLC A ;左移1位

DJNZ R2,LOPP1A

JMP MAIN1

;电机反转控制时序

LOOP2:

MOV A,#0F7H

LOPP2A:

MOV P0,A

CALL DELAY ;延时

RRC A ;右移1位

DJNZ R2,LOOP1A

JMP MAIN1

;电机停止控制时序

LOOP3:

MOV A,#0FFH

MOV P0,A ;输出1111电机停止

JMP MAIN1

;---------------------------------------------------------

;K_SCAN:

; MOV K_NEW,#00H

; MOV A,P1 ;将P1端口的输入状态读入

; ANL A,#07H ;保留P1端口状态的低三位

; MOV K_NEW,A ;将K1,K2,K3的输入状态存入K_NEW, ; RET

;---------------------------------------------------------

;---------------------------------------------------------

;延时子程序

DELAY:

MOV R6,#200

DEL:

MOV R7,#0FFH

DJNZ R7,$

DJNZ R6,DEL

RET

;---------------------------------------------------------