1. 项目概述:榨干USB充电器的每一分电流
手头有个闲置的USB充电器,想用它来给单节锂电池充电,但又不想用现成的充电管理芯片,总觉得少了点“折腾”的乐趣和完全掌控的安心感。之前我用一个经典的TL431并联稳压器搭过一个简单的充电电路,原理很简单:当电池电压充到4.2V时,TL431导通,把多余的电流“旁路”掉,防止电池过充。这个方案虽然经典可靠,但有个硬伤——TL431自己能安全处理的最大电流通常也就100mA左右。这意味着,为了不烧坏TL431,前面的限流电阻必须选得比较大,比如之前算出来的8.2欧姆,这样最大充电电流就被限制在了大概(5V - 4.2V)/ 8.2Ω ≈ 97mA。对于一个标称500mA的USB充电器来说,这利用率连20%都不到,充电速度慢得像蜗牛,实在有点浪费。
所以,这次的目标很明确:在保证安全的前提下,最大化利用USB充电器的输出能力,把充电电流尽可能提上去,接近500mA的理论上限。核心思路就是给TL431找个“帮手”,让它不再单打独斗。我采用的方法是在TL431后面加一个PNP功率三极管,组成一个类似“达林顿”或“西克对”(Sziklai Pair)的结构。这样一来,TL431只负责提供精准的电压基准和控制信号,而繁重的电流分流工作则交给能承受更大电流的PNP管。这个改动看似简单,却让整个电路的电流处理能力发生了质变,限流电阻可以大幅减小,充电电流自然就上去了。
这个方案特别适合喜欢动手的电子爱好者、需要为特定设备定制紧凑型充电模块的开发者,或者单纯想深入理解线性稳压和电池充电原理的朋友。它不依赖任何专用IC,所有元件都是通用件,原理透明,调试过程本身就是一次很好的学习。接下来,我就把这次“榨干”USB充电器性能的完整设计、计算、搭建和调试过程,连同踩过的坑和总结的经验,毫无保留地分享出来。
2. 核心思路与方案选型:为什么是TL431+PNP?
在深入细节之前,我们得先搞清楚为什么选择TL431加PNP三极管这个组合,以及它比单纯使用TL431好在哪里。这涉及到对线性充电原理和器件特性的理解。
2.1 回顾纯TL431方案的瓶颈
在最初的方案里,电路可以简化为:USB的5V正极,经过一个限流电阻R_limit,连接到电池正极。TL431的参考端(Ref)通过电阻分压网络监测电池电压,阴极(Cathode)接到电池正极,阳极(Anode)接到地。当电池电压低于4.2V时,TL431关闭,所有电流都流向电池。当电池电压达到4.2V时,TL431开始导通,并试图将阴极电压(也就是电池电压)稳定在4.2V。此时,来自USB的电流一部分(I_batt)继续为电池提供微小的浮充电流,绝大部分(I_shunt)则通过TL431流到地。
这里的核心限制就是TL431的连续阴极电流(Ika(max))参数。对于常见的TO-92封装TL431,这个值通常是100mA。这意味着,在电池电压达到4.2V的“转灯”或“满电”状态,TL431必须能安全地分流掉(5V - 4.2V)/ R_limit 这么大的电流。为了确保I_shunt < 100mA,R_limit就必须足够大。计算如下: 假设USB电压为标准的5.0V,电池满电电压为4.2V,则R_limit > (5.0V - 4.2V) / 0.1A = 8Ω。 所以之前选择了8.2Ω的标准阻值,此时最大充电电流(电池电压最低时,如3.0V)约为 (5.0V - 3.0V) / 8.2Ω ≈ 244mA。而进入稳压阶段后,TL431需要分流的电流约为 (5.0V - 4.2V) / 8.2Ω ≈ 97.6mA,刚好在它的安全边际内。
瓶颈显而易见:为了迁就TL431的100mA分流能力,我们不得不使用一个较大的限流电阻,这严重限制了电路从USB电源汲取电流的能力,无法充分利用USB的500mA输出。
2.2 PNP三极管的引入:从“运动员”到“教练”
新方案的精髓在于角色转换。我们不再让TL431直接去“举重”(分流大电流),而是让它扮演“教练”或“指挥官”的角色。TL431依然精确地感知电池电压(通过R1、R2分压),并输出控制信号。但这个控制信号现在用来驱动一个PNP功率三极管的基极。
具体连接是这样的:TL431的阴极不再直接接电池正极,而是接到PNP三极管(比如2SB857)的基极。PNP管的发射极接电池正极(即充电节点),集电极通过一个电流采样电阻R_sense接地。TL431的阳极仍然接地。同时,TL431的参考端依然通过分压电阻监测电池电压。
它的工作原理是这样的:
- 充电阶段:电池电压低,TL431参考端电压低于2.5V(其内部基准),TL431截止。此时PNP管基极通过一个上拉电阻(通常与分压网络结合)被拉到高电位,PNP管也截止。电路相当于一个简单的5V -> R_limit -> 电池的恒流(近似)充电回路。
- 满电稳压阶段:电池电压上升至4.2V,使得TL431参考端电压达到2.5V,TL431导通。TL431的导通将PNP管的基极电位拉低,导致PNP管导通。此时,来自USB电源的电流,主要路径不再是全部流向电池,而是绝大部分被导通的PNP管从发射极-集电极这条通路“分流”到地。TL431本身只提供了让PNP管导通所需的基极电流(通常很小,几个mA),而真正分流几百mA电流的是PNP管。
这就好比:原来是一个只能扛100斤的人(TL431)在门口检查行李(电压),超重的部分自己扛走(分流)。现在,这个人依然负责检查(电压比较),但他发现超重后,只是按一下按钮,呼叫一个能扛1000斤的机器人(PNP管)来把超重行李搬走。检查员的工作轻松了,但搬运能力大大增强。
2.3 方案优势与晶体管选型考量
这种架构带来了几个立竿见影的好处:
- 电流能力倍增:电路的最大分流能力不再受限于TL431的100mA,而是取决于PNP管的最大集电极电流(Ic(max))和功耗。一个普通的TO-220封装PNP管,如2SB857,其Ic(max)可达4A,处理500mA绰绰有余。
- 限流电阻可以大幅减小:既然分流能力不再是瓶颈,我们就可以专注于如何从USB电源获取最大500mA的电流。限流电阻R_limit的选择依据变成了:在电池电压最低时(例如3.0V),电路汲取的电流不超过USB电源的安全输出限值(500mA)。计算变得简单:R_limit ≈ (5.0V - 3.0V) / 0.5A = 4.0Ω。考虑到USB电压可能略有波动,以及留有余量,选择4.7Ω的标准阻值是非常合适的。这比之前的8.2Ω小了很多。
- 新增功能便利性:如原文提到的,由于大电流现在流经PNP管的集电极,我们可以在集电极到地之间串联一个很小的电流采样电阻(例如0.1Ω)。这个电阻上的压降可以很方便地用来驱动一个“充电完成”指示灯电路。如果采样电阻放在TL431的阳极,其变化的压降会影响TL431的参考地电位,引入误差,使电路复杂化。放在PNP集电极则完美避开了这个问题。
- 灵活性高:对PNP管的要求并不苛刻。需要满足:PNP型;集电极-发射极击穿电压Vceo高于电源电压(5V,所以选-20V以上的都足够);最大集电极电流Ic(max)大于目标充电电流(500mA);有一定的电流放大系数hFE(最好大于50,以保证TL431提供的基极电流能充分驱动)。常见的TIP32C、BD140、2SA1837等中功率PNP管都可以胜任。我手头正好有2SB857,就用了它。
注意:虽然理论上任何符合电压电流要求的PNP管都能用,但建议选择hFE较高的型号(如>100),这可以进一步减小TL431需要提供的基极电流,减轻TL431的负担,让系统更稳定可靠。如果hFE太低,可能需要TL431输出较大的基极电流,可能接近其极限。
3. 电路设计与核心参数计算
有了核心思路,我们就可以开始进行具体的电路设计和参数计算了。一张清晰的电路图胜过千言万语,但在这里我们用描述和计算来构建它。整个电路由几个关键部分组成:输入滤波、限流网络、电压检测与反馈、电流放大与分流、以及充电状态指示。
3.1 确定核心元件参数
首先,我们明确设计目标和约束条件:
- 输入电源:标准USB端口,电压V_usb = 5.0V ±5%(按4.75V ~ 5.25V考虑),最大持续输出电流I_usb_max = 500mA。
- 充电电池:单节锂离子/聚合物电池,充电截止电压V_charge = 4.20V,绝对最大电压4.25V,放电截止电压约3.0V。
- 核心控制芯片:TL431,参考电压V_ref = 2.495V(典型值)。
- 电流放大管:PNP三极管,假设其最小直流电流放大系数hFE_min = 60(以我使用的2SB857为例)。
1. 限流电阻 R_limit 的计算:这是决定最大充电电流的关键。我们要确保即使在电池电压最低(V_batt_min = 3.0V)且USB电压最高(V_usb_max = 5.25V)的最极端情况下,充电电流也不超过USB的500mA限额。 最大可能电流 I_max = (V_usb_max - V_batt_min) / R_limit。 令 I_max ≤ 0.5A,则有 R_limit ≥ (5.25V - 3.0V) / 0.5A = 4.5Ω。 同时,我们也希望平时在标准5V输入时,充电电流能尽量大。取标准5V和电池3.0V计算:I_charge_typical = (5.0V - 3.0V) / R_limit。 为了平衡安全性和性能,我们选择一个略大于计算最小值且是常用标准值的电阻。4.7Ω(E24系列中的标准值)是一个非常合适的选择:
- 极端情况最大电流:(5.25V - 3.0V) / 4.7Ω ≈ 0.479A < 0.5A,安全。
- 典型情况充电电流:(5.0V - 3.0V) / 4.7Ω ≈ 0.426A,很好地利用了USB电源的能力。 因此,R_limit = 4.7Ω。其功率需要计算:最坏情况下,电阻两端压降为 (5.25V - 3.0V) = 2.25V,功耗 P = V^2 / R = (2.25)^2 / 4.7 ≈ 1.08W。为留有余量,应选择至少2W功率的直插电阻或相应功率的贴片电阻。
2. 电压检测分压电阻 R1 和 R2 的计算:TL431在参考端(Ref)电压达到V_ref(2.495V)时开始动作。我们需要在电池电压为4.20V时,让Ref端的电压恰好是2.495V。 分压公式:V_ref = V_batt * (R2 / (R1 + R2))。 所以,R1 / R2 = (V_batt / V_ref) - 1 = (4.20 / 2.495) - 1 ≈ 1.684 - 1 = 0.684。 选取R2为一个常用值,例如10kΩ。则 R1 = 0.684 * R2 = 6.84kΩ。最接近的标准E24系列电阻是6.8kΩ。 使用 R1 = 6.8kΩ, R2 = 10kΩ 进行验算: 实际分压比 = 10k / (6.8k + 10k) ≈ 0.5952。 触发的电池电压 V_batt_trigger = V_ref / 分压比 = 2.495V / 0.5952 ≈ 4.192V。 这个值与我们的目标4.20V非常接近,误差在0.2%以内,完全可接受。因此,R1 = 6.8kΩ, R2 = 10kΩ。这两个电阻功耗极小,1/4W规格足够。
3. PNP三极管基极电阻 R_base 的估算:这个电阻连接在PNP管基极和TL431阴极之间,同时也作为TL431的负载。它的作用主要是限制TL431的阴极电流,并提供一定的稳定性。我们需要确保在PNP管需要最大基极电流时,TL431能提供,且自身电流不超过100mA。 首先估算PNP管所需的最大基极电流。当电池接近满电,PNP管需要分流最大电流。假设此时USB为5V,电池为4.19V(即将触发),PNP管CE压降很小(饱和状态约0.2V),则流经R_limit的电流 I_total ≈ (5V - 4.19V) / 4.7Ω ≈ 172mA。这部分电流几乎全部需要由PNP管分流(因为电池几乎不吸收电流)。PNP管的集电极电流 Ic ≈ 172mA。 假设PNP管在最差情况下的hFE_min = 60,则所需基极电流 Ib = Ic / hFE_min ≈ 172mA / 60 ≈ 2.87mA。 TL431需要提供的阴极电流 I_ka 至少等于这个 Ib(实际上,R_base会分流一部分,但为简化,我们先按全部由TL431提供算)。2.87mA远小于TL431的100mA极限,非常安全。 R_base的取值会影响开关速度和TL431的功耗。取值太小,TL431电流大;取值太大,PNP管可能无法充分饱和。一个经验值是让TL431在导通时能有5-20mA的阴极电流。假设我们设计TL431提供约10mA电流,其中2.87mA给PNP基极,剩下的流过R_base。 当TL431导通时,其阴极电压约为2V(V_ref + Vka_sat,约2.5V+0.2V?这里需要注意,TL431阴极对阳极的电压在导通时并不是固定值,它需要比参考端电压高至少2V才能正常工作,通常我们估算阴极电压比Ref高1-2V。更准确的方法是:当电路稳定时,PNP管基极电压Vb ≈ Ve - Vbe ≈ 4.20V - 0.7V = 3.5V。TL431阴极电压Vka = Vb = 3.5V。TL431阳极电压是0V(地)。所以TL431阴极电流I_ka = (V_usb - Vka) / R_limit?不对,TL431阴极并不直接接V_usb。实际上,TL431的阴极电流由流经R_base的电流和PNP基极电流共同构成。我们可以从另一个角度计算:当电路稳定在4.2V时,R_limit上的压降为5V-4.2V=0.8V,电流为0.8V/4.7Ω≈170mA。这170mA几乎全部从PNP管的发射极流入,从集电极流出。PNP基极电流Ib约2.87mA。TL431阴极电压Vka = Vb = 4.2V - 0.7V = 3.5V。假设TL431阴极通过一个电阻R_ka接到V_usb?不,在我们的实际电路中,TL431阴极通常直接或通过一个电阻接到PNP基极,而PNP基极的偏置由上拉电阻提供。更常见的接法是:TL431阴极接PNP基极,同时在PNP基极和电池正极(或V_usb)之间接一个上拉电阻,这个电阻就是R_base。那么,当TL431截止时,R_base将PNP基极上拉到高电平,关闭PNP管。当TL431导通时,它将PNP基极电压拉低,电流路径是:从电池正极(~4.2V)通过R_base,流入TL431阴极,从阳极到地。同时,PNP基极也从这条路径汲取电流(Ib)。所以,流经R_base的电流 I_Rbase = (V_batt - Vka) / R_base。而TL431的阴极电流 I_ka = I_Rbase + Ib。 为了确保TL431能可靠地将PNP基极拉低,我们需要I_Rbase足够大,使得Vka被拉低到足够让PNP管深度导通。通常Vka在2.5V-3.5V之间。我们设目标Vka = 3.0V(这是一个合理的导通压降)。则 I_Rbase = (4.2V - 3.0V) / R_base = 1.2V / R_base。 同时,TL431阴极电流 I_ka = I_Rbase + Ib。我们需要I_ka在TL431能力范围内(<100mA),同时也要保证TL431能提供这个电流(其输出能力足够)。 一个简便实用的方法是:选择R_base使得在TL431导通时,流经它的电流在5-10mA量级。令 I_Rbase ≈ 5mA,则 R_base = 1.2V / 0.005A = 240Ω。这是一个可行的值。 我们选择R_base = 220Ω(标准值)。此时 I_Rbase ≈ 1.2V / 220Ω ≈ 5.45mA。加上PNP基极电流Ib ≈ 2.87mA,TL431阴极总电流 I_ka ≈ 8.32mA,完全在安全范围内。这个电阻的功率很小,1/4W足够。
4. 电流采样电阻 R_sense 与充电指示电路:这是一个锦上添花的功能。在PNP管的集电极和地之间串联一个很小的电阻(例如0.1Ω)。当PNP管分流大电流时,这个电阻上会产生一个压降 V_sense = Ic * R_sense。 当电池接近充满,PNP管开始分流,Ic增大,V_sense升高。我们可以利用这个电压来控制一个指示灯。例如,使用一个NPN三极管(如2N3904),其基极通过一个电阻连接到R_sense的上端(即PNP集电极)。当V_sense超过NPN管的Vbe导通电压(约0.6V)时,NPN管导通,点亮连接在其集电极回路中的LED。 计算一下:假设我们希望当分流电流大于50mA时点亮LED。则 R_sense = Vbe / I_c_threshold ≈ 0.6V / 0.05A = 12Ω。这个值有点大,会在PNP管导通时产生额外的功耗(P = Ic^2 * R_sense)。如果我们希望功耗小,可以选更小的电阻,比如0.5Ω,但此时需要更大的电流才能产生0.6V压降(1.2A),这超过了我们的电路范围。因此,我们需要在灵敏度和功耗之间折衷,或者使用一个电压比较器(如LM393)来检测小压降。为了简化,我们可以接受一个稍大的R_sense,或者调整NPN基极电阻,利用其输入特性(需要一定的基极电流才导通)来设定阈值。 一个更简单的方案是:选择 R_sense = 1.0Ω。当分流电流 Ic = 100mA时,V_sense = 0.1V,这不足以直接导通NPN管。但我们可以在NPN基极和R_sense之间加一个电阻分压网络,或者使用一个运算放大器作为比较器。考虑到这是附加功能,且原文提到“更复杂”,在初始原型中我们可以暂时省略,先保证核心充电功能稳定。因此,R_sense 可选 0.1Ω 至 1Ω,具体值取决于指示电路的设计。如果只做电流采样用于测量,0.1Ω即可。
3.2 完整电路原理图描述
基于以上计算,我们可以勾勒出完整的电路连接:
- 输入:USB的Vbus(+5V)接电路正输入,GND接电路地。
- 限流:+5V串联一个4.7Ω/2W的电阻R_limit,其另一端我们称为节点A。
- 电池连接:节点A接电池正极(BATT+),电池负极(BATT-)接地。
- 电压检测:从节点A(即电池正极)引出电压检测线。连接一个6.8kΩ电阻R1到TL431的参考端(Ref)。从Ref端再连接一个10kΩ电阻R2到地。
- 反馈控制:TL431的阳极(Anode)接地。TL431的阴极(Cathode)连接到一个220Ω的电阻R_base的一端。R_base的另一端连接到节点A(或电池正极)。同时,TL431的阴极直接连接到PNP三极管(如2SB857)的基极。
- 电流分流:PNP三极管的发射极连接到节点A(电池正极)。PNP三极管的集电极连接到地(如果需要电流采样,则先串联一个R_sense再接地)。
- (可选)充电指示:在PNP集电极(或R_sense上端)与地之间,接入一个NPN三极管的基极电阻(如10kΩ),NPN的发射极接地,集电极通过一个限流电阻(如1kΩ)连接到+5V,并在集电极和+5V之间并联一个LED(阴极接NPN集电极)。
这个电路就构成了一个完整的、大电流能力的线性锂电充电器。当电池电压低于4.2V时,TL431关断,R_base将PNP基极上拉至高电平(接近电池电压),PNP关断,所有电流通过R_limit给电池充电。当电池电压达到4.2V,TL431导通,拉低PNP基极电压,PNP导通,将大部分电流分流到地,电池电压被钳位在4.2V。
4. 元器件选型、焊接与实测调试
理论计算完毕,接下来就是动手环节。元器件的选择、PCB的布局(或洞洞板的搭接)以及上电调试,每一步都有需要注意的细节。
4.1 关键元器件选型清单与替代方案
以下是我在本次原型制作中使用的具体元件,并提供了广泛的替代选择:
| 元件符号 | 参数/型号 | 说明与替代方案 |
|---|---|---|
| U1 | TL431 (TO-92或SOT-23) | 基准稳压源,任何厂家的TL431、ATL431均可。 |
| Q1 | 2SB857 (TO-220) PNP | 电流放大管。替代品:TIP32C, BD140, MJE350, 2SA1837, S8550(TO-92,用于小电流)。需满足:Vceo > -10V, Ic(max) > 0.5A, hFE > 50。 |
| R_limit | 4.7Ω / 2W 金属膜电阻 | 限流电阻,功率必须足够。也可用两个10Ω/1W电阻并联。贴片方案可选2512封装电阻。 |
| R1 | 6.8kΩ / 0.25W | 分压电阻,精度5%即可,1%更好。 |
| R2 | 10kΩ / 0.25W | 分压电阻,精度5%即可,1%更好。 |
| R_base | 220Ω / 0.25W | PNP基极限流/上拉电阻。 |
| C_in | 10μF 电解电容 + 100nF陶瓷电容 | 并联在USB输入端口,用于电源滤波,消除电压毛刺。非必须但强烈推荐。 |
| C_batt | 10μF 电解电容 | 并联在电池两端,提供本地储能,稳定检测电压。非必须但推荐。 |
| (可选)R_sense | 0.5Ω / 0.5W | 电流采样电阻。如果不用指示电路可不装,或用0Ω跳线。 |
| (可选)Q2 | 2N3904 (NPN) | 指示灯驱动管。可用任何通用NPN小信号管,如S8050, BC547。 |
| (可选)R_led | 1kΩ / 0.25W | LED限流电阻,根据LED颜色调整(红色LED约1.8V压降)。 |
| (可选)LED1 | 红色或绿色LED | 充电状态指示。 |
关于PNP管的散热:原文提到原型中的2SB857没有加散热片,在最大分流电流下会“微热”。这是线性稳压电路的固有特点:功耗以热的形式消耗在调整管(这里是PNP管)上。在最坏情况下(电池电压3.0V,USB 5.25V),PNP管的功耗为:P = Vce * Ic ≈ (5.25V - 3.0V) * 0.48A ≈ 1.08W。对于一个TO-220封装的三极管,1W的功耗通常会导致结温显著升高,虽然短时间内可能不会损坏(器件最大功耗往往在2W以上),但长期工作在高结温下会降低可靠性。我的建议是:如果计划长时间工作或环境温度较高,最好给PNP管加上一个小型散热片。一个简单的铝制散热片就能将温升控制在很低的水平。实测中,我加上一个指甲盖大小的散热片后,管子只是温热,手感舒适很多。
4.2 洞洞板搭建与焊接要点
由于电路简单,我直接在万用板(洞洞板)上搭建。布局和走线对线性电源的稳定性有一定影响,以下是几个关键点:
- 地线(GND)要粗而短:这是最重要的原则。TL431的阳极、PNP管的集电极(通过R_sense)、输入电容的负极、电池的负极,这些地线连接点应尽可能用粗导线或敷铜连接在一起,形成一个“星型”或“单点”接地,避免地线噪声影响电压检测精度。
- 电压检测点要靠近电池端子:分压电阻R1、R2的连接点,必须直接、尽可能短地连接到电池的正负极。千万不要在长长的充电导线中间取检测点,否则导线电阻上的压降会导致检测电压低于电池实际电压,造成电池过充,非常危险!
- TL431的旁路电容:在TL431的阴极和阳极之间(即Ref端对地),建议并联一个100nF的陶瓷电容。这可以抑制TL431可能产生的高频振荡,提高环路稳定性。很多TL431的数据手册都推荐此做法。
- 输入/输出电容:在USB输入端口并接一个10-100μF的电解电容和一个100nF的陶瓷电容,可以有效平滑电源,防止接入瞬间的冲击。在电池端并接一个10-47μF的电容,可以为电压检测回路提供稳定的参考,避免因电池内阻或接触电阻引起的电压跳动。
- 功率路径走线要宽:从USB输入,经过R_limit,到PNP管发射极,再到电池正极这条路径,流过的电流最大(可达500mA)。这段走线应使用较粗的导线(如AWG22或更粗),或者用焊锡在多孔板上“堆锡”形成粗走线,以减少压降和发热。
焊接时,先焊接矮小的元件(电阻、电容、IC座),再焊接高大的元件(电解电容、三极管)。TL431如果用的是直插版本,建议使用IC座,方便更换调试。
4.3 上电测试与参数验证
焊接完成后,不要急于接电池!遵循以下步骤安全测试:
- 空载测试(不接电池):将电路板连接到USB电源(可以用一个旧的USB充电器或电脑USB口,但最好用带限流功能的可调电源)。用万用表测量电池接口两端的电压。此时电压应该是多少?由于没有电池,TL431的Ref端通过R1、R2连接到输出端,但输出端是开路的,没有电流,所以电压可能是不确定的,或者被TL431拉到一个稳定值。实际上,由于TL431需要一定的阴极电流才能正常工作(通常>1mA),在空载时,如果R_base(220Ω)直接接在输出端,可能无法为TL431提供足够的阴极电流,导致电路状态异常。更安全的测试方法是:在电池接口处接一个假负载,比如一个10Ω/5W的大功率电阻,模拟电池。此时测量电阻两端的电压。理论上,由于没有电池,输出电压会被TL431稳定在4.2V左右。用万用表测量,应该能看到一个稳定在4.15V-4.25V之间的电压。这初步验证了电压反馈环路是工作的。
- 短路测试(谨慎!):将电池接口正负极短接(用万用表电流档或一个保险丝串联)。此时电路应该进入最大电流限制状态。电流值应为 I_short ≈ V_usb / R_limit。对于5V输入和4.7Ω电阻,短路电流约1.06A。这超过了USB的500mA限值,可能会触发USB电源的过流保护(好的充电器会切断输出)。所以这个测试有风险,可能损坏USB电源或电路。更好的方法是用可调电源,将电压设在5V,电流限值设在500mA,再进行短路测试,观察电流是否被限制在500mA左右。同时用手触摸PNP管和R_limit,它们应该在几秒钟内明显发热。这说明电流分流路径是通的。
- 带载测试(接真实电池):这是最关键的一步。准备一节电量较低的锂电池(例如3.6V)。务必在电池回路中串联一个电流表(万用表电流档),以实时监控充电电流。
- 连接:将电池正确接入电路板(正负切勿接反!)。接通USB电源。
- 观察:电流表应显示一个较大的充电电流。根据计算,对于3.6V电池和5V输入,电流应为 (5.0V - 3.6V) / 4.7Ω ≈ 0.298A(298mA)。实际值可能因USB电压和电阻公差略有不同。
- 监测电压:用另一个万用表电压档监测电池电压。你会看到电池电压缓慢上升,充电电流随之缓慢下降(因为R_limit两端压差减小)。
- 接近满电:当电池电压接近4.15V时,充电电流会明显减小。当电压达到约4.19V时,TL431开始动作,PNP管开始导通分流,电池电压上升速度变得极慢,电流主要流向PNP管。最终电压应稳定在4.18V-4.22V之间。
- 满电状态:电压稳定后,测量流经电池的电流(可能需要更灵敏的电流表或测量采样电阻电压)。这个电流就是“涓流”充电电流,通常很小(几十mA以内),由TL431的精度和环路决定。对于锂电池,在4.2V浮充下,这个微小电流是安全的。
- 温度监测:在整个充电过程中,特别是电池电压接近4.2V时(此时PNP管分流最大),用手或温度枪监测PNP管和R_limit的温度。如果烫手(>70℃),则需要加强散热或考虑降低最大电流(增大R_limit)。
在我的实测中,使用一个5V/1A的充电器(实际输出能力高于500mA),给一节18650电池(初始电压3.7V)充电。初始充电电流约为280mA。随着电压上升,电流平稳下降。当电池电压达到4.18V时,电流已降至50mA以下。最终电压稳定在4.20V,电池端电流小于5mA。PNP管(2SB857,无散热片)在充电中期温热,在稳压阶段微热。整个充电过程平稳,没有振荡或电压过冲现象。
5. 常见问题、故障排查与进阶优化
即使按照设计搭建,电路也可能遇到各种问题。以下是我在调试过程中遇到或预见到的一些典型问题及其解决方法。
5.1 电压无法稳定在4.2V,始终偏高或偏低
这是最常见的问题,根源在于分压电阻的精度和TL431的个体差异。
电压偏高(例如4.25V):这非常危险,长期会损坏电池。原因:
- R1阻值偏大或R2阻值偏小,导致分压比过高,TL431在更高的电池电压下才动作。解决:微调R1或R2。要降低截止电压,可以减小R1或增大R2。一个巧妙的方法是:在R2上并联一个高阻值电位器(如100kΩ)进行微调,或者用固定电阻时,在R1上串联一个小阻值电位器(如1kΩ)。
- TL431的参考端输入电流(约2μA)在R2上产生压降。对于10kΩ的R2,压降约20mV,影响很小。但如果R2取值很大(如100kΩ),这个影响就不可忽视。建议R2在10kΩ左右。
- 布线问题:电压检测点离电池端子太远,检测线路上有压降。必须确保检测点直接连在电池焊盘或端子上。
电压偏低(例如4.15V):这会导致电池充不满,容量利用率低。原因:
- R1阻值偏小或R2阻值偏大。解决:增大R1或减小R2。
- TL431的Ref端对地漏电或受到干扰。确保Ref端走线干净,远离功率走线,并如前述在Ref端对地加一个100nF电容。
实操心得:在最终确定电阻值前,可以用精密可调电阻(多圈电位器)临时替代R1,接上一个4.20V的精密基准源(或另一节已充满的电池)到电池接口,调节电位器直到TL431刚好动作(可以用万用表测PNP基极电压突变点),然后拆下电位器测量其阻值,再用最接近的固定电阻替换。这是校准截止电压最直接的方法。
5.2 充电电流远小于预期
如果实测初始充电电流只有100mA左右,而不是计算的近300mA,可能的原因有:
- USB电源限流:很多电脑USB端口或廉价充电器有严格的500mA甚至更低的限流。当你的电路试图拉取更大电流时,其输出电压会下降。用万用表测量电路板输入端的电压,在接上电池的瞬间,如果电压从5V跌落到4.8V甚至更低,说明电源带载能力不足。换一个质量好的、标称5V/1A或2A的充电器再试。
- R_limit阻值偏大或功率不足发热:确认你使用的确实是4.7Ω电阻,并且功率足够(2W)。电阻在发热后阻值会变化(金属膜电阻变化小,碳膜电阻变化大),也可能导致电流下降。
- 连接线或接触电阻过大:从USB口到电路板,从电路板到电池的导线如果太细或接触不良,会产生额外的压降,相当于增大了R_limit。使用粗短的连接线,并确保所有焊点牢固。
- PNP管未完全关断:在充电初期,PNP管应该完全关断。如果PNP管有轻微漏电流或因为基极回路问题导致没有完全关断,它会分流一部分电流。检查R_base(220Ω)是否正常连接在PNP基极和电池正极之间。测量充电时PNP管基极对发射极的电压Vbe,应该非常小(<0.1V),如果接近0.6V,说明PNP管在导通。
5.3 电路振荡(电压或电流波动)
线性稳压电路可能产生振荡,表现为电池电压或充电电流有规律的波动。这通常是由于环路相位裕度不足引起的。
- 现象:用示波器观察电池电压,在接近4.2V时,电压在4.18V-4.22V之间来回摆动,而不是稳定在一个值。
- 主要原因与解决:
- TL431补偿不足:这是最常见原因。解决方法:在TL431的阴极和阳极之间(Ref端对地更有效)并联一个电容,典型值在100nF到1μF之间。可以先尝试100nF陶瓷电容,如果振荡依旧,增大到470nF或1μF。这个电容引入了滞后补偿,稳定了反馈环路。
- 电池端电容过大或过小:电池本身是一个大电容,通常不需要额外的大电容。但如果电池引线很长,远端可能产生电感,与电池电容形成LC谐振。在电路板的电池输入端并联一个10-100μF的电解电容和一个100nF的陶瓷电容,可以很好地抑制这种振荡。
- 布线不良:特别是地线回路过长或电压检测线受到功率电流干扰。回顾之前的布线要点,确保地线短粗,检测线直接。
5.4 进阶优化与功能扩展
基础电路工作稳定后,可以考虑以下优化:
- 充电状态双灯指示:实现充电中(红灯亮)、充满(绿灯亮)的指示。这需要更复杂的逻辑。一个简单方案是:利用充电电流的大小。在R_limit两端并联一个电压比较器,当电流大(电压高)时,比较器输出高电平点亮红灯;当电流小(接近0)时,另一个比较器输出高电平点亮绿灯。或者用一颗双色LED配合一个简单的晶体管逻辑电路。
- 涓流充电与自动断电:对于完全过放的锂电池(电压低于3.0V),应先以小电流(例如0.1C)进行预充,直到电压恢复到3.0V以上,再转为恒流快充。这需要额外的电压检测和逻辑控制电路,可以使用一个比较器监测电池电压,控制一个MOSFET切换不同的限流电阻。
- 温度监控:在电池上贴一个NTC热敏电阻,将其接入电路,当电池温度过高时,通过比较器或单片机切断充电或降低电流。这是商用充电器的标准安全功能。
- 使用MOSFET替代PNP三极管:MOSFET的导通电阻(Rds(on))可以非常小,在分流时产生的压降和热量更少。但MOSFET是电压驱动,需要额外的电平转换或驱动电路来配合TL431(TL431阴极输出高电平接近Vbat,低电平约2.5V,不足以直接关断P-MOSFET)。通常需要一个NPN三极管来做反相和驱动。
最后一点个人体会:这个TL431+PNP的线性充电电路,是一个理解模拟电路反馈和功率控制的绝佳范例。它简单、直观、成本极低,并且完全由分立元件和通用IC构成,给人一种“一切尽在掌握”的感觉。虽然它的效率不如开关式充电芯片(多余电压以热量耗散),但在小电流、对噪声敏感或需要极致简洁的应用中,仍有其价值。最大的收获不是做出了一个充电器,而是在计算、选型、焊接、调试、排查问题的全过程中,对电压基准、反馈环路、晶体管工作区、功耗计算这些基础概念有了更血肉丰满的理解。下次如果你也想“榨干”一个旧USB充电器的潜力,或者单纯想重温模拟电路的魅力,不妨试试这个方案。