尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

用Buck-Boost控制器打造芯片级UPS:设计要点与实战解析

用Buck-Boost控制器打造芯片级UPS:设计要点与实战解析 1. 项目概述一粒芯片怎么变出一台不间断电源先说一个场景你在做一块工业控制板或者一套边缘网关设备主供电是12V适配器但系统要求断电时不能丢数据、不能重启至少得撑着几十秒让程序把状态存好、把外设安全关断。以往的做法是外挂一个标准的UPS模块体积大、成本高还得走一路独立的充电电路、切换电路和升压电路光是物料清单就多了十几颗料。而最近我接触到的这颗Buck-Boost Controller芯片方案把整个思路完全改掉了——它本身就是一台“芯片级UPS”。这个方案的原理说起来并不玄。Buck-Boost控制器本来就是用来做升降压转换的输入可以高于输出也可以低于输出靠四个开关管和一个电感来维持输出恒定。而“UPS-on-a-Chip”的思路就是把电池充放电管理、主电源掉电检测、输出无缝切换这几件事全部交给这一颗芯片来完成。主电源正常时芯片工作在Buck模式给负载供电同时分出一路给电池充电主电源掉电瞬间芯片立刻切到Boost模式从电池取电维持输出不跌落。整个过程不需要继电器不需要MOSFET开关阵列不需要单独的电源管理MCU更不需要机械结构。我花了两周时间把这套方案完整地搭了一遍从原理图设计、电感电容选型、PCB布局到满载测试中间踩了不少坑。这篇文章就围绕“如何用Buck-Boost控制器搭出一个UPS-on-a-Chip系统”把关键设计思路、参数计算、调试方法和踩坑实录一次性讲清楚。适合正在做电池后备供电、掉电保持、数据保护电路的硬件工程师也适合想搞明白非隔离升降压电源是如何工作的入门者。2. 核心设计思路为什么是Buck-Boost而不是别的拓扑2.1 传统后备供电方案的三宗罪在聊Buck-Boost方案之前先看看我们以前是怎么做掉电保持的。最常见的做法是“主电源 升压模块 二极管切换”主电源正常时一个低压差稳压器或者隔离模块给系统供电同时一个独立的充电IC给锂电池充电主电源掉电后一个Boost升压模块从电池取电把电压升到系统需要的12V再通过一个二极管或者MOSFET“或门”切换到输出端。这套方案有三个天生的问题。第一是效率浪费主电源到负载的路径上多了一级常电状态下这级电路也在损耗功率设备待机功耗根本压不下去。第二是切换延迟二极管或门切换虽然简单但切换过程中输出会有一个跌落尖峰如果负载是FPGA或者有严格上电时序的处理器这个尖峰轻则触发复位重则导致逻辑混乱。第三是物料和面积充电IC、升压IC、切换MOSFET、采样电阻、两个电感……一套下来占了小半个板子成本也不好看。而Buck-Boost控制器做UPS核心思路是把“常电状态给负载供电”和“掉电状态从电池升压供电”统一到同一个功率级里。常电时芯片跑Buck降压把12V适配器降到系统电压掉电时芯片自动反着工作跑Boost升压把电池电压抬到系统电压。同一个电感、同一对MOSFET、同一套控制环路只是工作模式变了这就是“芯片级UPS”的最根本优势。2.2 四开关Buck-Boost的三种工作模式我用的这颗芯片是典型的四开关Buck-Boost架构内部集成了两个高边开关和两个低边开关外部只需要一个电感。简单画一下拓扑输入端串联Q1高边Buck管和Q2低边Buck管电感串在中间输出端再串联Q3高边Boost管和Q4低边Boost管。这四颗开关可以组合出三种工作状态Buck模式Q3常开Q4常关Q1和Q2作为半桥高频开关把输入电压降到输出电压。这和普通同步Buck是一样的。Boost模式Q1常开Q2常关Q3和Q4作为半桥高频开关把输入电压升到输出电压。Buck-Boost过渡模式输入电压和输出电压非常接近时芯片会在这两种模式之间做平滑过渡避免在临界点产生输出电压抖动。实际做UPS功能时常电状态下输入可能是13.8V系统输出是12V芯片工作在Buck模式电池电压是10V到12.6V三节锂电池串联掉电后芯片需要把它升到12V工作在Boost模式。同一个芯片、同一个电感只是控制逻辑变了。这套架构最精妙的地方在于它可以天然支持双向功率流动。主电源在位时功率从输入流向输出和电池主电源掉电时功率从电池流向输出。芯片内部只需根据输入电压检测和模式控制字就能在这个“充电-放电”方向切换中保持输出电压稳定。2.3 为什么不用同步整流Buck加一个Boost做级联可能有人会问我能不能用一个普通Buck降压给系统供电再用独立的Boost从电池升压中间用理想二极管做切换技术上确实可行很多产品也是这么干的但问题在于你永远无法避免两个电源在切换瞬间的竞争。假设系统电压是5VBuck输出5.0VBoost输出5.2V理想二极管通常用MOSFET实现导通压降很小。切换的时候Boost已经启动输出5.2V而Buck还在慢慢放电两个源同时驱动负载瞬间电流会从电压高的源涌向电压低的源轻则效率下降重则触发过流保护。Buck-Boost单级方案没有这个问题因为功率级是同一套任何时候只有一条功率路径在给输出供能不存在双源竞争。另外级联方案还需要处理充电回路、检测回路等多个节点控制逻辑分散在多颗芯片之间调试起来非常痛苦。单芯片方案把这些全部收紧到一个控制环路里模式切换由芯片内部的比较器和有限状态机完成设计者只需要关注外部参数设置这对工程上是巨大的简化。3. 关键参数计算与器件选型3.1 电感选型先算纹波电流再定感值电感是Buck-Boost电路里最核心的储能元件它的选择直接决定了输出纹波、效率和动态响应。我的设计指标是系统输出12V最大负载3A开关频率400kHz输入范围9V到16V允许电感纹波电流为负载电流的30%左右。先算Buck模式下的电感。Buck模式输入取最高值16V输出12V这是纹波电流最大的工况。纹波电流公式ΔI_L V_out × (V_in − V_out) / (f_sw × L × V_in)这个公式的物理含义是在开关管导通期间电感两端的伏秒积除以电感量就是电流的变化量。我把ΔI_L限定在0.9A以内3A的30%反推LL ≥ 12 × (16 − 12) / (400k × 0.9 × 16) 8.33 µH再算Boost模式下的电感。Boost模式输入取电池最低电压9V输出12V负载3A。Boost模式电感的平均电流不等于负载电流而是 I_L I_out / (1 − D)占空比D (V_out − V_in) / V_out (12 − 9) / 12 0.25所以电感平均电流是 3 / 0.75 4A。纹波电流公式ΔI_L V_in × D / (f_sw × L) 9 × 0.25 / (400k × 8.33µ) ≈ 0.675A在可接受范围内。我最终选了一颗10µH、饱和电流7A的功率电感留了大概40%的裕量。这里必须提醒一下Boost模式下电感流过的不再是输出电流而是输出电流除以(1−D)如果按3A去选饱和电流电感很快就会饱和。我一开始就差点踩了这个坑后来算清楚才换上大电流规格。3.2 输入输出电容ESR比容量更关键输出电容的选择要考虑两个维度容值决定能量存储ESR决定纹波电压。对Buck-Boost做UPS来说输出电容还有第三重职责——它要在切换瞬间“扛住”输出电压直到控制环路完全接管。输出电容的纹波估算可以用 Q C × ΔV 来反推。Buck模式下负载电流3A、纹波电流0.675A若希望输出纹波控制在50mV以内需要的电容至少为C ≥ ΔI_L / (8 × f_sw × ΔV) 0.675 / (8 × 400k × 0.05) ≈ 42µF我实际选了4颗22µF的陶瓷电容并联总容量88µF同时ESR极低。这里必须注意陶瓷电容的直流偏压特性25V耐压的22µF电容在12V偏压下实际容量可能只剩70%左右所以必须多并联几颗。输入电容同样不能忽视。Buck模式输入电流是断续的输入端会有很大的电流纹波如果不加足够容量的输入电容输入端电压尖峰可能会干扰芯片的检测电路甚至导致掉电误判。我这里放了2颗10µF陶瓷电容加一颗47µF电解电容电解电容主要吸收低频能量陶瓷电容处理高频分量。3.3 MOSFET和续流管RDS(on)与Gate电荷的权衡四开关Buck-Boost的功率管通常集成在控制器内部或者由控制器驱动外部MOSFET。如果控制芯片带外部功率管选型时重点看三个参数耐压、导通电阻和栅极电荷。耐压方面输入最高16V、输出12V考虑到开关振铃和寄生电感产生的尖峰MOSFET耐压至少留1.5倍裕量选40V或者60V的管子比较稳。RDS(on)直接影响满载效率和发热3A负载下RDS(on)每增加10mΩ传导损耗就增加90mW看起来不大但四个管子加起来、再算上开关损耗整体效率差距就很明显了。我建议选总栅极电荷Q_g低于20nC的管子这样驱动损耗小400kHz开关频率下也能保持不错的效率。另外还要关注体二极管的反向恢复特性。在Buck-Boost拓扑中如果控制时序没做好电感电流可能通过体二极管续流产生额外的损耗和噪声。现在很多控制器自带自举驱动和死区管理选集成度高的芯片可以省掉这部分烦恼。4. 核心电路设计与实现过程4.1 掉电检测和切换逻辑怎么搭UPS功能的关键在于“掉电检测要快切换要无缝”。我用的这颗控制器内部有一个输入电压监控比较器通过外部电阻分压网络设定掉电阈值。我的主电源是12V适配器设定掉电阈值在10.5V左右。分压电阻的计算如果芯片内部的参考电压是1.2V那么分压比就是10.5:1.2 8.75:1。我选了上电阻82kΩ、下电阻10.5kΩ实际分压比约8.81触发电平约10.57V误差在可接受范围内。这里要注意输入电压在掉电时不是瞬间跌到0的适配器输出端通常有大电容电压会按指数曲线下降检测比较器只要响应快在电压跌到10.5V时立刻切换输出端根本感觉不到异常。芯片检测到输入电压跌到阈值以下之后内部状态机会把功率级从Buck模式切换到Boost模式。这个切换不是瞬间完成的芯片会在几个开关周期内先停止开关动作让电感电流归零然后重新以Boost模式启动。这个“先停再启”的过程通常只有几十微秒输出电容在这个窗口期内维持输出电压负载只要不是特别苛刻的瞬态是感知不到掉电的。4.2 电池充电管理的配合光有切换还不够电池总得有人充。我的方案里电池是3节锂电串联9V到12.6V充电电源就是主电源12V。因为电池电压和主电源电压很接近直接用Buck-Boost做充电控制天然合适——12V输入既可以降压给10V左右的低电量电池充电也可以在电池充满到12.6V时以几乎1:1的模式涓流充电。充电参数的设置通常通过外部电阻设定恒流值和恒压值。我的设计是充电电流1A浮充电压12.6V。芯片的充电管理模块会先以恒流模式充到12.6V然后转入恒压模式电流逐渐减小直到降低到设定阈值的10%左右判定充满。这里有个容易忽略的细节充电回路的电流采样电阻要放在电池的负极和地之间还是放在电池正极和输出之间得看芯片的手册。我一开始把采样电阻放在了高端结果充电电流检测一直不准后来查手册发现这颗芯片的充电电流检测必须用低端采样重新布线后才正常。4.3 PCB布局的几条铁律Buck-Boost的PCB布局比普通Buck要更讲究因为功率级有两个高频开关节点SW1和SW2任何一个节点处理不好都会产生严重的EMI问题。我总结了三条实战经验第一功率环路要最小。输入电容 → Q1 → Q2 → 输入电容这个环路流过高频脉动电流它的面积直接决定了辐射噪声。我画板的时候把这个环路控制在5mm×5mm以内Q1和Q2紧贴输入电容的正负极。第二电感下方不要铺铜。电感正下方的PCB铜皮会产生涡流损耗不仅发热还会降低电感效率。我特意在电感投影区域做了一块镂空下面是空的。第三AGND和PGND单点连接。控制芯片的模拟地和功率地必须分开走在芯片的散热焊盘处单点连接。否则功率级的开关噪声会直接串进模拟地平面导致输出电压纹波变大严重时甚至会让芯片的电流采样失真。我第一次画板时没注意输出纹波多了将近50mV后来做ESD和纹波优化才定位到这个问题。4.4 从原理图到首板调试原理图和PCB做完之后我打样了10片板子。焊接的时候也有讲究先从输入电源侧的电容和芯片焊起再焊电感和采样电阻最后焊电池和负载接口。第一次上电我压根没敢直接接电池和满负载而是用可调电源从8V开始缓慢给电同时用示波器盯着输出电压。第一次上电顺利出12V的时候我心里其实还挺忐忑因为芯片的启动时序和软启动参数还没确认。后来测了启动波形发现输出电压是平滑爬升到12V的没有过冲说明芯片内部软启动正常工作。接着再接上电池正负极观察充电电流和电压确认充电环路工作正常。最后才做的掉电切换测试——把输入电源突然断掉用示波器抓输出电压波形。第一次切换录到的波形上有一个大约60mV的跌落凹坑持续大约50µs属于正常范围说明输出电容在窗口期内成功维持了电压。5. 实测数据与性能分析5.1 满载效率与纹波表现效率是Buck-Boost方案最直观的考核指标。我用电子负载分别在1A、2A、3A负载下测试了常电Buck模式和电池Boost模式的效率数据如下负载电流Buck模式效率12V适配器输入Boost模式效率11.1V电池输入1A93.2%91.8%2A92.6%90.9%3A91.4%89.7%Buck模式效率整体比Boost模式高出约2%这个符合预期因为Boost模式在低输入电压下开关占空比更大开关损耗相对更高。整个负载范围内效率保持在89%以上对于一颗集成度这么高的控制器来说表现已经相当不错了。纹波测试用的是500MHz带宽示波器在输出端用短地线弹簧接地测量。3A负载下Buck模式输出纹波约38mVBoost模式约52mV都在设计指标以内。如果对纹波敏感可以再多并联一两颗陶瓷电容或者加一个LC后级滤波器代价是动态响应会变慢。5.2 切换时间和输出跌落掉电切换是UPS-on-a-Chip最核心的性能指标。我用一个继电器模拟适配器突然断开同时用示波器连续采集输出电压测了20次切换过程。结果如下从输入电压跌破阈值到输出电压开始恢复平均响应时间约35µs输出电压最大跌落约85mV最小约45mV平均值约60mV切换完成后输出电压稳定在11.95V到12.05V之间无振荡这个切换速度对于绝大多数MCU、FPGA和通信模块都足够安全。要知道很多处理器的掉电检测阈值都是低于标称电压10%以上才会触发复位12V输出跌到11.4V以下才会出问题而我们的切换跌落只有85mV相当于只有0.7%的跌落远远够用。5.3 电池续航和充放电效率电池部分我用了3节18650锂电池串联标称容量2600mAh充满12.6V。系统负载稳定在10W左右约0.83A 12V从电池Boost取电时电池端电流大约1A。实测从满电放电到9V保护电压大约能撑2.2小时。如果只需要掉电保存几十秒这块电池够你连续掉电上百次了。充电效率测试显示从主电源12V给电池充电整体效率约88%电池端充电能量中有一部分转化为热量落在充电MOSFET和采样电阻上。1A充电电流下采样电阻的功耗是1² × R如果采样电阻是50mΩ功耗就是50mW不大但如果是10mΩ的采样电阻功耗只有10mW所以能用低阻值采样电阻尽量用低阻值的。6. 常见问题与排查技巧实录6.1 掉电切换时输出电压跌落过大如果你测到切换瞬间电压跌落超过200mV先别急着加电容。我遇到这类问题排查顺序是先看输入检测阈值是否设得太低。如果阈值设到8V而主电源在负载拉载下本身就掉到9V了芯片可能在你认为“正常”的时候就误触发了。把阈值抬高到主电源最低工作电压的1.1倍附近。再看输出电容是否足够。切换窗口期内输出全靠电容撑着C × ΔV I × Δt3A负载下要撑50µs还保持100mV以内至少需要 3 × 50µ / 0.1 1500µF?不对这里算错了实际是I × Δt / ΔV 3 × 50µ / 0.1 1.5mF这太大了。但实际芯片的切换时间远小于50µs大部分时候输出跌落由环路带宽决定而不是纯电容放电所以试验后我发现4颗22µF就够用。最后查电感的饱和电流。如果电感在切换瞬间发生饱和电感电流会瞬间失控输出跌落会非常厉害。用示波器电流探头看电感电流波形如果出现尖峰非线性增长就是饱和了。6.2 充电电流设置不生效这个坑我前面提过多半是电流采样电阻的位置或者阻值不对。很多Buck-Boost控制器的充电电流检测是低端采样采样电阻必须在电池负端和地之间。如果你把它放在电池正端芯片根本检测不到真实的充电电流。另外采样电阻的精度也很重要。1%精度的采样电阻和5%精度的采样电阻恒流值的偏差能差到上百毫安。对于锂电池充电来说充电电流偏差10%以内问题不大但如果你用的是镍氢或者磷酸铁锂建议还是用1%甚至0.5%精度的采样电阻。6.3 输出有低频振荡我调试过程中有一次满载时输出出现了大约2kHz的低频振荡幅度不大但能听到电感的啸叫。排查发现是输出电容和负载的动态响应不匹配环路补偿参数太激进。解决办法是调整芯片的补偿引脚外接的RC网络把带宽往下压一点同时适当增大输出电容。这里要提醒的是把补偿网络的电容从100pF改到470pF环路带宽会明显下降但动态响应会变差。实际调整的时候要反复试不同组合找到一个既稳定、动态响应又够用的折中点。我最终用了220pF配10kΩ效果最好。6.4 常见问题速查表现象可能原因处理措施切换瞬间输出电压跌落大输入检测阈值过低、输出电容不足、电感饱和抬高阈值、增加输出电容、换大饱和电流电感充电电流一直为零采样电阻位置错误、充电使能脚没拉高检查采样电阻位置、确认EN脚电平满载时电感啸叫环路补偿参数不当、电感磁芯松动调整补偿RC、换一体成型电感输入电压正常但芯片不启动欠压锁定阈值设得比实际输入高检查欠压锁定分压电阻电池接反导致芯片损坏缺少反接保护增加串联二极管或P沟道MOSFET防反接7. 方案总结与扩展思考这套Buck-Boost做UPS-on-a-Chip的方案我实际跑下来最大的感受是它把过去需要6到8颗芯片才能完成的“充电 升压 无缝切换”功能压缩到了一颗控制器内部而且整体效率、切换速度、体积和成本都有明显优势。如果你的系统有12V、9V或者5V级别的后备电池需求非常建议认真研究一下这个路线。最后再分享一个我在调试中总结的小技巧。测试UPS切换性能的时候别直接用开关或者继电器去断主电源那个机械触点会产生抖动示波器波形很难看也无法判断是芯片切换慢还是接触抖动造成的。我后来用一个MOSFET作为电子开关用信号发生器输出一个干净的下跳沿来瞬间关断输入测出来的波形才真正反映芯片的切换能力。就是这个细节帮我把切换时间从第一次误测的200µs修正到了真实的35µs。实际项目验收时这个数据才是客户愿意签字的数据。
返回列表