1、DC-DC开关电源设计摘要 开关稳压电源因为其具有功耗小、效率高、体积小、重量轻、稳压范围宽等优点日益得到广泛的应用。目前,国内外开关稳压电源的发展的趋势是不断提高输出效率和输出功率。要提高输出的效率,必须提高电源的开关频率。这就对电路中其它器件的频率特性提出了更高的要求。并且现在的开关调节模块大多都已经集成化,使用方便,有很高的线性和负载调节特性,转换效率高负载调整率低而且输出纹波小,这里我用lm2596开关调节器实现降压,用STC89S52为核心电路控制ADC0809模数转换对输出电压电流的监测,将监测到的数据显示在液晶LCD1602上,有过流保护功能,监测电路使用的电源由降压后转换提供。
2、关键字 开关稳压电源 开关调节器 ADC0809 STC89S52 LCD1602一、设计要求和指标要求1.基本部分:1.输出可调电压 515V,输出电流不小于 1.5A,接入负载能长时间稳定工作;(15)2.DC/DC 转换效率不低于 70%; (5)3.能够显示输出电压,电流,误差小于 2%;(10)4. U=12V、 Io 在 0.11A 范围内变化,负载调整率 SI2%;(10)5.输入电压 24V,输出电压稳定 12V,输出电流为 1.5A 时输出纹波小于 200mv;(10)2.发挥部分:1.输出可调电压为 318V,输出电流达到 2.5A 以上,接入负载能长时间稳定工作,进一步扩
3、展电源输出功率;(5)2.能够显示输出电压,电流,误差小于 0.5%;(10)3.Uo=12V 、 Io 在 0.12.5A 范 围 内 变 化 , 负 载 调 整 SI0.5%;(5)4.输出电压稳定为 12V,输出电流为 2.5A 时,输出纹波小于50(10)5.输出电流为 2.5A 进一步提升 DC/DC 转换效率,使不低于85(10)6.具有输出过流保护功能, Io3.5A 时动作;且故障排除后够恢;(5)7.其他;(5)3、 说明(1)输入电压由直流稳压电源提供,逆变电源全部电路均由UI供电,不得再使用其他电源;(2)负载调整率计算方法: Io=0.1A时输出电压为Uo1, Io=1
4、A时输出电压Uo2,则负载调整率:(3)注意作品制作工艺,留出电流、电压测试端口。二、系统框图设计三、电路设计方案选择1. DC-DC模块 DC-DC模块式将输入的直流电压转换为另一直流电压,而设计要求是将24v转换为可调的稳压直流电压输出,就用到了DC降压型电路。方案一:使用隔离式的PWM(脉宽调制)控制高频开关变压器。该电路电路结构简单,外围元件少。但是要用到变压器,体积大,负载调整率的,电源效率低。方案二:使用集成的开关电压调节芯片lm2596-adj, LM2596开关电压调节器是降压型电源管理单片集成电路,能够输出3A的驱动电流,同时具有很好的线性和负载调节特性,该器件内部集成频率补
5、偿和固定频率发生器,开关频率为150KHz。负载调整率高,能够输出小于37V的可调电压,使用方便,且体积小。 对比两个方案,电路使用方案二。2. 监测显示模块方案一:使用数码管显示,数码管是由多个发光二极管封在在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。有共阴,共阳两种。方案二:使用液晶显示屏lcd1602,1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用。 比
6、较两种方案将选用方案二,lcd1602操作简单,可以直接对1602的引脚直接操作。3. 电流电压采样模块方案一:使用8位的adc0809多通道模拟量采集,逐次逼近型转换芯片。转换速度快,转换精度高。方案二:使用8位的adc0804一路模拟量输入,操作简单,体积小,且方便电路的设计,但是该芯片只能一路模拟量输入。 综合两者的比较,本实验选用adc0809。四、各个模块分析1.电压转换模块 因为由单个lm2596组成的dc-dc转换电路最高能输出3A的驱动电流,所以这里设计使用两个一样的电路进行并联增大电路带动负载能力。1.1主要元件介绍 LM2596开关电压调节器是降压型电源管理单片集成电路,能
7、够输出3A的驱动电流,同时具有很好的线性和负载调节特性。固定输出版本有3.3V、5V、12V,可调版本可以输出小于37V的各种电压。 该器件内部集成频率补偿和固定频率发生器,开关频率为150KHz,与低频开关调节器相比较,可以使用更小规格的滤波元件。由于该器件只需4个外接元件,可以使用通用的标准电感,这更优化了LM2596的使用,极大地简化了开关电源电路的设计。 该器件还有其他一些特点:在特定的输入电压和输出负载的条件下,输出电压的误差可以保证在4%的范围内,振荡频率误差在15%的范围内;可以用仅80A的待机电流,实现外部断电;具有自我保护电路(一个两级降频限流保护和一个在异常情况下断电的过温
8、完全保护电路)1.2参数计算1.2.1输出电压的计算(及R22和R4,R5的选择)已知参数Vout=318V Vref=1.23v Vd=0.5v Vsat=1.16v F=150KHZVin=24V选择精度为1%的1k电阻R4,则R22根据公式 当vout=18v,R22=13.634k 当vout=3v,R22=1.439k则去R22=20K,R5=1.5K,1.2.2电感的选择根据公式,代入相应数值求得,再对比电压调节器的电气特性选择电感值为47uh1.2.3输入输出电容的选择根据电压调节器芯片使用手册中调节器外围元件的选择方法,结合设计要求和指标电压转换模块,输入电容470uf/35v
9、,输出电容220uf/35v。1.2.4吸纳二极管的选择 二极管的最大承受电流能力至少要为最大负载电流的1.3倍,且反向耐压至少是最大输入电压的1.25倍,有较快的恢复,这里选择肖特基二极管IN5822.。2测量与显示模块2.1电路辅助电源 由于设计要求不能外接供电电源,所以电路的辅助电源由自己设计提供,电路还是使用电压调节器调节输出稳定的5v,参数的计算根据上述计算方法求得。2.2电路控制芯片STC89C52RC STC89C52RC单片机是新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。2.2.1主要特性如下:1
10、.增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以意选择,指令代码完全兼容传统8051.2.工作电压:5.5V3.3V(5V单片机)/3.8V2.0V(3V单机)3.工作频率范围:040MHz,相当于普通8051的080MHz,实际工作频率可达48MHz4.用户应用程序空间为8K字节5.片上集成512字节RAM6.通用I/O口(32个),复位后为:P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P
11、3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片8. 具有EEPROM功能9. 具有看门狗功能10.共3个16位定时器/计数器。即定时器T0、T1、T211.外部中断4路,下降沿中断或低电平触发电路,PowerDown模式可由外部中断低电平触发中断方式唤醒12.通用异步串行口(UART),还可用定时器软件实现多个UART 2.2.2单片机的复位电路在单片机启动0.1S后,电容C两端的电压持续充电为,这是时候10K电阻两端的电压接近于0V,RST处于低电平所以系统正常工作。当按键按下的时候,开关导通,这个时候电容两端形成了一个回路,电容被短路,所以在按键按下的这个过程中,电容开始释放
12、之前充的电量。随着时间的推移,电容的电压在0.1S内,从5V释放到变为了1.5V,甚至更小。根据串联电路电压为各处之和,这个时候10K电阻两端的电压为3.5V,甚至更大,所以RST引脚又接收到高电平。单片机系统自动复位。 2.2.3单片机时钟电路 单片机晶振是单片机内部电路产生单片机所需的时钟频率的部件,单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片接的一切指令的执行都是建立在单片机晶振提供的时钟频率。晶振结合单片机内部电路产生单片机所需要的时钟频率,单片机晶振提供的时钟频率越高,那么单片机运行的速度就越快,单片机的一切指令的执行都是建立在单片机晶振提供的时钟频率。这里电路使用1
13、2M晶振供单片机时钟频率。2.3AD转换模块芯片ADC0809 ADC0809是8位逐次逼近型A/D转换器,是目前应用比较广泛、典型的A/D转换芯片之一。2.3.1管脚介绍 (1)IN7IN0模拟量输入通道(2)ALE地址锁存允许信号。对应ALE上跳沿,A、B、C地址状态送入地址锁存器中。(3)START转换启动信号。START上升沿时,复位ADC0809;START下降沿时启动芯片,开始进行A/D转换;在A/D转换期间,START应保持低电平。本信号有时简写为ST.A、B、C地址线。通道端口选择线,A为低地址,C为高地址,引脚图中为ADDA,ADDB和ADDC。 (4)CLK时钟信号。ADC
14、0809的内部没有时钟电路,所需时钟信号由外界提供,因此有时钟信号引脚。通常使用频率为500KHz的时钟信号 (5)EOC转换结束信号。EOC=0,正在进行转换;EOC=1,转换结束。使用中该状态信号即可作为查询的状态标志,又可作为中断请求信号使用。 (6)D7D0数据输出线。为三态缓冲输出形式,可以和单片机的数据线直接相连。D0为最低位,D7为最高 (7)OE输出允许信号。用于控制三态输出锁存器向单片机输出转换得到的数据。OE=0,输出数据线呈高阻;OE=1,输出转换得到的数据。Vcc+5V电源。 (8)Vref参考电源参考电压用来与输入的模拟信号进行比较,作为逐次逼近的基准。其典型值为+5
15、V(Vref(+)=+5V,Vref(-)=-5V). 使用adc0809对电源输出的模拟量电压和电流转换为能够显示的数字量,对DC-DC开关电源的实时监测控制。2.3.2电压采集电路检测电压是通过使用四个相同阻值为10K的电阻串联平均分压再使用adc0809测量其中的一个电阻的电压,转换为单片机能够显示的数值,处理后显示在lcd1602上。2.3.3电流采集电路检测电流是通过使用一个0.1欧的电阻采样电流转换为电压,但是转后的电压比较小,所以使用双运放的l358对电压十倍(放大倍数(R15+R14)/R14)放大后输入adc0809转化为数字量,经过单片机的处理后显示在lcd1602上。2.
16、4监测的显示 LCD1602引脚功能介绍第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第
17、714脚:D0D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。指令介绍1602液晶模块的读写操作,屏幕和光标的操作都是通过指令编程来实现的。(说明1为高电平,0为低电平)指令1:清显示,指令码01H,光标复位到地址00H位置指令2:光标复位,光标返回到地址00H指令3:光标和显示位置设置I/D,光标移动方向,高电平右移,低电平左移,S:屏幕上所有文字是否左移或右移,高电平表示有效,低电平表示无效。指令4:显示开关控制。D:控制整体的显示开与关,高电平表示开显示,低电平表示关显示。C:控制光标的开与关,高电平表示有光标,低电平表示无光标B:控制光标是否闪烁,高电平闪烁,低电平不
18、闪烁。指令5:光标或显示移位S/C:高电平时显示移动的文字,低电平时移动光标指令6:功能设置命令DL:高电平时为4位总线,低电平时为8位总线N:低电平时为单行显示,高电平时为双行显示,F:低电平时显示5X7的点阵字符,高电平时显示5X10的显示字符。指令7:字符发生器RAM地址设置。指令8:DDRAM地址设置。指令9:读忙信号和光标地址BF:忙标志位,高电平表示忙,此时模块不能接收命令或数据,如果为低电平表示不忙。使用先根据液晶的使用手册写出液晶屏的驱动程序,后使用把信息显示到液晶上时直接调用液晶子程序即可。2.5过流保护模块单片机输出的电流只有几个毫安,不足以驱动一个继电器,所以使用一个三极
19、管增大驱动能力,并且在继电器接了个反向的二极管用来保护继电器。将继电器一端接电源输出端,一端接负载,通过STC89C52程序控制继电器的断开吸合实现过流保护和恢复,当监测到电源转换电路出现过流时软件控制断开继电器从而断开电源的输出,当监测到电流恢复到正常范围时继电器吸合,电路恢复正常。五、程序设计程序流程图六、监测电路仿真软件调试的主要任务是排查错误,错误主要包括逻辑和功能错误,这些错误有些是显性的,而有些是隐形的,可以通过仿真开发系统发现逐步改正。Proteus软件可以对基于微控制器的设计连同所有的周围电子器件一起仿真,用户甚至可以实时采用诸如LED/LCD、键盘、RS232终端等动态外设模
20、型来对设计进行交互仿真。Proteus支持的微处理芯片包括8051系列、AVR系列、PIC系列、HC11系列及Z80等等。Proteus可以完成单片机系统原理图电路绘制、PCB设计,更为显著点的特点是可以与keil4工具软件结合进行编程仿真调试。1. 仿真结果与分析1.1仿真图1.2误差分析标准电压/V测量电压/V绝对误差0.00001.001.010.011.491.4902.482.500.022.982.9803.483.450.033.984.000.024.494.470.024.995.010.02根据测量数据测量效果完全符合设计要求。七、DC-DC转换电路参数测试与误差分析1.
21、测试数据负载调整率测试负载调整率IO(A)UO(V)SI(%)U2=12V0.13.302V1.09%13.266V2.5输出纹波电压输入电压(V)输出电压(V)输出电流(A)纹波(mv)24121.524122.5输出可调电压: V;输出电流: A;DC-DC变换器的效率: 72.38%;((Uin*Iin)/(Uout*Iout))过流保护功能:动作电流=3.50A;测量结果表示,均达到基本设计要求,甚至有些测试结果远远超过给定的基本设计指标,尤其是效率的提高有效地保证电源的可靠性;所有经过大电流的线路均尽量采用粗导线,开关器件均选用优良器件,器件的各项指标参数均远大于额定值,所以电压调整
22、率和负载调整率均得到提高。八、设计总结 本次设计,有一些功能,我们没有很好的实现,比如我们感觉我们的输出效率还有提高的空间,还有我们的输出部分还不是很稳定,一个原因可能是我们的电压输出相对还不是很稳定;还有一个,我们觉得在输出方面我们还可以进一步改进和提升,比如在显示输出电流上,精度能设计得更高。本次设计中,由于我们的能力以及时间有限,以及硬件方面的问题。 通过本次设计大赛,我们学到了很多我们在课堂上学不到的实践能力,我们的动手能力得到了很大的提升,我们在书本所学到的知识得到了很大的实践,让我们书本上的知识有了更加深刻的理解。我们同时还学会了团队合作的精神,非常感谢学校组织的设计大赛,让我们学
23、到了很多很多实践经验,并对我们的自主学习能力起到了很大的作用。附件:程序#include#includeintrins.h#includeADC0809.h#include1602.h#define uchar unsigned char #define uint unsigned int uchar code str1= V/A display;/*将电压值送人液晶lcd1602显示*/void display_V(void)uint i;write_com(0x80+0x40+1);for(i=0;i6;i+)write_dat(tab_Vi);_nop_();/*将电流值送人液晶lcd1
24、602显示*/void display_A(void)uint i;write_com(0x80+0x40+9);for(i=0;i5;i+)write_dat(tab_Ai);_nop_();void main(void) /主函数uint i;Init_ADC0809();Init_1602();write_com(0x80);for(i=0;i0;i-)for(j=120;j0;j-);/* 用51的T1中断产生一个500khz的时钟信号 */void Init_ADC0809(void)TMOD=0x20;/ 启用定时器方式2TH1=(255-250); / 附初值TL1=(255-2
25、50);EA=1; / 总中断开ET1=1; / 开定时器1中断TR1=1; /启动定时器1ST=0; /初始化ADC0809OE=0;ALE=0;/*控制ADC0809读出二进制电压值*/uchar ADC_V()uchar temp_V=0;ST=0;ADDA=0; /A,B,C三条地址线选择模拟量输入通道/ADDB=0;/ADDC=0;ST=0; /ST=0;ST=1;ST=0;产生一个正选脉冲启动转换ALE=1; /ST=1; / ST=1;ALE=0; /ST=0; / ST=0;delay_adc(2);if(EOC=0) OE=1; / 如果转换结束 ,OE置”1“允许从ADC0
26、809读取数据temp_V=P1;delay_adc(2);OE=0; /读取结束后OE置“0”return temp_V;/*电压值转换*/void datepro_V(void)float dat_V,tem_V;dat_V=ADC_V(); /取出二进制码tem_V=dat_V/255*5*4*100; /转换为可显示数值并增大100倍 /这里测量电压020v 用四个等值电阻(电阻使用两个以上) /平均分压出5v进行测量(可根据此方法测量其他范围的电压值)tab_V0=(int)tem_V)/1000+0x30; /数值十位tab_V1=(int)tem_V)%1000/100+0x30
27、; / 数值十位tab_V2=0x2e; / 字符“.”tab_V3=(int)tem_V)%100/10+0x30; / 小数点后两位(精确0.01v)tab_V4=(int)tem_V)%10+0x30; /tab_V5=0x56; /字符“V”if(tab_V0=0x30)tab_V0=0x20; / 判断十位是否为“0”,为“0”不显示/*电路已经把对电流的测量转换为对电压的侧量控制ADC0809读出二进制电压值*/uchar ADC_A()uchar temp_A=0;ST=0;ADDA=1; /A,B,C三条地址线选择模拟量输入通道/ADDB=0;/ADDC=0;ST=0; /ST
28、=0;ST=1;ST=0;产生一个正选脉冲启动转换ALE=1; /ST=1; / ST=1;ALE=0; /ST=0; / ST=0;delay_adc(2);if(EOC=1) OE=1; / 如果转换结束 ,OE置”1“允许从ADC0809读取数据temp_A=P1;delay_adc(2);OE=0; /读取结束后OE置“0”return temp_A;/*读取温度将测电流转换为测电压后测得的电压值重新转换为电流值*/void datepro_A(void)float dat_A,tem_A;dat_A=ADC_V(); /取出二进制码if(dat_A/255*5)=3.5) /如果电流
29、大于或等于3.7A继电器断开实现过流保护,恢复后合上KEY=1;else KEY=0;tem_A=dat_A/255*5*100; /转换为可显示数值并增大100倍 /假设这里电流上限3.7A, /使用一个5/3.7=1.35欧(取0.1欧后经过放大器放大十倍电压)电阻将电流转换为电压 /(取值不能超1.35欧,因为ADC0809只能测量05v电压) /将测得的电压除以电阻就会得出电流值tab_A0=(int)tem_A)%1000/100+0x30; / 数值个位tab_A1=0x2e; / 字符“.”tab_A2=(int)tem_A)%100/10+0x30; / 小数点后两位(精确0.
30、01v)tab_A3=(int)tem_A)%10+0x30; /tab_A4=0x41; /字符“A”/if(tab_A0=0x30)tab_A0=0x20; / 判断十位是否为“0”,为“0”不显示/*中断函数*/void time(void) interrupt 3CLK=CLK;#endifLCD1602显示驱动程序#ifndef _1602_H_#define _1602_H_#define uint unsigned int#define uchar unsigned char#define LCD P0sbit RS=P25;sbit RW=P26;sbit EN=P27;voi
31、d delayms(uint z);void Init_1602(void);void check_busy(void);void write_com(uchar com);void write_dat(uchar dat);/*延时z毫秒*/ void delayms(uint z)int i,j;for(i=z;i0;i-)for(j=110;j0;j-);/*1cd1602初始化*/void Init_1602(void)delayms(15);write_com(0x38);delayms(5);write_com(0x0c);delayms(5);write_com(0x06);de
32、layms(5);write_com(0x01);delayms(5);write_com(0x80);delayms(5);/*读忙*/void check_busy(void)uchar x;x=0x80;while(x&0x80)RS=0;RW=1;EN=1;x=LCD;EN=0;delayms(5);/*写指令*/void write_com(uchar com)check_busy();RS=0;RW=0;EN=1;LCD=com;EN=0;delayms(5);/*写数据*/void write_dat(uchar dat)check_busy();RS=1;RW=0;EN=1;LCD=dat;EN=0;delayms(5);/*液晶显示*void display(uchar line,uchar *tab)uchar addr,i;if(line=1)addr=0x80;else if(line=2)addr=0x80+0x40;write_com(addr);for(i=0;i15;i+)write_dat(*tab+); */#endif