Chinaunix首页 | 论坛 | 博客
  • 博客访问: 659044
  • 博文数量: 205
  • 博客积分: 7891
  • 博客等级: 少将
  • 技术积分: 2168
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-29 13:16
文章分类

全部博文(205)

文章存档

2015年(4)

2014年(5)

2013年(1)

2012年(4)

2011年(51)

2010年(86)

2009年(45)

2008年(9)

分类:

2009-08-05 11:36:51

摘要:本设计首先介绍了STC89C51单片机,L297和L298N驱动电路及步进电机的基本原理与功能;其次,设计步进电机实现起停、转向、速度、位置变化的控制方案;再次,在这些器件功能与特点的基础上,拟出设计思路,构建系统的总体框架;最后利用PROTEL软件绘出电路图,同时写出设计系统的运行流程和相关程序。整个系统通过写入单片机中的程序分配好控制字的存储单元以及相应的内存地址赋值;启动系统后,从单片机的I/O口输出控制脉冲,经过L297、L298N驱动电路对脉冲进行处理,输出能直接控制步进电机的脉冲信号。在此基础上,重新分配I/O资源,同时增加驱动芯片L297、L298N的个数,在负载能力范围允许内,就能实现多台步进电机独立起停、转向、速度、

关键字:STC89C51单片机; L297;  L298N;  步进电机

 Design of the MCU to Realizes the Control of Many Stepping Motors

Abstract:The paper firstly introduces basic principles and functions of STC89C51 MCU, L297 L298 N drive circuits and stepping motor, secondly designs the control plan of stepping motor to realize starting and stopping, turning around, speeding, and position changes, thirdly produces the thought of design and builds the frame of system based on the principles and functions of these components, lastly designs circuit diagram in PROTEL and lists the operating process of design system and related programs. The whole system distributes saved units and composes values accord to corresponding memory addresses through the programs written in MCU. After starting the system, I/O interface of MCU outputs control pulses, which are handled by L297 and L298N drive circuits, then outputs pulse signals which can directly control stepping motors. In this foundation, the MCU redistributes the I/O resources and adds up the number of drive chips of L297 and L298N, in the meantime the design can realize many stepping motors’ independent starting and stopping, turning around, speeding, and position changes in the load's capability.

Keywords:STC89C51MCU;L297;L298N; stepping motor

 前言

步进电机是一种将电脉冲信号转换成相应角位移的控制电机。目前,数字技术、计算机技术和永磁材料的迅速发展,推动了步进电机的发展。本设计针对目前各个领域对自动化的需要,采用STC89C51单片机与L297,L298N驱动芯片驱动多台步进电机同时独立工作,将它应用于各种复杂的控制领域,能使许多半自动控制的系统完全成为真正的全自动,特别是用在机器人等领域,能极大的提高生产力和降低劳动强度。由于步进电机具有快速启动、精确步进和定位等特点,因而在数控机床,绘图仪,打印机以及光学仪器中得到广泛的应用。

 STC89C51单片机的特点

  STC89C51系列单片机是宏晶科技推出的新一代超强抗干扰/高速/低功耗的单片机,是MCS-51系列单片机的派生产品;它们在指令系统中、硬件系统和片内资源与标准的8052单片机完全兼容,DIP-40封装系列与8051为pin-to-pin兼容,指令代码是与8051完全兼容的单片机。STC89C51单片机具有增强型12时钟/机器周期、6时钟机器/周期任意选择,工作电压为5.5V-3.4V(5V单片机)/3.8V-2.0V(5V单片机);工作频率范围:0-40MHZ,相当于普通8051的0-80MHZ。实际频率可达48MHZ。用户应用程序空间为4K/8K/13K/16K/20K/32K/64K字节 ;片上集成1280字节/512字节RAM;有32/36个通用I/O口,P1/P2/P3/P4是准双向口;集成ISP(在系统可编程)/IPA(在应用可编程),无需专用的编程器/仿真器,可通过串行口(P3.0/P3.1)直接下载用户程序,8K程序3秒就可以完成一片,具备EEPROM功能,工作温度范围在0-750,共有3个16位定时器/计数器,其中定时器T0还可以当成2个8位定时器使用;封装形式有DIP-40,PLCC-44,PQFP-44等。 

步进电机的步进原理

步进电机是一种用电脉冲信号进行控制,并将电脉冲信号转换成相应的角位移或线位移的控制电动机。说通俗点,就是给一个电脉冲,步进电动机就转动一个角度或者前进一步,因此,步进电机也称脉冲电动机。步进电机区别于其他控制电机的最大特点是,它是通过输入脉冲信号来进行控制的,即电机的总转动角度由输入脉冲数决定,而电机的转速由脉冲信号频率决定。步进电机是数字控制电机,它将脉冲信号转变成角位移,因此非常适合于单片机控制。步进电机的角位移或线位移量与电脉冲个数成正比,它的转速或线速度与电脉冲频率成正比。在负载能力范围内这些关系不因电源电压、负载大小、环境条件的波动而变化。通过改变脉冲频率的高低可以在很大范围内实现步进电机的调速,并能进行快速启动、制动和反转。

  L298N的原理

L298N是ST公司生产的一种高电压、大电流电机驱动芯片。该芯片采用15脚封装。主要特点是:工作电压高,最高工作电压可达46V;输出电流大,瞬间峰值电流可达3A,持续工作电流为2A;内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器线圈等感性负载;采用标准逻辑电平信号控制;具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件工作有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作;可以外接检测电阻,将变化量反馈给控制电路。使用L298N芯片驱动电机,该芯片可以驱动两个二相电机,也可以驱动一个四相电机,可以直接通过电源来调节输出电压;并可以直接用单片机的I/O口提供信号;而且电路简单,使用比较方便。

  L297的原理

L297芯片是具有20个引脚的双列直插式塑胶封装的步进电动机控制器(包括集成的硬件环形分配器)。它可产生四相驱动信号,能用半步(八拍)和全步(四拍)等方式驱动单片机控制两相双极或四相单极步进电机。该芯片内部的PWM斩波器允许在关模式下控制步进电动机绕组电流,由于相序信号也是由内部产生的,因此它只需要时钟、方向和模式输入信号便能控制步进电动机,可减轻微处理器和程序设计的负担。L297单片步进电动机控制器集成电路的核心是脉冲分配器,L297还设有两个PWM斩波器来控制线绕组电流,实现恒流斩波控制,以获得良好的转矩—-频率特性。适用于双极性两相步进电动机或单极性四相步进电动机的控制。L297只需从上位机接受方向(正/反转),模式(半步/基本步距),时钟(步进脉冲)3个输入信号。它产生3种相序的信号,对应于3种不同的工作方式:半步方式(四相八拍);基本步距,单相激励方式(单相四拍);基本步距,两相激励方式(两相两拍)。其工作方式输出的波形如图4~6所示,初状态(HOME)是ABCD= 0101。L297是20脚双列直插式塑料封装,常以+5V供电。该单片步进电机控制器集成电路的核心是脉冲分配器,L297还设有两个PWM斩波器来控制绕组电流,实现恒流斩波控制,以获得良好的转矩-频率特性,实用于双极两相步进电机或者单极四相步进电机的控制。

 步进电机起动及加/减速控制

速度控制中加/减控制是最基本的控制。电机由静止到达设定的最大的速度所需的时间是由调试决定的。加速度太大,电机甚至不能克服惯性而失步,加速度太少,则完成指定的运动耗费时间太多,

加速度有两中方案:线性加/减速度控制和等步距加/减速度控制。前者规定从加速度开始,每一加速度周期指令电机速度递增相同的增量△f;后者则是要求每一加速度周期电机走过相同的步数。等步距加/减速度控制的优点,在于加/减过程中电机走的步数可以非常精确的计算,这一点对于加/减的位置控制非常重要,但从电机要克服惯性力来看,线性加速方案好些。调试也方便。线性加/减控制曲线如下图:

 

                    线性加速控制曲线 

f=(f2-f1)/n,其中n为加速过程的台阶数,减速控制也类似,只是△f为负值。

步进电动机的最高起动频率(突跳频率)一般为0.1KHz到3-4KHz,而最高运行频率则可以达到N*102 KHz。以超过最高起动频率的频率直接起动,将出现"失步"现象,甚至无法起动。较为理想的起动曲线,应是按指数规律起动。但实际应用对起动段的处理可采用直线拟合的方法,即"阶梯升速法"。可按两种情况处理,①已知突跳频率则按突跳频率分段起动,分段数n=f/fq。②未知突跳频率,则按段拟合至给定的起动频率,每段频率的递增量(后称阶梯频率)△f=f/8,即采用8段拟合。在运行控制过程中,将起始的速度(频率)分为n分作为阶梯频率,采用"阶梯升速法"将速度连续升到所需要的速度,然后锁定,按预置的曲线运行。如(图9)所示。

    用单片机实现步进电机的加/减速控制,实际上就是控制发脉冲的频率,升速时,使脉冲频率增高,减速时相反。如果使用定时中断来控制电机的速度,加减速控制就是不断改变定时器的初值。速度从V1→V2如果是线性增加,则按给定的斜率升/降速;如果是突变,则按"阶梯升速法"处理。在此过程中要处理好两个问题:

①速度转换时间应尽量短;为了缩短速度转换的时间,可以采用建立数据表的方法。结合各曲线段的频率和各段间的阶梯频率便可以建立一个连续的数据表,并通过转换程序将其转换为定时初值表。通过在不同的阶段调用相应的定时初值,控制电机的运行。定时初值的计算是在定时中断外实现的,并不占用中断时间,保证电机的高速运行。

②保证控制速度的精确性;要从一个速度准确达到另外一个速度,就要建立一个校验机制,以防超过或未达到所需速度。

 

                                阶梯升速起动

 

步进电机的换向控制

一般来说,驱动器的输入共有3路,它们是:步进脉冲信号CP、方向电平DIR、脱机信号FREE。它们在驱动器内部分别通过限流电阻接入光藕的负输入端,且电路形式完全相同,在这三路输入信号的共同的控制下,驱动器将输入合适的电流来控制步进电机完成指定的操作。另外,驱动器一般有一个接入端OPTO,该端口为三路信号的公共正端。三路输入信号在驱动器内部接成共阳方式,所以OPTO端须接外部系统的VCC,并在需要的情况下加限流电阻R,保证驱动器内部光藕提供合适的驱动电流。

① 步进脉冲信号CP

步进脉冲信号CP用于控制步进电机的位置与速度,也就是说:驱动器每接受一个CP脉冲就驱动步进电机一个旋转的步距角,CP脉冲的频率改变则会使步进电机的转速改变,控制CP脉冲的个数,则可以使步进电机精确定位。

② 方向电平DIR

方向电平信号DIR用于控制步进电机的旋转方向,此端为高电平时,电机一个转向,此端为低电平时,电机转向另外一个方向,电机转相必须在电机停机后进行,并且换向信号一定要在前一个方向的最后一个CP脉冲结束后以及下一个方向的第一个脉冲前发出。

③ 脱机电平信号FREE

当驱动器上电后,步进电机处于锁定状态(未施加CP脉冲时)或者运行状态(施加CP脉冲时),但当用户想手动调整电机而又不想关闭驱动器电源,这时就可以用到此信号,当此信号起作用时(低电平有效),电机处于自由无力矩状态,当此信号为高电平时或悬空不接时,取消脱机状态。此信号用户可选用,如果不需要此功能,此端不接即可。

   步进电机换向时,一定要在电机降速停止或降到突跳频率范围之内再换向,以免产生较大的冲击而损坏电机。换向信号一定要在前一个方向的最后一个CP脉冲结束后以及下一个方向的第一个CP脉冲前发出。如(图10)所示。对于CP脉冲的设计主要要求其有一定的脉冲宽度(一般不小于5μs)、脉冲序列的均匀度及高低电平方式。在某一高速下的正、反向切换实质包含了降速→换向→升速三个过程。

                         转向信号起作用的时刻

 步进电机的位置控制

步进电机的位置控制是指要求电机从当前位置转过一个给定的步数。电机不丢步数这一控制的实际。就是要求精确地发出定量的步进脉冲,例如,机器人再现工作时的启动信号后,要走到示教时给出的初始作业位置,就是用到位置控制。不过不带加/减速控制,位置控制很容易实现的。将发给电机的脉冲,用计数器通道计数,到最后通过CPU停发脉冲就是了。但是这种不带加/减速的位置控制,除非速度特别低,否则会在起停时造成器械冲击、失步。图11示出了带加减速控制的速度曲线,此曲线、跟T轴间包含的面积正比于电机走过的步数S∑,显然,电机走过的总步数S∑由三部分构成:加速阶段电机走的步数向阶梯段电机走过的步数和减速阶段电机走的步数。

 

         位置控制速度曲线

 系统的设计思路

本设计的目的是实现单片机能同时实现3台或3台以上步进电机的起/停、转向、加/减速和位置控制。在熟悉好各芯片的性能特点后,接下来就是分配好各芯片的控制任务。

单片机主要完成脉冲的分配,使步进电机按照设定的方式运转,通过程序设定,从单片机的I/O口输出一系列有规律的脉冲信号;由于直接输出的脉冲信号驱动功率有限,很难直接驱动步进电机运转,所以必须经过驱动器进行脉冲放大,本设计采用的L297与L298N芯片能解决这个问题,它可以驱动两个二相电机,也可以驱动一个四相电机。但是如果要实现多台步电机控制的设计,就不仅要重新分配好I/O资源,还要增加相应驱动芯片的数量。再利用单片机程序分配好控制字的存储单元,以及相应的内存地址赋值,使单片机能控制步进电机的起停、换向顺序、速度和位置变化。

 系统的设计框架

 

L297、L298N与电机的电路设计

 

 

系统的总电路设计此电路由一块STC89C51,3块L297、3块L298N、3台4相4拍步进电机器以及相关的电路组成。利用单片机3个并行I/O口的部分引脚(P0.0~P0.6,P1.0.~P1.6,P2.0~P2.6)连接驱动芯片,各个端口直接与驱动芯片L297直接相连,L297与L298N共用一个+5V的电源,输出+36V的步进电机驱动电压;L298N的2、3、13、14四个输出引脚直接与一个四相四拍的步进电机相连。以同样的方式,连接另外两台电机的控制电路。

系统的总电路设计图

 

 

 

步进电机的转向控制任务

①判断旋转方向;

      ②按顺序送出控制字;

③判断字是否送完。

 四相四拍控制程序的设计方法 步进电动机所要走的步数在R4中,转向标志存放在程序状态寄存器PSW的用户标志位F(D5H)中。当F0=0时,步进电动机正转,当F0=1时,步进电动机反转。正反转控制字存放在单元见表1中。

表1    反转控制字存放单元

节拍

通电顺序

控制字

正转

反转

 

二进制

十六进制

1

4

A

00000001

01

2

3

B

00000010

02

3

2

C

00000100

04

4

1

D

00001000

08

表2    正反转的内存地址赋值

 

控制字

内存字节地址

 

 

正转

01H

02H

04H

08H

00H

20H

21H

22H

23H

24H

 

 

反转

08H

04H

02H

01H

00H

25H

26H

27H

28H

00H

    7.2 步进电机的运行控制

在升、降频率过程中,考虑到步进电机的惯性,要求每改变一次频率,需持续运行一定的步数,称频率阶梯步长,采用直线方式,频率阶梯步长的值为常数,由初始启动频率到恒速运行频率的阶梯步长数,称为频率的阶梯数。编写这段程序作如下标明:

①利用定时器T0延时,起初值存放在EPROM存储器的同一页面中。上半页面为升频段,定时器初值由大变小;下半页面为降频段,定时器初值由大变小。降频是升频的逆过程。

②步进电机的运行控制标志位定义见下表3:

表3   步进电机的运行控制标志位

位地址

标志内容

70H

运行方式:0恒速,1变速

71H

变速方式:0降频,1升速

72H

恒速转向:0正转,1反转

73H

升速转向:0正转,1反转

74H

降速转向:0正转,1反转

75H

程序结束标志:02表示程序结束

③运行控制初值分配见表4

表4   运行控制初值分配

字节地址

存储内容

1AH

频率阶梯步长计数器R2的值

1BH

频率阶梯步长计数器R3的值

1CH

恒速段步长低8位

1DH

恒速段步长高8位

1EH

恒速段T0初始值低8位

1FH

恒速段T0段高8位

 

转速流程框图及相应的程序

 

步进电机转速控制可由程序延时来完成,也可由定时器延时来完成,相应的程序如下:

PUSH      A                 ;保护现场

      MOV      R4,#N            ;设置步长计数器

      CLR       C                 ;转向标志为1,转移

ORL       C,D5H

JC         ROTE

MOV         R0,#20H                ;正转控制字首址

AJMP        LOOP

ROTE:    MOV         R0,27H                 ;反转控制字首址

LOOP:    MOV         A,@R0

MOV         P1,A                  ;输出控制脉冲

ACALL       DLY                    ;调用延时程序

INC          R0                      ;控制字存储地址增1

MOV         A,#00H

.         ORL          A,@R0                ;是结束标志转移

JZ        TPL LOOP1: DJNZ  R4,LOOP        ;步数不为0,转移

POP          A

RER

TPL:    MOV         A,R0                  ;恢复控制字首址

CLR         C

SUBB        A,#06H

MOV        R0,A

AJMP LOOP1

DLY:    MOV        R2,#M

DLY1:   MOV        A,#M1

LOOP:   DEC        A

JNZ        LOOP

DJNZ     R2,DLY1              

RET

7.4  变频调速程序与相应的流程图

主程序:ORC              0000H

             SJMP         START

             ORG          000BH

             LJMP         INT0

             ORG          0030H

START:     MOV         DPTR,addr16           ;T0初值地址指针

             MOV         R3,1BH               ;赋频率阶梯记数器值

             MOV         R2,1AH               ;赋阶梯步长计数器值

             CLR          C

             ORL          C,73H

             JC            ROTE

             MOV         R0,#20H               ;正转控制字首址

             AJMP         PH

ROTE:      MOV         R0,#27H               ;反转控制字首址

PH:         MOV         TMOD,#01H           ;T0方式1定时

             MOV         TL0,#00H              ;置T0初值

MOV         TH0,        #00H  

SETB        TR0                    ;启动T0

SETB        ET0                    ;允许T0中断

LOOP:       MOV         A,R3                  ;等待中断

              JNZ           LOOP

              CLR          EA                    ;CUP关中断

              SJMP          $                     ;结束

 

中断服务程序:

INT0:         PUSH         A                      ;保护现场

               MOV          A,@R0

               MOV          P1, A                    

               INC           R0

               MOV          A, #00H

               ORL          A, @R0

               JZ            TPL                    ;是结束标志,转

RR:            DEC          R2                     ;步长计数器减1

               MOV         A, #00H

                ORL          A, R2

                JZ            THL                   ;阶梯步长计数器为0,转

PRL:            CLR          C

                CLR          C, 71H

 

JNC            ROTEL           ;是降频,转移

               MOV           A, #00H

               MOVC          A, @A+DPTR

               MOV           TL0,A            ;升频T0赋初值低8位

               MOV            A, #01H

               MOVC          A, @A+DPTR

               MOV            TH0,A           ;升频T0赋初值高8位

               AJMP           QQ            

ROTEL:        MOV            A, #80H

               MOVC          A, @A+DPTR

               MOV            TL0,A           ;降频T0赋初值低8位

 MOV              A, #81H

               MOVC            A, @A+DPTR

               MOV              TH0,A           ;降频T0赋初值高8位

QQ:            POP              A                ;恢复现场

               RETI                               ;中断返回

THL:           DJNZ             R3,AT            ;频率阶梯减1不为0,转

               AJMP             QQ

AT:            MOV              R2,1AH           ;阶梯步长赋值

               INC               DPTR

               INC               DPTR            ;TO初值指针更新 

               AJMP              PRL

TPL:           CLR               C

               MOV              A, R0

               SUBB             A, #06H

               MOV              R0, A

               AJMP              RR

               END

 

8 结论

本设计首先分析了STC89C51单片机、L297、L298N驱动电路以及步进电机的基本原理和特点,其次逐步分析各自的连接原理及步进电机实现启停、加速、转向、位置控制的方案,接着综合性地阐述整个系统的设计思路及组成框图;再通过PROTEL软件绘制整个原理图并设计相应的PCB板模型。该系统主要是通过写入单片机中的程序进行控制,从I/O口输出控制脉冲,经过L297、L298N驱动电路进行处理,输出能直接控制步进电机的信号;在此基础上,重新分配I/O资源,同时增加驱动芯片L297、L298N的个数,使能同时控制3台四相四拍步进电机。如果在单片机上扩展键盘输入以及LED显示输出电路,更能增加系统的直观性与实用性。依照这个思路,如果通过8255可编程芯片扩展I/O口,并增加L297、L298N驱动电路的数目,在负载允许的范围内,就能同时控制实际所需的多台步进电机运行。把这个系统运用于许多复杂的领域,能使许多半自动控制的系统完全成为真正的全自动,特别是机器人设计与制作方面,能极大的提高生产力和降低劳动强度,有很大的应用前景。

 

参考文献

[1]李鸿主编.单片机原理及应用[M], 湖南:湖南大学出版社,2004

[2]韩全立,王建明.单片机控制技术及应用[M],北京:电子工业出版社,2004

[3]周平,伍云辉.单片机应用技术[M], 四川:电子科技大学出版社,2004

[4]胡伟,季晓衡. 单片机C程序设计及应用实例[M],北京:人民邮电出版社,2004 

[5]朱定华.微型计算机原理及应用[M],北京:电子工业大学出版社,2005.12

[6]李文江,张岩.用L298实现雷管脚线合股剥皮机多步进电机控制[J],辽宁工程技术大学学报,2005.2

[7]赵龙庆,徐国栋.一种基与单片机的步进电机控制驱动器[J],西南林学院学报,2005.6

[8]赵景波,王劲松.PROTEL2004电路设计[M],北京:电子工业出版社,2004.7

[9]陈理璧. 步进电动机及其应用[M],上海科学技术出版社,1995

                             PCB板的3D模型图

文件: STC89C51单片机,L297和L298N驱动电路及步进电机的基本原理与功能.rar
大小: 521KB
下载: 下载

阅读(3217) | 评论(0) | 转发(0) |
0

上一篇:74LS595的使用

下一篇:单片机延时

给主人留下些什么吧!~~