变频电源设计.docx
《变频电源设计.docx》由会员分享,可在线阅读,更多相关《变频电源设计.docx(28页珍藏版)》请在冰豆网上搜索。
变频电源设计
摘要
本设计主要以AT89C51单片机系统为核心,实现了对交流工频电压进行整流、逆变后输出频率可调,电压稳定的三相对称正弦波交流电。
在设计中运用了全控型电力电子器件和SPWM(正弦波脉宽调制)技术,有效改善电路中的谐波、提高逆变器功率因数、提高系统的动态响应速度。
电路采用模块化设计,有利于升级和扩展。
一、方案选择与论证
本系统要求设计并制作一个三相正弦变频电源,输出线电压有效值维持在36V,输出频率在20Hz~100Hz连续可调,根据题目要求,我们提出以下三种方案。
方案一:
利用DDS实现变频电源,与传统的变频电源所不同的是:
DDS技术实现变频电源不须经过整流和逆变,输出频率精度较高还可大大节省硬件电路。
但使用DDS芯片设计受功率限制且不符合题目设计框图要求,故不予采用
方案二:
采用单相桥式整流电路完成交流电变换成直流电任务。
桥式整流电路优点是输出电压高,纹波电压较小,整流管所承受的最大反向电压较低,效率较高。
逆变电路脉宽调制采用数字分频器、EPROM、D/A等器件实现。
其结构框图如图1所示,EPROM事先存储离线算好的正弦波表供脉宽调制查询使用,改变正弦波扫描频率,即可实现不同的正弦波频率输出。
该方案虽可实现基本要求但电路过于复杂,输出电压不稳定,而且不利于人机交换。
图1.
方案三:
整流电路同方案二,逆变电路采用全控型电力电子器件,控制电路使用AT89C51单片机。
使用全控型器件可使逆变器主电路结构简单,而且控制和驱动灵活可靠、有效改善电路中的谐波和功率因数、提高系统的动态响应速度。
考虑到全控型器件的动静态特性和安全性,我们采用智能功率模块IPM。
IPM即IntelligentPowerModule(智能功率模块)的缩写,是以IGBT为功率器件的新型模块。
这种功率模块是将输出功率元件IGBT和驱动电路、多种保护电路集成在同一模块内,与普通IGBT相比,在系统性能和可靠性上有进一步的提高,而且由于IPM通态损耗和开关损耗都比较低,使散热器的尺寸减小,故使整个系统尺寸减小。
由一片单片机实现脉宽调制,控制功率器件的导通和关断以及频率设定。
另一片单片机实现电压电流频率功率检测和相应的保护以及人机交换。
这种方案由于采用单片机技术,使得其具有智能化的特点,简化了硬件电路,有效提高测量精度,同时也有利用软件对系统误差进行补偿。
电路原理框图如图2示。
分析以上三种方案的优缺点,显然第三种方案具有更大的优越性、灵活性,故我们采用第三种方案。
二、单元电路分析与计算
如图2所示,系统主电路主要由整流、逆变、控制三部分构成。
图2.
1.整流电路
整流电路依靠二极管的单向导电性完成将交流电变换成直流电。
由桥式整流电路分析可知:
输出端负载电压为0.9倍的变压器二次侧电压,即UL=0.9U2。
由纹波系数计算公式:
可知桥式整流电路纹波系数较小,但UL中存在一定的纹波,故需要滤波电路来滤除纹波,我们选用C型滤波电路。
整流桥选用整流桥堆,滤波电容选用耐压耐流较高的电解电容。
为改善电容滤波输出特性较差的缺点,可选用两极电容滤波。
电路图见图3。
图3.主回路电路图
2.逆变电路
逆变电路用三相桥式电压型逆变电路,选用全控型器件IGBT,采用正弦波脉宽调制技术(SPWM)调节输出电压。
输出频率和电压的调节均由逆变器完成。
SPWM技术是采用等腰三角波作为载波信号,正弦波作为调制信号,通过正弦波电压与三角波电压信号相比较的方法,确定各个分段矩形脉冲的宽度。
用正弦波电压信号作为调制信号时,可获得脉宽正比于正弦值的矩形脉冲列。
SPWM主要由单片机通过软件生成SPWM波。
单片机通过改变输出口的状态,
改变开关模式和时间基数来驱动逆变器动作,就可得到相应的SPWM波。
具体操作见软件说明。
3.控制电路
控制电路主要由单片机和检测电路构成。
一个单片机控制IGBT触发和关断,使输出为三相对称交流电。
改变输出状态,改变输出电压频率。
另一个单片机完成频率设定同时完成对输出三相交流电的频率,电流测量。
频率检测电路通过交流电流互感器得到小信号交流电然后经过阻容滤波后得到与原信号同频率的信号,再经过过零比较器后输出为规则变化的高低电平,即一个周期有两个电平变化信号,这些信号可以为单片机所识别。
单片机通过检测即可测的对应频率。
交流电流检测也是通过交流电流互感器得到幅值较小的电压信号,通过整流滤波后,得到直流电压信号。
直流电压信号通过A/D转换进入单片机进行数据处理后可得与原电流成比例的数字量。
检测和控制电路如图4所示。
图4.1频率检测电路
图4.2电流检测电路
三、软件的设计说明
本系统采用双CPU工作,一个CPU作为控制器,控制整个系统的运行,另一个CPU用于产生SPWM波形,用于驱动IGBT工作,实现逆变,该CPU受控制器的控制。
图5.系统控制电路图
1、控制程序设计
控制程序控制按键、显示等功能,程序代码如下:
D8279EQU7FFEH;;定义A0=0地址
AD8279EQU7FFFH;定义A0=1地址v.
EOCBITP2.0
CLKBITP2.1
ADBITP2.2
DOBITP2.3
CSBITP2.4
ORG0000H
LJMPMAIN;主程序
ORG0003H
LJMPINT0
ORG0013H
LJMPINT1;按键中断程序入口
;*****************************************************************;
;主程序
;?
***************************************************************;
ORG0030H
MAIN:
MOVSP,#55H;注意SP地址不能冲突
MOVTCON,#01H;外部中断0为边沿触发
MOVTMOD,#01H
MOVTH0,#00H
MOVTL0,#00H
MOVP1,#50
MOV30H,#00H;初始显示全部为0
MOV31H,#00H
MOV32H,#00H
MOV33H,#00H
MOV34H,#00H
MOV35H,#00H
MOV36H,#00H
MOV37H,#00H
CLR4FH;判断是否按下频率设置键的标志位
CLR2FH
SETBEA
SETBEX1
SETB20H;默认显示电压和电流
MOV21H,#80H
MOVDPTR,#AD8279;A0=1写入命令0
MOVA,#0000H;从左边进入,2键互锁。
MOVX@DPTR,A
MOVA,#0D1H
MOVX@DPTR,A
;MOVR1,#08H
WAIT:
MOVXA,@DPTR
JBACC.7,WAIT;判断是否写入完毕
MOVA,#34H;写入命令1,CLK=2MHZ,N=20
MOVX@DPTR,A;,内部工作频率为100khz
MOVA,#90H;写显示RAM命令4,AI=1,RAM?
地址自动加一
LCALLDISP;调用显示程序
LOOP:
MOVA,21H
JNBACC.7,KEY;acc.7作为标志位
JNB2FH,LOOP
;LCALLSTART;采集数据
;LCALLWORK;对数据进行处理
;LCALLNEXT2
LJMPLOOP
KEY:
MOV21H,#80H;判断键码
JB4FH,GO1
LJMPGO2
GO1:
MOV@R0,A
INCR0
GO2:
MOVB,#03H
MOVDPTR,#FUN
CLRC
MULAB
JMP@A+DPTR
RET
;***********************************************************
;按键中断处理程序
;***********************************************************
INT1:
PUSHPSW
PUSHACC
PUSHDPH
PUSHDPL
MOVDPTR,#AD8279;写入命令2,读取FIFO/SENSORRAM
MOVA,#50H
MOVX@DPTR,A
MOVDPTR,#D8279;读取FIFO/SENSORRAM
MOVXA,@DPTR
MOV21H,A;定义20H为键盘扫描内容的缓冲区
POPDPL
POPDPH
POPACC
POPPSW
RETI
;****************************************************************
;分散转移处理程序
;**************************************************************
FUN:
LJMPLOOP
LJMPLOOP
LJMPLOOP
LJMPLOOP
LJMPLOOP
LJMPLOOP
LJMPLOOP
LJMPLOOP
LJMPLOOP
LJMPLOOP;
LJMPKEY10
LJMPKEY11
LJMPKEY12
LJMPKEY13
LJMPKEY14
LJMPKEY15
RET
;************************************************************
;各个键的功能程序
;************************************************************
;前10个键为10个数字按键
;***************************************************************
;第11个键设置频率键
KEY10:
SETB4FH
MOVR4,#3
MOVR0,#30H;注意数据的顺序
LJMPLOOP
;第12键设置确定键
KEY11:
MOV33H,#0EH
LCALLDISP
CLR4FH
MOVA,30H
MOVB,#100
MULAB
MOV30H,A
MOVA,31H
MOVB,#10
MULAB
ADDA,30H
ADDA,32H
MOVP1,A
CLRP2.5;频率发送信号
NOP
NOP
NOP
SETBP2.5
LJMPLOOP
;第13键开始键
KEY12:
CLRP2.6;启停控制位
SETB2FH
LJMPLOOP
;停止键
KEY13:
SETBP2.6
MOV30H,#00H;初始显示全部为0
MOV31H,#00H
MOV32H,#00H
MOV33H,#00H
MOV34H,#00H
MOV35H,#00H
MOV36H,#00H
MOV37H,#00H
LCALLDISP
LJMPLOOP
;显示电流、电压键;显示功率、频率键切换键
KEY14:
CPL20H
LCALLDISP
KEY15:
LJMPLOOP
;**************************************************************
;显示程序
;*************************************************************
DISP:
MOVDPTR,#D8279;写显示RAM
MOVR3,#08H
JNB20H,L1
MOVR0,#30H
LJMPDIS
L1:
MOVR0,#70H
DIS:
MOVA,@R0
MOVDPTR,#TAB
MOVCA,@A+DPTR
JB4FH,L2
CJNER0,#30H,L2;此处加小数点,使用时应注意
CLRC
ADDA,#80H
L2:
MOVDPTR,#D8279;写显示RAM
MOVX@DPTR,A
INCR0
DJNZR3,DIS
RET
TAB:
DB3FH06H5BH4FH66H6DH7DH
DB07H7FH6FH77H71H40H00H76H
;采集子程序
START:
MOVR0,#40H
MOVR1,#00H
MOVR4,#3
START1:
MOVP2,#19H;初始化P1口
MOVPSW,#00H;消除状态寄存器
MOVA,R1;;读下一次转换地址到A
SWAPA;取4位地址
SETBCS
CLRCS;;置cs为低,选中TIC1543
LCALLDATA_IN;;调用转换子程序
MOVR2,A;;转换结果的低8字节放入寄存器R2
MOVA,R3;;读转换结果的高8字节到A
RLA;取高两位
RLA
ANLA,#03H
MOVR3,A;;转换结果的高2位防入R3
MOVA,R2
MOV@R0,A
INCR0
MOVA,R3
MOV@R0,A
INCR0
JNBEOC,$
;INCR1
;DJNZR4,START1
MOVR5,#010H;***********
LOOP4:
MOVR6,#0AAH
LOOP3:
LCALLDISP
DJNZR6,LOOP3
DJNZR5,LOOP4;*******************
RET
;”子程序””
DATA_IN:
MOVR5,#10;将I/OCLOCK脉冲数送入R5
CLRCLK
LOOP1:
NOP;;调延时于程序
MOVC,DO;读转换数据到c
RLCA;将地址最低位移入C中
MOVAD,C;写入通道地址
SETBCLK;置IOCLOCK为高
NOP
CLRCLK;置IOCLoCK为低
CJNER5,#03H,LOOP2;判断8个数据是否送完?
未完,则跳转
MOVR3,A;将转换结果高8位存入R3
LOOP2:
DJNZR5,LOOP1;10个脉冲是否结束?
没有刚跳转
RET
;检测电流0——4A对应的数字量是0——1023;右移8位即得到相应的电流示值
WORK:
MOVR0,#40H
MOVR1,#42H
MOVR3,#2
LCALLMSUB
JB07H,ERROR
MOVR0,#40H
MOVR1,#40H
MOVR3,#2
LCALLMSUB
JB07H,ERROR
MOVR0,#42H
MOVR1,#44H
MOVR3,#2
LCALLMSUB
JB07H,ERROR
MOVR0,#40H
MOVR3,#03H
MOVR4,#9AH
MOVA,@R0
SUBBA,R3
INCR0
MOVA,@R0
SUBBA,R4
JNCERROR;电流大于3.6V
ERROR:
CLRP3.5
MOV30H,#00H;初始显示全部为0
MOV31H,#00H
MOV32H,#00H
MOV33H,#00H
MOV34H,#00H
MOV35H,#00H
MOV36H,#00H
MOV37H,#00H
LCALLDISP
LJMPMAIN
NEXT2:
MOVA,#03H
ANLA,41H
MOV30H,#0
MOV30H,A;高2位为整数
MOVA,40H
MOVB,#10
MULAB
MOV40H,A
MOV31H,B
MOVB,#10
MULAB
MOV32H,B
MOV40H,A
MOVB,#10
MULAB
MOV32H,B
MOV33H,#10
LCALLDISP
RET
;电流最大可显示4V,可以将数字量右移8为即得到显示值,因此高2
MSUB:
;MOVA,49H;;;;;;;;;;;;;;;;;;;
;JZNSUB1;;;;;;;;;;;;;;;;;;;
;DEC49H;;;;;;;;;;;;;;;;;;;
;RET
NSUB1:
CLR07H
MOVA,R0
MOVR2,A
MOVA,R3
MOVR7,A
MOVA,R1
MOVR4,A
CLRC
LP0:
MOVA,@R0
SUBBA,@R1
MOVR5,A
INCR0
INCR1
MOVA,@R0
SUBBA,@R1
MOVR6,A
JNCLP1
MOVA,R3
MOVR7,A
MOVA,R2
MOVR0,A
MOVA,R4
MOVR1,A
CLRC
LP2:
MOVA,@R0
SUBBA,@R1
MOVR5,A
INCR0
INCR1
MOVA,@R0
SUBBA,@R1
MOVR6,A
LP1:
MOVA,R6
JZNEXTI
SETB07H;大于128
NEXTI:
MOVA,R5
CJNEA,#250,NEXTJ;;;;;;;;;;;;;;;;;;
NEXTJ:
JCBACK
SETB07H
BACK:
RET
INT0:
PUSHPSW
PUSHACC
SETBRS0
CPLTR0
JBTR0,SET1
MOVR2,#00;计算频率
MOVR3,#0FH
MOVR4,#42H
MOVR5,#40H
MOVR6,TH0
MOVR7,TL0
LCALLDIVD;调用双字节除法
MOVA,R3
MOVB,#100
DIVAB
MOV70H,A;频率存放于40H、41H、42H中
MOVB,#10
DIVAB
MOV71H,A
MOV72H,B
LJMPTT1
SET1:
MOVTH0,#00H
MOVTL0,#00H
TT1:
POPACC
POPPSW
RETI
;(7)标号:
DIVD功能:
双字节二进制无符号数除法
;入口条件:
被除数在R2、R3、R4、R5中,除数在R6、R7中。
;出口信息:
OV=0时,双字节商在R2、R3中,OV=1时溢出。
;影响资源:
PSW、A、B、R1~R7堆栈需求:
2字节
DIVD:
CLRC;;比较被除数和除数
MOVA,R3
SUBBA,R7
MOVA,R2
SUBBA,R6
JCDVD1
SETBOV;;溢出
RET
DVD1:
MOVB,#10H;;计算双字节商
DVD2:
CLRC;;部分商和余数同时左移一位
MOVA,R5
RLCA
MOVR5,A
MOVA,R4
RLCA
MOVR4,A
MOVA,R3
RLCA
MOVR3,A
XCHA,R2
RLCA
XCHA,R2
MOVF0,C;;保存溢出位
CLRC
SUBBA,R7;;计算(R2R3-R6R7)
MOVR1,A
MOVA,R2
SUBBA,R6
ANLC,/F0;;结果判断
JCDVD3
MOVR2,A;;够减,存放新的余数
MOVA,R1
MOVR3,A
INCR5;;商的低位置一
DVD3:
DJNZB,DVD2;;计算完十六位商(R4R5)
MOVA,R4;;将商移到R2R3中
MOVR2,A
MOVA,R5
MOVR3,A
CLROV;;设立成功标志
RET
END
2.SPWM的程序设计
本系统SPWM波形的产生利用表格法:
在EPROM中存放两张表格,一张
是存放正弦波一个周期里每一个小区间的开关模式和时间基数,从存储器的高地址到低地址依次存放,共240个单元,另一张表格是频调整数据表,用以按给定频率值来调整第四个小区间的维持时间,以保证输出频率的正确。
CPU依次从表中取出开关模式和时间基数,并用软件生成两个开关模式间的死区时间。
程序
流程图如图6所示。
先发送死区模式(死区时间为4us)再发送开关模式,而后查的时间基数存寄存器,采用软件延市时来实现开关模式的维持时间。
每4个小区模式发送完后,采样一次给定频率,并查表得出频率调整数据,采用软件延时进行频率调整。
考虑到输出电压的恒定,用软件实现占空比不变的触发脉冲。
程序流程图如图6所示。
图6.SPWM程序流程图
源代码如下:
START:
MOVR2,#0H
MOVR7,#04H;4小区
MOVDPTR,#10F0H
L0:
CLRA
MOVCA,@A+DPTR;查得模式
XCHA,R2
ANLA,R2
MOVR1,A;死区
DECDPL
CLRA
MOVCA,@A+DPTR;查得时间基数m
MOVP1,R1;发死区模式
MOVR3,A
MOVP1,R2;发小区开关模式
L1:
DJNZR3,L1;2mT
MOVR5,#60;+++++++++++++
L11:
DJNZR5,L11
DJNZR7,L4;2T
PUSHDPH
PUSHDPL
;MOVDPTR,#7FFFH;启动ADC0809
;MOVX@DPTR,A
NOP
NOP
NOP
NOP
;MOVR7,#18H
L2:
;DJNZR7,L2
;MOVR7,#04H;4个小区
;MOVXA,@DPTR
;MOVDPTR,#1100H;查得频率调整时间n
;MOVCA,@A+DPTR
;MOVR4,A
;MOVR4,#255
L3:
;DJNZR4,L3
POPDPL
POPDPH
L4:
DJNZDPL,L5
MOVDPTR,#10F0H
AJMPL0
L5:
NOP
NOP
AJMPL0
ORG1001H
DB01H2AH27H29H05H19H0DH15H
DB02H2AH21H29H0FH19H08H15H
DB05H2AH18H29H18H19H05H15H
DB08H2AH0FH29H21H19H02H15H
DB0DH2AH05