开关电源并联供电系统暑期电子设计竞赛培训结题报告.docx
《开关电源并联供电系统暑期电子设计竞赛培训结题报告.docx》由会员分享,可在线阅读,更多相关《开关电源并联供电系统暑期电子设计竞赛培训结题报告.docx(26页珍藏版)》请在冰豆网上搜索。
开关电源并联供电系统暑期电子设计竞赛培训结题报告
编号
暑期电子竞赛培训
结题报告
申请题目开关电源模块并联供电系统
培训队员
所在院系
指导教师
实验场所
联系方式
学生电子科技创新中心
二〇一三年八月
摘要
本设计以AVRATmega16单片机为主控模块,结合IR2102驱动芯片制作两个降压式DC/DC开关电源模块构成并联供电系统,稳定输出8V电压,各路的转换效率可达84%。
同时采用强迫均流控制法,能实现较高精度、比例可调的均流功能,均流相对误差可达5%。
通过键盘设定均流比例,液晶实时显示输出电压、电流,人机界面良好,操作简便。
具有过流保护功能,各模块工作稳定,基本达到了题目要求。
一、方案论证与比较
1.主电路拓扑的选择
(1)Buck型电路。
只能降压不能升压,输出与输入同极性,输入电流脉动大,输出电流脉动小,结构简单。
但是纹波电压较大,效率不高。
(2)Buck-Boost型电路。
既能降压也能升压,输出与输入极性相反,输入输出电流脉动大,结构简单。
输出空载时,会产生很高的电压造成电路中元器件的损坏,故不能空载工作。
(3)Cuk、Sepic和Zeta型电路。
这三种基本电路使用电容作为能量传递元件,均属于升降压变换器。
这三种电路结构都比较复杂,且不能空载工作。
其中Cuk型电路输出与输入极性相反,Sepic和Zeta型电路输出与输入极性相同。
(4)单端反激型电路。
该方案可以防止电流倒灌,同时有较好的电压调整率,成本低,可靠性高,驱动电路简单。
但是输出的电压纹波较大,外特性差,适用于相对固定的负载。
综合本题的设计要求(输出电压小于输入电压)以及成本、电路复杂性等,选择方案
(1)。
2.整流电路的选择
(1)二极管整流。
二极管无需控制和驱动,电路结构简单可靠,成本较低。
但当电路的输出电压较低时,整流二极管压降的限制会使效率难以提高。
(2)同步整流。
采用通态电阻非常小的MOSFET代替二极管,以降低通态压降,可以显著降低整流电路的导通损耗,从而达到较高的效率。
但是这种电路的缺点是需要对MOSFET的通断进行控制,使控制电路更复杂。
本题中对效率的要求并不是很高,为简化电路设计选择方案
(1)。
3.处理器的选择
(1)采用STC12C5A16S2单片机。
STC12C5A16S2单片机是台湾宏晶公司2010年推出的新一代抗干扰,高速,高可靠性,低功耗的微控制器,其编程语言完全兼容传统8051单片机。
(2)采用ATmega16单片机。
ATmega16单片机是基于增强的AVRRISC结构的低功耗8位CMOS微控制器。
片内具有16K可编程Flash,8路10位ADC,四通道PWM,功能强大,开发成本低。
在同样的晶振频率下,方案
(2)有更高的性能和更低的功耗,因此可以降低运行频率以减少对电路的电磁干扰。
因此选用方案
(2)。
4.均流方法的选择
(1)主从方式均流。
在系统中设置一个主控制器或选择某一个电源作为主控电源,该主控制器或主控电源完成电压调节控制,其电压调节器的输出信号为电流参考信号,用来控制其他电源的输出电流,这时,其他电源按照电流源的特性运行。
由于每个电源的电流参考信号都相等,因此输出电流也相等。
这种方式均流精度很高,可达0.5%以内,但是一旦主控模块故障,整个系统就无法运行,系统可靠性不高。
(2)最大电流自动均流法。
在并联的模块中,输出电流最大的模块将自动成为主模块,其余的模块为从模块。
各从模块以主模块的电流值作为指令进行调整,从而实现均流。
(3)自动选主的主从均流方法。
在自动选主的主从均流方式中,各电源的电压调节器都处于工作状态,其输出通过均流母线仲裁出最大值。
这种方式均流和稳压精度高,并且在主电源失效后,剩余的电源能自动仲裁出新的主电源,不影响系统正常工作。
但是其需要硬件电路实现,比较复杂。
(4)强迫均流(电压内环,均流外环)控制法。
采用软件控制,通过软件计算,比较电源单元电流与系统平均电流,然后再调整电源单元输出电压,使其电流与平均电流相等。
软件方式设计灵活、易于实现、均流控制精度高,可以通过微调PWM芯片的输出电压实现两路任意比例的电流分配。
综合考虑,选择方案(4)。
5.控制方案的选择
(1)采用单片机自带的PWM波发生功能驱动主电路。
采用具有PWM波发生功能的单片机,利用软件编程控制其产生PWM波。
该方案硬件开销少,但是若想同时实现对电流的采样,对单片机的性能要求较高。
(2)采用专用集成PWM控制电路芯片SG3525。
该方案反应迅速,采样实时。
SG3525具有振荡器,利用改变
与
之值,就可以设定PWM的切换频率;此外尚有两组PWM输出、软启动及完全截止的功能,因此在电路设计上可大大降低硬件电路。
SG3525采用电压模式控制方法。
占空比为0-100%,考虑到死区时间,最大占空比通常为90-95%。
其采用分频器,可以得到两路互补的占空比分别为0-50%的PWM信号,同样,考虑到死区时间的存在,最大占空比通常为45%-47.5%。
这样的PWM信号用于半桥、全桥、推挽等双端电路的控制。
本题选用的ATmega16单片机运行速度快,且具有PWM波形发生功能,故选择方案
(1)。
6.反馈稳压方案选择
使用单片机ATmega16实时检测输出电压,由于输出电压与PWM波的占空比成正比,若测得的电压高于8V,则减小占空比;反之,则增加占空比。
设置一个阈值电压差e,当前电压差小于e时不进行调节,从而避免反复调节造成电压波动。
7.过流保护方案选择
采用软件方式实现过流保护。
单片机ATmega16实时检测输出电流大小,超过阈值电流后切断PWM输出信号,并进行声光报警提示。
若干秒后,系统尝试重新启动。
8.电流检测方案选择
(1)霍尔传感器。
采用ACS712型霍尔电流传感器实现对电流的隔离检测,其阻抗小,无需考虑共模电压的影响,有利于整体效率的提高。
但是其线性度较低,一致性不好,需要在软件中进行参数修正以达到较好的检测效果。
(2)精密电阻。
采用精密电阻将电流信号转换为电压信号,参数一致性好,线性度高,能达到比较高的控制精度。
但由于精密电阻采样的是电感支路的电流信号,有一定的共模电压,且在该方式下精密电阻上存在一定的损耗。
选择方案
(2),采样电阻选取0.1Ω10W的精密电阻。
选取阻值小的电阻以最大限度减少采样电路对输出的影响;选择大功率电阻,减小温升,提高采样电路的精度。
9.系统整体框图
图1系统整体框图
二、理论分析与计算
1.DC/DC变换器稳压参数计算
两个DC/DC模块可以等效为两个带有内阻的电池,同时并联在一个负载电阻的两端。
设输出电压为
,负载电阻为R,模块1的占空比为
,模块2的占空比为
,则模块1的输出电压为
,模块2的输出电压为
。
主电路图可以简化为图2。
图2主电路简化示意图
根据电路原理:
即
当两个电源的等效内阻近似相等时,有
,则
可见当负载电阻一定时,输出电压与两路模块的占空比之和成正比。
调节两路模块输出PWM波的占空比之和即可调节输出电压,所以稳压的过程如下:
用单片机产生两路PWM波,分别控制两个模块的开关管,对输出电压进行采样,反馈给单片机。
当输出电压
时,减小两模块的占空比,使
减小,从而减小输出电压;当输出电压
时,增大两模块的占空比,使
增大,从而增大输出电压。
反复调节,直到满足预先设置的精度为止。
2.均流比例计算
预设电流比
,通过测控电路分别测量两模块的输出电流,当两电流比值大于设定值时,则减小模块1的占空比,增大模块2的占空比;当两电流比值小于设定值时,则增大模块1的占空比,减小模块2的占空比。
反复调节,直到满足预先设定的精度为止。
三、电路设计与实现
1.主电路设计
开关频率由单片机ATmega16输出的PWM波频率决定,根据其数据手册,有公式
其中变量N代表分频因子,取1;
为晶振频率,选择8MHz。
由Buck电路拓扑结构可知,理论占空比
根据本题要求,每个模块的额定输出功率为16W,输出电压为8V,故每个模块的额定输出电流应至少为2A。
为了使电源模块满负荷工作时不发生过热,留一定裕量,设计每个模块的额定输出电流为
。
电感电流纹波
的典型取值通常为直流分量的满负荷值
的10%~20%。
让
太大会增加电感和半导体开关设备的峰值电流,从而增加体积与成本。
因此本设计中选择电感电流纹波
。
根据公式可求得
其中
为开关周期,
。
为避免手工绕制电感,选择标准电感值
。
设输出电压纹波峰-峰值
,电容C的选择按公式
为了尽量降低输出纹波,参考其他设计,选择电容值为2200
。
Buck电路工作在连续导电模式的条件是(占空比D取33%)
由于需要调节占空比D来稳压,若要保证电路在D取任何值时都工作在连续导电模式,则
因此调节负载电阻的时候应注意避免使负载电阻大于20.6
。
主电路采用N沟道功率MOSFETIRF540作为开关管(导通电阻77
);采用高速功率MOSFET和IGBT驱动器IR2102作为PWM驱动芯片(驱动能力强,开启上升时间100ns,关断下降时间50ns);采用肖特基二极管1N5822作为续流二极管(耐压40V,最大电流3A),能很好地满足题目的要求。
主电路的电路图如图3。
图3主电路电路图
2.辅助电源设计
如图4,由于输入电压为24V,不能满足测控电路和单片机供电的需要,故需要外加辅助电源。
辅助电源模块采用降压型开关稳压电源控制器LM2576,该芯片具有多种固定电压输出型号和可调电压输出型号,内置固定频率为52kHz的振荡器,电压转换效率高(可达77%到88%),输出电压的误差范围小(最大
4%),负载驱动能力大(最大3A)。
本设计中选用LM2576-12为集成运放和PWM驱动芯片供电,选用LM2576-5为单片机供电。
LM2576外围电路的元器件取值参考该芯片的数据手册。
图4辅助电源电路图
3.测控电路设计
如图5,测控电路实现将检测到的电流和电压反馈给单片机。
电流测控部分,取样电阻为0.1Ω10W的精密电阻,避免温度升高对测量精度的影响。
取样电阻上压降为0.05~0.2V,对输出电压造成的影响不大,同时功率损耗较小。
电压测控部分,采用两个20kΩ的电阻分压,输出电压理论上是0~4V,可以送入单片机的ADC进行采样。
在电压、电流采样电路的前端均串接一个电压跟随器,保证阻抗匹配,减小单片机电路对主回路的影响,提高采样精度。
图5测控电路电路图
4.单片机模块设计
如图6,单片机模块由微控制器ATmega16最小系统和外部设备构成,实现对电流电压采样信号的处理以及稳压、均流等功能。
其中单片机的定时器产生占空比可调的PWM波形,输出给主电路驱动功率MOSFET完成对DC/DC变换器的控制;电压电流的采样信号经单片机内部10位ADC转换成数字信号,与人工设定的电压和电流值比对,从而进行相应的计算和调整。
图6单片机模块结构图
四、软件设计
1.总流程图
图7程序总流程图
2.控制算法
(1)PID调节。
这种算法是比较成熟的控制算法,参考资料多,控制效果好。
但是需要通过实验整定系数,较为繁琐。
(2)增减调节。
采用统一的步进值进行调节。
由于时间有限,且题目对调整速度的要求并不高,所以即使不采用PID算法也能达到题目要求。
这种方式减少了编程量,提高了开发效率。
选择方案
(2)。
具体程序见附录。
五、测试方案与结果分析
1.测试仪器
RIGOLDM3051数字多用表
RIGOLDS1102E双通道数字示波器
SUINGSS3225可跟踪直流稳定电源
2.测试方案
测试框图如图8,按照题目要求对被测量进行测量并记录结果。
图8测试框图
3.测试数据
(1)恒压、均流及效率测试
保持其他条件不变,调整负载至额定输出状态,即负载电流为4A,测量输入、输出电压和电流,记录输出电压误差的绝对值,计算系统效率
;记录调整负载完毕到读数稳定的时间t。
如表1所示。
表1恒压、均流及效率测试数据
24
1.55
8.10
3.90
84%
3.2
(2)输出定比例分流模式测试
保持输出电压
,调整负载使负载电流分别为1.0A、1.5A和4.0A,其对应电流比分别为
、
、
。
测量输出电压和每个模块的输出电流,计算输出电流相对误差的绝对值;记录调整负载完毕到读数稳定的时间t。
六、总结
本系统以AVRATmega16单片机为控制核心,结合MOS管驱动器IR2102,低导通电阻功率MOSFETIRF540制作了一台具有可控均流比功能的开关电源并联供电系统,完成了题目的大部分要求。
在硬件方面,可以选择导通电阻更低的开关管如IRF3205,进一步减小功耗。
软件方面,若能采用PID控制理论可以进一步提高控制效率,减小过渡时间。
参考文献
[1]全国大学生电子设计竞赛组委会.2011年全国大学生电子设计竞赛获奖作品选编[M].北京:
北京理工大学出版社,2012
[2]裴云庆,杨旭,王兆安.开关稳压电源的设计和应用[M].北京:
机械工业出版社,2010
[3][美]RonLenk著.王正仕,等译.实用开关电源设计[M].北京:
人民邮电出版社,2006
[4]林云,管春.电力电子技术[M].北京:
人民邮电出版社,2012
[5]马洪涛等.开关电源制作与调试[M].北京:
中国电力出版社,2010
[6]张华宇等.AVR单片机基础与实例进阶[M].北京:
清华大学出版社,2012
[7]老杨,李鹏举.AVR单片机工程师是怎样炼成的[M].北京:
电子工业出版社,2012
[8]ATMEL.ATmega16数据手册[Z].2003
附录:
程序
#include
#include
#include
#include"1602.h"
#defineucharunsignedchar
#defineuintunsignedint
#defineGet_Bit(val,bitn)(val&(1<<(bitn)))
uintaddata;
uintrec=1;
ucharflag=1;//进入按键中断标志
ucharkey_flag=0;//按键标志位
uintnum1=1,num2=1;
voidport_init(void)
{
PORTA=0xF8;
DDRA=0x07;
PORTB=0x00;
DDRB=0xFF;
PORTC=0xFF;//m103outputonly
DDRC=0x00;
PORTD=0xCF;
DDRD=0x30;
}
//TIMER1initialize-prescale:
1
//WGM:
5)PWM8bitfast,TOP=0x00FF
//desiredvalue:
31.25KHz
//actualvalue:
31.250KHz(0.0%)
voidtimer1_init(void)
{
TCCR1B=0x00;//stop
TCNT1H=0xFF;//setup
TCNT1L=0x01;
OCR1AH=0x00;
OCR1AL=0x66;//改变A占空比66
OCR1BH=0x00;
OCR1BL=0x66;//改变B占空比
ICR1H=0x00;
ICR1L=0xFF;
TCCR1A=0xF1;
TCCR1B=0x09;//startTimer
}
/*延时函数*/
voiddelay_ms(unsignedintxms)
{
inti,j;
for(i=0;i{
for(j=0;j<1140;j++);
}
}
voiddelay(uintx)
{
inti,j;
for(i=0;i{for(j=0;j<200;j++);}
}
//按下按键后待处理的程序
voidkey_sol(void)
{
ucharkey;
ucharcont1[]={"Idistribute:
"};
ucharcont2[]={"X:
Y=1:
1"};
flag=0;
LcdInit();
WriteChar(1,0,13,cont1);
WriteChar(2,0,16,cont2);
writecom(0x0f);//开光标显示
writecom(0xc6);
while(key_flag!
=0)
{
key=PORTD;
/*确定按键*/
if(Get_Bit(PIND,PD0)==0)
{
delay_ms(10);
key_flag++;
while(!
(Get_Bit(PIND,PD0)));//等待按键松开
delay_ms(10);
}
switch(key_flag)
{
case1:
/*增加按键*/
if(Get_Bit(PIND,6)==0)
{
delay_ms(10);
num1++;
if(num1==10)
{
num1=9;
}
WriteNum(2,6,ASCII[num1]);
writecom(0xc6);
while(!
(Get_Bit(PIND,PD6)));//等待按键松开
delay_ms(10);
}
/*减少按键*/
if(Get_Bit(PIND,7)==0)
{
delay_ms(10);
num1--;
if(num1==0)
{
num1=1;
}
WriteNum(2,6,ASCII[num1]);
writecom(0xc6);
while(!
(Get_Bit(PIND,PD7)));//等待按键松开
delay_ms(10);
}
break;
case2:
writecom(0xc8);
if(Get_Bit(PIND,6)==0)
{
delay_ms(10);
num2++;
if(num2==10)
{
num2=9;
}
WriteNum(2,8,ASCII[num2]);
writecom(0xc8);
while(!
(Get_Bit(PIND,PD6)));//等待按键松开
delay_ms(10);
}
/*减少按键*/
if(Get_Bit(PIND,7)==0)
{
delay_ms(10);
num2--;
if(num2==0)
{
num2=1;
}
WriteNum(2,8,ASCII[num2]);
writecom(0xc8);
while(!
(Get_Bit(PIND,PD7)));//等待按键松开
delay_ms(10);
}
break;
case3:
key_flag=0;
break;
}
}
}
#pragmainterrupt_handlerint0_isr:
iv_INT0
voidint0_isr(void)
{
delay_ms(10);
key_flag=1;
key_sol();
while(!
(Get_Bit(PIND,PD2)));//等待按键松开
delay_ms(10);
flag=1;
LcdInit();
}
voidinit_devices(void)
{
//stoperrantinterruptsuntilsetup
CLI();//disableallinterrupts
port_init();
timer1_init();
MCUCR=0x02;
GICR=0x40;
TIMSK=0x00;//timerinterruptsources
SEI();//re-enableinterrupts
//allperipheralsarenowinitialized
}
uintAD_GetData(uintad_input)
{
ADMUX|=0x40;//ADC参考电压AVcc
ADCSRA|=0x87;//使能ADC,128分频
ADMUX=ad_input;//选择AD转换通道
ADCSRA|=(1<delay
(1);
while(!
(ADCSRA&(1<ADCSRA|=(1<ADCSRA&=0x0f;
returnADC;
}
/*电压修正*/
voidvol_comp(uintvol)
{
if(vol>800)
{
OCR1AL=OCR1AL-1;
OCR1BL=OCR1BL-1;
}
if(vol<800)
{
OCR1AL=OCR1AL+1;
OCR1BL=OCR1BL+1;
}
if((OCR1BL<5)||(OCR1BL>250)||(OCR1AL<5)||(OCR1AL>250))//超出可控制范围
{
ucharcont1[]={"ERROR:
"};
ucharcont2[]={"OUTOFCONTROL"};
LcdInit();
WriteChar(1,0,13,cont1);
WriteChar(2,0,14,cont2);
flag=0;
while(!
flag);
OCR1AL=0x66;//初始化A占空比66
}
}
voidcur_comp(uintcur1,uintcur2)
{
uintidea_ratio,current_ratio;
idea_ratio=(num1*100)/num2;
current_ratio=(cur1*100)/cur2;
if(current_ratio>idea_ratio)
{
OCR1AL=OCR1AL-1;
OCR1BL=OCR1BL+1;
}
if(current_ratio{
OCR1AL=OCR1AL+1;
OCR1BL=OCR1BL-1;
}
if((OCR1BL<5)||(OCR1BL>250)||(OCR1AL<5)||(OCR1AL>250))//超出可控制范围
{
ucharcont1[]={"ERROR:
"};
ucharcont2[]={"OUTOFCONTROL"};
LcdInit();
WriteChar(1,0,13,cont1);
WriteChar(2,0,14,cont2);
flag=0;
while(