第四节:开关充电电路——Buck/Boost拓扑在电容充电中的应用与恒流充电模式
各位工程师朋友,咱们接着聊电容充电。前面讲了线性充电和RC充电,说白了都是“硬充”。效率低、发热大,充大电容时尤其痛苦。我记得刚入行那会儿,给一个1000μF的电容充电,用线性方案,散热片烫得能煎鸡蛋。后来换了开关拓扑,世界一下子清净了。
今天重点讲两个拓扑:Buck(降压)和Boost(升压)。它们在电容充电里怎么用?恒流模式怎么实现?我把自己踩过的坑和总结的经验都摊开来讲。
4.1 为什么电容充电要用开关拓扑?
你想想看,电容充电本质上是一个能量转移过程。线性方案把多余的能量以热量形式扔掉,开关方案则是“精打细算”地转移能量。效率从30%-50%直接跳到85%-95%。
我个人的习惯是:只要电容容量超过100μF,或者充电电压超过12V,我第一反应就是上开关拓扑。原因很简单——不想在散热上花冤枉钱。
核心优势对比:
- 效率高:开关管工作在饱和/截止区,损耗小
- 发热低:同样功率,散热器体积可以缩小3-5倍
- 输入电压范围宽:Buck/Boost可以适应不同输入
- 恒流精度好:通过PWM和电流采样,控制更精细
4.2 Buck拓扑:高压电容充电的主力
Buck拓扑,说白了就是降压。输入电压高于输出电压时用它。电容充电场景里,最常见的是用24V或48V给一个12V或24V的电容组充电。
基本工作原理:
开关管导通时,输入通过电感和电容形成回路,电感储能;开关管关断时,电感通过续流二极管继续向电容供电。嗯,这里要注意——电容充电和给电池充电有个本质区别:电容电压是线性上升的,不是恒定的。
我在项目中遇到过一个问题:用标准Buck芯片给电容充电,结果芯片炸了。为什么?因为电容初始电压为0,相当于输出短路。很多Buck芯片的软启动时间不够长,电流冲击直接烧管子。
避坑指南:
我曾经因为没加软启动电路,连续烧了3块样板。后来学乖了——要么选带可调软启动的芯片,要么自己加RC软启动网络。软启动时间建议设置在10ms-50ms之间,具体看电容大小。
恒流充电模式实现:
Buck拓扑做恒流充电,核心是电流采样和反馈控制。我常用的方案有两种:
- 低端电流采样:在电感或MOS管源极串一个小电阻,检测峰值电流
- 高端电流采样:在输出端串采样电阻,用差分放大器检测
我个人偏爱低端采样,简单、便宜。但要注意共模电压问题。下面给一个典型的Buck恒流充电电路参数:
| 参数 | 典型值 | 说明 |
|---|---|---|
| 输入电压 | 24V | 工业标准电源 |
| 充电目标电压 | 12V | 电容组额定电压 |
| 恒流值 | 2A | 根据电容容量调整 |
| 开关频率 | 100kHz | 平衡效率和体积 |
| 电感值 | 47μH | 保证连续导通模式 |
| 采样电阻 | 0.1Ω | 2A时压降0.2V |
4.3 Boost拓扑:低压升高压充电
Boost拓扑,就是升压。输入电压低于输出电压时用它。比如用5V USB给一个48V的电容组充电,或者用12V给100V的脉冲电容充电。
Boost充电有个特点:输入电流比输出电流大。因为功率守恒嘛。你想想看,5V输入要升到48V,电压升了将近10倍,电流就得降下来。但输入端的电流峰值会很高,这对电源和布线都是考验。
Boost恒流充电的难点:
- 启动冲击大:电容初始电压0,Boost相当于工作在极限占空比
- 输出纹波大:因为Boost拓扑的输出电容直接承受开关纹波
- 环路补偿难:电容负载的阻抗随电压变化,补偿网络要适应宽范围
我的经验:
做Boost电容充电,我建议用预充电+恒流两段式。先用一个小电流把电容预充到输入电压的80%左右,再切换到恒流模式。这样能避免启动时的失控状态。我有个项目就是用12V给200V电容充电,不加预充电,每次上电都像放鞭炮——啪的一声,MOS管就没了。
4.4 恒流充电模式详解
恒流充电,说白了就是让充电电流保持恒定,不管电容电压怎么变。这对开关拓扑来说,是通过调整占空比实现的。
控制逻辑:
电流采样 -> 误差放大 -> PWM调制 -> 驱动开关管
我常用的控制芯片是UC3843和LM5117。UC3843便宜、皮实,适合做峰值电流控制;LM5117功能全,适合做精密恒流。
下面给一个基于UC3843的Buck恒流充电代码框架(伪代码,实际用硬件实现):
// 恒流充电控制逻辑(硬件实现)
// 电流参考值:I_ref = 2A
// 采样电阻:R_sense = 0.1Ω
// 反馈电压:V_fb = I_ref * R_sense = 0.2V
while (V_cap < V_target) {
// 读取电流采样电压
V_sense = read_ADC(电流采样引脚);
// 误差计算
error = V_ref - V_sense; // V_ref = 0.2V
// PID调节(简化版)
duty_cycle = duty_cycle + Kp * error;
// 限制占空比范围
if (duty_cycle > 0.9) duty_cycle = 0.9;
if (duty_cycle < 0.1) duty_cycle = 0.1;
// 更新PWM
set_PWM_duty(duty_cycle);
// 延时等待
delay(10us);
}
// 电压达到目标,切换到恒压模式
进入恒压充电模式();
恒流充电的关键参数:
- 电流精度:一般要求±5%,精密场合±1%
- 响应速度:开关频率的1/10到1/100
- 纹波电流:控制在恒流值的10%以内
- 过冲:启动时电流过冲不超过设定值的20%
4.5 实战中的注意事项
嗯,最后聊几个实战中容易忽略的点:
- 电感饱和:电容充电时电流变化范围大,电感要选饱和电流大于峰值电流1.5倍的型号。我吃过这个亏,电感一饱和,电流直接失控。
- 输出电容:虽然我们是给外部电容充电,但开关拓扑本身也需要输出电容来稳定环路。建议至少加10μF的陶瓷电容。
- 保护电路:过流保护、过压保护、反接保护,一个都不能少。我曾经因为忘了加反接保护,客户把电源接反了,整个板子冒烟。
- 热设计:开关管和续流二极管是主要发热源。我习惯在PCB上留足铜皮散热,必要时加小散热片。
安全提醒:
高压电容充电,安全永远是第一位的。即使是用低压Buck/Boost,电容储能释放时也可能造成伤害。我建议:
- 充电完成后,加放电电阻自动泄放
- 高压部分加绝缘罩
- 调试时用隔离变压器供电
- 手边常备放电棒
好了,这一节的内容就到这里。Buck和Boost拓扑在电容充电里各有千秋,选哪个主要看你的输入输出关系。恒流模式是核心,控制好了,充电效率和安全性都能上一个台阶。下一节我们聊一聊谐振充电拓扑,那个更有意思。