开关稳压电源
摘要:本设计的开关电源由隔离变压器、整流滤波和DC—DC变换网络组成。设计的关键是DC~DC变换器,它包含了开关电源中的开关器件、储能器件、脉冲变压器、滤波器、输出整流器等所有功率器件和控制模块,而控制模块的设计又是DC/DC的核心,我们使用PWM调制的专用芯片UC3842来实现DC/DC变换的控制模块。芯片内部集成了振荡器(由外接电阻电容来决定频率),误差比较器,PWM调制器等,有保护电路和驱动电路。为达到电源数字化,显示实时电压值和使用按键步进输出电压值,采用了单片机AT89S52控制UC3842开关电源模块的方法来实现。
关键字:整流滤波 PWM调制 boost升压 DC-DC变换器
一、 引言
电源是所有用电设备的心脏.为设备提供动力。而直流开关电源是各种电源中应用范围最广和市场最大的一种,包括AC/DC和DC/DC。直流开关电源经过几十年的发展,集中了许多高新技术,包括新型功率半导体器件、软开关技术、功率因数校正技术、同步整流技术、智能化技术、表面安装技术,已经形成了具有高工作频率、高效率、高功率密度、高可靠性等特征的现代直流开关电源。
1.1 基本要求
在电阻负载条件下,使电源满足下述要求:
(1)输出电压UO可调范围:30V~36V;
(2)最大输出电流IOmax:2A;
(3)U2从15V变到21V时,电压调整率SU≤2%(IO=2A);
(4)IO从0变到2A时,负载调整率SI≤5%(U2=18V);
(5)输出噪声纹波电压峰-峰值UOPP≤1V(U2=18V,UO=36V,IO=2A);
(6)DC-DC变换器的效率≥70%(U2=18V,UO=36V,IO=2A);
(7)具有过流保护功能,动作电流IO(th)=2.5±0.2A;
1.2发挥部分
(1)进一步提高电压调整率,使SU≤0.2%(IO=2A);
(2)进一步提高负载调整率,使SI≤0.5%(U2=18V);
(4)进一步提高效率,使≥85%(U2=18V,UO=36V,IO=2A);
(5)排除过流故障后,电源能自动恢复为正常状态;
(6)能对输出电压进行键盘设定和步进调整,步进值1V,同时具有输出电压、电流的测量和数字显示功能。
(7)其他。
二、系统设计
2.1方案选择
方案一:
单片机来实现整个系统的控制。布线简单,硬件设计节省时间;控制软件编程工作量大、难度大;所有的控制都由单片机来实现,对单片机的硬件资源要求很高,这是单片机难于实现的。
方案二:
DC-DC主回路拓扑采用BOOST型DC-DC升压方式,如图1。使用单开关管,能降低开关管损耗,且控制容易,电路较为简洁,但在功率较高的情况下,电感设计要求较高,经验成分多,设计不好会造成过大的冲击电流,影响效率也容易使开关管损坏。采用集成的开关电源控制芯片UC3842,外围器件少,PWM波形精确,性能良好。
图1 BOOST升压电路
综合考虑,UC3842 是高性能固定频率电流模式控制器,专为离线和直流至直流变化器应用而设计,可具有可微调的振荡器、能进行精确地占空比控制、高增益误差放大器,扩展能力强,与单片机搭配,对系统的控制更为方便。故本次设计我们选用方案二。
三 系统硬件电路设计
3.1系统整体框图
整体电路图如图2所示,电路图由三部分组成
(1)启动电路,即降压整流滤波电路,这部分主要是得到DC-DC的输入电压和为UC3842提供驱动电压。
(2)PWM脉冲控制驱动电路,它的主体是一个UC3842芯片,以及它的外围电路组成。用它的⑥脚的输出脉冲控制MOS管的工作,并且它自带保护脚③,很简单方便。
(3)输出部分,它是由一个升压直流斩波电路构成,结构原路简单。
图2 系统整体框图
3.2启动电路
启动电路图如图3,输入的220V交流电经过桥式整流以及C1C2滤波过后变成脉动的直流电压,此电压经通过电阻R2分压给UC3842提供启动电压,当电压达到16v时达到芯片的启动电压,UC3842开始工作并提供驱动脉冲, UC3842的启动电压大于16 V,启动电流仅1 mA即可进入工作状态。处于正常工作状态时,工作电压在10~34 V之间,负载电流为15 mA。超出此限制,开关电源呈欠电压或过电压保护状态,无驱动脉冲输出。
图3 整流滤波电路
3.3 PWM脉冲控制驱动电路
PWM脉冲控制驱动电路如图4所示,UC3842误差放大器的输出端脚l与反相输入端脚2之间外接补偿网络R3、C2。 R3、C2的取值取决于UC3842环路电压增益、额定输出电流和输出电容,通过改变R3、C2的值可改变放大器闭环增益和频响。为使环路得到最佳补偿,可测试环路的稳定度,测量I0脉动时输出电压V0的瞬态响应来加以判断。当UC3842的脚③电压升高超过1V或脚1电压降到1V以下,都可使PWM比较器输出高电平,造成PWM锁存器复位。根据UC3842关闭特性,可以很容易在电路中设置过压保护和过流保护。本电路中R5上感应出的峰值电流形成逐个脉冲限流电路,当脚③达到1V时就会出现限流现象,所以,整个电路中的电感磁性元件和功率开关管不必设计较大的余量,就能保证稳压电路工作可靠,降低成本。
作为开关器件使用的晶体管, 除了要具有放大特性以外, 更重要的是应具有开关快速和输出功率大等优点。可选用IRF540N型开关管,完全可以满足要求。
图4 PWM脉冲控制驱动电路
3.4 电路输出部分的设计
根据设计要求,输出电路部分采用升压式斩波电路。这一部分电路由电感、续流二级管、电容及负载电阻组成。如图5所示:
图5 电路输出部分电路图
3.5 单片机控制UC3842开关电源模块的结构设计
开关稳压电源在长期工作中,分立元件(电阻、电容等)容易受温度等因素的影响而使自身参数发生改变,继而使输出电压漂移,偏离设定的电压值,用单片机系统构成的外部反馈正好可以弥补电压漂移这一缺点。图6是单片机控制UC3842开关电源模块的原理框图:AT单片机通过AT89S51模数转换芯片接收UC3842开关电源的输出信号,通过单片机内部计算后得出的电压误差结果再通过DAC0832数模转换芯片转换成模拟电压反馈到UC3842开关电源模块的Feedback 端进输出电压的调整,重复整个过程至此电压稳定在预定的输出结果上,最终输出电压结果通过单片机控制液晶显示器(LCD)显示出来。
图6 单片机控制UC3842开关电源模块的原理框图
在电压的调整过程中,当出现输出电流过大时,过流信号传至单片机的INT0中断口,由单片机调用中断程序,通过P3.6口控制稳压电源中的继电器工作,起到过流保护稳压电源的作用。
3.6 重要元器件的参数计算
3.6.1 斩波电路各元器件选择
(1)储能电感L
根据输入电压和输出电压确定最大占空比。由式(4-4)得
(4-13)
当输出最大负载时至少应满足电路工作在CCM模式下,即必须满足式(9)。
uH (4-14)
同时考虑在10%额定负载以上电流连续的情况,实际设计时可以假设电路在额定输出时,电感纹波电流为平均电流的20%~30%,因增加△IL可以减小电感L,但为不增加输出纹波电压而须增大输出电容C2,取30%为平衡点,即
(4-15)
由(4-7)和(4-15)可得
(4-16)
L可选用电感量为180~300μH且通过5A以上电流不会饱和的电感器。电感的设计包括磁芯材料、尺寸、型号选择及绕组匝数计算、线径选用等。电路工作时重要的是避免电感饱和、温升过高。磁芯和线径的选择对电感性能和温升影响很大,材质好的磁芯如环形铁粉磁芯,承受峰值电流能力较强,EMI低。而选用线径大的导线绕制电感,能有效降低电感的温升。
(2)输出二极管D和输出电容器C的选择
升压电路中输出二极管D必须承受和输出电压值相等的反向电压,并传导负载所需的最大电流。二极管的峰值电流Id(max)=ILP=5.11A,本电路可选用6A/50V以上的快恢复二极管,若采用正向压降低的肖特基二极管,整个电路的效率将得到提高。
输出电容C2的选定取决于对输出纹波电压的要求,纹波电压与电容的等效串联电阻ESR有关,电容器的容许纹波电流要大于电路中的纹波电流。
电容的ESR<△V0/△IL=40x1%/1.33=0.3Ω。
另外,为满足输出纹波电压相对值的要求,滤波电容量应满足
(4-17)
根据计算出的ESR值和容量值选择电容器,由于低温时ESR值增大,故应按低温下的ESR来选择电容。因此,选用200μF/50V以上频率特性好的电解电容可满足要求。
3.6.2 单片机参与控制的BOOST开关电源电路参数
单片机参与控制的BOOST开关电源电路图如图5所示。由图7所设计的电源输出Vout结合UC3842S DATASHEEF in Application Noet中的计算手册如下式:
(1)
图7 单片机参与控制的BOOST开关电源电路图
显然,当DAC输出Vdac变化时,Vout随之改变电压。在稳态工作下,流过R1的电流恒为2.5/R1。同时DAC输出Vdac电压范围为0~5 V。设开关电源的电压调整范围为28~38 V,则电压变化幅Dout=38-28=10V。
所以R2与Rdac 的比值满足:
(2)
即:,设在没有DAC输出Vdac电压的作用下,Vout=30 V,则
(3)
即:,令=10k Ω,由上述式(1)、(2)得:R1=1.52kΩ、R2=20kΩ。
综上述:当=10kΩ、R1=1.52KΩ、=20kΩ,DAC输出电压范围为0~5 V时,开关稳压电源的输出电压在28v~38v范围内可调。且DAC输出每上升电压△U,将引起开关电源输出电压下降2△U。DAC08032为8-bit 的数-模转换器,DAC输出电压分辨率△U=5/255≈0.019 6 V,所以开关电源输出最小调节量为2△U=0.039 2 V。
四、软件设计
软件流程图如图8所示:
图8
五、总结
电子设备离不开电源,电源是电子设备的重要组成部分,电源的质量直接影响开关电子设备工作的可靠性。本次我们设计boost 开关稳压电源,通过开关电源的设计,在进行硬件的验证,对分析结果进行验证。系统的开关变换器的工作原理使用的是PWM(即脉宽调制法),这种方式中,电子开关按外加的控制脉冲信号而通断,与本身流过的电流、二端所加的电压无关。此次设计中,也遇到了很多问题,我们一开始由于未加反馈,使得电路无法正常运行,功能无法实现,经过排查,终于成功。在调试过程中,为了判断开关管是否工作通过接入一个发光二极管进行验证使得电阻烧坏,经过仔细查找,最终发现并解决了问题。通过此次设计使得我们的专业知识都有了显著地提高,也对电源更加的了解。最后感谢老师的们的细心指导。
六、参考文献
[1] 李雅轩,杨秀美,李艳萍.电力电子技术[M].北京:中国电力出版社.2007,
[2] 钱照明,袁义生.开关电源EMC设计研究现状及发展[J].电子产品世界.2003
[3] 王小双.AT89S51单片机控制的开关电源[J].通讯电源技术.
[4] 陶永华.新型PID 控制及其应用[M].北京:机械工业出版社, 2002
[5] 何跃,林春梅.PID 控制系统的参数选择研究及应用[J].计算机工程与设计.2006(8):1496-1498
[6]王永平,史俊杰,田庆安.开关稳压电源-原理,设计及实用电路(修订版)[M].西安电子科技大学出版社.2006
七、附件
附件一、整体电路图
图9
附件二、测试报告
1.电压调整率
设定Uo= 30V
2、负载调整率
设定Uo= 30V
3.效率测量
调整 Uo= 36V,调整负载使IO = 2A。
测得Uin= Iin=
所以
=
附件三、主要程序代码
//****包含各个头文件********************//
#include <reg52.h>
#include<intrins.h>
#include "AD0804.h"
#include "DA0832.h"
#include "12864.h"
#include "keyscan.h"
#define uchar unsigned char
#define uint unsigned int
sbit SET=P3^4; //定义调整键
sbit DEC=P3^2; //定义减少键
sbit ADD=P3^3; //定义增加键
//*******AD0804端口定义********************
sbit ADCS=P3^5;
sbit ADWR=P3^6;
sbit ADRD=P3^7;
//*******DA0832端口定义********************
sbit DACS=P2^6;
sbit DAWR=P2^7;
uchar temp=30;//液晶显示默认值
//uchar Vin;
uchar set_st=0;//状态标志
/*****************************************
*函数名:DelayMs(uint t);
*功能:延时t ms
*参数:t
*返回值:无
****************************************/
void DelayMs(uint t)
{
uint i,j;
for(i=t;i>0;i--)
{
for(j=110;j>0;j--);
}
}
//**********按键设定输出电压***********//
void keyscan()
{
if(SET==0){
DelayMs(10);
do{}while(SET==0);
set_st++; if(set_st>1)set_st=0;
}
if(set_st==0){
EX0=0; //关闭外部中断0
EX1=0; //关闭外部中断1
Lcd_pos(1,13);Lcd_WriteData(temp/10+0X30);
Lcd_pos(1,14);Lcd_WriteData(temp%10+0X30);
Lcd_pos(1,15);lcd_Writestring("V");
}
else if(set_st==1){
EX0=1; //开启外部中断0
EX1=1; //开启外部中断1
if(ADD==0){
DelayMs(10);
do{}while(ADD==0);
Lcd_pos(1,13); Lcd_WriteData(temp/10+0X30);
Lcd_pos(1,14);Lcd_WriteData(temp%10+0X30);
Lcd_pos(1,15);lcd_Writestring("V");
}
if(DEC==0){
DelayMs(10);
do{}while(DEC==0);
Lcd_pos(1,13); Lcd_WriteData(temp/10+0X30);
Lcd_pos(1,14); Lcd_WriteData(temp%10+0X30);
Lcd_pos(1,15);lcd_Writestring("V");
}
}
}
//******外部中断初始化***************************//
void Init()
{
EA=1; //全局中断开关
IT0=1;
IT1=1;
}
//********主函数*************************//
void main()
{
uchar a,A,adval;
ADCS=0;
DelayMs(20);
Lcd_Init();
Lcd_Init();
Init();
Lcd_pos(0,1); lcd_Writestring("开关稳压电源");
Lcd_pos(1,0);lcd_Writestring("设定电压:");
Lcd_pos(2,0);lcd_Writestring("输出电压:");
while(1)
{
keyscan();
//*********启动AD转换***************
ADWR=1;_nop_();
ADWR=0;_nop_();
ADWR=1;
//**********************************
ADRD=1;
_nop_();
ADRD=0;
_nop_();
adval=P1;
ADRD=1;
if(adval>=0&&adval<=36)A=30;
else if(adval>36&&adval<=72)A=31;
else if(adval>72&&adval<=108)A=32;
else if(108<adval&&adval<=144)A=33;
else if(144<adval&&adval<=180)A=34;
else if(180<adval&&adval<=216)A=35;
else A=36;
for(a=10;a>0;a--)
{
Lcd_pos(2,13);Lcd_WriteData(A/10+0X30);
Lcd_pos(2,14);Lcd_WriteData(A%10+0X30);
Lcd_pos(2,15);lcd_Writestring("V");
}
}
}
/*****外部中断0服务程序*****/
void int0(void) interrupt 0
{
EX0=0; //关外部中断0
if(DEC==0&&set_st==1)
{
temp--; DelayMs(10);
if(temp<=30)temp=30;
}
}
/*****外部中断1服务程序*****/
void int1(void) interrupt 2
{
EX1=0; //关外部中断1
if(ADD==0&&set_st==1)
{
temp++;DelayMs(10);
if(temp>=36)temp=36;
}
}