基于Buck-Booost电路的双向DC-DC变换电路目录1系统方案 (4)1.1 DC-DC双向变换器模块的论证与选择 (4)1.2 测控电路系统的论证与选择 (4)2 系统理论分析与计算 (4)2.1 双向Buck-BOOST主拓电路的分析 (4)2.2 电感电流连续工作原理和基本关系 (5)2.3 控制方法与参数计算 (6)3 电路与程序设计 (7)3.1 电路的设计 (7)3.1.1 系统总体框图 (7)3.1.2 给电池组充电Buck电路模块 (7)3.1.3 电池放电Boost升压模块 (8)3.1.4 测控模块电路原理图 (8)3.1.5 电源 (9)3.2 程序设计 (9)4 测试方案与测试结果 (15)4.1 测试方案 (15)4.2 测试条件与仪器 (15)4.3 测试结果及分析 (15)4.3.1 测试结果(数据) (15)4.3.2 测试分析与结论 (16)摘要双向DC/DC变换器(Bi-directional DC-DC Converter,BDC)是一种可在双象限运行的直流变换器,能够实现能量的双向传输。
随着开关电源技术的不断发展,双向DC/DC变换器已经大量应用到电动汽车、太阳能电池阵、不间断电源和分布式电站等领域,其作为DC/DC变换器的一种新的形式,势必会在开关电源领域上占据越来越重要的地位。
由于在需要使用双向DC/DC变换器的场合很大程度上减轻系统的体积重量及成本,所以具有重要研究价值。
既然题目要求是作用于可充电锂电池的双向的DC-DC变换器,肯定包括降压、升压、电压可调、恒流、等要求。
考虑到题目对效率的要求,我们选择降压Buck电路,升压Boost电路,并用反馈电路和运放电路来实现电压可调和恒流等要求,通过一系列的测试和实验几大量的计算,基本上能完成题目的大部分要求。
关键词:双向DC/DC变换器;双向Buck-Boost变换器;效率;恒流稳压1系统方案本系统主要由DC-DC双向变换器模块、测控电路模块及辅助电源模块构成,分别论证这几个模块的选择。
1.1 DC-DC双向变换器模块的论证与选择方案一:采用大功率的线性稳压芯片搭建稳压电路,使充电压恒定,在输入电压高于充电合适电压时,实现对输入电压的降压,为电池组充电。
该电路外围简单,稳压充电不需要软件控制,简单方便,但转换效率低。
同时采用采用基于NE555的普通升压电路,这种电路设计简单,成本低,但转换效率较低、电池电压利用率低、输出功率小,更不能不易与基于大功稳压芯片所构成的稳压电路结合构成DC-DC双向变换器。
方案二:采用Buck-Boost电路,选择合适的开关管、续流二极管,电能的转化效率高,且电路简单,功耗小,稳压范围宽,能很好的实现输入降压,输出升压。
但输入、输出电流皆有脉动,使得对输入电源有电磁干扰且输出纹波较大。
所以实际应用时常加有输入,输出滤波器。
方案一简单轻便但会影响电源的效率,而方案二中的Buck电路能很好保对证电源的降压要就对电池组充电,并且使电池组的充电率满足题目要求,所以采用方案二。
1.2 测控电路系统的论证与选择方案一:采用基于51单片机的数控电路,测控精度高,但不能连续可调,制作过程复杂,工作量大,并且造价高,维护复杂。
方案二:基于UC3843的测控电路,电路简单,效率高,可靠性高,但随着负载的增大,输出波形变得不稳。
综合考虑采用采用方案二。
2系统理论分析与计算2.1 双向Buck-BOOST主拓电路的分析Buck-Boost变换器是输出电压可低于或高于输入电压的一种单管直流变换器,其主电路与Buck或 Boost变换器所用的元器件相同,也有开关管、二极管、电感、和电容构成。
如下图1所示。
Buck-Boost变换器也有电感电流连续和断续两种工作方式。
图2是电感电流连续时的主要波形。
图3是Buck-Boost变换器在不同工作状态下的等效电路图。
电感电流连续工作室时,有两种工作模式,图(3a)的开关管S1导通时的工作模式,图3(b)是开关管S1关断、L续流时的工作模式。
图1 主电路图2电感电流连续工作波形S1导通 S1断开图3 Buck-Boost 不同开关模式下等效电路2.2 电感电流连续工作原理和基本关系电感电流连续工作时,Buck/Boost 变换器有开关管S1导通和开关管S1关断两种工作模态。
在开关模态1[0~on t ]:t=0时,S1导通,电源电压in V 加载电感f L 上,电感电流线性增长,二极管D 戒指,负载电流由电容f C 提供:t=on t 时,电感电流增加到最大值max L i ,S1关断。
在S1导通期间电感电流增加量f L i在开关模态2[on t ~ T]:稳态工作时,S1导通期间f L i 的增长量应等于S1关断期间f L i 的减小量,或作用在电感f L 上电压的伏秒面积为零,有:由(2-8)式,若y D =0.5,则o V =in V ;若y D <0.5,则o V <in V ;反之,y D >0.5,o V >in V 。
设变换器没有损耗,则输入电流平均值i I 和输出电流平均值o I 之比为开关管S1截止时,加于集电极和发射极间电压为输入电压和输出电压之和,这也是二极管D 截止时所承受的电压由图1-2可见,电感电流平均值f L i 等于S1和D 导通期间流过的电流平均值Q I 和D I 之和,即:开关管S1和二极管D 电流的最大值max Q i 、max D i 等于电感电流最大值max f L i 。
S1导通期间,电容f C 电压的变化量即输出电压脉动oV ∆S1导通期间f C 放电量f C Q =o I y D T 计算,因f C Q =f C o V ∆⋅,故:2.3 控制方法与参数计算1.Boost 电路控制方法:负反馈。
2.Buck 电路控制方法:正反馈+负反馈。
3.振荡频率计算公式:368.1C R f ⋅=4.反馈深度:TL431是一种并联稳压集成电路。
三端可调分流基准源、可编程输出电压:2.5V~36V 、电压参考误差:±0.4% ,典型值@25℃(TL431B )、低动态输出阻抗:0.22Ω(典型值)、温度补偿操作全额定工作温度范围、负载电流1.0毫安--100毫安。
全温度范围内温度特性平坦,典型值为50 ppm/℃,最大输入电压为37V 、最大工作电流150mA 、内基准电压为2.495V(25°C)。
5.放大器选用基于Lm358的放大电路,放大倍数的计算公式:⎪⎪⎭⎫⎝⎛+=11R R A f u6.软件算法:15f2k60s2单片机是高速/低功耗的单片机,12时钟/机器周期和6时钟/机器周期可任意选择,内部集成MAX810专用复位电路,时钟频率在12MHz 以下时,复位脚可直接接地。
工作电压:5.5V - 3.8V (5V 单片机)/3.8V - 2.4V (3V 单片机)、工作频率范围:0-40MHz ,相当于普通8051的 0~80MHz 、用户应用程序空间4K/6K/7K/8K/10K/12K/13K/16。
K/32K/40K/48K/56K/ 61K/字节、片上集成 1280字节/512/256字节 RAM 、工作温度范围:0-75℃/-40-+85℃。
提高效率的方法:提高频率,改善电路结构。
3 电路与程序设计 3.1 电路的设计 3.1.1 系统总体框图系统总体框图如图四所示:放电放电图4系统总体框图测控电路双向DC-DC 变换电路电池组直流稳压电源3.1.2 给电池组充电Buck电路模块降压充电模块原理图如图5(附录)所示。
图5降压buck电路原理图3.1.3 电池放电Boost升压模块电池放电升压Boost电路原理图如图6所示。
图6 升压Boost电路3.1.4 测控模块电路原理图测控模块电路如下图图7。
图7 测控电路图3.1.5 电源系统需要直流稳压电源供电,采用基于LM7805和LM7815的直流稳压电路给单片机、放大器供电。
3.2程序设计采用基于STC15F2K60S2的单片机系统,来控制电压和电流的显示,和调节数字电位计。
源程序如下:#include "STC15Fxxxx.h"#include "intrins.h"#include "codetab.h"#include "LQ12864.h"#include "stdio.h"#include "adc.h"#include "PCA.h"#define Timer0_Reload (65536UL -(MAIN_Fosc / 1000)) //Timer 0 中断频率, 1000次/秒#define P1n_pure_input(bitn) P1M1 |= (bitn), P1M0 &= ~(bitn)typedef unsigned char BYTE;sbit X9313W_INC = P3^2; //计数脉冲输入端,下降沿触发sbit X9313W_UPDN = P3^3; //方向,高电平加、低电平减sbit X9313W_CS = P3^4; //片选,低电平有效/********************(STC12C5608AD 11MHZ z=1时精确延时1ms)*******************/void delayms(unsigned int z){unsigned int x,y;for(x=z; x>0; x--)for(y=1848; y>0; y--);}void X9313W_SetVol(unsigned char RNumber){unsigned char i;X9313W_INC = 1;_nop_();_nop_();X9313W_CS = 0;_nop_();_nop_();X9313W_UPDN = 0; //先调到0 for(i=0;i<32;i++){X9313W_INC = 1;_nop_();_nop_();X9313W_INC = 0;_nop_();_nop_();}X9313W_UPDN = 1; //调到指定值 for(i=0;i<RNumber;i++){X9313W_INC=1;_nop_();_nop_();X9313W_INC=0;_nop_();_nop_();}X9313W_INC = 1; //电阻值保存 _nop_();_nop_();X9313W_CS = 1;_nop_();_nop_();X9313W_UPDN = 1;_nop_();_nop_();X9313W_INC = 1;}void X9313W_IncVol(unsigned char RNumber){unsigned char i;X9313W_INC = 1;_nop_();_nop_();X9313W_CS = 0;_nop_();_nop_();X9313W_UPDN = 1; //加RNumber个指定值 for(i=0;i<RNumber;i++){X9313W_INC=1;_nop_();_nop_();X9313W_INC=0;_nop_();_nop_();}X9313W_INC = 1; //电阻值保存_nop_();_nop_();X9313W_CS = 1;_nop_();_nop_();X9313W_UPDN = 1;_nop_();_nop_();X9313W_INC = 1;}void X9313W_DecVol(unsigned char RNumber){unsigned char i;X9313W_INC = 1;_nop_();_nop_();X9313W_CS = 0;_nop_();_nop_();X9313W_UPDN = 0; //减RNumber个指定值 for(i=0;i<RNumber;i++){X9313W_INC=1;_nop_();_nop_();X9313W_INC=0;_nop_();_nop_();}X9313W_INC = 1; //电阻值保存_nop_();_nop_();X9313W_CS = 1;_nop_();_nop_();X9313W_UPDN = 1;_nop_();_nop_();X9313W_INC = 1;}/************* 本地函数声明**************/void DelayXus(BYTE n);/**************** 外部函数声明和外部变量声明 *****************/bit B_1ms; //1ms标志u16 m second;u16 B andgap;unsigned int step;/********************** PWM配置函数 ************************//********************** ADC配置函数 ************************/void A DC_config(void){A DC_InitTypeDef ADC_InitStructure;//结构定义A DC_InitStructure.ADC_Px = ADC_P1_All; //设置要做ADC的IO,ADC_P10 ~ ADC_P17(或操作),ADC_P1_AllA DC_InitStructure.ADC_Speed = ADC_180T; //ADC速度ADC_90T,ADC_180T,ADC_360T,ADC_540TA DC_InitStructure.ADC_Power = ENABLE; //ADC功率允许/关闭ENABLE,DISABLEA DC_InitStructure.ADC_AdjResult = ADC_RES_H8L2; //ADC结果调整,ADC_RES_H2L8,ADC_RES_H8L2A DC_InitStructure.ADC_Polity = PolityLow; //优先级设置PolityHigh,PolityLowA DC_InitStructure.ADC_Interrupt = DISABLE; //中断允许ENABLE,DISABLEA DC_Inilize(&ADC_InitStructure);//初始化A DC_PowerControl(ENABLE);//单独的ADC电源操作函数, ENABLE或DISABLE// P1n_pure_input((1<<0) ||(1<<1) ||(1<<2) || (1<<3)||(1<<4) || (1<<5)||(1<<6) || (1<<7)); //把ADC口设置为高阻输入}/**********************************************//*********************主函数************************************/void main(void){// unsigned char i;// int a;u16 j;unsigned char c[10];LCD_Init(); //oled 初始化ADC_config();Timer0_1T();T imer0_AsTimer();T imer0_16bitAutoReload();T imer0_Load(Timer0_Reload);T imer0_InterruptEnable();T imer0_Run();E A = 1; //打开总中断LCD_CLS();L CD_P8x16Str(0,0,"step:");L CD_P8x16Str(0,2,"AD0:");L CD_P8x16Str(0,4,"AD1:");X9313W_SetVol(0);s tep=0;while(1){if(B_1ms) //1ms到{// LCD_CLS();B_1ms = 0;if(++msecond >= 100) //300ms到{msecond = 0;// LCD_P8x16Str(40,3,"abc");// Get_ADC10bitResult(0);Get_ADC10bitResult(0);j = Get_ADC10bitResult(4); //ad通道0sprintf(c,"%.2fA",j*5.0/1024.0);LCD_P8x16Str(40,2,c);j = Get_ADC10bitResult(5); //ad 通道1sprintf(c,"%.2fV",j*30.0/1024.0);LCD_P8x16Str(40,4,c);if(P24==0)step++;if(step==32)step=0;if(P25==0)if(step--==0)step=31;X9313W_SetVol(step);sprintf(c,"%2d",step);LCD_P8x16Str(40,0,c);delayms(100);/**/ }}}}/**********************************************//********************** Timer0 1ms中断函数 ************************/ void timer0 (void) interrupt TIMER0_VECTOR{// DisplayScan(); //1ms扫描显示一位B_1ms = 1; //1ms标志}4 测试方案与测试结果4.1 测试方案1、硬件测试,测试电路的恒流恒压以及功率的设置。