1. 从一颗充电芯片说起:TC4056A到底能干什么
搞硬件的人对TC4056A这颗芯片应该不陌生,它几乎是小功率锂电池充电方案里出场率最高的线性充电管理IC之一。我第一次用它是在一个便携式温湿度记录仪项目上,单节18650电池供电,充电口就是普通的Type-C,成本压得很死,方案要足够简单。当时选型的时候对比过TP4056、IP2312、CS0301这些,最后还是回到TC4056A,原因很直接:外围器件少、封装小、价格便宜、资料齐全,而且它的引脚定义和TP4056基本兼容,PCB上做替换验证很方便。
TC4056A是一颗完整的单节锂离子电池线性充电管理芯片,采用恒定电流/恒定电压(CC/CV)充电模式,内部集成了功率管,不需要外部加MOS,外围只需要几个电阻电容加一颗指示灯就能跑起来。它的核心能力包括:可编程充电电流(通过PROG脚外接电阻设定)、4.2V浮充电压(精度通常在±1%左右)、充电状态指示(CHRG和STDBY两个开漏输出脚)、以及电池温度监测(TEMP脚接NTC热敏电阻)。SOP-8封装,底部有散热焊盘,这个焊盘的处理方式直接决定了芯片能不能在较大电流下稳定工作。
这颗芯片解决的核心问题是:让一个没有充电管理经验的工程师,也能在半天之内搭出一个能用的锂电池充电电路。它适合谁?适合做小功率便携设备、DIY电子项目、电池供电的传感器节点、以及各种需要单节锂电充电的场合。但如果你要做2A以上的快充、要做多节串联充电、要做带电量计的高级电源管理,那TC4056A就不合适了,得换开关型充电IC或者专用电源管理芯片。
我写这篇东西的出发点很简单:网上关于TC4056A的资料大多是数据手册的翻译或者简单的电路图复制,很少有人把可靠性设计、实际调试中踩过的坑、以及和锂电池保护电路的配合讲清楚。而这些东西恰恰是产品从“能亮灯”到“能出货”之间最关键的部分。下面我会从方案设计思路、核心参数计算、实操过程、常见问题排查几个维度,把我在多个项目中积累的经验完整地分享出来。
2. 方案整体设计与关键器件选型思路
2.1 为什么选线性充电而不是开关充电
线性充电和开关充电的选择,本质上是在效率、成本、复杂度、热管理之间做权衡。TC4056A是线性充电架构,它的工作原理可以简单理解为:输入电压和电池电压之间的压差,全部由芯片内部的功率管以热量的形式消耗掉。这意味着当输入5V、电池3.7V时,效率大概只有74%左右,剩下的26%变成了热。
那为什么还要用线性方案?因为在小电流场合(比如500mA到1A),线性方案的劣势并不明显,但优势非常突出:没有电感、没有开关噪声、EMI极低、外围BOM成本可能只有开关方案的几分之一。我做过一个对比,同样是1A充电电流,用TC4056A的方案BOM成本大概在0.5元以内(不含Type-C座),而用开关型IP2312方案,光电感加电容就要多出0.3到0.5元,还不算PCB面积增加带来的隐性成本。
但这里有个关键前提:你的设备散热条件要能撑得住。SOP-8封装的TC4056A,在标准PCB铜箔散热条件下,热阻大约在60到80°C/W。如果充电电流设到1A,压差1.3V,功耗就是1.3W,温升可能达到80到100°C。这个温度虽然芯片本身能扛(结温上限150°C),但周围器件和塑料外壳未必受得了。所以我的经验是:如果充电电流超过800mA,一定要认真做散热设计,或者干脆换开关方案。
2.2 外围器件选型:每一个都有讲究
TC4056A的典型应用电路看起来很简单,但每个器件的选型都会影响最终的性能和可靠性。我逐个说一下我的选型逻辑。
输入电容C1:数据手册一般建议1μF到10μF。我的习惯是用10μF的0805 X5R或X7R陶瓷电容,耐压16V。为什么不用1μF?因为输入线缆通常有寄生电感,插拔瞬间会产生电压尖峰,1μF的电容储能不够,尖峰可能超过芯片的绝对最大额定电压(通常是8V或10V)。10μF能有效吸收这些尖峰。另外,如果输入源是USB口,热插拔时的浪涌电流也需要电容来缓冲。
PROG电阻R1:这个电阻决定了充电电流。TC4056A的充电电流公式是I_chg = V_prog / R_prog × 1200,其中V_prog在恒流阶段大约是1V。简化一下就是I_chg ≈ 1200 / R_prog(mA),R_prog单位是kΩ。比如R_prog = 1.2kΩ,充电电流就是1000mA。这个公式是近似值,实际会有±10%左右的偏差,跟芯片批次和温度有关。我一般会先用公式算一个值,然后实测充电电流再微调。
电池端电容C2:建议用10μF,主要作用是稳定电池电压采样,同时在电池断开时提供瞬态响应。但要注意,如果电池通过长线连接,线缆电感加上这个电容可能形成LC谐振,在插拔电池时产生振铃。我的做法是在电池端并联一个0.1μF的小电容来抑制高频振铃。
指示灯电阻R2、R3:CHRG和STDBY都是开漏输出,需要外接限流电阻和LED。限流电阻的计算很简单:R = (VCC - V_LED) / I_LED。假设VCC=5V,LED正向压降2V,想要5mA电流,R = (5-2)/0.005 = 600Ω。我一般用1kΩ,电流约3mA,亮度足够,功耗也小。
TEMP脚处理:如果不用温度监测功能,TEMP脚要接地(有些型号是接VCC,具体看数据手册)。如果要接NTC,一般用10kΩ B值3435的热敏电阻,和10kΩ分压电阻配合。这里有个容易忽略的点:NTC的安装位置要尽量靠近电池,才能真实反映电池温度。我见过有人把NTC放在芯片旁边,结果芯片发热导致误触发温度保护,电池还没热呢充电就停了。
2.3 与锂电池保护电路的配合:AO3401A的角色
TC4056A本身只负责充电管理,它不具备过放保护、过流保护、短路保护这些功能。所以实际产品中,锂电池通常自带保护板,或者主板上要加保护电路。这里就涉及到AO3401A这颗P沟道MOS管。
AO3401A在锂电池电路里通常有两个用途:一是作为电池和负载之间的开关,二是配合保护IC实现过放切断。它的关键参数是Vgs(th)(栅极阈值电压)和Rds(on)(导通电阻)。AO3401A的Vgs(th)典型值是-1.5V,意味着当栅极比源极低1.5V时就开始导通。在3.7V锂电池系统里,这个阈值很合适,用普通GPIO就能控制。
但这里有个坑:如果你用AO3401A做负载开关,当电池电压降到3.0V以下时,Vgs可能不足以让MOS完全导通,Rds(on)会急剧上升,导致压降增大、发热严重。所以我的做法是:要么用专门的保护IC(比如DW01加8205A的双NMOS方案),要么在固件里设置低压切断阈值在3.3V以上,给MOS留足驱动余量。
另外,AO3401A的体二极管方向要注意。做负载开关时,体二极管应该从负载指向电池,这样当MOS关断时,负载端的残余电压不会倒灌回电池。如果方向反了,关断后负载电容上的电会通过体二极管给电池微充,虽然电流不大,但长期来看会影响电池寿命。
3. 核心参数计算与实操配置
3.1 充电电流设定:从需求反推PROG电阻
设定充电电流不是拍脑袋决定的,要从电池容量、充电时间要求、散热条件三个维度反推。假设你用一颗2000mAh的18650电池,希望2小时充满,那充电电流至少要1000mA(考虑充电效率,实际要留余量,比如1.2A)。但1.2A对TC4056A来说功耗太大,压差1.3V时功耗1.56W,SOP-8封装扛不住。
所以实际做法是:先确定散热能承受的最大功耗,再反推最大充电电流。假设你的PCB是2层板,芯片底部焊盘接了2cm²的铜箔,热阻大约70°C/W,环境温度25°C,你希望芯片表面温度不超过85°C,那允许温升60°C,最大功耗 = 60 / 70 ≈ 0.86W。压差按1.3V算,最大电流 = 0.86 / 1.3 ≈ 660mA。那PROG电阻就是1200 / 660 ≈ 1.8kΩ,取标准值1.8kΩ。
这个计算过程看起来简单,但很多人会忽略。我见过一个案例:有人用TC4056A给1000mAh电池充电,PROG电阻用了1.2kΩ(1A),结果芯片烫到摸不得,充电半小时后芯片进入热调节模式,电流自动降到200mA,充电时间反而变成了5小时。这就是没有做功耗预算的后果。
3.2 散热焊盘的处理:决定可靠性的关键
TC4056A的SOP-8封装底部有一个散热焊盘(Exposed Pad),这个焊盘必须焊接到PCB的铜箔上,并且铜箔面积要尽可能大。我的一般做法是:焊盘下方铺一块至少1cm²的铜箔,打过孔连接到背面铜箔,背面铜箔再大面积铺地。过孔至少打4个,孔径0.3mm,这样热阻可以从裸芯片的60°C/W降到40°C/W左右。
但这里有个工艺问题:散热焊盘在回流焊时容易产生气泡,导致焊接不良。我的经验是:钢网开孔时,散热焊盘区域开成网格状(比如分成4个小方块),而不是一整块,这样锡膏熔化时气体容易排出。另外,焊盘上的过孔要做塞孔处理,否则锡膏会从过孔流到背面,导致正面虚焊。
还有一个细节:如果你用的是手工焊接,散热焊盘很难用烙铁焊好。我的做法是用热风枪从背面吹,或者用大功率烙铁加焊锡膏,先把芯片放上去,用热风枪350°C吹30秒,让锡膏熔化。焊完后用镊子轻轻推一下芯片,如果能回弹,说明焊接良好。
3.3 充电状态指示与电量检测的配合
TC4056A的CHRG和STDBY两个引脚可以驱动LED,但如果你想把充电状态传给MCU,就需要加光耦或者用分压电阻。我一般用分压电阻方案:CHRG是开漏输出,充电时拉低,充满后高阻。用一个10kΩ上拉电阻到3.3V,再串一个10kΩ到MCU的GPIO,这样充电时GPIO读到低电平,充满后读到高电平。
但这里有个问题:STDBY引脚在充电时是高阻,充满后拉低。如果你只用一个引脚判断,可能会把“未充电”和“充满”搞混。我的做法是两个引脚都用,CHRG低表示正在充电,STDBY低表示充满,两个都高表示未接电池或电池电压过低。这样MCU就能准确判断状态。
关于锂电池电量检测,TC4056A本身不做电量计,只能通过MCU的ADC读电池电压来估算。但锂电池的放电曲线很平,3.7V到3.5V之间可能对应30%到70%的电量,单纯靠电压估算误差很大。我的经验是:如果只是做粗略的电量指示(比如四格显示),电压法够用;如果要精确到百分比,得用库仑计芯片,比如CW2015或者MAX17048。
4. 完整实操过程与关键环节记录
4.1 原理图设计与检查清单
我画TC4056A的原理图时,会按照一个固定的检查清单来核对,避免遗漏。这个清单包括:
- 输入电容是否靠近VCC引脚(距离小于5mm)
- PROG电阻是否连接到GND,阻值是否按目标电流计算
- 电池端电容是否靠近BAT引脚
- TEMP脚是否正确处理(接地或接NTC)
- CHRG和STDBY的上拉电阻是否接对电压域
- 散热焊盘是否在原理图中标注了网络(通常接GND)
- 是否有防反接设计(如果电池可插拔)
防反接这块我单独说一下。TC4056A的BAT脚如果接反电池,芯片会直接损坏。我的做法是在BAT脚串联一个P沟道MOS(比如AO3401A),源极接电池正极,漏极接芯片BAT脚,栅极接GND。这样电池正接时MOS导通,反接时MOS关断,保护芯片。但要注意MOS的体二极管方向,确保反接时体二极管不导通。
4.2 PCB布局要点与实测验证
PCB布局对TC4056A的性能影响很大,我总结了几条硬性规则:
第一,输入电容和电池电容必须紧贴芯片引脚,走线要短而粗。我一般用0.5mm以上的线宽,长度控制在5mm以内。
第二,PROG电阻的走线要远离高频信号,因为PROG脚是敏感模拟输入,噪声会导致充电电流波动。我一般把PROG电阻放在芯片旁边,走线不超过10mm。
第三,散热焊盘的铜箔要尽可能大,但不要延伸到敏感信号区域。我通常把散热铜箔放在芯片正下方和背面,形成一个独立的热岛,通过过孔连接。
第四,指示灯LED的走线可以细一些,但不要和模拟走线平行,避免串扰。
实测验证时,我会按以下步骤来:
- 先不接电池,只接输入电源,测量VCC电压是否正常(应该在4.5V到5.5V之间)
- 接一个假负载(比如10Ω电阻)到BAT脚,测量充电电流是否等于设定值
- 接真实电池,观察CHRG和STDBY指示灯状态
- 用热成像仪或热电偶测量芯片表面温度,确认在安全范围内
- 用示波器观察BAT脚电压波形,确认没有振荡
这里有个实测技巧:测量充电电流时,不要用万用表的电流档串在电池回路里,因为万用表的采样电阻会影响充电电流。正确做法是用电流探头或者在高侧串一个0.1Ω的采样电阻,用示波器测压降。
4.3 充电曲线实测与异常分析
我用一个2000mAh电池做了一次完整的充电测试,记录的数据如下:
| 时间 | 电池电压 | 充电电流 | 芯片温度 | 状态 |
|---|---|---|---|---|
| 0min | 3.2V | 660mA | 45°C | 恒流 |
| 30min | 3.6V | 660mA | 52°C | 恒流 |
| 60min | 3.9V | 660mA | 55°C | 恒流 |
| 80min | 4.1V | 400mA | 48°C | 恒流转恒压 |
| 100min | 4.18V | 150mA | 42°C | 恒压 |
| 120min | 4.2V | 50mA | 40°C | 恒压 |
| 140min | 4.2V | 10mA | 38°C | 充满截止 |
从数据可以看出,恒流阶段芯片温度最高到55°C,在可接受范围内。恒压阶段电流逐渐减小,这是正常的锂电池充电特性。但如果你发现恒压阶段电流下降很慢,或者电池电压一直停在4.0V上不去,那可能是电池老化或者芯片的浮充电压偏低。
我遇到过一种情况:电池只能充到4.0V就显示充满。排查后发现是PROG电阻虚焊,导致充电电流设定值漂移,芯片提前进入恒压模式。重新焊接后恢复正常。所以如果你遇到充电不满的问题,先检查PROG电阻和BAT脚的焊接。
5. 常见问题与排查技巧实录
5.1 充电电流偏小或偏大
这是最常见的问题。充电电流偏小,可能的原因有:PROG电阻阻值偏大、输入电压不足、芯片进入热调节模式、电池内阻过大。排查顺序是:先测输入电压(要在4.5V以上),再测PROG电阻实际阻值,再摸芯片温度(如果烫手就是热调节),最后换一颗电池试试。
充电电流偏大,通常是PROG电阻偏小或者虚焊。我见过一个案例:PROG电阻焊成了0Ω,充电电流直接冲到1.5A,芯片几秒钟就烫到保护。所以焊接后一定要用万用表确认PROG电阻的阻值。
5.2 芯片发热严重
芯片发热的根本原因是功耗过大,但具体原因可能不同。如果是恒流阶段就烫,那是压差太大或者电流设太高。如果是恒压阶段才烫,那可能是电池电压异常低,导致芯片一直在恒流模式。还有一种可能是散热焊盘没焊好,热阻远大于预期。
我的排查方法是:先测输入电压和电池电压,算压差;再测充电电流,算功耗;然后用手摸芯片表面,如果烫到不能碰(超过70°C),就要降低充电电流或者改善散热。如果散热焊盘焊接不良,可以用热风枪重新吹一下。
5.3 指示灯状态异常
CHRG和STDBY指示灯不亮或者常亮,通常是对应引脚的上拉电阻或LED接错。CHRG是开漏输出,充电时拉低,所以LED应该接在VCC和CHRG之间,充电时亮。如果接反了,充电时反而不亮。
还有一种情况:电池没接时,CHRG和STDBY都高,两个LED都不亮。这是正常的,因为芯片检测不到电池。如果你希望没接电池时也有指示,可以加一个比较器电路,但一般没必要。
5.4 电池充不满或过充
电池充不满,前面说过可能是PROG电阻问题。过充则是很危险的,通常是因为芯片的浮充电压偏高或者电池保护板失效。TC4056A的浮充电压精度一般是±1%,也就是4.158V到4.242V之间。如果你的电池只能承受4.2V,那4.242V就过充了。我的做法是:在BAT脚并联一个4.2V的稳压二极管(比如BZT52C4V2),作为二级保护。虽然精度不高,但能防止电压失控。
另外,如果电池自带保护板,过充保护阈值通常是4.25V到4.3V,会在芯片浮充电压之上,所以正常不会触发。但如果保护板失效,芯片又恰好浮充偏高,就可能过充。所以我的建议是:不要依赖单一保护,芯片浮充电压、保护板、外加稳压管,三重保护最稳妥。
5.5 常见问题速查表
| 现象 | 可能原因 | 排查方法 | 解决措施 |
|---|---|---|---|
| 充电电流为0 | 输入电压不足、PROG电阻开路、芯片损坏 | 测VCC、测PROG阻值、换芯片 | 换电源、补焊、换芯片 |
| 充电电流偏小 | PROG电阻偏大、热调节、电池内阻大 | 测PROG阻值、摸温度、换电池 | 调整电阻、改善散热、换电池 |
| 芯片发热严重 | 压差大、电流大、散热不良 | 测压差、测电流、检查焊盘 | 降电流、改散热、重焊 |
| 充不满 | PROG虚焊、浮充电压低、电池老化 | 测PROG、测BAT电压、换电池 | 补焊、换芯片、换电池 |
| 指示灯不亮 | LED接反、上拉电阻缺失、引脚虚焊 | 测LED两端电压、测电阻 | 调整方向、补电阻、补焊 |
| 电池过充 | 浮充电压偏高、保护板失效 | 测BAT电压、检查保护板 | 加稳压管、换保护板 |
6. 可靠性设计与长期运行验证
6.1 温度循环与老化测试
产品要出货,可靠性测试绕不过去。我对TC4056A方案做过几轮温度循环测试:-20°C到60°C,每个温度点保持30分钟,循环50次。测试中发现两个问题:一是低温下充电电流会下降,因为芯片内部的参考电压有温漂;二是高温下热调节更频繁,充电时间明显延长。
针对低温问题,我的做法是在固件里加温度补偿,如果检测到环境温度低于0°C,就降低充电电流或者暂停充电。锂电池在0°C以下充电会有析锂风险,虽然TC4056A本身不检测环境温度,但可以通过NTC来实现。针对高温问题,主要是改善散热,或者在高温环境下主动降低充电电流。
老化测试我一般跑72小时连续充电,每24小时记录一次充电曲线。如果曲线没有明显漂移,说明方案稳定。如果发现充电电流逐渐下降,可能是芯片老化或者电容容量衰减。
6.2 电池保护电路的协同验证
TC4056A加保护板的方案,要验证保护板在过充、过放、过流、短路时的动作是否正常。我的测试方法是:用可调电源模拟电池电压,从4.2V慢慢升到4.3V,观察保护板是否切断;再从3.0V降到2.5V,观察过放保护是否动作;最后用电子负载拉一个5A的脉冲,看短路保护是否触发。
这里有个细节:保护板的过充保护阈值通常比芯片浮充电压高0.05V到0.1V,所以正常充电时保护板不会动作。但如果芯片浮充电压偏高,比如4.24V,而保护板阈值是4.25V,那就很危险,稍微一点温漂就可能触发保护。所以选保护板时,过充阈值至少要比芯片浮充电压高0.1V。
6.3 长期存放与自放电管理
锂电池长期存放时,如果一直挂在TC4056A的BAT脚上,芯片的静态电流会慢慢消耗电池。TC4056A的静态电流典型值是2μA到5μA,看起来很小,但一年下来就是17mAh到43mAh。对于小容量电池(比如200mAh),这个消耗不可忽略。
我的做法是:如果设备长期不用,要么断开电池,要么在固件里设置深度睡眠模式,把TC4056A的输入电源切断。有些设计会在输入和芯片之间加一个P沟道MOS,由MCU控制,不用时彻底断电。这样静态电流可以降到1μA以下。
另外,锂电池长期存放的最佳电压是3.7V到3.8V,不要充满存放。我一般建议用户在长期存放前把电池放到50%左右,然后每3个月补一次电。这个建议虽然跟TC4056A无关,但作为完整方案的一部分,值得提一下。
7. 一些实操心得与踩坑记录
7.1 关于PROG电阻的选型经验
PROG电阻的精度直接影响充电电流的精度。我一开始用5%精度的普通电阻,发现充电电流偏差能到15%。后来换成1%精度的薄膜电阻,偏差降到5%以内。虽然成本高了不到一分钱,但一致性好了很多。如果你做批量产品,建议用1%精度,并且在同一批次里尽量用同一厂家的电阻。
另外,PROG电阻的温漂也要考虑。普通厚膜电阻的温漂是100ppm/°C到200ppm/°C,在-20°C到60°C范围内,阻值变化可能到1.6%。虽然影响不大,但如果你的产品要在宽温下工作,建议用25ppm/°C的精密电阻。
7.2 关于散热焊盘的焊接技巧
散热焊盘焊接不良是TC4056A方案最常见的隐性故障。我总结了一个简单的判断方法:芯片正常工作时,用手摸散热焊盘对应的PCB背面,应该能感觉到温热。如果芯片表面烫但背面不热,说明散热焊盘没焊好。
返修时,我一般用热风枪从背面加热,温度设到300°C,吹60秒,让锡膏重新熔化。如果PCB背面有元件,就用隔热胶带保护一下。返修后要重新测充电电流和温度,确认恢复正常。
7.3 关于输入电源的选择
TC4056A的输入电压范围是4.5V到5.5V,典型值是5V。但如果你用USB口供电,要注意USB线的压降。劣质USB线在1A电流下压降可能到0.5V,导致芯片输入只有4.5V,接近下限。这时候充电电流会下降,甚至芯片无法启动。
我的做法是:在输入端加一个低压差稳压器(LDO),把电压稳定在5V。或者用一根短而粗的USB线,线径至少24AWG。如果输入电压经常低于4.5V,建议换开关型充电IC,它的输入范围更宽。
7.4 关于电池反接的保护
电池反接是实验室里最容易犯的错误。我至少烧过三颗TC4056A,都是因为电池接反。后来我在BAT脚加了一个P沟道MOS(AO3401A)做防反接,再也没烧过。这个MOS的选型要注意:Vds要大于10V,Vgs(th)要适合3.7V驱动,Rds(on)要小于50mΩ,否则会影响充电效率。
AO3401A的Rds(on)典型值是45mΩ(Vgs=-4.5V时),在1A电流下压降45mV,功耗45mW,完全可以接受。但要注意,这个MOS的体二极管方向要正确,否则反接时体二极管会导通,起不到保护作用。
7.5 关于充电截止的判断
TC4056A的充电截止条件是:当充电电流降到设定值的10%以下时,STDBY引脚拉低,表示充满。但这个10%是内部固定的,不能调整。对于小容量电池,比如100mAh,设定充电电流100mA,截止电流就是10mA,这个值偏大,可能导致电池只充到4.15V就截止了。
我的做法是:对于小容量电池,把充电电流设小一点,比如50mA,截止电流就是5mA,这样能充得更满。但充电时间会延长。所以要在充满度和充电时间之间做权衡。如果对充满度要求高,可以用带充电截止电流可调的芯片,比如BQ24040。
7.6 关于PCB板材和铜厚的选择
TC4056A的散热跟PCB板材和铜厚关系很大。我做过对比:同样的布局,FR-4板材1oz铜厚,芯片表面温度比2oz铜厚高8°C到10°C。如果充电电流接近芯片的散热极限,建议用2oz铜厚,或者用铝基板。虽然成本增加,但可靠性提升明显。
另外,PCB的层数也有影响。4层板的内层铜箔可以作为散热平面,热阻比2层板低20%左右。如果空间允许,建议用4层板,把散热焊盘通过过孔连接到内层地平面。
8. 方案扩展与升级方向
8.1 从单节到多节的扩展思路
TC4056A只能充单节锂电池,如果你需要充2节串联(7.4V),就不能直接用。但可以用两颗TC4056A,分别充两节电池,输入并联,输出独立。这种方案叫“分充”,优点是每节电池独立管理,不会因为电池不一致导致过充。缺点是成本翻倍,PCB面积也翻倍。
另一种方案是用升压型充电IC,把5V升到8.4V,然后串联充电。但这种方案需要平衡电路,否则两节电池电压会不一致。对于小功率场合,我一般推荐分充方案,简单可靠。
8.2 与电量计芯片的配合
如果你需要精确的电量显示,可以在TC4056A的基础上加一颗库仑计芯片,比如CW2015。CW2015通过采样电阻测量电池电流,积分得到电量。它的I2C接口可以直接连MCU,精度能到3%以内。
但要注意,库仑计需要定期校准,否则误差会累积。我的做法是:每次充满电时,把电量计重置为100%,这样误差就不会累积。另外,采样电阻的选型要注意,阻值太大会影响充电效率,太小则信噪比不够。一般用10mΩ到20mΩ,配合高精度ADC。
8.3 低功耗场景的优化
对于电池供电的传感器节点,充电电路的静态功耗很关键。TC4056A的静态电流是2μA到5μA,已经很低了。但如果你加上指示灯,LED的电流可能到3mA,这就大了。我的做法是:在不需要指示的时候,用MCU把LED的限流电阻断开,或者用PWM调低亮度。
另外,TC4056A在电池充满后,如果输入电源一直接着,芯片会持续监测电池电压,静态电流会略高。如果设备长期接电源,可以考虑在输入加一个开关,充满后手动断开。
9. 最后分享几个实用小技巧
第一个技巧:如果你手头没有合适阻值的PROG电阻,可以用两个电阻并联来凑。比如需要1.8kΩ,可以用3.6kΩ和3.6kΩ并联,得到1.8kΩ。精度取决于两个电阻的精度,1%精度的电阻并联后还是1%左右。
第二个技巧:测试充电电流时,如果没有电流探头,可以用一个0.1Ω的采样电阻串在BAT脚和电池之间,用万用表测采样电阻两端的电压,然后除以0.1得到电流。但要注意,采样电阻会引入压降,导致芯片检测到的电池电压偏低,充电时间会略长。测完后要拆掉。
第三个技巧:如果你发现芯片发热严重,但不想降低充电电流,可以在芯片表面贴一块小铝片或者铜片,用导热胶粘住,增加散热面积。我试过贴一块1cm×1cm的铝片,芯片温度能降10°C左右。但要注意铝片不能碰到其他引脚,否则会短路。
第四个技巧:TC4056A的CHRG和STDBY引脚可以并联使用,用一个双色LED(共阳)来指示状态。充电时CHRG拉低,红色亮;充满时STDBY拉低,绿色亮。这样只需要一个LED,节省空间。但要注意双色LED的共阳脚要接VCC,两个阴极分别接CHRG和STDBY,限流电阻要分别计算。
第五个技巧:如果你做的是可穿戴设备,PCB空间很小,可以把TC4056A的散热焊盘直接连接到电池负极的铜箔上,利用电池的金属外壳散热。但要注意绝缘,电池外壳通常是铝的,导电,不能直接接触PCB上的带电部分。