1、简单易用,可快速上手
2、流畅支持300个器件或1000个焊盘以下的设计规模
3、支持简单的电路仿真
4、面向学生、老师、创客
1、全新的交互和界面
2、流畅支持超过3w器件或10w焊盘的设计规模,支持面板和外壳设计
3、更严谨的设计约束,更规范的流程
4、面向企业、更专业的用户
标准版 2021年C题-三端口DC-DC变换器 深邃黑暗幻想
简介:国电赛c题 三端口DC-DC变换器 具有最大功率点跟踪 四开关同步buck/boost变换器 电池功率补偿等特性。
开源协议: GPL 3.0
目录
本作品设计了一个四开关升降压DC-DC转换装置与一个半桥双向DC-DC转换器。系统基于PI控制算法闭环控制DC-DC变换器输出;主控芯片STM32F411CEU6,控制栅极驱动器EG3112, 023N10N5组成拓补桥,实现了在不同模式下自动切换的Boost、Buck以及升降压过渡模式的功能;采用INA181和INA180对电流电压进行采样,对各个端口的电压与电流进行调节与反馈,最后在各个端口实现电压与电流的调节。以下为相关论证与选择。
本团队由三名成员组成,成员均来自五邑大学,有多次获奖经历,均是电子类的同学。成员中有两位是2019级的兄弟,一位是2020级的兄弟。团队成员中有对于STM32运用得比较熟悉的,有对于PID调节比较在行的同学,团队中的成员对于元器件的选型是比较有经验的,因为我们都曾玩过几年一些小项目,所以这次电赛强强联合,终于在三天四夜里把作品赶了出来,虽然过程比较坎坷,但是对于我们来说也收获匪浅。
题目的意思比较明了,当太阳能电池输出的功率不能让负载端的电压等于30V时,就需要电池升压来提供功率补偿,使得输出稳定在30V,反之当输入功率过大时,就用多余出来的功率去充电池。当输入条件改变时,控制器会通过电流电压采样的实时值来使输出电压永远稳定在30V,电源会在升压和降压的模式下不断切换,因此肯定是需要用到双向DC-DC的拓扑,在确定了基本的拓扑结构之后,剩下的就是数控电源部分参数调节的问题了。
而发挥部分的最大功率跟踪这个问题,其实只要保证的电压时刻等于输入电压的一半即可,在数控上通过不断调节拓扑结构中管子的占空比即可,具体的调节方法灾后面会有提到。而对于效率,其实只要采用了同步整流以及性能较好的管子的话基本都可以满足题目的需求,至于如何选型,在下文也会提到。但是想要更高的效率的话可能就要引入软开关模式了。
三端口变换器拓扑可以分为非隔离型、完全隔离型两类。
非隔离型变换器拓扑结构可通过多个直流变换单元共直流母线的方式或从多个二端口拓扑简化得到,容易扩展端口,拓扑结构简单,功率密度较高,各个端口之间没有电气隔离,存在一定的安全隐患。
完全隔离型变换器拓扑结构通过隔离变压器实现输入与输出之间的电器隔离,系统的安全系数高。这种结构方便电路分析,通过添加硬件解耦单元实现近似解耦[1],但这种拓扑结构存在开关器件数量较多、集成度低、控制复杂、难以提高功率密度等缺点。
方案总结:由于题目所给的电压不高,为了便于控制和获得较高的功率密度,在保证所有元器件的参数裕度充足的情况下,本次三端口变换器的方案选用非隔离型。
DC-DC的外围拓补电路,可供选择的有Sepic变换器,Cuk变换器,但上述的两种种变换器都有各自的缺点:Sepic变换器使用的外围元件过多[2];Cuk变换器的外围元件多,输出电压反向,且Cuk变换器上的耦合电容工作条件恶劣,容易损坏。
为了保证输出输入电压同向,同时在一个拓补结构中可以实现能量的双向流动,所以本方案中选取了两种拓补结构:四开关升降压DC-DC变换器以及半桥式双向DC-DC变换器。模拟光伏电池的电压变化范围较大,因此需要一个可以随时在Boost和Buck间切换的拓补结构,而光伏电池的输入电压在空载时较高,根据功能和每只开关管上的电压承受情况以及控制的方便性,选择四开关升降压DC-DC变换器。对于锂电池的充放电管理部分,由于功能较简单,采用半桥式DC-DC变换器。
方案一:电导增量法。电导增量法通过比较太阳能电池板的电导增量和瞬间电导来输出控制信号。当输出电导的变化量等于输出电导的负值时,太阳能电池板工作在最大功率点。该方法能够在较低误判率的情况下,实现较高的跟踪度,但却存在硬件要求高,算法复杂的缺点[3]。
方案二:干扰观测法。通过将本次太阳能电池板的输出功率和上次的相比较,来确定增加或减少太阳能电池板工作电压来实现MPPT,该方案硬件搭建较简单,算法实现容易,但容易出现震荡。
方案选择:题目已经给出模拟光伏电池的内阻为10Ω,因此只需要确保接入模拟光伏电池的输出端的电路的等效电阻为10Ω,即可实现最大功率跟踪。
开关频率越高,PWM的分辨率就会下降,同时MOS所带来开关损耗会越大,且在高频率下的开关会使磁芯的铜损和铁损增加。因此在较低频率的工作电路中,可降低开关损耗,但过低的开关频率会造成在带载时输出电压的纹波增大,若需要减少输出电压的纹波,则需要使用电感量更大的电感和并联更大的电容,故综合以上因素和实际测试后,本系统选择了40KHZ的开关频率,即单片机输出40KHZ的互补对称方波。
在本系统中功率器件选用IPP023N10N5,该MOS管漏源耐压100V,Rdson实测约1.5mΩ,具有极低的漏源导通电阻,较低的栅极体电阻,且驱动该MOS所需的功率小,栅极充电的时间常数较小,MOS管的抬升和下降时间、导通和关断的延迟时间也在PWM信号周期的可接受范围内。驱动芯片选用屹晶微电的EG3112,IO输出拉灌电流在本系统设定的频率下完全足以驱动本系统选型的NMOS,同时开延时、关延时和上升下降时间不影响PWM输出的性能。
与非同步整流相比,全桥整流采用低导通电阻的 MOS 管来替代整流二极管,可以有效地避免导通时续流二极管上产生的导致发热浪费效率的问题。以几毫欧的MOS管代替二极管,以降低通态压降,显著地降低整流电路的导通损耗,从而达到很高的效率。,
该电路输入电压,输出电压,输出电流恒定,开关频率为,输出电流纹波与电压纹波为,为对应PWM模式占空比[4]。
因此经过计算电感值取220μH,材料为铁硅铝。
四开关升降压输出端、电池组电压、模拟光伏电池电流电压采样均采用电阻分压实现,考虑到电阻的耗散,分压电阻取36K和2K,通过分压实现电压闭环控制,电流采样采用简单的专用电流检测放大器进行采样。
系统由硬件电路与软件程序组成。通过软件程序输出数字PWM波,实现Buck/Boost电路的升降压。其中在模拟光伏电池,电池组以及负载一侧均设置有电流电压电路,通过对采样点的数据进行分析,应用PI调节数字PWM波的占空比,实现恒流恒压的功能,系统框图组成如图1所示。
图1 系统组成
系统由两个DC-DC变换器,电流电压采样电路与STM32小板组成。MOS驱动芯片为EG3112,MOS管为IPP023N10N5。电路组成框图见图2。
图2 系统电路组成
在电路中,使用自举电桥驱动器为上下管提供可靠的驱动信号。使用双向DC-DC半桥拓补结构,当输入端的电压大于电池电压时,通过调整占空比使工作模式为同步Buck,对进行降压给电池充电。当模拟光伏电源的供电功率不足时,电池相当于电源,工作模式为同步Boost,为负载提供升压输出,见图3。
图3 半桥DC-DC
采用该结构可以使输入电压在低于或者高于输出电压时都能正常工作,当然,在题目的条件中,只用到了升压部分。为了让该电路可以在其他地方或者条件使用,提高泛用性,使用了升降压拓扑。空载情况下输出电压=输入电压*半桥1的占空比/半桥2的占空比。通过软件控制两侧占空比以实现最大功率跟踪。见图4。
图4 四开关升降压DC-DC
辅助电源由XL7005和7805构成,通过该电路从电源输入端取电,降压至12v为电桥驱动器供电,再通过7805将12V转为5V,给单片机小板供电,3.3V稳压芯片集成在STM32小板上,见图5。
图5 辅助电源
运放采用INA181A1和INA180A1,分别负责双向电池电流采样和单向输入端电流采样,因为其有固定的放大倍数,外围元件极少,因此采用。STM32小板及其电路图如下图所示。
图6 运放及单片机最小系统
在此次电源题目中,由于是一个相对较低压的系统,因此在设计中并没有将功率地和数字地隔开,但是倘若在电磁环境较复杂的电路中,就需要注意两地的隔离。由于电赛时间比较仓促,所以PCB未投入使用,我们的实物时用洞洞板搭出来的。PCB设计图如图7。
图7 PCB设计图
需要注意的是,在本设计中对于信号部分进行了铺铜处理,这样可以保证导线在传输过程中收到的外界干扰比较少,但是在不能确保地是比较“干净”时,普铺铜可能会起到反作用;另外,由于本电路中的开关频率较低,因此布线没有太讲究,但是一定要注意采样电阻的输出引线是从电阻焊盘最内侧引出,同时以最短路线接到放大器,以减少干扰。
实物为洞洞板作品,如图8所示。制作的PCB由于比完赛后有考试,现在刚送打样,希望各位看官不要嫌弃。
图8 作品实物展示
核心程序如下:
ii=(int)(ADC_Value[3]-3)*0.00402;
ib=(int)(ADC_Value[4]-2047)*0.00408;
ui=ADC_Value[0]*0.01555+ii*0.03;
uo=ADC_Value[1]*0.01574-(ib)*0.03;
ub=ADC_Value[2]*0.01543;
us=ii*10.25+ui+offset+0.2;
p+=ui*ii;
if(ui>=60){fault|=(1<<1);}//过压过流保护和故障错误码,极大减少了炸机的可能性
if(uo>=50){fault|=(1<<2);}
if(ub>=50){fault|=(1<<3);}
if(ii>=10){fault|=(1<<4);}
if(ib>=4.5){fault|=(1<<5);}
if (uo>32.0){
buost=CV_Loop(uo,35.0);
}else{
buost=-CV_Loop(ui,us/2);
bost=BAT_Loop(uo,30.0);
}
if (cnt==5000){cnt=0;p/=5000;//扰动观察MPPT,以较低频率运行微调
if(ib>0.2){HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_SET);}
if(ib<-0.2){HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_RESET);}
if (p_last>p){
if (dir_last==0){dir=1;}
if (dir_last==1){dir=0;}
}
if (p_last<p){
if (dir_last==0){dir=0;}
if (dir_last==1){dir=1;}
}
if (dir==0){
offset+=0.01;
p_last=p;
dir_last=dir;
}
if (dir==1){
offset-=0.01;
p_last=p;
dir_last=dir;
}
}cnt++;
if(fault==0x00){
BAT_Boost(bost);
Buck_Boost(buost);
}else{
Stop_pwm();
fault_cnt++;
if (fault_cnt>=50000){fault_cnt=0;fault=0x00;Start_pwm();}//故障恢复等待时间
}
void Buck_Boost(int duty)
{
int CR1,CR2,max;
max=0.98*TIM1->ARR;
if(duty>=0){CR1=TIM1->ARR-duty;CR2=max;}//正为降压,负为升压,0为不升不降
if(duty<0){CR2=TIM1->ARR+duty;CR1=max;}
if(CR1>max){CR1=0.98*TIM1->ARR;}//限制最高占空比
if(CR2>max){CR2=0.98*TIM1->ARR;}
if(CR2<0.2*TIM1->ARR){CR2=0.2*TIM1->ARR;}
TIM1->CCR1=CR1; TIM1->CCR2=CR2;//限制升压过高
}
void BAT_Boost(int duty)
{
int CR3;
CR3=duty;
if(CR3>0.98*TIM1->ARR){CR3=0.98*TIM1->ARR;}
if(CR3<0.3*TIM1->ARR){CR3=0.3*TIM1->ARR;}
TIM1->CCR3=CR3;
}
float CV_Loop(float now,float target)
{//最最简单的增量pi电压环控制
float kp=1,ki=3;
static float error,output,last_error;
error=now-target;
output+=kp*(error-last_error)+ki*error;
if(output<-2400){output=-2400;}
if(output>2400){output=2400;}
last_error=error;
return output;
}
float BAT_Loop(float now,float target)
{
float kp=1,ki=4;
static float error,output,last_error;
error=now-target;
output+=kp*(error-last_error)+ki*error;
if(output<0){output=0;}
if(output>2400){output=2400;}
last_error=error;
return output;
}
由于时间比较仓促,所以有些变量的类型使用得不太好,同时我个人觉得,由于没有外挂高精度ADC的原因,导致作品最后的电压调节精度不太够。
在电赛期间,每个队友都付出了很多时间和精力,我们几个都是睡实验室,睡醒后又接着干。很感谢兄弟们在这段时间里的付出。同时也非常感谢立创平台能给我们这一次机会来分享一下我们的参赛经历。同时,由于本人才疏学浅,在写报告时有什么疏漏或者错误也请大家指正,大家互相学习,共同进步!谢谢各位啦~
视频链接:https://www.bilibili.com/video/BV1AM4y1c7Ar?spm_id_from=333.851.dynamic.content.click
ID | Name | Designator | Footprint | Quantity |
---|---|---|---|---|
1 | 10u | C1,C2,C5,C6,C8,C9 | C0805 | 6 |
2 | 220μF | C3,C7,C10 | CAP-D12.5-F5.0 | 3 |
3 | 10u | C4 | C1206 | 1 |
4 | 0.1u | C11,C13,C19 | C0603 | 3 |
5 | 0.1u | C12,C14,C17,C20,C21,C22 | C0805 | 6 |
6 | 100u | CE5 | C1206 | 1 |
7 | 1N4148 | D1,D2,D3 | SOD-123_L2.8-W1.8-LS3.7-RD | 3 |
8 | SS110 | D8 | SMA_L4.3-W2.6-LS5.2-RD | 1 |
9 | 220μH | L1,L2 | T203125 | 2 |
10 | 100uH | L3 | IND-SMD_L6.0-W6.0_SWPA6045S | 1 |
11 | 023N10N5 | Q1,Q2,Q3,Q4,Q5,Q6 | TO-220AB-3_L10.4-W4.6-P2.54-L | 6 |
12 | 10 | R1,R2,R3,R4,R5,R6 | R0603 | 6 |
13 | 10mΩ | R7,R8 | R2512 | 2 |
14 | 1k | R9,R16,R27 | R0603 | 3 |
15 | 2k | R10,R13,R15 | R0603 | 3 |
16 | 36k | R11,R12,R14 | R0603 | 3 |
17 | 10k | R26 | R0603 | 1 |
18 | EG3112 | U1,U2,U3 | SOIC-8_L4.9-W3.9-P1.27-LS6.0-BL | 3 |
19 | KF301-2P | U4,U5,U11 | KF301-5.0-2P | 3 |
20 | XL7005A | U6 | SOIC-8_L5.0-W4.0-P1.27-LS6.0-BL-EP2.0 | 1 |
21 | 7805(TO-252) | U7 | PG-TO252-3_L6.6-W6.0-P4.56-LS10.0-BR-CW | 1 |
22 | 411CE核心板 | U9 | STM32F411CE核心板 扣插 | 1 |
23 | INA180A1IDBVR | U10 | SOT-23-5_L3.0-W1.7-P0.95-LS2.8-BR | 1 |
24 | INA181A1IDBVR | U12 | SOT-23-6_L2.9-W1.6-P0.95-LS2.8-TL | 1 |
展开
加载中...
是否需要添加此工程到专辑?