本设计制作用于电池储能装置的双向 DC-DC 变换器,实现电池的充放电功能,功能由按键设定,亦可自动转换。系统结构如图1所示,电池组由五节18650型,容量2000mAh的锂离子电池串联组成。辅助电源是用LM2596芯片作为主控芯片的开关电源,测控电路是由STM32F103ZET6单片机最小系统板为核心的控制电路。双向DC-DC变换电路由双向半桥电路作为主拓扑结构,通过控制电路完成充放电双过程。
图1.1 电池储能装置结构框图
1.1 双向DC-DC变换电路方案
根据要求,初步得到以下四种可行的DC-DC变换电路方案。
(1)boost-buck双向电路
boost-buck双向电路为非隔离电路,原理图如图1.1,较为常见,双向皆可实现电压升降压,使用器件少,原理简单,器开关管与续流二极管承受的电压应力皆为输入电压与输出电压之和,但电流应力较小。
图1.1 boost-buck双向电路
(2)分离的buck恒流源和boost恒压源
以buck电路为主拓扑的恒流源与以boost电路为主拓扑的恒压源并联,组成双向电源,两个模块原理都较为简单,但输出电压受到主拓扑的限制,不能实现双向升降压。两个电路模块完全分离,电路调试简单,但不利于电路模块之间的自动切换。
(3)双向半桥变换器
双向半桥变换器为非隔离电路,主电路如图1.2,但单向只能实现升压或降压,电压转换范围较小,电路原理简单,电压应力和电流应力较小。
图1.2 双向半桥变换器
(4)双向全桥变换器
双向全桥变换器为隔离变换器,主电路如图1.3,电路较为复杂,输入和输出实现电气隔离,电压转换范围大,可实现大功率双向供电,元件电压应力较小,元器件较多,器件功耗较大。
图1.3 双向全桥变换器
比较上述始终方案,根据题目要求,传输功率较小,效率要求较高,我们采取非隔离电路;为了方便实现充放电模式的自动转换,我们采取非分离的电路;在锂电池充电过程是降压过程,而在电池放电是为升压的过程,因此,我们选择的方案为元器件电压应力和电流应力都较小的双向半桥变换器。
1.2 PWM控制信号产生方案双向DC-DC变换器的需要PWM作为控制信号驱动开关管,并通过调节PWM的输出达到控制电路功能的目的。通过讨论,共得到两种PWM的产生方案。
(1)硬件调制产生
可使用开关电源控制芯片产生PWM作为控制信号,只需要对控制信号进行采样反馈,与基准源比较,产生调制信号,调制信号与锯齿波比较,产生PWM对主电路进行控制。这种方案控制电路的逻辑单一,单个控制芯片难以同时控制充放电模式,难以同时作为恒流源和恒压源的控制核心。
(2)数字控制产生
直接数字控制产生PWM控制信号的方案,通过单片机直接产生PWM信号,通过软件的方法实现,便于提高PWM信号的质量,易于进行补偿。同时由于PWM信号的调制和产生在单片机内部通过软件实现,硬件电路得到简化。同时,单片机能进行更复杂的逻辑运算,可较为翻遍地实现更复杂的功能。
通过比较上述两种方案,我们采用第二种方案,来方便、快捷的产生PWM信号。它没有模拟电路的温漂,干扰等问题,通过软件控制可以实现较高的精度,同时系统的升级改造也很简单,便于扩展。
本作品硬件电路总体框图如图2.1所示。
图2.1 硬件电路总体框图
2.2 双向DC-DC主回路
双向DC-DC主回路采用双向半桥变换器,原理图如图2.2所示。
图2.2 双向DC-DC主回路
双向半桥变换器正向工作时,开关管S1开关工作,S2截止,此时电路即为boost升压电路,如图2.3,;反向工作时,开关管S2开关工作,S1截止,此时电路即为buck降压电路,如图2.4。
图2.3 双向半桥变换器正向等效电路
图2.4 双向半桥变换器反向等效电路
本设计中最大电压为36V,锂电池最大电压为24V,最大充电电压为2A,考虑到电压电流余量以及管子的通态阻抗,我们选用耐压100V,通态电阻为0.044欧,额定电流为33A的N沟道MOSFET IRF540。
MOSFET的控制信号由单片机产生,不能直接驱动MOSFET,采用半桥驱动芯片IR2109作为其驱动芯片,产生互补且夹有死区时间的PWM分别来驱动主电路的上下开关管。IR2109驱动电路如图2.5所示。
图2.5 IR2109驱动电路
SD为芯片使能端,可控制IR2019输出端PWM的输出,逻辑如图2.6
图2.7 IR2019逻辑图
2.3 测控部分本设计中充电过程为恒流模式,需要对输出电流进行采样,为了减少采样的干扰,本次设计采用上路采样,电流采样电阻取0.1欧姆,使用电流采样芯片IN270对采样信号进行处理,电路图如图2.7所示。其中P5两引脚接采样电阻两端。经过INA270电流采样处理电路后,P2处输出的电压值为采样电阻两端电压值的14倍,以供单片机检测。
图2.7 IN270采样电路
使用STM32内部集成的16位高精度的ADC进行采样,通过滤波算法进行数字滤波,使得采样更精准,程序如下
u16 Get_Adc(u8 ch)
{
ADC_RegularChannelConfig(ADC1,ch,1,ADC_SampleTime_28Cycles5);
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));
return ADC_GetConversionValue(ADC1);
}
u16 ADC_filter(u8 ch)
{
char count,i,j;
u16 value_buf[N];
u16 temp;
int sum=0;
for (count=0;count<N;count++)
{
value_buf[count] = Get_Adc(ch);
//delay_us(5);
}
for (j=0;j<N-1;j++)
{
for (i=0;i<N-j;i++)
{
if ( value_buf[i]>value_buf[i+1] )
{
temp = value_buf[i];
value_buf[i] = value_buf[i+1];
value_buf[i+1] = temp;
}
}
}
for(count=30;count<N-30;count++)
sum += value_buf[count];
return (u16)(sum/(N-60));
}
2.4 辅助供电模块根据题目要求,辅助供电模块可以从220V市电或给定的电源箱经过变换得到。考虑电路的整体重量以及硬件其他电路的电源要求,最终选择使用LM2596系列芯片构成电路实现5V与12V的辅助电源。LM2596降压模块(5V)基本原理图如图2.8所示。12V辅助供电模块与之类似。
图2.8 LM2596辅助供电模块(5V)
2.5 控制程序
双向DC-DC变换器对于模式切换和控制的要求很高,所以整体系统的控制由模拟电路来做难度很大,因此采用单片机控制的方式,让单片机检测电流电压信息,并输出不同占空比的PWM来驱动拓扑电路工作,并且实现自动切换模式。
程序运行时,首先进入充电模式,之后进行电路软起动保护,检测电池是否接入。之后检测按键切换模式。一共有三种模式:充电模式、放电模式和自动切换模式。充电模式下控制电池充电,显示充电电流,充电电压和电池电量,按键调节充电电流。放电模式下显示放电电压,并且控制放电电压为30V。自动设置模式的控制量为输出端电压,并且自动判断是充电模式或者放电模式。
中断函数中在不断检测电流电压信息。将信息通过PID算法计算成输出量,用输出量调节PWM占空比。并且不断判断是否过充保护,控制电路及时关断,保护电池。
图2.9 控制程序框图
2.5.1 控制方法
在过程控制中,按偏差的比例(P)、积分(I)和微分(D)进行控制的PID控制器(亦称PID调节器)是应用最为广泛的一种自动控制器。它具有原理简单,易于实现,适用面广,控制参数相互独立,参数的选定比较简单等优点。开关电源设计最重要的参数是稳定度和精确度,所以采用增量型的PID控制算法。增量式PID算法源码如下:
float PI_Calc(PI *p,float nextpoint)
{
float Error,U_error; //误差和反馈值
u16 i=0;
Error=p->Setpoint-nextpoint; //实际误差
if(p->SumError>p->Dead_error) //限制积分误差
p->SumError=p->Dead_error;
U_error=p->Kp*Error+p->I*p->SumError; //计算反馈值
p->SumError=p->SumError-p->Errors[9]+Error; //计算误差积分
while(i<9)
{p->Errors[i+1]=p->Errors[i];i++;} //更新误差队列
p->Errors[0]=Error;
return U_error; // 返回PI值
}