ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

从TP4056到Type-C:锂电池充电与电源路径管理实战解析

从TP4056到Type-C:锂电池充电与电源路径管理实战解析 “TP4056”这个芯片网上教程多到能填满一个收藏夹但大部分内容都停在同一层怎么接一个成品模块怎么让灯亮起来。至于 Type-C 接口背后那些引脚到底要不要处理、锂电池充放电和负载之间到底是什么关系、所谓“电源路径管理”又是在解决什么问题讲清楚的不多。我最近在做一个便携式温湿度记录仪18650 电池供电Type-C 接口充电屏幕常亮、传感器每秒采集一次。第一版偷懒直接买成品 TP4056 模块负载正负极并接在电池两端。结果插上 USB 边充边用充了几个小时电量不升反降电池电压还一路往下掉。排查后才发现问题不在模块在电源架构负载直接挂在电池上充电和放电共用一条通路没有任何电源路径管理。这篇文章就把我从这颗芯片到 Type-C 接口、再到电源路径管理的完整设计过程拆开讲内容偏实操也包含不少踩坑记录。1. 想法落地前先把TP4056和Type-C这两个“老朋友”的本质看清楚1.1 TP4056的能力清单以及最容易被忽略的三件事TP4056 是一颗线性锂离子电池充电管理芯片单节 4.2V 应用最大充电电流大概在 1A 左右。它内部集成了恒流/恒压充电逻辑还有充电状态指示引脚 STDBY 和 CHRG前者是“充满”指示后者是“正在充电”指示。这种芯片最大的好处是外围极其简单一个 PROG 电阻设定电流几个电容就能跑起来不需要额外的功率 MOS 管和采样电阻所以这些年 DIY 圈子里几乎成了默认选型。但使用中有三件事特别容易被忽略。第一它是线性充电效率等于电池电压除以输入电压。5V 输入、4.2V 电池、1A 充电电流时芯片上的功耗大约是(5 - 4.2) × 1 0.8W。0.8W 对于 SOP-8 封装来说已经不小了如果 PCB 散热铜箔面积不够芯片烫手是必然的。这不是芯片坏了而是热设计没跟上。第二PROG 电阻不只是决定充电电流还决定截止判断。TP4056 的截止电流同样通过 PROG 电阻比例设定约为设定充电电流的 1/10。如果你把 PROG 电阻选得很小把充电电流拉到 1A那截止电流就有 100mA 左右。对于容量只有几百毫安时的小电池恒压阶段电流掉得很快芯片很可能在 4.1V 左右就判定“充满了”这就是很多人疑惑“为什么电池充不满 4.2V”的常见原因之一。第三它没有电源路径管理。TP4056 的 BAT 引脚在充电时是输出端在无输入时是高阻状态。如果负载直接并联在 BAT 引脚上芯片并不知道系统里还有一个负载在消耗电流它会按照自己的充电曲线工作结果很可能出现“永远充不满”“充电一闪一闪”“插电反而掉电”这一系列诡异现象。这一点我在后面专门展开。1.2 Type-C不再只是“正反随便插”CC、SBU、D/D-到底怎么接很多人把 Type-C 当成“能正反插的 Micro USB”确实从物理形态上看差不多但它内部多出来的引脚不能忽略。Type-C 插头有 24 个引脚其中和充电应用强相关的是 VBUS、GND、CC1、CC2。充电设备作为 Sink被充电方必须在 CC1 和 CC2 上各接一个 5.1kΩ 下拉电阻到地。原因很简单充电器Source正是通过检测 CC 引脚上的下拉电阻来判断有没有设备接入以及该提供多少电流的。如果你不接这两个下拉电阻很多 C 口充电器根本不会输出 5V。SBU1 和 SBU2 这两个引脚很多人问是不是要接什么东西。SBU 是 Sideband Use 引脚用于音频附件模式、DisplayPort 交替模式等纯充电场景里它们没有任何作用。设计时建议直接悬空或者加个 ESD 保护管不要把它们连到电源或地。我之前见过有人把 SBU 接到 CC 的参考地上导致插上某些带芯片的线缆时充电识别异常属于典型的不该动的引脚动了。D 和 D- 也要考虑。Type-C 规范下D/D- 是 USB 2.0 的数据信号充电时可以不用但如果你用的是一根 A 口转 C 口的线很多普通 USB-A 充电器是靠 D/D- 短接来识别充电电流的。所以如果目标是兼容老充电器建议在 D 和 D- 之间加一个短接电阻或者跳线选项如果只走 C-C 线CC 下拉电阻做好就够了。我的设计里把 D/D- 通过两个 0Ω 电阻做了可选短接调试时方便很多。2. 充放电电路设计的核心参数与选型逻辑2.1 充电电流怎么定PROG电阻公式和功耗预算PROG 引脚是 TP4056 设置充电电流的窗口。根据数据手册里的典型曲线充电电流与 PROG 电阻之间可以按I_BAT ≈ 1200 / R_PROG估算其中 R_PROG 单位是 ΩI_BAT 单位是 A。这个公式是工程上常用的粗算方式实际上还受温度、VCC 电压影响但足够指导选型了。例如要用 500mA 给一颗 18650 充电R_PROG ≈1200 / 0.5 2400Ω取标准值 2.4kΩ 或 2.2kΩ 都能接受。我之前实测过2.4kΩ 对应的充电电流大约在 480mA 左右偏差在合理范围内。选型时还有一个优先级更高的因素发热。线性充电芯片的功耗公式是P (V_IN - V_BAT) × I_BAT。代入 5V 输入、3.8V 电池电压充电中段典型值、1A 电流P (5 - 3.8) × 1 1.2W。如果没做好散热芯片温度会很快冲到 100°C 以上。功耗预算才是决定充电电流上限的第一因素而不是芯片标称的 1A 能力。我实际项目里选用 500mA 充电电流最坏功耗(5 - 3.0) × 0.5 1W在双面铺铜的板子上温升大概 30°C 左右可以接受。2.2 输入级设计电容、ESD、限流Type-C 的 VBUS 进入电路后第一步是加输入电容。我习惯在 VBUS 和 GND 之间放一个 10µF 的 X5R 陶瓷电容靠近芯片 VCC 引脚用来吸收热插拔时的浪涌也稳定线性充电器输入端的电压。容量太小容易在充电电流阶跃时把输入电压拉低导致充电电流不稳。ESD 保护也不能省。Type-C 口经常被反复插拔人体静电可能从插头直接打进 VBUS 和 CC 引脚。我在这版设计里加了 USBLC6-2SC6 这类低电容 TVS夹在 VBUS、CC 和 GND 之间成本不高但能有效防止芯片被打坏。注意 TVS 的摆放位置要尽量靠近连接器引脚走线先过 TVS 再过芯片这才是有效路径。输入限流也要想清楚。如果你有一台老电脑的 USB 2.0 口输出能力只有 500mA就别在电路里把充电电流设到 1A。虽然充电芯片会尝试拉 1A 电流但电脑 USB 口的电压会被拉低可能触发保护。最简单的办法是加一个可选的电流跳线或者直接把 PROG 电阻按 500mA 设计兼顾充电速度和输入兼容性。2.3 电池端保护板与探测电阻的坑TP4056 本身不负责过放保护它只是一个充电管理芯片。电池端必须额外接保护板这是很多人容易搞混的地方。无论是 18650 还是软包锂电保护板负责过充、过放、过流和短路保护TP4056 负责充电曲线两者职责不同缺一不可。另一个坑是电池连接线的电阻。TP4056 的 BAT 引脚电压是芯片自身判断充电状态的依据如果 BAT 引脚到电池正极之间走线过长、连接器接触电阻偏大或用了太细的线充电时电流在线上产生压降芯片会误以为电池电压还很低一直维持恒流充电最后可能过充反之在截止判断时线上压降会让芯片在电池还没真正到 4.2V 时就判满。所以做 PCB 时 BAT 走线尽量粗短如果电池和板子之间用线连接建议用 22AWG 以上线材。3. 电源路径管理从“能用”到“好用”的关键一跃3.1 “边充边放”的真实负载曲线和芯片行为先还原一下最经典的问题场景负载直接并联在电池两端同时电池正极也接到 TP4056 的 BAT 引脚。系统正常工作时负载电流为 I_LOAD充电电流为 I_CHG那么从 Type-C 输入侧看进去的总电流大概是I_CHG I_LOAD。如果充电器输出能力足够电池会以I_CHG充电负载消耗的电流由充电器额外提供理论上没问题。但芯片实际不知道这个负载的存在它只通过 BAT 引脚采样电池电压来决定充电状态。当负载电流超过I_CHG时电池实际上还在放电BAT 电压持续下降TP4056 的恒流阶段会一直继续直到电池保护板触发过放或者充电器被拉垮。另一个常见现象是 BAT 电压因为负载波动而上下抖动芯片在恒压、恒流、截止这三个状态之间反复跳变充电指示灯一亮一灭充电效率反而很低。所以“边充边放”的本质问题是负载和充电回路在 BAT 节点上互相干扰。解决办法就是给系统加电源路径管理让负载优先从 VBUS 取电VBUS 断开时才切换到电池。3.2 三种路径管理方案对比第一种最无脑用两个肖特基二极管做“或”隔离。VBUS 经过一个二极管到负载电池经过另一个二极管到负载谁的电压高谁就给负载供电。VBUS5V 时经过二极管后约 4.5V高于电池的 4.2V负载走 VBUSVBUS 断开电池通过二极管给负载供电。优点是原理简单、绝不会倒灌缺点是两个二极管都有压降电池供电时负载端电压大约只有 3.7V 到 3.9V如果负载对电压敏感就不太适用。对于几十毫安级别的低功耗电路勉强能用。第二种PMOS 自动切换。用一颗 P 沟道 MOS 管接在电池正极和负载之间栅极接 VBUS。VBUS 有电时VBUS 把栅极拉高PMOS 的 Vgs 接近 0 甚至为正MOS 管截止电池和负载隔离开负载完全由 VBUS 供电VBUS 断开时栅极被电阻拉到地Vgs 为负PMOS 导通电池接管负载。这个方案压降非常小导通后只取决于 MOS 管的 Rds(on)比如 AO3401 大约 40mΩ 左右几乎可以忽略。关键问题是体二极管方向PMOS 的体二极管是从 D 到 S 的如果 S 接电池、D 接负载在 VBUS 供电时 D 点电压高于 S 点体二极管会正向导通VBUS 会通过体二极管反灌到电池这就把路径管理切死了。所以真正可用的分立方案需要两颗 PMOS 背靠背串联或者干脆用带片内路径管理的电源芯片。第三种也是最推荐的换一颗自带 Power Path 管理的充电芯片。例如 IP5306、ETA9640、HT3786D 这类芯片它们把充电、放电、路径切换甚至电量计都集成在一起外围也不复杂比用 TP4056 再搭外围电路更省心。如果你在设计阶段就预见到系统经常需要在“边充边用”状态下运行直接用这些芯片比后期补路径管理划算得多。3.3 我采用的PMOS自动切换电路与实测数据考虑到材料成本和手上的存货我最终采纳了“两颗 P-MOS 背靠背”的方案用两颗 AO3401 就够了。电路逻辑是Q1 的源极接电池正极Q2 的源极与 Q1 源极相连Q2 的漏极接负载两颗 MOS 的栅极连在一起通过一个 10kΩ 电阻接到 VBUS同时并一个 100kΩ 电阻到地。VBUS5V 时Q1、Q2 栅极电压接近 5V而源极电压等于电池电压约 3.0 到 4.2VVgs 为正两颗 MOS 都处于截止状态电池和负载完全隔离。VBUS 掉电后栅极通过 100kΩ 电阻放电到 0VVgs 变成负值MOS 管导通电池给负载供电。由于背靠背接法无论 D 端和 S 端哪边电压高总有一个 MOS 的体二极管处于反向偏置彻底断了反灌路径。实测数据上我在负载端挂了一个 100mA 的恒流负载和一个 220µF 的钽电容。插拔 USB 的瞬间负载端电压跌落大概 80mV 到 120mV恢复时间在几十毫秒内。对于我的记录仪完全够用。如果你负载里有一个 2G 模块这种瞬间电流很大的东西这个 220µF 电容可能不够需要加大到 470µF 甚至加一个小的超级电容。4. 实操记录从原理图到调试完成的完整流程4.1 原理图与BOM清单先列一下核心 BOM都是我实际用过的序号元件型号/参数数量备注1充电管理TP40561SOP-82Type-C母座16P 沉板式1带外壳固定柱3PMOSAO34012Vds-30VId-4A4电池保护DW01A FS82051套锂电池保护板方案5PROG电阻2.4kΩ 08051对应约500mA充电电流6CC下拉电阻5.1kΩ 06032CC1、CC2各一颗7输入电容10µF 08051X5R靠近VCC8电池侧电容10µF 08051并联在BAT与GND9输出储能电容220µF 钽电容1负载端10ESD保护USBLC6-2SC61VBUS、CC保护连接关系不复杂。Type-C 母座的 VBUS 同时进 TP4056 的 VCC 和路径管理 MOS 的栅极控制电阻CC1、CC2 各通过 5.1kΩ 下拉到地TP4056 的 BAT 引脚接电池正极PROG 引脚通过 2.4kΩ 电阻到地电池正极再经过背靠背 PMOS 接到负载端。电池保护板放在电池组和主板的电源输入之间相当于整个充放电回路都经过保护板。4.2 焊接、上电和基础功能验证焊接这类板子我的习惯是先焊电源路径相关的大件Type-C 母座、MOS 管、储能电容然后是 TP4056最后再贴小电阻电容。Type-C 母座脚距密建议用助焊剂刷一遍然后用烙铁加焊锡丝拖焊有条件的话用恒温焊台配合热风枪更容易控制。上电之前要先做几个检查。用万用表二极管档量 VBUS 到 GND 是否短路、BAT 到 GND 是否短路确认电池没插反。第一次上电不要直接插电池先只插充电器TP4056 的 CHRG 灯如果亮了说明 VBUS 路径和 CC 下拉基本正常。这时候测量 TP4056 的 VCC 引脚应该有 5VBAT 引脚因为还没接电池电压应该在 4.2V 附近芯片内部有到 BAT 的偏置这是正常的。然后接电池此时充电电流会被 PROG 电阻限制在 500mA 左右。用万用表串在电池正极回路里量电流实测通常在 460 到 520mA。如果电流明显偏大查 PROG 电阻焊错或短路如果电流为 0查 BAT 引脚虚焊。4.3 电源路径切换测试怎么测才算合格这一步是路径管理的验收环节。我是这样测的先把电池插上负载端接一个 100mA 恒流负载用示波器同时抓 VBUS 和负载端 VOUT。接着插上充电器观察 VOUT 是否平滑地从电池电压跳到 VBUS 电压中间不能有长时间掉电。再拔掉充电器观察 VOUT 是否快速回落到电池电压跌落幅度应在可接受范围内。实测结果插入时 VOUT 从 3.89V 跳到 4.92V全程约 2ms 内完成没有出现毛刺拔出时 VOUT 从 4.92V 掉到 3.84V跌落约 100mV恢复时间大约 30ms。如果换成一个没有 220µF 电容的负载拔出瞬间 VOUT 掉到 0V 再回升那就要检查 MOS 管栅极放电电阻是不是太大了导致切换时间过长。还有一个隐藏问题要测VBUS 断开但负载仍在工作的过程中电池电压低于 3.6V 时保护板会不会提前动作。我的保护板过放检测是 2.8V 左右所以只要路径切换及时负载不会把电池拉得太低。5. 高频问题排查与避坑实录5.1 4.2V电池只充到4.0V就“满”的排查清单这个问题我见过太多回了网上的答案也五花八门。根据我的经验从概率高到低排一下第一充电电流设置得太高导致截止电流也跟着高。TP4056 在恒压阶段逐渐调低电流如果 PROG 电阻选的充电电流是 1A截止电流大约 100mA如果电池容量小或者老化恒压阶段电流掉不到 100mA 以下芯片就会判定充满实际电压可能只有 4.0 到 4.1V。解决方法是把充电电流调小或者给电池多留一点恒压时间。第二BAT 引脚到电池之间电阻过大。前面说过线材细、连接器接触不良、PCB 走线太长都会造成额外压降。充电电流 500mA 时如果接触电阻有 0.4Ω压降就是 0.2V芯片测到 4.2V 时电池实际电压只有 4.0V 出头。测量时先用万用表直接量电池两端再用另一块表量芯片 BAT 引脚对比差值就能确认。第三输入电压不足。TP4056 内部是线性充电输入必须比电池电压高出一个最小压差约 0.3 到 0.5V才能正常工作。如果充电器经过长线或劣质线缆后到芯片 VCC 引脚只有 4.5V那它就没法把电池充到 4.2V只能停在 4.0 左右。在芯片 VCC 脚量电压最直接。第四负载并联在电池上。如果你的电路没有做路径管理负载一直在消耗电流电池即使充电最终电压也上不去。这种场景下不是芯片的问题是系统架构问题。先断开负载看看电池能否单独充到 4.2V就能确认。第五芯片本身精度或版本问题。TP4056 有 4.2V、4.35V 等版本如果你的型号是 4.35V 版本却以为它充到 4.2V 就满那自然对不上。另外芯片基准也有 ±1% 左右的偏差个别芯片充到 4.15V 就截止属于正常范围不用太焦虑。5.2 Type-C充电器插上没反应/充电电流极慢插上充电器TP4056 的 CHRG 灯不亮或者电流只有几十毫安这种情况大概率出在 CC 引脚上。先确认你用的是 C-C 线还是 A-C 线。如果是 C-C 线检查 CC1、CC2 到地是不是各有一个 5.1kΩ 电阻。如果电阻值偏差太大比如用了 10kΩ充电器会识别成一个老旧设备可能只给 500mA甚至不给电。如果你用 A-C 线那么 CC 引脚可能根本接触不到充电器侧识别靠的是 D/D- 短接所以 D/D- 那边要有处理。另一个被忽略的点是母座本身。Type-C 母座 16P 中有些引脚是 NC 或者外壳地焊接时容易连锡导致 CC 短路到地或者 VBUS 短路。不插线时用万用表量 VBUS 对 CC 的阻值正常应该是无穷大或者一个固定的高阻值如果接近 0说明焊桥了。5.3 芯片发烫、充电反复启停等异常处理TP4056 发烫先看散热和电流。1A 充电时功耗接近 1WSOP-8 封装如果在两层板上只有很小一块裸铜温度超过 100°C 是正常的。把充电电流降到 500mA或者加大芯片下方和旁边的铜箔面积。另外注意芯片底下不要铺太多孔洞会导致热阻增大。充电反复启停像是灯一闪一闪这个现象我在路径管理测试时也遇到过。原因是 VBUS 通电瞬间负载同时切到 VBUS输入电压被瞬间拉低TP4056 进入欠压保护然后 VBUS 恢复又启动充电形成振荡。解决办法是检查输入电容是否完整以及 VBUS 到芯片 VCC 的走线是否太细如果负载瞬时电流很大可以考虑在 VBUS 输入端加一个大一些的电解电容比如 100µF起到软启动和缓冲作用。5.4 高频问题速查表现象可能原因解决方向充电灯不亮CC1/CC2未接5.1kΩ下拉检查Type-C CC电阻充电灯不亮Type-C母座焊接短路量VBUS到CC、GND电阻充不满到4.2VBAT路径电阻过大缩短BAT走线换粗线充不满到4.2VPROG电流设置过大降低充电电流充不满到4.2V输入电压不足实测VCC引脚电压边充边用掉电负载直接并联电池增加电源路径管理芯片发烫线性充电功耗大降电流/加强散热充电反复启停VBUS输入瞬间拉低增加输入大电容电池电压充到4.35V用了4.35V版本芯片核对芯片型号6. 升级路线当TP4056满足不了你时6.1 换带路径管理的充电芯片如果下一版项目对“边充边用”的需求更重比如屏幕亮度高、模块瞬间电流大那我建议直接放弃 TP4056 加外部 MOS 这条路线换成自带 Power Path 的充电 SoC。像 HT3786D 这类芯片支持充放电同口内部集成路径管理外挂一个电感就能做开关充电发热比线性方案低很多效率普遍在 88% 到 93%。换芯片带来的另一个好处是不用再纠结 PROG 截止电流的问题很多开关充电芯片的充电参数可以通过设定电阻或者 I2C 配置截止电流和充电电流的分辨率更细电池能更充分地充满。代价是外围元件变多调试门槛也高一些。6.2 大容量电池与快充协议的适配TP4056 最大电流 1A给一颗 800mAh 以下的小电池充电没问题但如果你用的是 46120 这种大圆柱电池容量动辄 10Ah 以上1A 充电意味着要充十个小时体验就太差了。此时要么用更大电流的开关充电芯片比如支持 2A、3A 的要么上支持 PD 快充协议输入的方案让充电的输入电压从 5V 升到 9V 甚至 12V通过降压充电提高功率。这里要注意使用 PD 快充涉及协议的芯片交互Type-C 的 CC 引脚不再是简单下拉 5.1kΩ 就能搞定的需要挂一颗 PD 协议芯片或者集成 PD 功能的电源管理芯片。如果不懂 PD 协议层千万别直接拿一个 QC 充电器插到 TP4056 的电路上输入电压跳变到 9V 或 12V 时TP4056 大概率当场烧毁这个坑要记牢。最后补一句个人体会吧。这次做完之后我把手头另一块用 TP4056 模块的板子也改了走线。最深的感受不是某个参数多精妙而是“能充电”和“会充电”之间差了一个系统思维。如果你也在做锂电池相关的产品建议先画一张电源树把 VBUS、充电管理、电池、负载这四个节点谁先谁后、谁给谁供电画清楚再动手。省下来的调试时间绝对比你最初多花的那半小时要多得多。
返回列表