分类:
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模型图
|