单片机课程设计步进电机报告

课 程 设 计 (报 告)

课 程 设 计 题 目:                 步进电机控制器               

指   导   教  师:                                                        

日 期: 2011.12.262012.01.06



一、 设计任务书


步进电机控制器


(一)设计内容:用 80C51 单片机设计一个步进电机控制器

(二)设计要求:

(1) 用 80C51 控制一个四相步进电机

(2)  可控制步进电机的启动与停止、正转与反转

(3) 10 档速度调节

(4) 点动控制

(5) 可显示电机运行参数

二、 设计总体方案

(一) 控制方式

控制主要有:电机的开关;电机转向装换;点动开关;电机转速级别加减按钮; 正反向点动按钮。控制方式有按键控制和开关控制两种。前三项选择开关控制,后两 项选择按键控制。

由于设计只需要 3 个开关 4 个按键,不需要采用复杂编码,考虑硬件条件、线路 连接和经济性等方面,选择独立按键的方式。

(二)步进电机控制设计方案由于课程设计所用的实验箱上有步进电机单元而且,电机与驱动芯片   ULM2003A

已近连接好,所以只需将 AT89C51 的 I/O 口与实验箱 ULM2003A 芯片上预留的 4 个

接口对应相连。

(三) 单片机的选择

AT89C51 高性能 8 位单片机,内部集成 CPU、存储器、寄存器、I/O 接口,从而 构成较为完整的计算机,价格便宜。本次课程设计是在仿真环境下进行,我们课程设 计实验室所使用的仿真器就是用 AT89C51,没有太过考虑单片机选择的问题,但就设 计本身来讲,从物美价廉的角度考虑。

(四) 显示方案的选择

方案一:采用 LED 数码管。LED 数码管是显示采用动态扫描的方式,利用人烟 的视觉暂留特性,由于扫描周期很短,使人感觉不到数码管闪动,看到每只数码管都 常亮。

方案二:采用 LCD1602 液晶显示器。LCD1602 具有功率小,效果明显,程序设 计简单,且它最多能显示 2×16 个字符,可以轻松满足设计要求。

虽然方案一稍微麻烦一点,但是课程设计之前我们有两次实验都是围绕动态显示

来进行的,所以本次课程设计依然选择我熟悉的 LED 显示。

(五)程序编写语言的选择软件部分的选择主要是指编程语言的选择,编译调试工具根据设计平台选择伟福


软件。编程语言主要有以下两种方案。

方案一:采用 C 语言编程。C 语言是一种结构化的高级语言,编程灵活,可移植 性强, 但占用资源多,执行效率低。

方案二:采用汇编语言进行编程,。汇编语言是一种用文字助记符来表示机器指 令的符号语言,是最接近机器码的一种语言,占用资源少,程序执行效率高,但不易 移植。

本学期我们所学的单片机课程全是用汇编语言来讲述的,所以本次实验采用汇编 语言来进行程序编写。

三、 硬件设计

(一)总体设计方框图总体设计方框图如图 1 所示


状态显示电路


复位电路



89C51

单片机


键盘控制电路



电源及时钟电路


ULN280

3 启动 电路


步进电 机


1 总体设计方框图

(二)步进电机的控制介绍

1)步进电机的换相顺序的控制 通电换相这一过程称为脉冲分配。例如,三相步进电机在单三拍的工作方式下,

其各相通电顺序为 A→B→C→A,通电控制脉冲必须严格按照这一顺序分别控制 A, B, C 相的通断。三相双三拍的通电顺序为 AB→BC→CA→AB,三相六拍的通电顺序为 A→ AB→B→BC→C→CA→A 。

2)步进电机的转向控制 如果给定工作方式正序换相通电,步进电机正转。若步进电机的励磁方式为三

相六拍,即 A→AB→B→BC→C→CA→A。如果按反序通电换相,即 A→AC→C→CB→B

→BA→A,则电机就反转。其他方式情况类似。

3)步进电机的速度控制 如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。

两个脉冲的间隔越短,步进电机就转得越快。调整送给步进电机的脉冲频率,就可以 对步进电机进行调试。


4)步进电机的起停控制 步进电机由于其电气特性,运转时会有步进感。为了使电机转动平滑,减小振

动,可在步进电机控制脉冲的上升沿和下降沿采用细分的梯形波,可以减小步进电机 的步进角,跳过电机运行的平稳性。在步进电机停转时,为了防止因惯性而使电机轴 产生顺滑,则需采用合适的锁定波形,产生锁定磁力矩,锁定步进电机的转轴,使步 进电机转轴不能自由转动。

5)步进电机的加减速控制 在步进电机控制系统中,通过实验发现,如果信号变化太快,步进电机由于惯

性跟不上电信号的变化,这时就会产生堵转和失步现象。所有步进电机在启动时,必 须有加速过程,在停止时波形有减速过程。理想的加速曲线一般为指数曲线,步进电 机整个降速过程频率变化规律是整个加速过程频率变化规律的逆过程。选定的曲线比 较符合步进电机升降过程的运行规律,能充分利用步进电机的有效转矩,快速响应性 好,缩短了升降速的时间,并可防止失步和过冲现象。在一个实际的控制系统中,要 根据负载的情况来选择步进电机。步进电机能响应而不失步的最高步进频率称为“启 动频率”,于此类似“停止频率”是指系统控制信号突然关断,步进电机不冲过目标 位置的最高步进频率。电机的启动频率、停止频率和输出转矩都要和负载的转动惯量 相适应,有了这些数据,才能有效地对电机进行加减速控制。加速过程有突然施加的 脉冲启动频率 f0。步进电机的最高启动频率(突跳频率)一般为 0. 1KHz 到 3~4KHz,而 最高运行频率则可以达到 N* 102KHz,以超过最高启动频率的频率直接启动,会产生堵 转和失步的现象。

6)步进电机的静态指标及术语

相数:产生不同队 N、S 磁场的激磁线圈对数,常用 m 表示。 拍数:完成一个磁场周期性变化所需脉冲用 n 表示,或指电机转过一个齿距角所需

脉冲数,以四相电机为例,有四相四拍运行方式即 AB→BC→CD→DA→AB,四相八拍运 行方式即  A→AB→B→BC→C→CD→D→DA→A。

步距角:对应一个脉冲信号,电机转子转过的角位移用θ 表示。θ =360 度(转子齿 角运行拍数),以常规二、四相,转子齿角为 50 齿角电机为例。四相运行时步距角为

θ =360 度/(50*4) =1.8 度,八拍运行时步距角为θ =360 度/(50*8)=0.9 度。

定位转矩:电机在不通电的状态下,电机转子自身的锁定力矩(由磁场齿形的谐波 以及机械误差造成的)。

静转矩:电机在额定静态作业下,电机不做旋转运动时,电机转轴的锁定力矩。此

力矩是衡量电机体积的标准,与驱动电压及驱动电源等无关。虽然静态转矩与电磁激 磁匝数成正比,与定子和转子间的气隙有关。但过分采用减小气隙,增加励磁匝数来 提高静转矩是不可取的,这样会造成电机的发热及机械噪音。

(三)单片机 AT89C51 使用介绍

本次设计采用伟福仿真器模仿 AT89C51 环境。由上面介绍可知,AT89C51 为一款 典型的 80C51 单片机,具有 8 位数据总线、16 位地址总线、128 字节片内 RAM 和 4K 的片内 ROM 以及 4 个并行 I/O 口等单元。其连接电路如图 2 所示。

晶振选择为 11.0592MHz,以产生精确的时钟频率。本次课程设计中 P0 作为 LED 的输出口,P1.0-P1.3 口作为电机控制口,P2.2-2.7 口用于 6 只 LCD 的选通控制,P3 口 用于按键可开关控制。


D

单片


                         X1          

          2 2 p F

      

         


U1

P 1 0       1 P 1 1                     P 1 2                  P 1 3                  P 1 4                  P 1 5                  P 1 6                  P 1 7            

P 3 3    P 3 2                     


V C C

S1 6             C? 

F

                

          2 2 p F


1 1 .0 5 9 2

X2


P 3 5                                                                                                                                                   E T

P 3 4    

V C C

                                                                                                                                        R?


C


R ES E


       10  P 3 1                                 


RD      WR     


       11  P 3 2                                

       30  A LE   

    29   


2   AT89C51 接线图

(四)动态 LED 控制电路

本次课程设计采用单片机实验箱上给出的 LED 显示区显示步进电机的运行参数,实验 箱动态 LED 显示区原理图如图 3。AT89C51 的 P0.0-P0.7 口分别与 a,b,c,d,e,f,g,dp 相连, P2.2-P2.7 分别与 COM1-COM6 相连实验箱上连接图如图 4。

B

R1 0

COM1

a       7

b       6

c       4

d       2

e       1

f        9

g     10

dp    5

A

3   实验箱上动态LED显示区原理图

1                                                                                                                           2                                                                                                                           3


4   AT89C51 LED连接图

(五)其他硬件

通过 P1 口控制电机具体连接线路如图 5:

5   电机与P1口连接图

控制电路连接图如图 6:


6 控制电路连接图

(六)总体电路图

实验箱上达连接图如图 7:

7   总体电路图

四、   软件设计

通过分析可以看出,实现系统功能可以采用多种方法,由于随时有可 能输入加速、加速信号和方向信号,因而采用中断方式效率最高,这样总共要 完成4个部分的工作才能满足课题要求,即主程序部分、定时器中断部分、外 部中断0和外部中断1部分,其中主程序的主要功能是系统初始参数的设置及启 动开关的检测,若启动开关合上则系统开始工作,反之系统停止工作;定时器 部分控制脉冲频率,它决定了步进电机转速的快慢;两个外部中断程序要做的


工作都是为了完成改变速度这一功能。下面分析主程序与定时器中断程序及外 部中断程序。

(一)主程序设计

主程序中要完成的工作主要有系统初始值的设置、系统状态的显示以及各 种开关状态的检测判断等。其中系统初始状态的设置内容较多,该系统中, 需要初始化定时器、外部中断;对 P1 口送初值以决定脉冲分配方式,速度值 存储区送初值决定步进电机的启动速度,对方向值存储区送初值决定步进电 机旋转方向等内容。若初始化 P1=11H、速度和方向初始值均设为 0,就意味 着步进电机按四相单四拍运行,系统上电后在没有操作的情况下,步进电机 不旋转,方向值显示“0”,速度值显示“0”,主程序流程图如图 8 所示。

开 始

初 始 化

显示

启动开关为 0?

停止计时器

速度值为 0?

停止计时器

启动计时器

延时

8主程序流程图

(二)定时中断设计


步进电机的转动主要是给电机各绕组按一定的时间间隔连续不断地按规律通入 电流,步进电机才会旋转,时间间隔越短,速度就越快。在这个系统中,这个时间间 隔是用定时器重复中断一定次数产生的,即调节时间间隔就是调节定时器 的中断次 数,因而在定时器中断程序中,要做的工作主要是判断电机的运行方向、发下一个脉 冲,以及保存当前的各种状态。程序流程图如图9所示。

T0 中断入口

保护现场

中断次数-1=0?

读方向指示

发速度脉冲

重送相关状态

恢复形场

中断返回

9 定时中断程序流程

(三)外部中断设计

外部中断所要完成的工作是根据按键次数,改变速度值存储区中的数据

(该数据为定时器的中断次数),这样就改变了步进电机的输出脉冲频率,也 就是改变了电机的转速。速度增加按钮S2为INT0中断,其程序流程为原数据, 当值等于7时,不改变原数值返回,小于7时,数据加1后返回;速度减少按钮 S3,当原数据不为0,减1保存数据,原数据为0则保持不变。程序流程图如图 10所示。


外部中断入口

保护现场

延时去抖

速度=上或限值?

速度值±1

按钮是否弹起?

恢复现场

中断返回

10外部中断程序流程图

(四)程序员代码及注释

;/*****程序开始,初始化*****/

START:      SPEED     EQU      40H ;SPEED 为转速等级标志,共 10 级,即 1~10 COUNT   EQU      41H ;COUNT 中断次数标志

FX            EQU     11H ;FX 为方向标志 STAOST                           EQU     P3.4 ;启动/停止位 FAXIA     EQU     P3.5 ;方向个改变位

QIEHUAN    EQU     P3.6 ;用于点动和自动的切换


ZUOD EQU P3.0 YOUD  EQU  P3.1 MOV         SPEED,#00H

MOV         20H,#0AAH   ;用于转速等级显示存储器

MOV         21H,#0AH   ;用于方向标志位显示存储器 MOV  22H,#0AH         ;用于旋转速度显示存储器 MOV            23H,#0AH

MOV         24H,#0AH

MOV         R1,#33H

MOV         R2,#11H

MOV         FX,#00H

MOV         TMOD,#01H ;工作于定时、软件置位启动!模式 1(16 位计时器)

MOV         TH0,#0F8H

MOV         TL0,#0F0H

MOV         COUNT,#01H

SETB       ET0            ;定时/计数器允许中断

SETB       IT0            ;外部中断为电平触发方式,低电平有效 SETB IT1

SETB       EX0            ;外部允许中断

SETB       EX1

MOV         SP,#60H     ;重设堆栈指针

;/*****主程序*****/

MAIN1:    LCALL    DISPLAY MAIN2:      JB                STAOST,DG

CLR         TR0      ;停止定时

LJMP       START

DG:         JB           QIEHUAN,FUCK CLR           EA

LCALL   DIANDONG;可能还要延时

LCALL   DISPLAY2 LJMP         MAIN2

FUCK:    SETB     EA     ;开总中断

LCALL    QIDONG LJMP            MAIN1

;/*****显示子程序 1*****/

DISPLAY:

MOV         A,20H

ANL         A,#0FH

MOV         2FH,A ;转换等级低位,存入 2FH MOV         A,20H

ANL         A,#0F0H

SWAP          A

MOV         2EH,A ;转换等级高位,存入 2EH MOV        A,21H

ANL         A,#0FH


MOV         2DH,A

;MOV       A,22H

;ANL       A,#0FH

;MOV       2CH,A   ;转换速度低位,存入 2CH

;MOV       A,20H

;ANL       A,#0F0H

;SWAP     A

;MOV       2BH,A ;转换速度高位,存入 2BH

;/*****数码管动态扫描显示*****/


;/*****显示子程序 2*****/

DISPLAY2:MOV       A,#0A1H

MOV         P0,A

CLR         P2.7 LCALL              DELAY1 SETB       P2.7

MOV         A,#092H

MOV         P0,A

CLR         P2.6 LCALL              DELAY1 SETB       P2.6

MOV         A,#0BFH

MOV         P0,A

CLR         P2.5 LCALL              DELAY1 SETB       P2.5

MOV         A,#0F9H

MOV         P0,A

CLR         P2.4 LCALL              DELAY1 SETB       P2.4

MOV         A,#080H

MOV         P0,A

CLR         P2.3 LCALL              DELAY1 SETB       P2.3

MOV         A,#0C6H

MOV         P0,A

CLR         P2.2 LCALL              DELAY1 SETB       P2.2

RET

;/*****延时子程序 1*****/ DELAY1: MOV                                R5,#0F0H

DJNZ       R5,$ RET

;/*****启动/停止电机服务子程序*****/


QIDONG:


;/*****定时器中断服务程序*****/ DTQ0:       PUSH   ACC

PUSH       DPH

PUSH       DPL

MOV         TH0,#0F8H

MOV         TL0,#0F0H DJNZ     COUNT,EXIT MOV         A,SPEED

CJNE       A,#00H,AS

LJMP       EXIT

AS:         JB           FAXIA,NIZHUAN;查询方向标志,P3.5    接换向开关 K2 MOV            FX,#33H

NIZHUAN:

MOV         A,FX

CJNE       A,#33H,FZ;若 A 不等于 33,即反转,跳到 FZ MOV               A,R1               ;R1 记录上一次电机脉冲状态 MOV               P1,A

RL           A ;循环右一位

MOV         R1,A

MOV         P1,A

LJMP       RE

FZ:         MOV         A,R1

MOV         P1,A

RR           A   ;循环左移一位

MOV         P1,A

MOV         R1,A

RE:         MOV         A,SPEED

MOV         DPTR,#TAB MOVC  A,@A+DPTR

MOV         COUNT,A ;把转速级别赋给 COUNT

JB          FAXIA ,FFX ;P3.5 接换向开关 K2, 即换向位,若 P3.5=1,则跳到 FFX MOV                     FX,#33H

LJMP       EXIT

FFX:       MOV         FX,#0FEH;只要 FX 不等于 11H,就可以通过循环左移或右移进行换 向

EXIT:     POP        DPL

POP        DPH

POP         ACC RETI

;/*****点动子程序*****/

DIANDONG:

PUSH     PSW

PUSH       ACC

JNB         ZUOD,JING

JB           YOUD,CHUKOU


CHUKOU:

POP         ACC

POP         PSW RET

;/*****加速中断程序*****/

UP:         PUSH       ACC

LCALL      DELAY2;延时防抖动

JB           P3.2,UPEX;P3.2 为外部中断 0 位,接增速开关 S2,低电平有效,若 P3.2=1,则退出

MOV         A,SPEED

CJNE       A,#10,SZ   ;最大等级为 10,若 A 不等于 10,则转移到 SZ MOV                        SPEED,A

LJMP       UPEX ;若 A=10,则退出

SZ:         INC         SPEED                             ;SPEED= SPEED+1 UPEX: POP      ACC

HERE2: LCALL     DISPLAY

JNB         P3.2,HERE2 ;本条指令为防止开关 S2 按下去后弹不起,导致一直产


生中断


RETI


;/*****减速中断程序*****/ DOWN:  PUSH   ACC

LCALL      DELAY2

JB           P3.3,DEX ;P3.3 为外部中断 1 位,接减速开关 S3,低电平有效,若 P3.3=1,则退出

MOV         A,SPEED

CJNE       A,#0,SJ

LJMP       DEX

SJ:          DEC         SPEED ;SPEED= SPEED-1 DEX:      POP               ACC

HERE3:    LCALL      DISPLAY

JNB         P3.3,HERE3


RETI

;/*****延时子程序 2*****/ DELAY2: MOV               R6,#10 DEL1:   MOV    R7,#250 HERE1:   DJNZ        R7, HERE1

DJNZ       R6,DEL1 RET

;/*****延时子程序 3*****/

DELAY3: MOV         R3,#10

TAB:       DB    0,60,40,28,20,15,11,8,5,3,2

LED:       DB     0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,98H,0BFH,89H TSUDU1: DB 0,0,0,0,0,1,1,1,3,5,7

TSUDU2: DB 0,2,3,5,7,0,3,9,0,1,6

TSUDU3: DB 0,6,9,5,7,2,9,2,6,0,5

END

五、 调试情况及结论

实验箱实物连接图如图 11

11实物连接图


连接好 pc 机、仿真器与实验箱线路,运行程序波动电机开关为关显示如图 12 所 示。

12   电机关闭显示

波动电机开关到开的位置,方向转换到正向旋转的位置,此时的转速级别为   0,转 速为 0。显示如图 12 所示。

12   电机打开显示

保持电机转向不变,按转速级别增加按钮显示图如图  13


13电机级别转速显示

当拨动转向开关位置到反向显示如图 14

14反正旋转显示

当拨动点动开关到开位置显示如图 15


15点动显示

实验结论:在实验调试过程中遇到了各式各样的错误,比如说:转速级别与转速 大小不能一一对应;当转速级别调为 0 是电机任然会动;无法控制电机转向等问题。 最终在误差允许范围内,步进电机的转动控制及转动都能够按照设计要求进行。LED 显示区能够正确显示电机的转向,转速级别,转速大小。

六、 心得体会

七、参考资料

【1】 张家生. 电机原理与拖动基础【M】. 北京:北京邮电大学出版社,2006.

【2】  单片机原理接口技术(第二版)【M】.北京:高等教育出版社,2008


【3】 余辉晴. 模拟电子技术基础【M】. 北京:电子工业出版社,2006

【4】 单片机原理、应用与PROTEUS仿真【M】. 北京:电子工业出版社,2006

【5】 百度文库一些相关资料

相关推荐