步进电机毕业设计

更新时间:2023-09-05 05:45:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

本文档是服务于广大同学的

2007届 毕 业 论 文(设 计)

题目: 基于单片机的步进电机控制系统

系 别: 专 业: 班 级: 姓 名:

本文档是服务于广大同学的

目录

前言

一、 步进电机控制原理 2

1.1步进电机的分类和主要参数 .2

1.1.1步进电机的分类 ..2 1.1.2步进电机的一些基本参数 ..2

1.2步进电机的原理 .3

1.2.1步进电机基本控制原理 ..3 1.2.2步进电机控制系统原理 3.

二、设计方案-硬件电路设计 4

2.1方案论证与比较 .4 2.2理论设计 5

三、步进电动机的单片机控制 7

3.1脉冲分配 8

3.1.1通过软件实现脉冲分配 8 3.1.2通过硬件实现脉冲分配 10

四、步进电动机的运行控制 11

4.1步进电动机的位置控制 11 4.2步进电动机的加、减速控制 14

五、总结 20 参考文献及外文资料

本文档是服务于广大同学的

前 言

步进电机是机电控制中一种常用的执行机构,它的用途是将电脉冲转化为角位移,通俗地说:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。通过控制脉冲个数即可以控制角位移量,从而达到准确定位的目的;同时通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。

在步进电机的单片机控制系统中,要求能实现以下三个基本控制任务:

控制换相顺序:步进电机的通电换相顺序要严格按照步进电机的工作方式进行。也称为脉冲分配,实现脉冲分配的方法有两种:软件法和硬件法。

控制步进电机的转向:通过改变通电的相序来实现。 控制步进电机的转速:通过调节脉冲频率来实现。

一、 步进电机控制原理

1.1步进电机的分类和主要参数

1.1.1步进电机的分类

步进电机是一种将电脉冲转化为角位移的执行机构。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。

现在比较常用的步进电机包括反应式步进电机(VR)、永磁式步进电机(PM)、混合式步进电机(HB)和单相式步进电机等。

1.1.2步进电机的一些基本参数:

(1) 电机固有步距角:

它表示控制系统每发一个步进脉冲信号,电机所转动的角度。电机出厂时给出了一个步距角的值,如86BYG250A型电机给出的值为0.9°/1.8°(表示半步工作时为0.9°、整步工作时为1.8°),这个步距角可以称之为“电机固有步距角”,它不一定是电机实际工作时的真正步距角,真正的步距角和驱动器有关。 (2)步进电机的相数:

是指电机内部的线圈组数,目前常用的有二相、三相、四相、五相步进电机。电机相数

本文档是服务于广大同学的

不同,其步距角也不同,一般二相电机的步距角为0.9°/1.8°、三相的为0.75°/1.5°、

五相的为0.36°/0.72° 。

(3)保持转矩(HOLDING TORQUE):

是指步进电机通电但没有转动时,定子锁住转子的力矩。它是步进电机最重要的参数之一,通常步进电机在低速时的力矩接近保持转矩。比如,当人们说2N.m的步进电机,在没有特殊说明的情况下是指保持转矩为2N.m的步进电机。 (4)DETENT TORQUE:

是指步进电机没有通电的情况下,定子锁住转子的力矩。DETENT TORQUE 在国内没有统一的翻译方式,容易使大家产生误解;由于反应式步进电机的转子不是永磁材料,所以它没有DETENT TORQUE。

1.2步进电机的原理

1.2.1步进电机基本控制原理

步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。

步进电机区别于其他控制电机的最大特点是,它是通过输入脉冲信号来进行控制的,即电机的总转动角度由输入脉冲数决定,而电机的转速由脉冲信号频率决定。

步进电机的驱动电路根据控制信号工作,控制信号由单片机产生。其基本原理作用如下: (1)控制换相顺序

通电换相这一过程称为脉冲分配。例如:三相步进电机的三拍工作方式,其各相通电顺序为A-B-C-D,通电控制脉冲必须严格按照这一顺序分别控制A,B,C,D相的通断。

(2)控制步进电机的转向

如果给定工作方式正序换相通电,步进电机正转,如果按反序通电换相,则电机就反转。 (3)控制步进电机的速度

如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。两个脉冲的间隔越短,步进电机就转得越快。调整单片机发出的脉冲频率,就可以对步进电机进行调速。

1.2.2步进电机控制系统原理

典型的步进电机控制系统如图1.1所示,主要是由步进控制器,功率放大器及步进电机等组成。

本文档是服务于广大同学的

图1.1 步进电机控制系统的组成

二、 设计方案-硬件电路设计

2.1 方案论证与比较

1、 本设计的重点在于对步进电机的控制和驱动,设计中受控电机为四相六线制的步进电机(内阻33欧,步进1.8度,额定电压12V)

方案一:使用多个功率放大器件驱动电机

通过使用不同的放大电路和不同参数的器件,可以达到不同的放大的要求,放大后能够得到较大的功率。

方案二:使用L298N芯片驱动电机 L298N芯片可以驱动两个二相电机(如图2.2),也可以驱动一个四相电机,输出电压最高可达50V,可以直接通过电源来调节输出电压;可以直接用单片机的IO口提供信号;而且电路简单,使用比较方便。

图2.2 L298N芯片

2、 数码管显示电路的设计 方案一:串行接法

本文档是服务于广大同学的

设计中要显示4位数字,用74LS164作为显示驱动,其中带锁存,使用串行接法可以节约IO口资源,但要使用SIO,发送数据时容易控制。

方案二:并行接法

使用并行接法时要对每个数码管用IO口单独输入数据,占用资源较多。

2.2 理论设计

综合以上选取的方案,总的流程如图2.3所示。

图2.3 控制系统总流程

1、步进电机驱动电路

通过L298N构成步进电机的驱动电路,电路图如图2.4所示。

本文档是服务于广大同学的

图2.4 步进电机的驱动电路图

通过MCS-51单片机的P1.0~P1.5口对L298N的IN1~IN4口和ENA、ENB口发送方波脉冲信号,起时序图如图2.5所示。

图2.5 时序图

2、数码管显示电路的设计

数码管的显示驱动使用74LS164,通过MCS-51单片机的串行口对DATA和CLK发送数据。

图2.6 数码管显示电路的设计图

3、4x4键盘电路

在设计中,使用了标准的4x4键盘,其电路图如图2.7所示。单片机的P0口为键盘的接口。尽管设计要求中只需要4个键对步进电机的状态进行控制,但考虑到对控制功能的扩展,我们使用了4x4的键盘。

本文档是服务于广大同学的

图2.7 4x4键盘电路图

三、 步进电动机的单片机控制

步进电动机的驱动电路根据控制信号工作。在步进电动机的单片机控制中,控制信号由单片机产生。其基本控制作用如下。

(1)控制换相顺序

步进电动机的通电换相顺序严格按照步进电动机的工作方式进行。通常我们把通电换相这一过程称为脉冲分配。 (2)控制步进电动机的转向

通过前面介绍的步进电动机原理我们已经知道,如果按给定的工作方式正序通电换相,步进电动机就正转;如果按反序通电换相,则电动机就反转。 (3)控制步进电动机的速度

如果给步进电动机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。两个脉冲的间隔时间越短,步进电动机就转的越快。

本文档是服务于广大同学的

3.1脉冲分配

实现脉冲分配(也就是通电换相控制)的方法有两种:软件法和硬件法。

3.1.1通过软件实现脉冲分配

软件法是完全用软件的方式,按照给定的通电换相顺序,通过单片机的I/O口向驱动电路发出控制脉冲。图3-1是用这种方法控制五相步进电动机的硬件接口例子。利用8051系列单片机的P1.0~P1.4这5条I/O线,向五相步进电动机传送控制信号。 下面以五相步进电动机工作在十拍方式为例,说明如何设计软件。 这10个控制字如表3-1所列。

图3-1 用软件实现脉冲分配的接口示意图

表3-1 五相十拍工作方式的控制字

本文档是服务于广大同学的

在程序中,只要依次将这10个控制字送到P1口,步进电动机就会转动一个齿距角。每送一个控制字,就完成一拍,步进电动机转过一个步距角。程序就是根据这个原理进行设计的。

用R0作为状态计数器,来指示第几拍,按正转时加1,反转时减1的操作规律,则正转程序为:

CW: INC R0 ;正转加1

CJNE R0,#0AH,ZZ ;如果计数器等于10修正为0 MOV R0,#00H

ZZ: MOV A,R0 ;计数器值送A MOV DPTR,#ABC ;指向数据存放首地址 MOVC A,@A+DPTR ;取控制字 MOV P1,A ;送控制字到P1口 RET

ABC: DB 0FCH,0F8H,0F9H,0F1H,0F3H ;10个控制字 DB 0E3H,0E7H,0E6H,0EEH,0ECH 反转程序为:

CCW: DEC R0 ;反转减1(反序)

CJNE R0,#0FFH,FZ ;如果计数器等于FFH修正为9 MOV R0,#09H FZ: MOV A,R0

MOV DPTR,#ABC ;指向数据存放首地址 MOVC A,@A+DPTR ;取控制字 MOV P1,A ;送P1口 RET

软件法在电动机运行过程中,要不停地产生控制脉冲,占用了大量的CPU时间,可能使单片机无法同时进行其他工作,所以,人们更喜欢用硬件法。

本文档是服务于广大同学的

3.1.2通过硬件实现脉冲分配

所谓硬件法实际上是使用脉冲分配器芯片,来进行通电换相控制。脉冲分配器有很多种,这里介绍一种8713集成电路芯片。8713有几种型号,如三洋公司生产的PMM8713,富士通公司生产的MB8713,国产的5G8713等,它们的功能一样,可以互换。

8713是属于单极性控制,用于控制三相和四相步进电动机,可以选择以下不同的工作方式。

三相步进电动机:单三拍,双三拍,六拍; 四相步进电动机:单四拍,双四拍,八拍。

8713可以选择单时钟输入或双时钟输入;具有正反转控制,初始化复位,工作方式和输入脉冲状态监视等功能;所有输入端内部都设有斯密特整形电路,提高抗干扰能力;使用4~18V支流电源,输出电流为20mA。

8713有16个引脚。各引脚功能如表3-2所列。

表3-2 8713引脚功能

本文档是服务于广大同学的

8713脉冲分配器与单片机的接口例子如图3-2所示。本例选用单时钟输入方式,8713的3脚为步进脉冲输入端,4脚为转向控制端,这两个引脚的输入均由单片机提供和控制。选用对四相步进电动机进行八拍方式控制,所以5,6,7脚均接高电平。

图3-2 8713脉冲分配器与单片机接口

由于采用了脉冲分配器,单片机只需要提供步进脉冲,进行速度控制和转向控制,脉冲分配的工作交给脉冲分配器来自动完成。因此,CPU的负担减轻许多。

四、 步进电动机的运行控制

步进电动机的运行控制涉及到位置控制和加,减速控制。

4.1 步进电动机的位置控制

步进电动机的位置控制,指的是控制步进电动机带动执行机构从一个位置精确地运行到另一个位置。 对步进电动机位置控制的一般作法是:步进电动机每走一步,步数减1,如果没有失步存在,当执行机构到达目标位置时,步数正好减到0。因此,用步数等于0来判

本文档是服务于广大同学的

断是否移动到目标位,作为步进电动机停止运行的信号。

下面给出一个例子。其硬件连接仍如图3-2所示,所有的操作仍然都发生在定时器中断程序中,而且每次中断仍然改变一次P1.0的状态,也就是说,每两次中断步进电动机才走一步。下面是本程序使用的资源:

30H,31H——存放定时常数,低位在前; 32H~34H——存放绝对位置参数,低位在前; 35、36H——存放步数,低位在前。 中断服务子程序框图如图4-1所示。

程序如下:

POS: CPL P1.0 ;改变P1.0电平状态 PUSH ACC ;累加器A进栈

PUSH R0

本文档是服务于广大同学的

JNB P1.0,POS4 ;P1.0=0时,半个脉冲,转到POS4 CLR EA ;关中断

JNB P1.1,POS1 ;反转,转到POS1

MOV R0,#32H ;正转。指向绝对位置低位32H INC @R0 ;绝对位置加1 CJNE @R0,#00H,POS2 ;无进位则转向POS2 INC R0 INC CJNE @R0 INC R0 INC @R0 CJNE @R0 CLR TR0 LCALL BAOJING POS1: MOV R0DEC @R0 CJNE @R0INC R0 DEC @R0 CJNE @R0INC R0 DEC @R0 CJNE @R0CLR TR0 LCALL BAOJING POS2: MOV R0 DEC @R0 CJNE @R0INC R0 DEC @R0 ;指向33H @R0 ;(33H)+1 ,#00H,POS2 ;无进位则转向POS2 ;指向34H ;(34H)+1

,#00H,POS2 ;无越界,则转向POS2 ;发生越界,停定时器 ;调报警子程序

,#32H ;反转。指向绝对位置低位32H

;绝对位置减1 ,#0FFH,POS2 ;无借位则转向POS2 ;指向33H ;(33H)-1 ,#0FFH,POS2 ;无借位则转向POS2 ;指向34H ;(34H)-1

,#0FFH,POS2 ;无越界,则转向POS2 ;发生越界,停定时器 ;调报警子程序

,#35H ;指向步数低位35H

;步数减1

,#0FFH,POS3 ;无借位则转向POS3 ;指向36H ;(36H)-1

本文档是服务于广大同学的

POS3: SETB EA ;开中断 MOV A,35H ;检查步数=0 ORL A,36H

JNZ POS4 ;不等于0转向POS4 CLR TR0 ;等于0。停定时器 SJMP POS5 ;退出 POS4: CLR C

CLR TR0 ;停定时器 MOV A,TL0 ;取TL0当前值 ADD A,#08H ;加8个机器周期 ADD A,30H ;加定时常数(低8位) MOV TL0,A ;重装定时常数(低8位) MOV A,TH0 ;取TH0当前值

ADDC A,31H ;加定时常数(高8位) MOV TH0,A ;重装定时常数(高8位) SETB TR0 ;开定时器 POS5: POP R0 POP PSW POP ACC

RETI ;返回

步进电动机的正反转控制在主程序中实现。如果正转,使P1.1=1;反转,使P1.1=0。所以,不管在正转情况下,还是在反转情况下,上面程序都能适用。

4.2步进电动机的加、减速控制

实际上,在3.2一节中的速度控制中,速度并不是一次升到位。在4.1一节中的位置控制中,执行机构的位移也不总是恒速进行的。它们对运行的速度都有一定的要求。在这一节中,我们将讨论步进电动机在运行中的加、减速问题。

为了满足加、减速要求,步进电动机运行通常按照加、减速曲线进行。图4-2是加、减

本文档是服务于广大同学的

速运行曲线。加、减速运行曲线没有一个固定的模式,一般根据经验和试验得到的。

(a)匀加、减速曲线 (b)S形加、减速曲线 图4-2 加、减速运行曲线

最简单的是匀加速和匀减速曲线,如图4-2(a)所示,其加、减速曲线都是直线,因此容易编程实现。按直线加速时,加速度是不变的,因此要求转距也应该是不变的。

采用指数加、减速曲线或S形加、减速曲线是最好的选择,如图4-2(b)所示。因为电动机的电磁转距与转速的关系接近指数规律。

努进电动机的运行还可根据距离的长短分如下3种情况处理。 (1) 短距离

由于距离较短,来不及升到最高速,因此,在这种情况下,步进电动机以接近启动频率运行过程没有加、减速。

(2) 中、短距离

在这样的距离里,步进电动机只有加、减速过程,而没有恒速过程。

(3) 中、长距离

在这样的距离里,步进电动机不仅有加、减速过程,还有恒速过程。由于距离较长,要尽量缩短用时,保证快速反应性。因此,在加速时,尽量用接近启动频率启动;在恒速时,尽量工作在最搞速。

下面举例来说明步进电动机加、减速控制程序的编制。

图4-3是近似指数加速曲线。由图可见,离散后速度并不是一直上升的,而是每升一级都要在该级上保持一段时间,因此实际加速轨迹呈阶梯状。如果速度是等间距分布,那么在该速度级上保持的时间不一样长。为了简化,我们用速度级数N与一个常数C的乘积去模拟,并且保持的时间用步数来代替。因此,速度每升一级,步进电动机都要在该速度级上走NC步(其中N为该速度级数)。

为了简化,减速时也采用与加速时相同的方法,只不过其过程是加速时的逆过程。

本文档是服务于广大同学的

图4-3 加速曲线离散化

本程序的参数除了有速度级数N和级步数NC以外,还有以下参数 。 (1) 加速过程的总步数

电动机在升速过程中每走一步,加速总步数就减一,直到减为0,加速过程结束,进入恒速过程。

(2) 恒速过程的总步数

电动机在恒速过程中每走一步,恒速总步数就减一,直到减为0,恒速过程结束,进入减速过程。

(3) 减速过程的总步数

电动机在减速过程中每走一步,减速总步数就减1,直到减为0,减速过程结束,电动机停止运行。

加减速程序框图如图4-4所示。 程序如下:

JAJ: CPL P1.0 ;改变P1.0电平状态 PUSH ACC ;保存现场 PUSH PSW PUSH B PUSH DPTL PUSH DPTH

SETB RS0 ;选用工作寄存器1

JNB P1.0,JAJ10 ;P1.0=0时,半个脉冲,转到JAJ10 CLR EA ;关中断

JNB P1.1,JAJ1 ;反转,转到JAJ1

本文档是服务于广大同学的

MOV R0,#32H ;正转,指向绝对位置低位32H INC @R0 ;绝对位置加1 CJNE @R0,#00H,JAJ2 ;无进位则转向JAJ2 INC R0 ;指向33H INC @R0 ; (33H)+1 CJNE @R0,#00H,JAJ2 ;无进位则转向JAJ2 INC R0 INC @R0 CJNE @R0 LCALL BAOJING JAJ1: MOV R0 CJNE @R0 INC R0 CJNE @R0 DEC @R0 CJNE @R0LCALL BAOJING JAJ2: SETB EA CJNE R3 MOV R0 DEC @R0 CJNE @R0 DEC @R0 : DJNZ R2;指向34H ; (34H)+1 ,#00H,JAJ2 ;无越界,则转JAJ2 ;发生越界,停定时器

;调报警子程序

,#32H ;反转,指向绝对位置低位32H ;绝对位置减1

,#0FFH,JAJ2 ;无借位则转向JAJ2 ;指向33H ;(33H)-1

,#0FFH,JAJ2 ;无借位则转向JAJ2 ;指向34H

;(34H)-1

,#0FFH,JAJ2 ;无越界,则转JAJ2 ;发生越界,停定时器

;调报警子程序

;开中断

,#35H,JAJ5 ;不是加速则转JAJ5 ,#35H ;指向加速步数低位35H ;加速步数减1 ,#0FFH,JAJ3 ;无借位,则转JAJ3 ;指向36H

;(36H)-1

,JAJ4 ;判断该级步数是否走完

CLR TR0 DEC @R0 DEC @R0 INC R0 CLR TR0 INC R0 JAJ3

本文档是服务于广大同学的

INC R1 ;走完,速度升一级 MOV A,R1 ;计算级步数 MOV B,#N ;立即数N MUL AB

MOV R2,A ;保存级步数

JAJ4: MOV A,35H ;检查加速步数=0 ORL A JNZ JAJ10 MOV R3 SJMP JAJ10

JAJ5: CJNE R3 MOV R0 DEC @R0 CJNE @R0 INC R0 DEC @R0

CJNE @R0 INC R0

DEC @R0

JAJ6: MOV A ORL AORL A JNZ JAJ10 MOV R3 DEC R1 MOV A MOV B MUL AB

MOV R2 SJMP JAJ10

,36H

,#37H ,#37H,JAJ7 ,#37H ,#0FFH,JAJ6 ,#0FFH,JAJ6

,37H ,38H

,39H

,#3AH ,R1 ,#N ,A ;不等于0,转向JAJ10

;等于0,加速结束,指针指向恒速 ;不是恒速则转JAJ7 ;指向恒速步数低位37H ;恒速步数减1 ;检查加速步数=0 ;不等于0,转向JAJ10

;等于0,恒速结束,指针指向减速

;减速一级 ;计算级步数 ;保存级步数

本文来源:https://www.bwwdw.com/article/8a6i.html

Top