
立创开源 USB 可调电源 V3 的硬件 V4.7 版算是我最近复刻过的一版很值得琢磨的板子。它核心是 SC8701 这颗同步升降压控制器围绕这颗芯片搭了双限流和 PMOS 防倒灌电路把一台 0 到 20V 左右的 USB 可调电源压缩到一张巴掌大的小板上。今天不打算只贴个“成功点亮”的结果而是从电路设计角度把这块板的几个重点拆开讲SC8701 的四开关升降压驱动、双限流参数怎么算、PMOS 防倒灌为什么必须这么接以及硬件 V4.7 版复刻时容易踩的坑。想抄板、想二次开发、或者刚开始接触升降压电源设计的读者应该都能从里面找到点有用的东西。1. 为什么要做 USB 可调电源项目定位与 SC8701 选型逻辑1.1 立创开源 USB 可调电源 V3 解决了什么痛点市面上普通的 USB 可调电源模块往往只有降压功能。比如常见的一堆“DC-DC 降压模块”输入必须比输出高 2V 以上一旦想从 12V 输入得到 18V 输出就彻底没戏。也有固定输出的升降压模块但输出电压要么靠电位器手动拧要么得换电阻没有数字控制能力做自动测试、做恒流充电都很不方便。这个项目选择了一条更通用的路输入走 Type-C兼容 5V、9V、12V、20V 这些常见档位通过 PD 诱骗芯片向充电器要电压再交给 SC8701 做升降压。这样不管是给自制的 3.3V 传感器板供电还是给一台需要 19V 的笔记本维修供电一个电源就能覆盖。V3 是主控和交互部分的迭代版本硬件 V4.7 则是在后续改板中修掉了前几版的限流不稳定、输出关断后电压回灌等问题。这个“回灌”问题正是后面要重点讲的防倒灌电路诞生的原因。对这个项目最适合的读者我建议是两类人一类是已经玩过几个 DC-DC 模块想往上走一步搞懂 I2C 可调电源和电流环控制的电子爱好者另一类是正在做仪表、测试工装、电池充电器这类需要“输出电压电流都可编程”的硬件工程师。V4.7 版并不复杂但它把升降压电源设计里最典型的两个设计难点——双限流和防倒灌——都做出来了学这个比啃一堆 Datasheet 快得多。1.2 为什么偏偏选 SC8701而不是普通 Buck-Boost 芯片SC8701 是一颗 I2C 可编程的同步升降压控制器四个功率管全部外置内部负责驱动逻辑、环路补偿和限流比较。它最大的特点是输出电压和限流值都能通过 I2C 寄存器直接设置这让“数字可调电源”变得非常自然主控只要发几个字节就能把输出电压从 1V 调到 20V整个过程不需要拧电位器也不存在机械磨损。对比另一类常用方案比如 MCUDAC运放分立 PWM 搭出来的可调电源SC8701 的优势在于电流环和电压环都是芯片内部闭环的不需要自己去调运放补偿电容。自己做分立方案最痛苦的就是恒流和恒压切换时环路不稳定空载到满载电压过冲、限流瞬间振荡这些问题可以调一个礼拜。SC8701 把这条复杂的路替你走完了外部要做的就是选好电感、MOS 和采样电阻。当然SC8701 也不是没有学习成本。它需要外置四颗功率管PCB 布局和驱动电路设计有要求而且它的 I2C 协议和寄存器定义需要花时间看手册。但如果你把这颗芯片吃透了以后做各种升降压电源、电池充放电管理、Type-C 电源工具都能复用同一套设计思路这也是这个开源项目选它作为核心的重要原因。2. 双限流设计拆解从原理到参数计算2.1 双限流到底是哪两级限流“双限流”这个名字听起来玄乎其实说的是一个系统同时做了两路电流保护一路是输入限流一路是输出限流。输入限流保护的是 Type-C 充电器和 USB 线。很多人直接把可调电源接到一个 5V/2A 的普通充电器上然后调高输出电压去带重负载。如果不做输入限流当输出功率超过输入能承受的范围时充电器会进入过流保护轻则电压跌落重则直接重启。有了输入限流系统会把“输入侧最大允许电流”作为一个硬约束超过这个值就主动切到恒流模式把输出功率拉低。输出限流保护的是负载和接线端子。比如用这个电源给锂电池充电一开始需要限制在 1A等电压上去后再减小电流。又或者测试板上某个模块短路了输出限流能让电流限制在设定值不会烧导线和模块。这两路限流并不是简单“谁后到达谁起作用”而是要同时参与环路判断。SC8701 内部通过对采样电阻电压的检测分别得到输入电流和输出电流的实时值再和 I2C 写入的限制值比较电流环会按照“更严格的那一路”去收敛。从实际表现来看就是负载短路时输出限流率先触发把电流压在设定值当输入电压较低比如 5V 输入想要 20V/1A 输出时输入电流限制又会接管限制输入侧不能超过 2.5A。这种动态取舍是双限流方案的核心价值。2.2 输入限流与输出限流的采样电阻计算要真正理解限流精度得先明白 SC8701 检测电流的原理。芯片在高边电流路径上外接一个毫欧级采样电阻电流流过电阻后产生一个微小压降 U I × R芯片内部通过差分放大器采到这个压降再和一个由 I2C 寄存器决定的参考电压比较。当压降超过参考值时限流环就动作。以输出限流为例假设输出采样电阻 R_sns_out 10mΩ想要限制最大输出电流 2A那么采样电阻上的压降就是 2A × 10mΩ 20mV。这个 20mV 就是芯片内部比较器的触发阈值。如果改用 20mΩ 采样电阻同样的 20mV 阈值只能对应 1A 电流所以采样电阻和阈值是成反比的。用公式表达就是I_lim V_th / R_sns其中 V_th 是 I2C 设定后芯片内部产生的比较电压R_sns 是高边采样电阻值。这个公式看起来简单实际设计时要留足余量。电阻精度、焊接引线电阻、温度漂移都会改变实际限流点。比如一颗 10mΩ 的合金采样电阻如果用普通焊锡和长走线接入额外 1mΩ 的线路电阻就带来 10% 的误差。所以 V4.7 版在采样电阻布局上特意做了开尔文接法把采样线的引出点压在电阻本体两端而不是从大电流走线中间拉出来。输入限流计算同理。比如 Type-C 诱骗到 20V 档位充电器最大能提供 3A那么输入限流建议设定在 2.7A 到 2.8A留出 200mA 以上余量。此时输入采样电阻 R_sns_in 如果也是 10mΩ限制阈值就设为 27mV 到 28mV。需要注意的是如果输入端使用 5V/2A 的普通充电器却把输入限流设成 20V/3A那等于没有输入保护前级照样会拉死。这也是很多复刻 V4.7 板子的人反馈“充电器重启”的常见根源。2.3 双限流的 I2C 配置与联调要点SC8701 的限流值通过寄存器写入通常包含高精度限流档和粗调档。V4.7 工程里主控上电后会先通过 I2C 读取芯片版本然后按设定电压和设定电流计算寄存器值。这里建议不要直接写入理论值应该先写入一个较小限流值再逐步往上调直到接近目标值。原因是采样电阻的实际阻值总是有偏差一次性把限流写到顶很容易触发保护或烧负载。联调限流时我个人习惯用电子负载做“恒流模式吸入”同时用万用表串在输出路径上监测实际电流。比如设定输出限流 1.5A电子负载从 0.1A 开始往上加观察输出电压是否开始下降。当电子负载设置达到 1.5A 左右时输出电压应该开始被压下来说明输出限流环触发了。再继续加大电子负载电流应该稳定在 1.5A 附近不再上升而不是继续飙升。如果发现触发点偏差超过 5%就要检查采样电阻值、开尔文走线以及寄存器校准公式里的增益系数。输入限流的联调稍微麻烦一点需要用一个可调限流的直流电源模拟 Type-C 充电器。把直流电源输出电流限制在一个较低值比如 1A然后让可调电源带一个较大负载观察输入电流是否被限制在 1A 左右。如果输入侧没有限制直流电源会先跳保护板子这边看到的现象就是电压跌落、输出纹波巨大。V4.7 版在输入部分放了大容量固态电容就是为了缓解这种瞬间拉载时输入电压跌落的问题但根本解决办法还是把输入限流寄存器调准确。3. PMOS 防倒灌电路为什么需要怎么设计3.1 没有防倒灌时会发生什么防倒灌这个点实际操作中特别容易踩坑。USB 可调电源最典型的场景是给电池充电、给超级电容充能、给某些储能模块供电。这些负载有个共同特点本身带有能量端口电压不会瞬间归零。比如你设定了 4.2V 给一节锂电池充电冲完之后电池电压大约 4.1V。此时如果你关断输出或者把输出电压设定降低到 3V电池就会通过输出端口向电源内部倒灌电流。电流路径会经过输出电容、采样电阻甚至反向灌入 SC8701 的功率管体二极管轻则输出电压被拉高导致环路失控重则烧掉功率管和主控。还有另一种情况你把这个可调电源用在一个多电源系统中另一路电源电压恰好比本机输出高本机就会变成被动负载被外部电源“反供电”整个系统上电时序直接乱掉。V4.7 版专门在输出级加了一颗 PMOS 做防倒灌开关目的就是从物理上切断这条反灌路径。它不是靠软件允许或禁止输出而是靠 MOS 管的单向导通过滤特性来挡住反向电流。这样即使主控死机、I2C 通信异常、寄存器配置丢失外部也没法把电流倒灌进系统。3.2 PMOS 防倒灌的核心体二极管方向必须“朝外堵”很多人第一次设计防倒灌时会把 PMOS 当成一个普通开关随便串在输出路径上。结果发现根本防不住甚至正常工作时压降大得离谱。问题就出在 PMOS 内部的体二极管方向上。PMOS 内部有一个寄生体二极管方向是从源极 S 指向漏极 D。如果想让它在“正常输出”时不碍事、在“反向倒灌”时截止就必须让源极接系统内部输出漏极接对外输出端口。正常工作时系统输出 VOUT 高于外部端口电压电流从源极到漏极流动体二极管方向也是从源到漏所以即便 MOS 管还处于未完全导通状态也能靠体二极管完成通路不会完全断流。一旦外部端口电压高于系统内部输出也就是外部反过来给电源供电时体二极管立即处于反偏状态无法导通这就是防倒灌最基础的原理。但仅仅靠体二极管反偏还不够可靠。当外部电压高出不多或者系统内部输出毛刺较大时体二极管可能瞬间处于微弱导通状态。V4.7 版的做法是再加一级比较器检测输出端口电压和内部 VOUT 的差异当检测到反向压差后直接把 PMOS 的栅极拉到源极电位让 Vgs 0彻底关闭沟道。这样只要外部电压高于系统侧管子就完全没有导通路径。3.3 V4.7 版 PMOS 栅极控制逻辑与选型建议栅极控制逻辑是这个电路的灵魂。最简单的实现是使用一颗低功耗比较器比较器正端接内部 VOUT负端接输出端口。正常输出时 VOUT 更高比较器输出高电平驱动一个三极管或逻辑电平转换器把 PMOS 栅极拉低PMOS 导通。反向倒灌时外部端口电压高于 VOUT比较器翻转栅极被拉高到源极电压PMOS 关断。这个逻辑需要处理好两个细节一是比较器本身要有迟滞防止输出端口电压和 VOUT 几乎相等时栅极反复振荡二是比较器供电不要直接取自 VOUT否则反向倒灌时比较器本身会失去供电导致无法关断。在 V4.7 工程里PMOS 建议选择 Vgs(th) 绝对值在 0.5V 到 1.5V 之间的低压 MOS例如 AO3401、Si2301 这类常用小封装 PMOS。它们 Rds(on) 在 4.5V 驱动下大概几十毫欧对 2A 以内的输出电流来说压降可以接受。如果输出电流更大就要换更大封装的 PMOS并且注意散热焊盘。选型时还要注意耐压输出可调电源最高可能到 20VPMOS 耐压至少要 30V留出一定降额。栅极串联 10Ω 到 100Ω 电阻抑制振荡栅源之间再加 100kΩ 下拉电阻确保上电瞬间主控还没初始化时PMOS 处于关断状态。还有一个小细节很多人在复刻时容易忽略PMOS 源极到漏极端子之间应该留出输出电容的位置。这个电容的作用是吸收防倒灌关断瞬间的电压尖峰因为外部负载如果是感性或者长线缆关断时会产生反电动势没有吸收电容很容易把 PMOS 击穿。3.4 防倒灌电路带来的副作用如何接受防倒灌电路不是没有代价的。最明显的是 PMOS 导通电阻会带来额外压降和功耗。如果选用 Rds(on) 50mΩ 的管子通过 2A 电流时就会产生 0.1V 压降和 0.2W 功耗。对一台可调电源来说0.1V 压降意味着输出电压和设定值之间有误差需要在主控的校准表里做补偿。另一个副作用是防倒灌 PMOS 在启动瞬间可能形成浪涌电流。输出端口外接大电容时PMOS 突然导通电容充电电流非常大可能导致内部 VOUT 瞬间跌落。解决办法是在 PMOS 源漏之间并联一个小阻值预充电阻或者通过软件先让 SC8701 输出一个较小电压等输出电容充到接近目标电平后再完全打开 PMOS。V4.7 版的启动流程里已经考虑了类似“软启动”的时序但如果你自己做二次开发最好也把这个逻辑保留下来。4. 硬件 V4.7 版实操布局、调试与问题排查4.1 PCB 布局中最关键的几个位置SC8701 是四开关升降压拓扑开关频率通常在几百 kHzPCB 布局直接影响效率和稳定性。复刻 V4.7 版时我最关注三个位置第一个是输入电容和输出电容的位置。它们必须尽量靠近功率管和电感形成一个小的开关环路。如果电容离得远回路寄生电感大开关节点会产生严重振铃轻则 EMI 超标重则击穿功率管。V4.7 板子在输入和输出端各放置了多颗小容值陶瓷电容配合一颗大容量电解电容或固态电容目的就是兼顾高频去耦和低频储能。第二个是电感下方的覆铜处理。四开关升降压的电感两端都在高速开关电感正下方如果铺铜会形成寄生电容耦合噪声容易串到其他层。建议电感下方挖空至少不要大面积铺铜。这一点很多人复刻时偷懒不做实际测试输出纹波会明显偏大。第三个是采样电阻的开尔文走线。前面已经提到限流精度完全靠这个毫欧电阻保证。采样线必须从电阻焊盘内侧单独引出尽量细而短远离开关节点和电感。V4.7 版在采样电阻周围做了明显的铺铜保护单点接地这是很值得借鉴的细节。4.2 从零复刻 V4.7 的上电调试步骤拿到板子先不要急着插 Type-C。先用万用表测量电源输入正负极是否短路重点检查 SC8701 功率管栅极是否和电源短路因为焊接 MOS 管时最容易把栅极焊连。确认无短路后接一个带限流的 5V 电源把电流限制在 100mA给板子通电。此时主控应该启动屏幕或指示灯亮起来但 SC8701 还处于待机状态。接着通过 I2C 读取 SC8701 的芯片 ID确认通信正常。然后设置一个比较保守的输出电压比如 3.3V输出限流先设到 100mA打开输出。用万用表测输出端口如果电压正确再逐步加大输出限流。这里切忌一上来就设置 20V/3A万一采样电阻没焊好、反馈补偿有问题瞬间就可能烧一片。带载测试用电子负载最方便没有电子负载也可以用大功率电阻临时顶一下。测试时观察输出电压在负载接入瞬间的跌落。如果跌落过大且恢复慢多半是环路补偿或者输出电容容量不足。限流测试时用示波器抓输出电流波形正常情况应该是一个平滑的恒流值如果看到振荡就要检查采样走线和补偿参数。4.3 常见问题排查速查表我把复刻过程中遇到过的典型问题整理成了一张表方便对照排查现象可能原因排查方法输出电压无法超过输入电压SC8701 未确认为升降压模式、电感饱和检查 I2C 配置用示波器看 SW 节点波形输出限流误差超过 10%采样电阻偏差、开尔文走线过长换高精度合金电阻重新校准限流增益带电池负载后关机电压仍不归零PMOS 防倒灌未关断、体二极管方向接反断电后测 PMOS 源漏极二极管方向检查栅极控制接入充电器后充电器过载重启输入限流设置过高、软启动未生效减小输入限流寄存器值加大输入电容PMOS 长时间工作发热严重Vgs 驱动不足、Rds(on) 过大测 PMOS 栅极电压确认完全导通输出纹波大伴随啸叫电感饱和、采样环路补偿不稳定更换更大额定电流电感检查输出电容 ESR表格里“PMOS 体二极管方向接反”这个原因我特别想多说一句。很多复刻用户会直接照抄原理图但画 PCB 时把 PMOS 的源漏引脚搞反了。因为 AO3401 这类 SOT-23 封装在 PCB 上如果画错丝印很容易把源漏对调。焊接前用万用表二极管档测一下黑表笔接源极、红表笔接漏极应该能测到大约 0.5V 的二极管压降反过来应该是无穷大。这个小动作能避免烧掉整块板子。4.4 一个独家技巧给防倒灌做单独验证这个技巧是我烧过一块 SC8701 之后总结出来的。在整板调试之前先把防倒灌 PMOS 这部分电路单独裁出来验证用一个可调电源从系统侧输入 5V另一个可调电源从输出端口输入 6V模拟外部电压高于本机输出的场景。此时应该测不到系统侧电流也就是 6V 那侧不会倒灌到 5V 那侧。反过来把系统侧调到 6V输出端口调到 5V系统侧可以正常给输出端口供电。这个“正反两个方向”的测试做完防倒灌电路才算真正可信。单独验证还有一个好处可以顺便测试 PMOS 的压降。在系统侧 5V、输出侧带 2A 负载的情况下测系统侧电压和输出端口电压之差这个差值就是防倒灌管子的实际导通压降。记住这个值校准输出电压时直接用这个值做补偿会比自己拍脑袋定一个固定补偿值准确得多。5. 扩展玩法与后续迭代方向5.1 把 V4.7 从“能用的电源”升级成“好用的工具”V4.7 版本身已经能跑通基本功能但作为可调电源还有很多值得扩展的地方。最实用的是把 PD 诱骗策略做得更智能。目前输入电压档位通常靠固定诱骗比如直接诱骗 20V。但如果你手头只有一个 5V/2A 的小充电器系统也应该能正常工作。升级方向可以是在主控里加入输入电压检测根据当前输入电压和输出需求动态切换诱骗档位输出低压时诱骗 5V输出需要高功率时再切换到 20V这样整个电源的效率会高很多。另一个方向是给双限流增加“曲线模式”。普通可调电源只有恒压和恒流两种状态但很多测试场景需要让电流按预设曲线变化比如电池充电的 CC-CV 曲线或者 LED 的脉冲测试。SC8701 支持 I2C 快速写入限流值MCU 完全可以按 1ms 甚至更短周期去更新限制寄存器实现任意电流波形输出。这个玩法能大幅提高项目的上限。5.2 从硬件 V4.7 继续改版的设计建议如果打算在 V4.7 基础上做自己的 V5我最建议改掉的是防倒灌那部分。现在很多集成负载开关芯片内部已经包含了理想的防倒灌控制逻辑比如带“反向电流阻断”的负载开关一颗芯片就能替代 PMOS比较器驱动三极管一整套电路体积更小可靠性更高。当然理解 PMOS 防倒灌的原理仍然很重要因为很多负载开关芯片的内部结构本质也是 PMOS 防倒灌。第二个建议是增加输出电压的快速放电功能。可调电源关断输出后输出端口电容上往往还残留几伏电压对某些待测设备来说不够安全。V4.7 可以通过软件控制一个放电电阻在关机后短时接入但还没有把放电时序做成自动化。V5 版本可以在输出端加一个可控的放电 MOS 管关机后自动对输出电容放电配合防倒灌 PMOS整个输出端口的安全性才算完整。第三个建议是把采样电阻换成 DCR 电流检测方案。目前采样电阻虽然精度高但毕竟要串接在功率路径上。如果后端负载很大采样电阻的功耗也不小。以后可以考虑用电感的 DCR 做电流检测损耗几乎为零但温度补偿复杂得多。如果只是做一个“够用”的桌面电源V4.7 现有的采样电阻方案其实最省心。5.3 这个项目还能带你去哪SC8701 这类芯片不仅适合做 USB 可调电源也适合做电池储能设备的主功率级、太阳能 MPPT 中间级、实验室高精度源表的前级等等。把它研究透之后再去看其他数字电源方案会轻松很多因为无论芯片怎么变升降压功率级、限流环路、反向保护这几件事都是相通的。V4.7 版只是一个起点真正值钱的是隐藏在 PCB 背后的那套通用设计方法论。我在实际复刻这个项目时最大的感触是限流和防倒灌都不是“锦上添花”的功能而是数字可调电源能不能安全使用的底线。没有双限流一块好芯片很容易被前端充电器或后端短路拖死没有防倒灌任何储能负载都可能让整个系统瞬间“叛变”。你如果也想做自己的桌面可调电源建议先从 V4.7 开始把这两个电路搞透然后再往上加花活。最后再分享一个小技巧防倒灌 PMOS 的方向问题焊接前务必用万用表二极管档确认一遍。我亲眼见过不止一个复刻者因为这笔没确认把 SC8701 送去见了佛祖。功夫做在通电前后面你会省下一堆麻烦。