
这次分享的立创开源硬件实战项目——TP4056DW06单节锂电池充放电保护方案其实最开始只是我给自己一台DIY桌面风扇做电源板。做了两晚、打样一次、踩了三四个坑最后把工程和测试记录一起发到了立创开源硬件平台居然收到了不少“收藏、抄作业”的回复。说实话这个组合并不新鲜很多现成模块都能买到但真正看懂原理、自己画一遍PCB、亲手测一遍数据之后再拿来用跟“插上就用”是完全两种体验。这篇文章就围绕这个方案从选型思路、原理图参数计算、PCB布局、焊接测试到翻车排查完整复盘一遍。无论你是才开始玩锂电的硬件小白还是想给手头小项目做一个稳定电源的老手这套流程都值得参考。看完至少能搞明白三件事TP4056的充电电流怎么设、DW06与8205A是怎么实现保护的、以及模块“不能带负载、充不进电”这些怪病到底出在哪。1. 为什么选TP4056DW06这套组合1.1 它们分别解决什么问题这组芯片分工非常明确TP4056负责“充电”DW06负责“保护”两者一前一后把单节锂电池的日常管理闭环了。TP4056是一颗线性锂电池充电管理IC输入5V通过芯片内部线性调整给电池提供预充电、恒流充电、恒压充电和充电截止。它的截止电压典型值是4.2V精度在±1%左右对大多数3.7V锂离子电池、磷酸铁锂之外的常规锂电都适用。它最大能设置1A的充电电流SOP-8封装外围元器件极少大概只需要几个电阻电容和LED指示就能完整工作。DW06则是单节锂电池保护IC通常和一颗8205A双N沟道MOS管配合。它的作用是盯着电池电压和回路电流发现电池电压高于4.3V左右就切断充电回路防止过充电压低于2.4V左右就切断放电回路防止过放回路电流大到一定阈值就判断为过流或短路立刻关断MOS管保护电芯和负载。简单类比TP4056像一个带计量功能的加油机按设定流速给电池“加油”到4.2V就停DW06像一个安全闸门平时开着一旦电压或电流出了边界它直接把通道锁死防止电池爆雷或者报废。1.2 现成模块那么多为什么还要自己画这可能是很多人第一个疑问淘宝上一两块钱就能买到TP4056充电模块带保护的版本也就两三块钱何必画板子、打样、自己焊我的理由有三点。第一现成模块的质量差异极大。用过的人应该深有体会同样写“TP4056带保护”不同店铺发来的板子细节完全不一样。有的板子用的兼容芯片而非原厂芯片有的PROG电阻阻值被换掉导致实际充电电流根本不是标的1A还有的根本没有安装DW06和8205A只是“看起来带保护”。我自己拆过几个模块发现其中一块板子的8205A位置居然是一个空焊盘等于完全靠电池自身硬扛。第二现成模块的尺寸、接口、固定孔往往不合适。你做一个产品原型可能希望充电口在左边、LED在前面、电池焊盘在右边还要两个M2固定孔来锁在外壳里。现成模块很难满足这些定制需求。第三只有自己画一遍才能真正理解电路。这是我最大的体会。用模块时出了问题只能“换一个试试”看懂原理图之后问题就能定位到具体引脚和元件。比如充电电流不对你会先想到检查PROG电阻带负载就断电你会先想到是保护IC过流阈值而不是怀疑电池坏了。自己做板子的成本其实也不高5片板子在嘉立创打样一般不到20元元件从立创商城配齐一套也就几块钱。关键是从“用户”变成了“设计者”。1.3 为什么选择立创开源硬件平台来复刻既然要自己画知识储备不够怎么办最好的办法就是站在别人的肩膀上。立创开源硬件平台上有大量TP4056DW06的开源工程很多工程不但给了原理图和PCB还附带了BOM和测试说明。我第一次画这个方案就是在平台上搜到一份带Type-C接口的TP4056DW06工程直接用立创EDA在线打开另存为副本后开始改。这个流程最大的好处是不需要本地安装庞大的EDA软件浏览器打开就能看原理图、看PCB、改封装。改完之后可以直接导出BOM去立创商城一键配单PCB文件也能直接下单打样整个链路是通的。而且开源工程经过很多人的检验原理图细节、封装库基本都靠谱比从零开始画少踩很多坑。2. 原理图拆解与关键参数计算2.1 TP4056的充电过程从预充到转灯TP4056的充电逻辑一共四个阶段理解了它你就明白为什么模块有时候“灯不亮”“充不满”。当电池电压很低时低于2.9V左右芯片先进入预充模式以设定充电电流的1/10进行小电流充电比如你设定1A充电预充阶段就只有100mA。这个阶段可以理解为先救活深度放电的电池避免大电流冲击损坏电芯。当电池电压升到2.9V以上芯片转入恒流充电也就是以你设定的电流比如1A恒定电流充电。此时电池电压缓慢上升一直升到4.2V。到了4.2V之后进入恒压充电阶段。芯片把电压钉在4.2V不变电流开始自然下降比如从1A降到800mA、500mA、300mA……当电流降到设定值的1/10时也就是100mA左右芯片判定电池已经充满停止充电STDBY指示灯点亮。所以“转灯”的本质不是电压到4.2V而是电流降到阈值。这里有个知识点恒压阶段其实是充电时间的大头。很多人以为恒流阶段占最多时间实际上越接近满电电池能吸收的电流越小恒压阶段往往要持续很久充电总时间远不止“容量÷电流”这么简单。2.2 PROG电阻怎么选从公式到实际计算TP4056的充电电流由PROG引脚接地的电阻决定这是整个设计里最需要动手算的地方。芯片内部会把PROG引脚电压拉到一个参考电压大概1V左右同时内部有一个1200倍的电流镜也就是流过PROG电阻的电流乘以1200就是电池充电电流。公式可以简化成I_BAT 1200 / R_PROG其中I_BAT单位是mAR_PROG单位是kΩ。举个例子想要1A充电电流R_PROG 1200 / 1000mA 1.2kΩ所以市面上很多TP4056模块默认用1.2kΩ电阻标称“1A充电”原因就在这里。反过来如果你看到某模块的PROG电阻是10kΩ那它的实际充电电流只有I_BAT 1200 / 10 120mA根本不是商家标称的“1A模块”。我在开源平台上见过好几个工程把PROG电阻选错导致实际充电电流只有几百毫安这种问题从原理图评审阶段就该发现。常见档位的PROG电阻选择和对应的充电电流我整理成一张表目标充电电流PROG电阻阻值适用场景举例1A1.2kΩ2000mAh以上电池快充优先0.6A2kΩ1200~2000mAh电池发热适中0.36A3.3kΩ小容量蓝牙耳机、传感器节点0.12A10kΩ微型电池、长期涓流维护选充电电流有个经验规则不要超过电池容量的1C一般建议0.5C左右。比如2000mAh的18650电池充电电流选1A以内比较舒服。充电时间估算公式是T ≈ 1.3 × C / I2000mAh电池用600mA充电理论时间大概是T ≈ 1.3 × 2000 / 600 ≈ 4.3小时想充得快就调大电流但TP4056是线性充电电流越大发热越严重后面会专门讲散热问题。2.3 DW068205A的保护逻辑两层防线是如何配合的先纠正一个常见误区TP4056本身没有过充保护、过放保护功能。它只是一个充电管理IC4.2V截止是它的充电策略但这不等于它能在电池异常时断开回路。真正的安全防线是靠DW06加8205A这套保护电路实现的。8205A内部是两个N沟道MOS管源极S1和S2相连两个漏极D1、D2分别接在电池负极和系统负极之间相当于在电池负极回路上串联了两个开关。DW06则实时采样电池电压和电流通过OD、OC两个引脚控制这两个MOS管的导通与关断。正常工作时DW06的OD和OC都输出高电平两个MOS管都导通电池可以正常充电和放电。发生过充时DW06检测到电池电压超过约4.3V会让OC引脚变低电平关断负责充电回路的那个MOS管外部电源就充不进来了。等电压回落到4.1V左右保护自动解除。同样过放时电池电压低于约2.4VOD引脚变低电平关断负责放电回路的MOS管电池不再对外输出防止电芯被过放损坏。过流和短路保护则通过CS引脚检测当8205A上的压降超过约150mV时判断回路电流过大直接关断输出。如果8205A导通内阻按50mΩ算这个过流点大约是3A。不同批次芯片会有差别但逻辑一致。这里有两层防线要分清楚TP4056负责把充电过程控制在4.2V截止是日常管理DW06负责在异常情况下强行切断回路是兜底。两者不是替代关系而是协作关系。2.4 外围元件电容、LED、TEMP、防反接原理图里除了两颗IC剩下的外围元件不多但每一个都有讲究。输入和输出电容一般用10μF陶瓷电容。TP4056推荐在VCC到GND、BAT到GND之间各放一个10μF电容用来滤波和稳定环路。选型时要注意电容材质建议用X5R或X7R不要用Y5VY5V容值随温度和电压变化太大测试中容易出各种稀奇古怪的问题。在电池侧的电容也不能盲目加大如果电容量太大刚接入电池的瞬间会产生很大的浪涌电流可能让DW06误判为过流导致模块插上电池没输出。我实测过BAT侧放47μF电容时偶尔出现上电瞬间保护的情况换成10μF后就完全正常。LED指示部分TP4056的CHRG和STDBY引脚是开漏输出所以LED的正确接法是从VCC经过限流电阻再到引脚引脚为低电平时LED点亮。限流电阻1kΩ左右即可5V供电下LED电流大约3~5mA亮度足够又不会太刺眼。TEMP引脚很多人容易忽略。如果不用电池温度检测这个引脚应该直接接地而不是悬空。TP4056会检测TEMP引脚电压当它低于某个阈值或高于某个阈值时会暂停充电。悬空状态容易受到干扰造成莫名其妙的“充一会儿停一会儿”。如果想做温度保护在TEMP引脚和GND之间接一个10kΩ NTC热敏电阻并把10kΩ电阻接到VCC就可以实现电池温度超范围自动暂停充电。防反接是另一个容易踩的坑。TP4056本身没有输入防反接功能USB电源接反了可能直接烧芯片。最简单的方案是输入端串一个肖特基二极管比如SS14但会有约0.3V压降对输入电压有点影响。更好的方案是用PMOS做防反接电路或者干脆靠PCB结构和接插件方向防呆。自己做板子时至少要保证VCC端有足够的滤波电容和TVS二极管能在一定程度上吸收热插拔尖峰。3. PCB布局与立创EDA复刻实操3.1 在线打开开源工程并另存为副本在立创开源硬件平台搜索“TP4056 DW06”能找到不少现成工程。我的建议是筛选“原理图和PCB都公开”的项目最好有BOM和描述信息仔细看一下简介里的参数确认它是不是带完整保护方案然后把工程“在编辑器中打开”。打开后不要直接在原工程上改先另存为副本。这一步很关键因为你可能改错另存之后折腾坏了还能回到原始版本对比。立创EDA支持在线协作和版本管理每改一步都会留记录对新手很友好。如果工程是用标准版打开但提示有“专业版功能”可以切换到专业版打开。这类TP4056小项目一般用标准版就足够兼容问题极少。3.2 元件选型、替换与BOM整理复制完工程后先核对原理图里的每个元件是否都有库存和封装。有些开源工程用了少见的封装或者已经停产的料号最好替换成立创商城有货的标准封装。以我复刻的版本为例BOM主要包括位号元件封装建议备注U1TP4056SOP-8充电管理注意底部散热焊盘U2DW06SOT-23-6保护ICQ18205ATSSOP-8双N沟道MOSC1 C210μF 25V陶瓷电容0805X5R/X7RR11.2kΩ或按需0603/0805PROG电阻R2 R31kΩ0603/0805LED限流D1 D2红色LED、绿色LED0805充电动/充满J1Type-C座/焊盘按外壳选输入接口J2电池焊盘/B2B座按需电池接口在立创EDA里可以一键生成BOM表导出Excel后去立创商城做“极速BOM配单”大部分元件都能一键匹配。需要注意的是DW06和8205A在商城里有很多品牌和丝印差异按封装和型号选就行不一定要买同一个品牌但关键参数别改。3.3 布局走线散热焊盘、电流路径、铺铜这部分是画PCB时最容易出问题的地方也是普通模块看不到的细节。首先是TP4056的散热。线性充电芯片的功耗公式是P (VIN - VBAT) × I_BAT比如5V输入、3.5V电池电压、1A充电芯片上的功耗就是P (5 - 3.5) × 1 1.5WSOP-8封装在1.5W功耗下如果散热不好芯片温度会轻松超过100℃触发内部过热保护充电电流被强行降低感觉就是“充得很慢”。所以PCB布局必须保证芯片底部散热焊盘大面积铺铜并且通过过孔连接到背面铜皮。我习惯在芯片底部放4~6个0.3mm过孔把热量导到背面再结合正面大面积铜皮一起散热。其次是电流路径。VCC、BAT以及电池负极到8205A之间的走线尽量加宽1A电流下至少1.5mm~2mm能铺铜就走铜皮。如果走线太细不仅压降大还可能局部发热。GND层尽量保持完整不要被信号线切断。第三是DW06的采样走线。8205A的导通电阻很小DW06是从CS引脚检测电流的采样线应该直接从8205A的源极和P-节点引出短而粗尽量不要和功率走线混在一起。如果采样线和功率走线绕了一大圈会把寄生电阻也采进去导致过流保护点提前触发负载稍微一大就断电。另外电容摆放要靠近芯片引脚输入电容靠近VCC和GND输出电容靠近BAT和GND。这个细节能减少EMI和纹波对充电稳定性有明显帮助。3.4 下单打样时的参数选择板子画完后导出Gerber文件去嘉立创下单。默认参数基本够用我一般选2层板、板厚1.6mm、铜厚1oz、表面处理选喷锡如果对抗氧化要求高可以用沉金但成本会高一点。数量选5片或10片几块钱到二十块钱以内。如果是纯手焊样板不需要开钢网也不用选SMT贴片服务。等验证通过、要批量做几十片时再考虑SMT会有更好的性价比。下单时还有个小细节如果板子有需要定位的外壳结构记得自己加好固定孔PCB外形选“按设计文件”不要随意改。4. 焊接装配与实测数据4.1 焊接顺序与工具清单焊接这块主要工具是恒温烙铁、0.5mm左右焊锡丝、助焊剂、镊子、放大镜或手机微距镜头。有条件可以备一个热风枪但TP4056、DW06、8205A这些引脚间距都不算特别密普通烙铁完全能搞定。焊接顺序我自己固定这样先把小封装电阻电容焊好再焊IC最后焊LED、排针、Type-C座和电池线。芯片先焊的好处是如果引脚连锡可以趁周围元件少时及时处理电容电阻先焊则是为了避免IC先焊好后小元件不好下烙铁。TP4056底部有散热焊盘这个一定要处理好。我的做法是在PCB焊盘上先均匀上一层薄锡再把芯片放上去用烙铁轻轻压住芯片让底部焊盘和PCB焊盘融合然后再焊四周引脚。如果担心底部虚焊还可以用热风枪280℃左右吹一圈辅助底部焊料流动。底部焊盘虚焊的后果很隐蔽一开始能充电电流一上来芯片温度迅速升高然后降流你查半天都不会想到是散热焊盘没焊好。焊完之后先别急着上电。用万用表二极管档测一下VCC和GND之间有没有短路再测电池正负极焊盘有没有短路。这个检查步骤能避免上电瞬间烧芯片。4.2 上电测试流程从空载到带载测试工具我用了一台数控可调电源、一台电子负载、两块万用表再加18650电池和充电线。流程分四步。第一步不接电池。给板子输入5V电压测量VCC对GND电压是否为5V再测TP4056的BAT引脚正常应该是0V左右。如果BAT引脚也出现5V说明芯片内部已经击穿短路需要更换。第二步接上电池。正负极不要接反接好后观察CHRG指示灯是否点亮STDBY是否熄灭。如果STDBY直接亮说明电池已经充满或者充电使能没拉高如果两个灯都不亮先查输入和使能引脚。第三步测量充电电流。测量方式是在电池正极回路中串联万用表电流档或者在5V输入回路串联电流表。注意不要把电流表直接并联在电池两端那等于短路。我同时会在BAT和GND之间并联一个电压表实时看电池电压变化。第四步测放电和保护功能。用电子负载或者实际负载接在P和P-之间看模块能否正常供电再把电池放电到2.5V左右看P和P-是否还有输出。注意深放电测试对电池有损伤别拿好电池反复折腾用一节旧电池来测最合适。4.3 实测数据充电曲线、转灯点、待机功耗我复刻的板子PROG电阻选的是3.3kΩ目标充电电流约360mA电池是一节标称2000mAh的18650起始电压3.45V输入5.08V室温25℃。记录的数据大致如下时间点电池电压充电电流LED状态刚开始3.45V0.35ACHRG亮30分钟3.92V0.33ACHRG亮60分钟4.08V0.21ACHRG亮75分钟4.16V0.10ACHRG亮82分钟4.18V0.05ASTDBY亮从数据能明显看到恒流阶段电流基本稳定在350mA左右接近设定值到4.1V以后电流开始快速下降这是恒压阶段的典型表现。最终转灯时电流约50mA和设定值360mA的1/10大致吻合转灯后电池电压稳定在4.18V符合TP4056的±1%精度。我还测了待机功耗。断开输入只把电池接在B/B-上用万用表200μA档串联在电池正极测得静态电流约6.8μA。这个数值对几周不用的设备影响不大但如果要长期存放还是建议把电池断开毕竟时间一长微小的电流也会把电池耗到过放。4.4 带保护与不带保护模块的区分与选择这里必须说清楚市面上“TP4056模块”分为带保护和不带保护两种外观差别很小但使用场景完全不同。不带保护的模块板上只有TP4056、电阻电容和LED没有DW06也没有8205A对外只有B/B-。这种模块只能负责充电但电池过放、过流、短路都管不了。如果你用的是自带保护板的18650电池比如很多手电用的平头带保护电池那么用这种简化模块是可以的如果用的是裸电芯就一定要选带保护版本。带保护的模块板上有DW06和8205A对外是P/P-从P和P-之间取电才具备过放、过流保护功能。有一点很多人会忽略如果你把电池接在B/B-上但负载接在P/P-上那么负载被过放保护切断后电池的P和P-是没电压的但你测B/B-依然有电池电压。这个现象正常不代表板子坏了。亲手焊板和用模块的区别在这种细节上体现得最充分只有你自己画过板子才知道B/B-和P/P-这两组焊盘的意义也就不容易在接线时接错。5. 踩坑记录与问题排查心得5.1 常见问题速查表把这阵子做这套方案遇到的问题整理成一张速查表供大家直接对照排查现象可能原因排查与处理插上5V两个灯都不亮输入没到位、接线反了、TP4056损坏万用表测VCC-GND电压检查USB座方向和线材换芯片插上电池后P P-无输出电池电压低于过放保护值、DW06锁存先用充电器充电唤醒测量电池本身电压充电电流特别小PROG电阻虚焊、USB线压降大、芯片过热降流检查R_PROG阻值换短线供电加强散热带负载一启动就断电启动电流超过8205A过流保护阈值负载并联大电容减小启动电流换更大过流方案的板子STDBY灯一直亮电池已满、充电使能未拉高、PROG电阻不对换低电量电池测试检查CE引脚是否接VCC转灯后过一会儿又亮CHRG4.2V电压回落芯片重新检测到未充满正常现象如果频繁检查转灯电流设定是否过低电池侧待机电流偏大电池端电容漏电、Y5V电容换X5R/X7R电容排除板面脏污5.2 几个典型翻车案例复盘案例一充电电流明明设了600mA实测只有150mA。一开始我怀疑PROG电阻坏了用万用表量阻值2kΩ完全正常。后来发现原因在USB线那根线太细太长空载量有5V一带负载电压直接跌到4.5V以下TP4056输入电压不足电流被强行压低。解决办法很简单把USB线换成20cm的短铜线或者直接焊线供电电流立刻恢复到580mA左右。这个案例提醒我们很多人排查充电问题习惯盯着芯片和电阻却忽略了供电线路的压降。案例二风扇负载一启动模块就断电。最开始以为8205A坏了后来用示波器看CS引脚的波形发现启动瞬间电压尖峰超过150mV触发了过流保护。8205A的过流点约3A但电机启动瞬间电流可能冲到5A以上。解决办法是在输出端并联了一颗470μF电解电容吸收启动浪涌之后就没有误触发了。如果你的负载是电机、加热丝这类启动电流大的设备建议提前考虑这个因素或者在电路里加软启动。案例三上电瞬间烧掉两片TP4056。第一次烧的时候我没注意第二次仔细检查才发现是Type-C转接板引脚定义搞错了把VBUS和GND接反了。TP4056没有输入防反接能力接反了基本必烧。后面我在VCC输入端并了一个5.6V TVS二极管同时加了一个PMOS防反接电路即便以后有人误插反电源也不会直接炸芯片。对DIY来说最简单可靠的方案还是防呆把Type-C座子的方向、PCB丝印都标清楚接插件选防反插型。案例四待机电流偏大测出来有80μA。排查了很久最后发现是我在电池侧放了一颗Y5V材质的47μF陶瓷电容Y5V电容漏电流比较大直接把待机电流拉高了。换回X5R材质的10μF电容后待机电流降到了6.8μA。这类问题在设计验证阶段很容易被忽略因为很多人都不会特意测待机功耗但做电池类产品时待机电流直接关系到设备能放多久。5.3 关于这套方案我最后想说的TP4056DW06这套组合最大的价值不是性能多强悍而是稳定、简单、资料多。作为入门锂电管理的第一个方案它几乎没有学习门槛作为产品原型的电源核心它又足够可靠。我在这套方案上花的时间换来的是对充电管理、保护IC工作机制的完整理解——后来再看其他充电芯片比如IP5306、SW6124虽然集成度更高但基本原理和设计思路都是相通的。如果你也想自己做一块我的建议很直接不要一上来就画自己独创的板子先在立创开源硬件平台找一份评分高、文档全的工程复刻一次把原理图看懂把参数算明白再根据需求改成自己的版本。画完、焊完、测完你获得的不仅是几块能用的板子更是一条完整的硬件设计思路。这套流程走通之后你会发现再做其他电源类小项目心里立刻有底了。