ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

2015电赛A题双向DC-DC变换器解析:拓扑、控制与调试

2015电赛A题双向DC-DC变换器解析:拓扑、控制与调试 简介2015年全国大学生电子设计竞赛双向DC-DC变换器赛题完整资料包面向电子设计竞赛参赛者、电源方向学习者或需要完成恒流充电项目的开发者提供从原理图、PCB到软件代码与设计论文的一整套可复现方案。压缩包共二十五个文件、约五点一四兆字节包含Altium Designer原理图与PCB文件、Keil工程源码与汇编启动文件、可烧录的十六进制文件、Word格式设计报告另有三个RAR子压缩包和工程备份划分清晰便于分类使用。目前已有五千八百五十八人学习下载。方案依据赛题要求完成电池恒流充电设计充电电流一至二安培步进可调步进零点零五安培输出电压在二十四至三十六伏特变化时电流变化率不超过百分之一实测百分之零点八读者可按图搭建电路、导入Keil工程编译烧录并结合论文理解控制策略、参数整定与测试方法对准备电赛或进行双向直流-直流电源设计极具参考价值。1. 2015年电赛A题解析双向DC-DC到底考的什么1.1 题目要求还原与核心考点2015年全国大学生电子设计竞赛的A题是“双向DC-DC变换器”这个题在当年的电源类题目里关注度相当高。题目核心要求是设计一个能够实现能量双向流动的DC-DC变换器一侧接直流电源通常理解为母线侧另一侧接储能元件比如蓄电池组或超级电容系统需要根据控制指令自动切换能量传输方向——正向工作时给储能元件充电反向工作时储能元件向母线回馈能量。拆开来看考点其实非常明确第一功率变换拓扑要能支持双向运行也就是同一个电感或变压器上电流方向可以反向第二控制策略要能在双向模式下都稳定工作不能只在单一方向稳定第三系统要有状态检测和模式切换能力能根据输入端的指令或者负载状态自主判断该往哪个方向传能。这三个考点对应到具体作品里就是硬件拓扑、软件闭环和逻辑判断三块能力缺一不可。这个压缩包里包含的原理图、PCB源文件、源代码和论文正好覆盖了从方案设计到实物调试再到报告撰写的完整链路。对于准备电赛或者做电源方向课程设计的人来说这是一份可以直接作为起点的参考工程——不是说拿来抄而是可以从中看到一套完整作品是怎么把需求一步步落到具体电路和代码上的。1.2 为什么“双向”是这道题的灵魂这里要特别说一下“双向”这两个字的含义。传统的Buck或者Boost电路是单向变换器能量只能从输入端流向输出端控制目标也只有一个方向的电压或者电流。双向DC-DC不一样它要求同一套主电路既能正向降压给电池充电又能反向升压把电池的能量送回母线。这不仅仅是把两个单向电路拼在一起那么简单难点在于开关管的驱动时序、电感电流的参考方向、控制环路的稳定性所有这些都要在两套工作模式下都成立。用最生活的类比来理解单向DC-DC就像单向行驶的匝道只管一个方向的车流双向DC-DC则像一条可变车道的隧道早晚高峰车流方向不同但隧道本身还是那条隧道。你需要设计一套信号和管控逻辑让车辆能量在两个方向上都顺畅通行。所以做这个题目第一个关键决策就是拓扑选型。2015年的竞赛环境下大家常用的方案大概有三类非隔离的Buck-Boost电路、四开关Buck-Boost也就是级联升降压拓扑以及隔离型的双向全桥/双有源桥。下面我会详细讲讲为什么最终选择的方向基本决定了后面所有工作的复杂程度。2. 方案选型与系统架构2.1 拓扑对比Buck-Boost、四开关Buck-Boost与DAB这几种拓扑在实验室里我都实际搭过或者深入研究过简单说说各自的性格。普通Buck-Boost电路也就是单电感反极性拓扑结构最简单元器件最少一个电感加两个开关管加两个二极管实际做双向要用同步整流把二极管换成开关管就能构成。它的特点是输出电压和输入电压极性相反控制逻辑也不复杂。但问题是输入输出电流都是断续的纹波大而且开关管电压应力高不太适合做100瓦以上的功率等级。电赛题目的功率要求通常不高所以用这个方案的人不少简单可靠。四开关Buck-Boost就是两个半桥串联中间接一个电感四个开关管。这个拓扑的優勢是输入输出同极性而且通过控制两个桥臂的占空比关系可以实现从降压到升压的连续过渡整个工作范围没有死区。它本质上可以理解为Buck和Boost的级联但共用电感所以器件的电压电流应力都比较均衡。实际调起来比普通Buck-Boost复杂一点因为要同时控制两组开关管但效率和纹波都更好。双有源桥DAB是隔离式的方案通过高频变压器实现电气隔离和电压匹配两侧都是全桥结构功率大、效率高非常适合大功率双向变换。但问题是控制复杂需要精确控制两个桥之间的移相角而且变压器设计对本科阶段的参赛者来说门槛较高调试周期长。如果不是题目明确要求隔离或者功率等级很大电赛环境下一般不会优先选它。2.2 系统架构与关键芯片选型综合竞赛的时间限制、调试难度和题目功率要求我记得A题的指标是在一个比较常见的功率等级大约几十瓦到上百瓦最终决定采用四开关Buck-Boost拓扑作为主功率级控制核心用STM32F103C8T6。这个芯片在电赛里的地位不用多说资源够用、资料海量、上手快高级定时器TIM1和TIM8都能输出带死区的互补PWM正好驱动两个半桥。主功率器件选择N沟道MOSFET比如IRFB3607或者类似的低压大电流管子配合半桥驱动芯片IR2104。这里要注意IR2104自带死区时间和自举电路非常适合用来驱动半桥但两个半桥需要两片IR2104。从驱动角度四开关Buck-Boost有两种工作模式降压模式下Q1和Q2组成的半桥Buck半桥高频工作Q3和Q4那个半桥的Q3常闭、Q4常开升压模式下反过来Q3和Q4高频工作Q1和Q2的Q1常开、Q2常闭。这种“半桥工作、半桥直通”的模式让驱动逻辑变得很简单不需要四个管子同时高频开关这对减少开关损耗和调试难度都很有好处。电流采样用采样电阻加差分运放的方式这里强烈推荐INA240这种带PWM抑制的电流检测放大器它可以直接放在低边共模抑制能力强在电机驱动和电源控制里都很常见。电压采样用电阻分压加运放跟随分别采母线侧电压和储能侧电压。整个系统的控制框图可以概括为STM32通过ADC实时采集两侧电压和电感电流根据工作模式计算PWM占空比通过PID调节器输出控制量经过TIM1的互补PWM通道送到IR2104最后驱动四个MOSFET完成能量转换。软件方面整个工程采用前后台结构主循环里跑状态机和显示刷新定时器中断里跑电流环和电压环。控制频率和开关频率的关系很重要一般PWM频率定在50kHz到100kHz之间控制环路频率放在PWM频率的十分之一到二十分之一也就是5kHz到10kHz这样数字控制器才有足够的带宽去抑制负载扰动。3. 硬件核心细节原理图与PCB实操解析3.1 主功率回路与驱动电路设计要点打开这个项目的原理图建议先找几个关键网络功率输入、功率输出、电感两端节点通常标为SW1和SW2、半桥驱动输出、电流采样输出、电压采样分压点。把这几个网络理清楚整张原理图的逻辑就通了。主功率回路的走线是原理图设计里第一优先级。四开关Buck-Boost的电流路径有两条一条是Buck模式下的输入到电感再到输出另一条是Boost模式下的储能侧到电感再到母线。两条路径上有相同的大电流通道就是电感两端的两个开关节点。这两个节点在PCB上的寄生电感会直接导致开关振铃所以在原理图阶段就要预留好吸收电路的位置——通常在开关节点对地加一个RC吸收snubber典型值100欧姆加1nF具体参数要根据实际波形调整。驱动电路方面IR2104的VCC一般取10V到15V注意VCC和GND之间要放一个至少10uF的电解电容和100nF的瓷片电容并联这个组合很重要因为自举电容充电时会对VCC产生一个瞬态电流抽取如果没有足够的本地储能VCC电压会跌落导致驱动能力不足。自举电容的选择也有讲究我一般用100nF到1uF的陶瓷电容必须用X7R或者更好温度特性的不能用Y5V否则高温下容量衰减会导致高端管驱动失效。还有一个容易忽略的点控制芯片的GND和功率部分的GND在原理图上要明确区分。STM32的模拟地AGND和功率地PGND最终单点连接这个单点连接点选在采样电阻的参考端最合适这样功率电流的压降不会叠加到控制信号上。如果你在原理图里看到有人直接把所有地网络连成一个GND那PCB阶段除非有丰富的铺铜经验和分割技巧否则后期电流采样噪声会让你怀疑人生。3.2 PCB布局布线的实测经验PCB这部分是电赛作品能不能稳定跑起来的分水岭。很多人原理图没问题一上电就炸管或者电流波形乱跳问题基本都出在PCB布局上。结合这个项目的实际工程我总结了几条在电源板设计里一定要遵守的规则。第一功率环路的面积必须最小化。什么是功率环路以Buck模式为例输入电容正极到Q1漏极、Q1源极到Q2漏极、Q2源极回到输入电容负极这个回路就是高频开关电流的路径。回路面积越大寄生电感越大开关瞬间产生的电压尖峰越高。做法是把输入电容放在Q1和Q2组成的半桥旁边让这条回路在PCB上形成一个紧凑的回路。同样的道理输出电容也要紧贴电感输出端和半桥下端。第二电感下面不要铺铜。这里的“铺铜”指的是完整的地平面或者电源平面。电感在工作时会产生交变磁场如果下方有大面积铜箔会感应出涡流一方面增加损耗另一方面会把噪声耦合到其他层。我在实际项目里都是把电感正下方的铜全部挖掉包括底层和内电层这个方法百试百灵。第三电流采样线要用Kelvin接法。采样电阻两端的两根采样线必须从电阻的焊盘根部引出而且不能经过任何大电流通道最好走成差分对正负两根线紧贴着走到运放输入端。千万不能把采样线连到采样电阻的地端旁边的大面积铜箔上然后指望运放自己分清楚压降。我在做这版PCB时专门在采样电阻两端加了四个焊盘两个走大电流两个走采样线效果立竿见影。第四驱动芯片的位置要靠近它所驱动的MOSFET。IR2104的HO和LO输出走线越短越好如果驱动线太长栅极回路的寄生电感会和MOSFET的输入电容形成LC振荡导致栅极电压过冲甚至击穿。如果布局实在无法让驱动芯片靠近各自半桥那就在驱动电阻后面加一个10V的稳压管做栅极钳位防止Vgs过压。4. 软件控制逻辑与代码实现4.1 控制框架与状态切换逻辑软件部分的核心不是PID公式本身而是状态机的设计。这个工程的状态划分我建议这样理解系统存在三个基本状态——待机、正向充电、反向放电。待机状态全桥关断只有采样电路工作正向充电时系统运行在Buck模式以恒流或恒压方式给储能侧充电反向放电时运行在Boost模式把储能侧能量回馈到母线侧。模式切换不能靠“拍脑袋”直接跳转否则电感电流会突变轻则过流保护重则炸管子。正确做法是所有模式切换都经过待机状态并且采用软启动方式。具体来说假设要从正向切换到反向先停止PWM输出等待电感电流下降到零然后切换方向标志位再以很小的占空比启动PWM让占空比慢慢爬升到目标值。这个逻辑说起来简单但实际代码里最容易出bug的就是切换瞬间的标志位处理。我在这版代码里用的是枚举类型定义状态加上一个模式切换请求变量主循环里检测到请求后进入切换流程。中断里只根据当前状态执行对应的控制算法不做模式切换决策这样最大程度避免了中断和主循环的竞争问题。4.2 PWM与PID关键代码解析PWM配置这块STM32F103的TIM1是高级定时器输出互补PWM时需要设置刹车和死区。死区时间根据MOSFET的开关特性来定IRFB3607这类管子死区设置在100ns到500ns之间比较合理。太短会导致上下管直通太长会增加体二极管导通损耗。PID控制器的实现我推荐用增量式PID尤其是在电流环里。原因很简单增量式只输出占空比的增量不会因为设定值突变导致输出饱和而且不需要积分限幅就能天然防止积分饱和。核心代码结构大致长这样float pid_update(pid_t *pid, float ref, float fb) { float err ref - fb; float delta pid-kp * (err - pid-err_last) pid-ki * err pid-kd * (err - 2.0f * pid-err_last pid-err_last2); pid-err_last2 pid-err_last; pid-err_last err; pid-output delta; if (pid-output pid-out_max) pid-output pid-out_max; else if (pid-output pid-out_min) pid-output pid-out_min; return pid-output; }这段代码里最重要的是输出限幅。四开关Buck-Boost在Buck模式下占空比上限不能设到100%否则Q1一直导通储能侧电压会直接冲到输入端电压失去控制能力。我在实际测试中把上限设在90%下限设在10%留出保护余量。电压环和电流环的串联结构也要注意。充电时通常是双环外环电压环控制目标电压内环电流环控制电感电流。放电时一般只用电流环因为放电的最终目标是维持母线电压稳定但在电赛题目里通常指定了放电电流。为了简化这版代码在正向充电时用电压外环电流内环反向放电时直接用电流环用设定电流作为给定值。两个环的控制频率可以不一样电压环跑得慢一些比如1kHz电流环跑得快一些比如10kHz这样在调试时更容易定位问题是出在哪一环。关于PID参数整定我分享一个很实用的方法先把积分项和微分项设为零只保留比例项从小到大慢慢加Kp观察输出波形直到出现轻微振荡然后把Kp回退到振荡值的50%到60%。接着加积分项Ki从小往大加直到静差消除。微分项在电流环里一般用不上在电压环里可以加一点来抑制超调但如果采样噪声大微分反而会放大噪声要配合滤波使用。5. 实测数据、调试经验与常见问题5.1 上电调试流程与安全操作电源类作品的安全调试流程我在这几年里深有体会。第一次上电九成概率会出问题所以流程必须设计成“把故障限制在可控范围内”。第一步不装MOSFET只给控制板供电用示波器检查PWM波形是否正常IR2104的输出是否和预期一致。这一步能排除80%的逻辑和配置问题。第二步装上MOSFET但不接功率电源只给控制板和驱动供电检查开关节点是否有正常的开关波形栅极驱动波形是否有过冲。第三步功率输入端串一个限流电阻或者用可调限流的直流电源电流限制设到几百毫安级别给定一个小占空比观察系统是否正常建立电压。确认一切正常后再逐步增加功率。调试时千万不要空载启动Buck电路。无感负载的情况下电感电流断续会造成输出电压失控而且空载时输出电容充电电流在启动瞬间会非常大。正确的做法是接一个假负载比如功率电阻或者直接接电池/超级电容让系统始终有电流路径。5.2 典型故障排查速查表这个项目我前前后后调试遇到过不少问题有一些是电赛电源题的“经典保留项目”整理成表格方便大家对照排查。现象可能原因排查方向上电就炸MOSFET上下管直通死区不足、驱动电源不足、栅极振荡过压检查死区设置、驱动VCC电容、栅极并联稳压管电感啸叫开关频率落入可听范围、环路不稳定产生低频振荡检查PWM频率是否低于20kHz、PID参数是否过大电流采样波形毛刺大采样时刻在开关瞬态、采样线走线太长、缺少差分滤波改用PWM同步采样、采样线做Kelvin接法、加RC滤波输出电压跌落环路带宽不够、占空比上限限制、负载过大提高控制频率、检查占空比限幅、检查电感饱和模式切换瞬间过流切换后电感电流没有归零、切换时序错误强制等待电感电流低于阈值再切换状态自举电压异常自举电容太小或高端管长时间导通加大自举电容、考虑用外部辅助电源给高端供电这里单独说一个最容易踩的坑自举电路在占空比接近100%时会失效。因为高端MOSFET需要自举电容供电如果高端导通时间太长自举电容没有足够时间从VCC充电栅极驱动电压会不断下降最终导致管子进入线性区发热烧毁。四开关Buck-Boost在Buck模式占空比接近上限时正好会遇到这个问题这就是为什么前面说占空比上限要控制在90%而不是100%。调试实录我在这套方案上的一次完整优化最后分享一段我基于这套工程做的一次实际调试经历希望对正在准备比赛的人有帮助。当时的问题是这样的反向Boost模式带满载输出母线电压在启动瞬间会出现一个很大的过冲峰值超过目标电压的20%而且持续几百毫秒才回落到正常值。刚开始怀疑是电压环响应太慢把Kp调大结果过冲更大又怀疑是软启动时间不够把启动斜坡拉长但只是把过冲时间延后了问题本质没解决。后来用示波器同时抓电感电流和输出电压曲线才发现问题根本不在环路参数而是模式切换逻辑有缺陷从Buck模式切换到Boost模式时系统是直接切到待机状态再启动的但切换时电感电流已经回零Boost模式启动的初始占空比又比较低导致储能侧电压被拉低输入欠压保护动作电压环在恢复过程中产生了较大超调。解决办法是在模式切换后先不进入闭环而是用一个开环固定占空比让电感电流建立起来当电感电流达到目标值的80%左右再切入闭环控制。这样做等于给系统一个“预起动”过程让变换器在闭环介入之前就处于一个接近稳定工作点的状态闭环只需要做小范围修正自然就不会过冲了。这个改动加进代码后启动过冲从20%降到了3%以内。类似这种问题在书本上很难直接找到答案必须对着波形一点点推敲。这也是为什么我特别建议大家在做电源题时示波器是你最该信任的工具——不要凭感觉调参数每一次修改都要有波形依据。调试的过程虽然磨人但每次解决一个问题对整个系统的理解就会加深一层这种积累比拿奖本身更有价值。本文还有配套的精品资源点击获取
返回列表