资源描述
第一章 绪论
§1.1 引言
随着电力电子技术的高速发展,电力电子设备与人们的工作、生活的关系日益密切,而电子设备都离不开可靠的电源,进入80年代计算机电源全面实现了开关电源化,率先完成计算机的电源换代,进入90年代数字脉冲电源相继进入各种电子、电器设备领域,程控交换机、通讯、电力检测设备电源、控制设备电源等都已广泛地使用了数字脉冲电源,更促进了开关电源技术的迅速发展。开关电源是利用现代电力电子技术,控制开关晶体管开通和关断的时间比率,维持稳定输出电压的一种电源,数字脉冲电源一般由供电电源、数字控制器、开关管、和负载构成。数字脉冲电源和线性电源相比,二者的成本都随着输出功率的增加而增长,但二者增长速率各异。随着电力电子技术的发展和创新,使得数字脉冲电源技术也在不断地创新,这一成本反转点日益向低输出电力端移动,这为数字脉冲电源提供了广阔的发展空间。
数字脉冲电源高频化是其发展的方向,高频化使数字脉冲电源小型化,并使开关电源进入更广泛的应用领域,特别是在高新技术领域的应用,推动了高新技术产品的小型化、轻便化。另外数字脉冲电源的发展与应用在节约能源、节约资源及保护环境方面都具有重要的意义。
§1.2 数字脉冲电源的发展
脉冲电镀是一项新的电镀技术。特点是由脉冲电流对电极过程动力学的特效影响所决定的。在直流电镀时,镀液中被镀出的金属离子在阴极表面附近溶液中逐渐被消耗,造成了该处被镀金属离子与溶液中该离子浓度出现差别。这种差别随着使用的电流密度增高而加大。脉冲电镀时的传质过程与直流电镀时的传质过程的差异,造成了峰值电流可以大大高于平均电流,促使晶种形成的速度远远高于晶体长大的速度,使镀层结晶细化,排列紧密,孔隙减小,电阻率低。
脉冲电源其电流呈脉冲方式流动,并可在瞬时产生高密度电流;在电镀时能将底层均匀地涂覆到镀件上,并使之加速,提高了效率。可以调节占空比及频率的脉冲电镀电源。
脉冲电源的工作原理可以通过其输出波形直接反映。一般直流电源的输出波形见图1-1;脉冲电源的输出波形见图1-2。
所谓数字脉冲电源,就是采用微处理器等数字电路对脉冲电源中的直流斩波进行控制,并实现数字显示与数字调节的一种脉冲电源。它是当今最为先进的电镀电源,也是电镀电源发展的方向。它与传统的模拟脉冲电
图1-1 一般电镀电源输出波形 图1-2 脉冲电源输出波形
源相比有以下优点:
l 驱动波形规整,极大的改善了斩波后的输出波形,对提高电镀质量十分有利;
l 采用数字调控,直观简单;
l 波形调节范围宽,调节步进可以至0.1ms;
l 温度漂移系数小,能长期稳定连续运行。
数字脉冲电源一般分为双脉冲电源与单脉冲电源2种。数字单脉冲电源的原理图。如图1-3所示。
图1-3 数字单脉冲电源原理图
在目前的应用中,大多利用大功率的开关管IGBT对直流电源进行斩波,达到脉冲输出的目的。改变IGBT开关管的方波驱动信号,以实际脉宽的可调。
第二章 数字脉冲电源的性能指标与设计要求
§2-1数字脉冲电源的性能指标与设计要求
脉冲电镀实质上是一种通、断直流电镀。所不同的是脉冲电镀有3个独立的参数(脉冲电源密度J、导通时间ton及关断时间toff)可调;而一般直流电镀只有1个参数(电流或电压)可调。因此,采用脉冲电镀就为槽外控制镀层提供了有利的手段。脉冲电镀是一项既能提高镀层质量,又能提高沉积速率的经济效益很高的电镀新技术。图1-2为脉冲电源的电流波形,图中:
ton:脉冲电流导通时间;
toff:脉冲电流断电时间;
T=ton+toff:脉冲周期;
J:电流密度;
Ip:电流峰值。
图1-2 脉冲电源参数图
本数字单脉冲电源的性能与设计要求主要体现再以下一些指标:
l 供电电源:3相,50Hz,380V。
l 输出峰值电流:4~40A,连续可调。
l 输出峰值电压:3~30V,连续可调。
l 脉冲频率:1~10KHz,可调。
l 脉冲占空比:0~100%,可调。
l 脉冲电流导通时间:ton:0.1~999.9ms;脉冲电流断电时间toff:0.1~999.9 ms。
l 电流、电压波形:脉冲,键盘设定。
l 工作方式:恒流/恒压任选。
l 电镀时间可键盘设定,为0~999.9s。
第三章 双CPU系统方案
§ 3-1系统总体方案的思路
由于系统中关键问题是定时:电镀时间的定时及驱动开关管的脉冲定时,而且后者的定时精度直接影响输出脉冲波形的频率精度。同时考虑到系统显示及按键处理的因素,本系统采用了双CPU系统设计构架。
主系统主要负责显示按键管理、电镀时间控制以及余兴中的暂停等控制;从系统主要负责产生开关管的驱动脉冲。数字控制系统的原理可用图3-1表示。
双CPU系统的关键是主、从CPU之间的协调与通信实现。实现的约束是:
(1) 能满足系统的实习性要求,响应及时,并能完成系统的所有设计功能;
(2) 软、硬件实现不能过于复杂。
图3-1双CPU系统原理示意图
§3-2 双CPU系统的若干形式
在单片机应用系统中,双CPU或多CPU系统的建构通常有以下3种形式。
1. 采用双口RAM方式
使用一个CPU有时会导致软件编写复杂,尤其当多个外围芯片发生中断请求时,容易造成数据处理的延误。采用双口RAM和双CPU电路,整个电路分为2大部分,每个CPU编有单独的程序,各管理一部分,这样可减小整个软件编写的难度,增加仪器工作的可靠性。双口RAM产品的型号和规格较多,常用的如IDT7132双口RAM。作为2个CPU交换信息的媒介,主CPU和次CPU均可通过与双口RAM相连的总线对双口RAM进行读/写。由于双口RAM对大多具有双总线,而且具有总线仲裁机构,因此这种方式的特点是硬件简单,但成本相对较高。这种方式的实现原理可用图3-2表示。
图3-2 双口RAM方式双CPU系统
2.采用并口通信方式
采用并口方式的双CPU系统一般有以下2种形式。
(1) 直接连接方式
这种方式是直接将2个CPU通过并行接口连接起来,实现协调与交流。以图3-3为以说明:
图中P34,P35作为握手联络信号。显然这种方式是以牺牲并行接口为代价的。虽然是半双工通信方式,但由于是并行通信方式,速度还是比串口方式要快。在并行接口紧张的应用场合,需要权衡。
(2)间接连接方式
间接连接方式一般是通过并行接口电路来实现的。以图3-4为例加以说明:
这种方式以2片并行接口芯片8155作为双方联系的纽带。由于8155对单片机来说只是一个外围设备,因此,这种方式可以避免总线仲裁等麻烦。
图3-3 直接并行方式
图3-4间接并行方式
烦。只要设定好8155的PA,PB,PC的输入/输出方式,并以其中的若干条口线作为握手联络信号,就可以方便地实现双CPU系统。
3.采用串行通信方式
串行通信方式,即主、从CPU之间通过串行口或模拟串行接口惊醒协调和交流。这种方式的特点是硬件简单,软件实现也很方便;但实时性相对较差,只适用于数据量小的场合。本系统即采用了这种方式。为了弥补纯串行方式的缺陷,本系统在串行通信的基础上,配合以适当的握手联络信号,以克服纯软件握手对驱动脉冲的影响。
第四章系统硬件设计
§4.1 基于89C52的主系统设计
§4-1-1 主系统电路
1.主系统电原理设计
按照设计要求及方案,确定系统的功能模块有显示/按键电路、复位与看门狗电路、主CPU系统、从CPU系统、脉冲驱动放大电路(斩波控制电路)及脉冲电源的其他电路(直流电源、斩波电路及保护环节)等。主系统电原理见图4-1。
2. 主系统分析
(1)复位与看门狗电路
本系统有以下3种情况:上电复位、手动复位、及看门狗定时器溢出复位;采用MAX813L电源监视电路。主CPU、从CPU系统共用复位信号,目的是当系统中的任何一个子系统运行失常时,必须共同复位,以回复待机状态,避免错误运行。对从系统的软件进行适当处理,当从系统工作失常后,也能让主系统感知,然后强制电源监视电路复位,可达到引起复位的目的。这里利用通信握手信号SCOMM。这样当从系统失常、程序“跑飞”时,落入非正常程序区的握手信号始终无效,此时主系统的串行查询程序反复查询,使得“喂狗”信号无法及时送出,从而引起溢出复位。
(2)主CPU系统
主CPU系统主要管理显示电路、按键电路、运行状态控制及向从CPU系统发送脉冲参数等,核心是89C52单片机。其中的PKEY开关为暂停开关,通过P12与单片机接口,暂停时通过P11控制暂停指示灯发光指示。“喂狗”信号由P10输出,其实质是一个负脉冲。主、从CPU系统的握手信号为R/P,SCOMM。其中R/P用来由主CPU控制从CPU的运
图4-1 主系统电原理图
行与暂停;SCOMM信号是从CPU向主CPU指示通信状态的,成功结束有效;否则无效。考虑到主CPU系统对定时的要求不是很高,采用6Mhz主频。
§4-1-2主系统显示电路
显示采用数码管;显示/键盘电路通过8279专用接口芯片与单片机接
口。一共用3组数码管,每组4个数码管。前2个参数的范围为0.1~999.9ms,而后1个参数的范围为0~9999s,符合8279的设计能力。
数码管采用小型超高亮共因数码管。前2个参数采用绿色,后一个参
数的显示采用红色。通过P15引脚向MAX813L发出RSTK1信号,使系统复位,也即停止从CPU的脉冲输出,结束电镀运行。
显示电路中的数码管电路如图3-2所示,单片机的接口电路参见图4-2。
图4-2 数码管电路
§4-1-3 主系统按键电路
键盘设计了10个数字键0~9,3个参数(ton、toff及T) 设置键,与此配套的Enter,CLS“”等键及运行控制键Start。
1. 数字键0~9
用来设置参数。在当前编辑位上输入数字,每按1个数字键,便覆盖原数字。
2. 参数设置键
ON,OFF,T 3键用来选择设置何种参数。设置流程为:按3个中任1个,以选择参数项目;再通过数字键送入第1位(最高位),通过“ ”键切换到下一位;再送入数字,一直到4位数字全部送完,通过回车键Enter确认。前2个参数采用定点数,小数位为一位。在输入过程中,如出现错误,则按CLS键清除该项目,重新输入。当3个参数全部送完,则设置参数不齐备,按此键无效。按键电路如图4-3所示。
图4-3按键电路
§4-2基于89C2051的从系统设计
从CPU系统是基于89C2051单片机的单芯片系统,唯一的任务是产生斩波所需的脉冲信号。电原理图见图1-7虚线框部分。系统主频为12Mhz,其目的是为了保证最小定时0.1ms的需要,在T2定时中断服务程序中完成相应动作。中断服务程序的总的执行时间必须小于0.1ms;否则,会引起失常,出现比较大的脉冲频率误差,甚至不能工作。脉冲PULSE从P16输出,经Q1(9012)小功率三极管驱动后,经光电隔离驱动斩波信号驱动电路。从系统与主系统的串行通信为直接方式,原因是双方均为TTL信号,可以直接交换,无需电平转换。
§4-3斩波脉冲驱动输出电路设计
从系统产生的脉冲信号经高速光耦TIL117光电隔离后,送入驱动放大电路,如图4-4所示。当M1+为低电平时,光耦截止,中功率三极管BG2截止,MZ11与MZ15间无信号输出;当M1+为高电平时,则光耦导电,BG2导通,则MZ11与MZ15间的电平信号约为16V,能满足斩波电路驱动信号的要求。如果调整R16,则可使输出信号在一定范围内具有可调性,以适应不同斩波用开关管的技术要求。实际应用中发现,3端稳压器的输出端不接大容量滤波电容,可以改善波形的边沿特性。
图4-4斩波用脉冲驱动电路
第五章 软件系统
采用双CPU系统结构后,可以使2个CPU各司其职,同时使软件设计的难度也大大降低。
§5.1主系统软件
1. 主系统软件结构
主系统主要由4大功能模块组成:(1)主程序模块;(2)串行通信模块;(3)T2定时中断服务程序;(4)参数编辑模块。4模块的功能分别是:
图5-1主系统主程序框图
l 主程序模块:系统初始化及其他模块的协调与调用;
l 串行通信模块:主要是向从系统发送编辑好的ton,toff及T等参数;
l T2定时中断服务模块:计量电镀时间,即对T参数倒计时处理;
l 参数编辑模块:编辑输入脉冲所需的ton,toff及T等参数。
主程序框架见图5-1所示。
2. 主系统程序及其简要说明如下:
;键值定义
NUM0 EQU 00H
NUM1 EQU 01H
NUM2 EQU 02H
NUM3 EQU 03H
NUM4 EQU 04H
NUM5 EQU 05H
NUM6 EQU 1BH
NUM7 EQU 06H
NUM8 EQU 07H
NUM9 EQU 08H
ON1 EQU 09H
OFF1 EQU 0AH
T1 EQU 0BH
ON2 EQU 0CH
OFF2 EQU 0DH
T2 EQU 0EH
TT EQU 0FH
ENTER EQU 10H
CLS EQU 11H
LEFT EQU 12H
PAUSE EQU 15H
START EQU 16H
UP1 EQU 17H ;数字电位器+1键(预留)
DOWN1 EQU 18H ;数字电位器-1键(预留)
UP2 EQU 19H
DOWN2 EQU 1AH
;8279 地址定义
I8279_CMD EQU 7FFFH
I8279_DATA EQU 7EFFH
;显示数码管个数
DIRN EQU 0CH ;只有12个,但8279方式字必需为16个
;8279 命令字: 左入, N键轮回,16 数码管
KMD EQU 08H ;0AH也可
;****** 片内RAM分配 ********
DISPBUF EQU 50H ;显示缓充区首址(50H~5FH,共16字节)
KEYBUF EQU 4FH ;键值缓冲单元
;光标位置序号暂存
CURSOR EQU 4EH
;本次编辑项显示首址暂存单元
FIRST EQU 4DH
;ON时间(已转换成0.1MS的个数)暂存单元
ON EQU 4BH ;4BH,4CH(从高到低)
;OFF时间
OFF EQU 49H ;49H,4AH
;总的工作时间(单位为:秒)
WT EQU 47H ;47H,48H(从高到低):S
;工作参数备份区
ONBF EQU 45H ;45H,46H
OFFBF EQU 43H ;43H,44H
WTBF EQU 41H ;41H,42H
;十进制加减工作区(被减数,或被加数单元)
BCDJJ EQU 3FH ;3FH,40H
;T0中断次数累计单元
T0_COUNT EQU 3DH ;中断10为1S(10*0.1=1S)
;位标志定义
ISON1 BIT 01H ;正在编辑ON1标志
ISOFF1 BIT 02H ;正在编辑OFF1标志
ISTT BIT 03H ;指示编辑TT标志
CSOK BIT 04H ;参数输入完成标志
CSON1 BIT 05H ;参数ON1被编辑过标志(只要编辑过即为真)
CSOFF1 BIT 06H
CSTT BIT 07H
CSW1 BIT 08H ;参数位1已编辑标志(即已输入过数字)
CSW2 BIT 09H
CSW3 BIT 0AH
CSW4 BIT 0BH
DP BIT 0CH ;参数中是否要小数点标志
ISOVER BIT 0DH ;工作结束标志(设定时间到了)
CSX BIT 0EH ;参数项标志,=1,为ON参数(T1中断用)
PAUSE_FLAG BIT 0FH ;暂停键标志.=1,说明已按过暂停键
TTFLAG BIT 04H ;工作时间已设定过标志
;参数编辑项数标志单元
CSXS EQU 23H ;如果>=3,说明三个参数已都编辑过
;项目内参数编辑位数计数单元
XNGS EQU 24H
;显示缓冲区的备份
DISPBF EQU 0A0H
;数字电位器控制端定义
CS BIT P3.0
INC1 BIT P3.4
UD BIT P3.5
;各显示指示等控制脚定义
ON_RUN BIT P3.1 ;高电平关(运行指示)
PAUSING BIT P1.7 ;高电平关(暂停指示)
RP BIT P1.6 ;运行/暂停状态线
ISEND BIT P1.5 ;结束状态线
SCOMM BIT P1.4 ;通讯状态线(=0,说明正常)
;
PAU BIT P1.2 ;=0,暂停
;
ORG 0000H
SJMP MAIN
ORG 002BH
LJMP INT_T2
ORG 0030H
MAIN: MOV SP, #60H ;堆栈指针初始化
MOV R6, #40H
LCALL DELAY ;延时,以等待8279复位完成
LCALL INIT8279
CLR CSOK ;清除参数输入完成标志
CLR CSXS ;清参数项数单元
CLR CSON1 ;清各参数项已编辑标志
CLR CSOFF1
CLR CSTT
CLR CSW1 ;当前参数项内各数位标志被清除
CLR CSW2
CLR CSW3
CLR CSW4
CLR TTFLAG
MOV R0, #DISPBUF;"P"的代码写入首位,以显示开机符"P"
MOV A, #0AH ;"P"的代码
MOV @R0, A
MOV A, #0CH ;熄灭的代码
INC R0 ;显缓的余下部分清0(即熄灭)
MOV R6, #0FH ;还共15个(实际只要11个)
MAIN_00: MOV @R0, A
INC R0
DJNZ R6, MAIN_00
MAIN_0: LCALL DISPLAY ;显示
LCALL READKEY ;等待按键并读键
MOV KEYBUF, A ;将键值暂存
CJNE A, #ON1, MAIN_1 ;判是否是ON1键?
SETB ISON1 ;YES,则设置参数项标志后转参数编辑模块
CLR ISOFF1 ;此时,余下两参数项标志被清除
CLR ISTT
CLR CSW1 ;如果此参数还未完成,则清参数4位
CLR CSW2 ;未编辑标志
CLR CSW3
CLR CSW4
CLR CSON1 ;清参数项被编辑过标志
SETB DP ;要小数点
LCALL EDIT ;完成相应参数的编辑(回车键返回)
JNC MAIN_0 ;C=0,说明此参数项未被编辑
SETB CSON1 ;C=1,说明参数项被编辑过,设置标志
SJMP MAIN_0
MAIN_1: CJNE A, #OFF1, MAIN_2 ;NO,则继续判是否是OFF1键
SETB ISOFF1
CLR ISON1
CLR ISTT
CLR CSW1
CLR CSW2
CLR CSW3
CLR CSW4
CLR CSOFF1
SETB DP ;要小数点
MAIN_10: LCALL EDIT
JNC MAIN_0
SETB CSOFF1
SJMP MAIN_0
MAIN_2: CJNE A, #TT, MAIN_3
SETB ISTT
CLR ON1
CLR ISOFF1
CLR CSW1
CLR CSW2
CLR CSW3
CLR CSW4
CLR CSTT
CLR DP ;不要小数点
MAIN_20: LCALL EDIT
JNC MAIN_0 ;C=0,则不设置CSTT标志
SETB CSTT ;C=1,则设置CSTT标志
SJMP MAIN_0
MAIN_3: CJNE A, #START, MAIN_0 ;其它键忽略
MAIN_30: MOV C, CSON1 ;运行键处理
ANL C, CSOFF1
ANL C, CSTT ;1*1*1=1(否则为0)
JC MAIN_4 ;三个参数均已被编辑过,说明参数已完成
LJMP MAIN_0 ;否则,说明还有参数未被输入,则继续等待
MAIN_4: LCALL INVERT ;参数转换并送存相应单元,及备份单元
LCALL FS_CPU3 ;参数ON,OFF发送
JNC MAIN_40 ;通讯不正常,则等待再次按开始键发送
LCALL RUN ;正常,则运行(开始计时)
MAIN_40: LJMP MAIN_0 ;运行完成等待下次运行(参数保留)*软复位
;*************************************************************************
;参数编辑输入:EDIT
;说明: 根据相应标志,编辑输入参数,回车键结束;
; 清除键整个项清除;
; 光标->键可循环在项目间移动,对应位置为编辑位置;
; 小数点位置固定
;返回: C=0,说明参数未编辑
; C=1,说明参数被编辑过
;*************************************************************************
EDIT: JNB ISON1, EDIT_1 ;要编辑的是ON参数项? NO,则转
MOV R0, #DISPBUF ;YES,则ON1参数对应显示缓冲单元首址
MOV FIRST, #DISPBUF ;首地址送存FIRST单元以备后
SJMP EDIT_4
EDIT_1: JNB ISOFF1, EDIT_2 ;编辑OFF参数项? NO,则转
MOV R0, #DISPBUF+4 ;YES,OFF1对应显示缓冲单元首址
MOV FIRST, #DISPBUF+4
SJMP EDIT_4
EDIT_2: JNB ISTT, EDIT_3
MOV R0, #DISPBUF+8 ;TT参数对应显示缓冲单元首址
MOV FIRST, #DISPBUF+8
SJMP EDIT_4
EDIT_3: CLR C ;清标志C(实际上不可能会执行到此)
RET ;标志不对,直接返回(不设置参数完成标志)
EDIT_4: MOV CURSOR, #00H ;光标在第一位(原始位置)
MOV A, #14H ;"_"的代码
MOV @R0, A
INC R0 ;第2位为灭
CLR A
EDIT_41: MOV @R0, A
INC R0
MOV @R0, A ;第3位灭
INC R0 ;第4位为灭
MOV @R0, A
EDIT_42: LCALL DISPLAY ;显示
LCALL READKEY ;等待按键
CJNE A, #NUM0, EDIT_43
LCALL NUMKEY0 ;如为数字键0,则调用数字键处理
SJMP EDIT_42
EDIT_43: CJNE A, #NUM1, EDIT_44
LCALL NUMKEY1
SJMP EDIT_42
EDIT_44: CJNE A, #NUM2, EDIT_45
LCALL NUMKEY2
SJMP EDIT_42
EDIT_45: CJNE A, #NUM3, EDIT_46
LCALL NUMKEY3
SJMP EDIT_42
EDIT_46: CJNE A, #NUM4, EDIT_47
LCALL NUMKEY4
SJMP EDIT_42
EDIT_47: CJNE A, #NUM5, EDIT_48
LCALL NUMKEY5
SJMP EDIT_42
EDIT_48: CJNE A, #NUM6, EDIT_49
LCALL NUMKEY6
SJMP EDIT_42
EDIT_49: CJNE A, #NUM7, EDIT_4A
LCALL NUMKEY7
SJMP EDIT_42
EDIT_4A: CJNE A, #NUM8, EDIT_4B
LCALL NUMKEY8
SJMP EDIT_42
EDIT_4B: CJNE A, #NUM9, EDIT_4C
LCALL NUMKEY9
SJMP EDIT_42
EDIT_4C: CJNE A, #LEFT, EDIT_4D
MOV A, CURSOR ;光标左移键处理
CJNE A, #00H, EDIT_4C1;判当前光标是否在第一位
JNB CSW1, EDIT_42 ;YES,判参数位1是否已输入数字.NO,不理睬
MOV CURSOR, #01H
MOV A, FIRST ;首址
ADD A, CURSOR ;加新光标位置序号=新光标显示缓冲单元
MOV R0, A
MOV A, #14H ;"_"光标字符代码
MOV @R0, A ;送存相应显示缓冲单元
LJMP EDIT_42 ;继续显示判键
EDIT_4C1: CJNE A, #01H, EDIT_4C2
JNB CSW2, EDIT_42 ;判参数位2是否已输入数字.NO,则不理睬
MOV CURSOR, #02H
MOV A, FIRST ;首址
ADD A, CURSOR ;加新光标位置序号=新光标显示缓冲单元
MOV R0, A
MOV A, #14H ;"_"光标字符代码
MOV @R0, A ;送存相应显示缓冲单元
LJMP EDIT_42 ;继续显示判键
EDIT_4C2: CJNE A, #02H, EDIT_4C3
JNB CSW3, EDIT_4C23 ;判参数位3是否已输入数字.NO,则不理睬
SJMP EDIT_4C20
EDIT_4C23: LJMP EDIT_42
EDIT_4C20: MOV CURSOR, #03H
MOV A, FIRST ;首址
ADD A, CURSOR ;加新光标位置序号=新光标显示缓冲单元
MOV R0, A
EDIT_4C21: MOV A, #14H ;送"_"的代码
EDIT_4C22: MOV @R0, A ;送存相应显示缓冲单元
LJMP EDIT_42 ;继续显示判键
EDIT_4C3: LJMP
展开阅读全文