1. 项目背景与核心需求解析
最近在做一个手持设备的项目,核心供电方案是单节锂电池。说实话,之前虽然用过不少带锂电池的产品,但真到自己动手设计充电管理电路,才发现里面门道不少。从选型、计算到布局,每一步都得仔细琢磨,不然轻则充电慢、发热大,重则损坏电池甚至引发安全问题。经过一番折腾,最终选定了TI的BQ24070这颗芯片,它集成了动态电源路径管理(DPPM),特别适合需要“边充边用”的设备。这篇文章,我就把自己从零开始研究、设计到调试的整个过程,包括原理理解、参数计算、电路设计以及踩过的坑,详细记录下来。无论你是刚接触锂电池充电的嵌入式新手,还是想找一份可直接“抄作业”的成熟方案,相信都能从中找到有用的信息。
手持设备的核心诉求很明确:单节锂电池供电、主要通过USB端口充电,并且最关键的是,要求在连接USB充电的同时,设备必须保持正常工作。这最后一个需求,直接排除了很多简单的线性充电芯片,因为它们通常只支持“先给电池充电,再由电池给系统供电”的模式,在充电期间如果系统负载较大,可能会从电池抽电,影响充电效率甚至导致电池无法充满。因此,带有“电源路径管理”功能的充电芯片就成了必选项。
2. 锂电池充电基础与国标要点解读
在动手选芯片、画电路之前,必须吃透锂电池本身的特性以及相关的充电规范。我主要参考了国标《GBT18287-2000》,这是锂离子电池安全性的基础。有几个关键参数和流程必须牢记,它们直接决定了充电电路的设计边界。
2.1 关键电压与容量定义
首先,要明确几个电压阈值,这是所有设计的出发点:
- 放电终止电压:2.75V。这是电池电压的“红线”,绝对不能让电池电压低于这个值,否则会造成不可逆的损伤,大幅缩短电池寿命甚至导致漏液、鼓包。
- 充电限制电压:4.2V。这是单节锂离子电池充电时允许达到的最高电压。超过此电压,电池内部化学反应会变得危险,存在热失控风险。所有充电管理芯片的恒压充电阶段,目标电压就是稳定在4.2V(对于标准锂离子电池而言)。
- 额定容量 (C5):电池在20℃±5℃环境下,以0.2C(即容量/5)的电流放电至终止电压所提供的电量。例如,一个1000mAh的电池,C5就是1000mAh,0.2C5就是200mA电流。这个参数是计算充电电流的基础。
2.2 标准充电制式
国标给出了两种充电方法,我们常用的是第一种,作为检验的仲裁制式:
- 标准充电(0.2C5):先用0.2C5的恒定电流(CC)充电,直到电池电压达到4.2V;然后转为恒定电压(CV)充电,保持4.2V,直到充电电流衰减到≤0.01C5。总充电时间不应超过8小时。
- 快速充电(1C5):流程同上,但恒流阶段的电流是1C5。这要求电池和充电电路都能承受更大的电流。
对于从USB取电的设备(标准USB 2.0端口限流500mA),通常采用0.2C5~0.5C5的电流充电。例如,对于一枚1500mAh的电池,0.3C5就是450mA,正好在USB的供电能力范围内。
2.3 预充电的必要性
国标里没有明确强调,但几乎所有专业的充电管理芯片都具备的一个关键阶段是预充电(Trickle Charge)。当电池因过度放电导致电压低于某个阈值(通常是3.0V左右)时,电池内阻很大,如果直接以大电流充电,不仅效率极低,还会导致电池严重发热。此时,芯片会先以一个很小的电流(如10mA~50mA)对电池进行预充电,缓慢提升其电压。当电压恢复到正常范围(如3.0V以上)后,才切换到正常的恒流充电阶段。这个功能对于保护长期存放或过度放电的电池至关重要。
注意:忽略预充电功能是新手设计中常见的隐患。如果使用不具备此功能的简单电路,直接对低压电池进行大电流充电,极易损坏电池。
3. 芯片选型:为什么是BQ24070?
明确了需求(边充边用、USB充电)和基础规范后,就开始选型。市面上做电源管理芯片的厂商很多,TI、ADI、MPS、圣邦微等都有相关产品。经过一番对比,我最终选择了TI的BQ24070,主要基于以下几点考量:
3.1 核心优势:动态电源路径管理 (DPPM)
这是选中BQ24070的决定性因素。普通充电芯片的路径是:输入电源 -> 充电管理电路 -> 电池 -> 系统负载。而DPPM架构实现了两条并行的路径:
- 路径一:输入电源 -> 充电管理电路 -> 电池。
- 路径二:输入电源 -> 一个内部理想二极管(或MOSFET开关) -> 系统负载(OUT引脚)。
这样带来的好处是巨大的:
- 真正边充边用:系统负载的电流优先由输入电源(如USB)直接提供,而不是从电池“绕一圈”。只有当输入电源功率不足时,电池才会补充差额。这保证了充电期间系统的稳定运行。
- 优化充电效率:输入电源的能量可以同时供给系统和电池,减少了能量在电池中“进出”的损耗。
- 快速系统上电:即使电池完全没电(0V),只要插入电源,系统就能通过路径二立即获得电力启动,无需等待电池电压回升。
- 防止系统复位:当拔掉电源瞬间,电池到系统的切换是无缝的,避免了因电压跌落导致的系统重启。
3.2 完善的集成与保护功能
BQ24070将很多外围功能都集成在了内部,简化了设计:
- 输入过压保护 (OVP):最高可承受28V输入,有效防止电源适配器插错带来的损坏。
- 充电状态指示:两个开漏输出的状态引脚(STAT1, STAT2),可以轻松驱动LED或通知MCU当前是充电中、充满、故障还是待机状态。
- 充电安全定时器:通过一个外部电阻可设置最长充电时间(我设置为6小时),防止因电池故障导致无限期充电。
- 电池温度监测 (NTC):支持外接负温度系数热敏电阻(NTC),当电池温度超出安全范围(如0℃~45℃)时暂停充电。虽然本次设计因结构原因未使用,但引脚留出,强烈建议在空间允许时加上。
- USB兼容性:通过MODE引脚可以轻松设置USB 100mA/500mA模式或高压适配器模式,满足USB枚举的电流协商要求。
3.3 灵活的可配置性
充电电流、预充电电流、终止电流、DPPM阈值、安全定时等所有关键参数,都通过1%精度的外部电阻来设定。这意味着同一个芯片可以灵活适配从几百mAh到几千mAh的不同容量电池,只需重新计算电阻值即可,通用性很强。
4. BQ24070外围电路设计与参数计算详解
确定了芯片,接下来就是根据我们的具体需求来计算每一个外围元器件的参数。这是设计的核心,计算过程必须清晰有据。我的手持设备假设使用一枚标称3.7V/1500mAh的锂离子电池。
4.1 基础配置与引脚设置
首先,根据应用场景设置芯片的工作模式:
- MODE引脚(R4):我们主要使用电脑USB口充电,所以将MODE引脚通过一个100kΩ电阻(R4)接地,设置为USB输入模式。在此模式下,芯片会遵循USB电源规范。
- ISET2引脚(R7):此引脚用于设置USB模式下的最大输入电流限制。将其通过一个100kΩ电阻(R7)上拉到IN引脚,设置为500mA模式,与标准USB 2.0端口的供电能力匹配。如果使用充电器(如5V/1A),则需要改变此设置。
4.2 充电电流相关电阻R5的计算
这是最关键的一组参数。BQ24070的正常充电电流 (Ibat)、预充电电流 (Ipre)和充电终止电流 (Iterm)都由连接在ISET1引脚和地之间的电阻R5(即数据手册中的RSET)决定。计算顺序有讲究,我建议从终止电流开始倒推。
步骤一:确定终止电流 Iterm充电进入恒压阶段后,电流会逐渐减小。当电流小于终止电流时,芯片认为电池已充满,停止充电。国标建议≤0.01C5。为了尽可能将电池充得“瓷实”一些,我选择了一个更小的值。
- 电池容量 C5 = 1500mAh = 1.5Ah
- 0.01C5 = 15mA
- 我设定Iterm = 17mA(略高于标准,可适当缩短充满判断时间,且仍在安全范围内)。
计算公式:Iterm = Kset * Vterm / RSET其中:
Kset= 450 (芯片内部常数)Vterm= 0.1V (芯片内部基准电压)RSET即我们需要求的R5。
所以:RSET = Kset * Vterm / Iterm = 450 * 0.1 / 0.017 ≈ 2647 Ω选取最接近的E96系列1%精度电阻:2.61kΩ。因此,R5 = 2.61kΩ。
步骤二:计算正常充电电流 Ibat有了RSET,就可以计算恒流充电阶段的电流。 计算公式:Ibat = Vset * Kset‘ / RSET其中:
Vset= 2.5V (芯片内部基准)Kset‘= 425 (另一个芯片内部常数)RSET= 2610 Ω
计算:Ibat = 2.5 * 425 / 2610 ≈ 407mA这个电流值约为0.27C5,对于1500mAh电池来说,是一个温和且安全的充电速率,完全在USB 500mA的限流范围内。
步骤三:计算预充电电流 Ipre当电池电压低于3.0V时,芯片进入预充电模式。 计算公式:Ipre = Kset * Vpre / RSET其中:
Kset= 450Vpre= 0.25V (芯片内部基准)RSET= 2610 Ω
计算:Ipre = 450 * 0.25 / 2610 ≈ 43.1mA这个值在推荐的10-100mA范围内,适合对深度放电的电池进行安全恢复。
4.3 动态电源路径管理电阻R8的计算
DPPM功能是保证“边充边用”不卡顿的关键。它的作用是:当系统负载突然增大,导致输出端(OUT)电压被拉低时,芯片会自动降低充电电流,优先保证系统供电。触发这一动作的电压阈值由RDPPM(即R8)设置。
计算公式:RDPPM = VDPPM / (IDPPM * SF)其中:
IDPPM= 100µA (芯片内部恒流源)SF= 1.15 (比例因子)VDPPM是我们需要确定的阈值电压。
VDPPM的设定原则是:略高于系统的最低允许工作电压。我的系统核心是一个LDO,输出3.0V给MCU等芯片。LDO本身有压差(Dropout Voltage),假设其最大压差为150mV。
- 系统最低工作电压 = LDO输出电压 + LDO最大压差 = 3.0V + 0.15V = 3.15V。
- 为了留有余量,通常将VDPPM设定为比系统最低电压高0.4-0.6V。我取0.5V。
- 因此,
VDPPM = 3.15V + 0.5V = 3.65V。
代入公式:RDPPM = 3.65 / (0.0001 * 1.15) = 3.65 / 0.000115 ≈ 31739 Ω选取最接近的E96系列1%精度电阻:31.6kΩ。因此,R8 = 31.6kΩ。
这意味着,当OUT引脚电压被负载拉低到3.65V以下时,BQ24070就会开始减少充电电流,将更多的输入功率分配给系统负载,防止系统因电压过低而复位。
4.4 充电安全定时器电阻R9的计算
为了防止电池故障导致充电无限进行,必须设置一个最长充电时间。国标规定不超过8小时,我设定为6小时,更加安全。 计算公式:tCHG = Ktimer * RTMR其中:
Ktimer= 0.360 s/Ω (芯片常数)RTMR即我们需要求的R9。tCHG= 6小时 = 6 * 3600秒 = 21600秒。
所以:RTMR = tCHG / Ktimer = 21600 / 0.360 = 60000 Ω选取最接近的E96系列1%精度电阻:60.4kΩ。因此,R9 = 60.4kΩ。
4.5 其他外围电路
- 温度检测(TS):虽然本次未使用,但最佳实践是将TS引脚通过一个10kΩ电阻(R6)接地,同时预留NTC热敏电阻和上拉电阻的焊盘位置,以备后续需要时补上。
- 状态指示与电源好(PG):STAT1、STAT2和/PG都是开漏输出,需要外接上拉电阻(通常10kΩ)到合适的逻辑电平(如3.3V)。可以连接LED进行指示灯显示,也可以连接到MCU的GPIO进行软件监控。
- 输入输出电容:IN、OUT、BAT引脚都需要就近放置滤波电容。根据数据手册建议,我使用了10µF的陶瓷电容(C1, C2, C3)并并联一个0.1µF的陶瓷电容(C4, C5, C6)以滤除高频噪声。电容的耐压值需高于6.3V,推荐X5R或X7R材质。
- 电感L1:这是芯片内部开关稳压器所需的外部电感,根据推荐值选择4.7µH,饱和电流需大于最大充电电流,我选择了一个额定电流1.5A的功率电感。
5. PCB布局与实战调试心得
原理图设计完成只是第一步,开关电源电路的PCB布局对稳定性、效率和EMI性能有决定性影响。BQ24070的评估板手册提供了很好的布局指南,这里结合我的实践强调几个要点:
5.1 布局核心原则
- 功率回路最小化:这是最重要的原则。输入电容(C1)、芯片的IN引脚、芯片的SW引脚、电感(L1)、输出电容(C2)以及BAT电容(C3)构成的功率环路面积要尽可能小。这能降低寄生电感和电磁辐射,提高效率,减少电压尖峰。
- 地平面完整性:使用一个完整或至少是连续的接地层。所有小信号地(如R5, R8, R9的地)和功率地(输入输出电容的地、电感的接地端)应通过过孔单点连接到地平面,避免功率噪声干扰敏感的电流检测和定时电路。
- 敏感走线远离噪声源:设置充电电流、定时、DPPM阈值的电阻(R5, R8, R9)及其连接到ISET1、TMR、DPPM引脚的走线,应远离电感和开关节点(SW)等高频噪声源。这些走线应短而直。
- 散热处理:BQ24070的散热焊盘(Thermal Pad)必须按照数据手册要求,打足够多的过孔连接到内部地平面,以利于散热。如果空间允许,可以在顶层铜皮上适当加大敷铜面积。
5.2 调试过程与实测数据
板子打样回来后,焊接调试。以下是我的实测记录和观察:
- 空载上电:接入5V USB电源,测量OUT引脚电压约为4.95V(由于内部理想二极管有压降),/PG引脚变为低电平(表示电源正常),STAT1和STAT2均为高阻态(未接电池)。
- 接入放电电池(3.2V):
- 芯片先进入预充电阶段。测量充电电流约为42mA,与计算的43.1mA基本吻合。
- STAT1引脚输出脉冲信号(通过LED可看到慢闪),表示正在预充电。
- 电池电压升至3.0V以上:
- 芯片自动切换至恒流充电阶段。测量充电电流稳定在398mA左右,与计算的407mA存在约2%的误差,这在电阻精度和测量误差范围内,非常理想。
- STAT1引脚变为恒亮,STAT2为灭,表示快充中。
- 电池电压接近4.2V:
- 电流开始缓慢下降,进入恒压充电阶段。OUT引脚电压始终稳定在5V输入减去二极管压降的水平(约4.9V),系统供电未受影响。
- 充电终止:
- 当充电电流降至约18mA时(接近设定的17mA),芯片判定充满。STAT1熄灭,STAT2恒亮,表示充电完成。
- 此时测量电池端电压为4.18V(在万用表测量精度内接近4.2V)。
- 边充边用测试:
- 在恒流充电阶段,手动让系统进入高功耗模式(如点亮背光、启动无线模块),系统电流瞬间增加约200mA。
- 此时观察到OUT引脚电压有轻微波动(从4.9V降至4.88V),但远高于DPPM阈值3.65V,因此充电电流没有明显变化,系统增加的功耗完全由输入电源承担,电池充电未受干扰。这完美验证了DPPM的功能。
- 当我模拟一个极端情况(例如短时短路负载),将OUT电压强行拉低至3.5V以下时,可以明显测量到充电电流迅速减小,芯片优先保障了系统电压。
6. 常见问题、故障排查与进阶技巧
在实际设计和调试中,你可能会遇到以下问题。这里我整理了一份排查清单和心得。
6.1 充电电流不准确或为零
- 检查RSET电阻:首先用万用表确认R5(2.61kΩ)的阻值是否准确,焊接是否良好。这是设置电流的基准。
- 测量ISET1引脚电压:在恒流充电阶段,用高输入阻抗的万用表测量ISET1引脚对地电压。正常应为2.5V左右。如果电压为0,检查芯片供电和使能;如果电压远低于2.5V,可能是该引脚对地短路或芯片损坏。
- 检查电池连接:确保电池触点接触良好,电池保护板是否正常(有些电池内置保护板,在过放后会锁死,需要一个小电压“激活”)。
- 输入电源能力:确认USB电源是否能提供足够的电流。有些电脑的USB端口输出能力不足,可以换用5V/2A的适配器并调整ISET2配置进行测试。
6.2 系统在充电时频繁复位或工作不稳定
- DPPM阈值设置过高:检查R8(31.6kΩ)的值。如果阻值偏小,VDPPM阈值会变低,可能导致系统电压稍有波动就触发DPPM,削减充电电流,而系统负载变化可能恰好是周期性的,从而引起振荡。可以适当增大R8试试。
- 输出电容不足:OUT引脚的电容(C2)是稳定系统电压的关键。确保使用了足够容量(如10µF)且ESR低的陶瓷电容,并尽量靠近OUT引脚放置。
- 布局问题:功率回路过大或地线处理不当,会导致开关噪声干扰系统电源。回顾PCB布局,确保遵循了最小功率回路原则。
6.3 电池永远充不满(充电指示灯不转绿)
- 终止电流设置过小:检查R5的计算。如果设置的Iterm过小(比如小于电池的自放电电流),芯片可能永远检测不到电流低于终止点。可以适当增大Iterm(即减小R5阻值),例如调整到0.02C5~0.03C5。
- 安全定时器过早触发:如果电池容量很大(如3000mAh),而充电电流设置较小(如300mA),充电时间可能超过设置的安全定时(如6小时)。在定时器触发时,即使未充满,充电也会停止。需要根据
总充电时间 ≈ 电池容量 / 充电电流 * 1.2 ~ 1.5的公式重新计算并调整R9,延长定时时间。 - 电池老化:旧电池内阻增大,在恒压阶段电压上升很快,但实际充入电量很少,电流下降缓慢,可能无法达到终止条件。这是电池本身的问题。
6.4 进阶设计与技巧
- MCU智能监控:不要仅仅把STAT引脚接LED。将它们连接到MCU的GPIO,让软件可以知道充电状态。当电池充满(STAT2亮)时,可以让设备进入低功耗状态或提示用户。当检测到故障状态(STAT1/STAT2异常闪烁模式)时,可以记录日志或报警。
- 利用/PG引脚:/PG引脚不仅可以驱动LED。它可以作为MCU的复位源或中断源。当USB拔插时,/PG信号会变化,MCU可以借此判断电源状态,执行相应的处理程序(如保存数据、切换功耗模式)。
- 热管理考虑:在大电流充电(如1A以上)或环境温度较高时,芯片和电感会有明显发热。除了做好PCB散热,可以在软件上增加温度检测逻辑(如果接了NTC)。当芯片或电池温度过高时,MCU可以通过I2C(如果使用支持此功能的型号)或简单地控制一个MOSFET来切断充电回路,实现二级保护。
- 电池电压监测:BQ24070本身不提供精确的电池电压读数。对于需要精确监控电池电量(电量计)的应用,必须额外使用一个ADC通道来测量BAT引脚电压(注意分压),或者选用集成库仑计功能的更高级充电芯片。
最后一点个人体会:电源设计,尤其是电池管理,是一个对细节要求极高的领域。理论计算只是起点,PCB布局、元件选型(特别是电容和电感的品质)、焊接工艺,甚至电池本身的个体差异,都会影响最终性能。第一次设计时,务必留出足够的测试点(如ISET1、DPPM、SW等关键网络),方便调试时测量。多花时间在布局上,远比后期调试时飞线来得高效。这份基于BQ24070的设计方案,经过实际项目验证,稳定可靠,希望能为你提供一个扎实的起点。