1. 为什么偏偏是18650先搞清热从哪来、往哪走18650这个名字资历老一点的电池工程师闭着眼都知道——直径18毫米、长度65毫米的圆柱电芯。从特斯拉早期Model S用的松下NCR18650B到如今电动工具、储能模组、笔记本电池乃至各类DIY项目这颗小圆柱几乎撑起了消费级锂电池的半壁江山。我最早接触它是在给一套户外储能设备做热仿真结果第一版模型预测的温升和实测差了快5度从那以后我就老老实实把18650的热效应从头捋了一遍。这篇文章就是我那段时间的实战记录送给准备做电池热管理、写华为杯或研究生数学建模竞赛相关题目、或者刚入门想给18650建温度场模型的同学。先说一个常被忽视的事实18650的热行为很大程度上被它的“身材”决定了。我们可以把它想象成一根卷起来的瑞士卷——正极、负极、隔膜三层材料叠在一起像卷寿司一样卷成圆柱。这种卷绕式结构决定了热量在径向从圆心到外壳和轴向从正极到负极的传输能力完全不一样。因为每一圈里都隔着导热系数很低的隔膜和电极涂层径向的等效导热系数往往只有0.2到0.5 W/(m·K)而轴向因为集流体是连续的铝箔和铜箔导热系数能做到30到50 W/(m·K)甚至更高。也就是说热量沿着轴向“跑”得比径向快十倍以上。这一点在做三维仿真时如果不区分处理误差会非常难看。再来说生热。锂离子电池工作时的产热来源不是单一一个主流观点把它分成四部分反应热锂离子嵌入和脱出正负极材料时伴随的熵变这部分既可以是吸热也可以是放热跟电池的SOC荷电状态和温度强相关通常用熵热系数 ∂U/∂T 来描述。焦耳热也叫欧姆热电流流过电极材料、电解液、隔膜、极耳、连接件时产生的电阻损耗表达式是 I²R。极化热电化学反应过程中锂离子浓度在电极表面和体相之间出现差异或者说反应势垒需要额外电压来克服这部分能量同样以热的形式耗散掉。工程上通常把焦耳热和极化热合并处理用“直流内阻测出来的总热功率”来等效。副反应热SEI膜的生长、电解液分解、析锂等副反应放热。正常工况下占比很小但在过充、高温、针刺或者热失控场景里这部分会急剧放大成为安全建模的关键。以前我看过不少刚入门的同学写热效应模型拿一个常数生热率往里喂算出来的温度曲线当然是平的。真实情况是内阻随SOC和温度变化生热率随倍率和SOC变化甚至放电末端因为浓差极化加剧生热率会在最后10%SOC时明显上翘。这也是为什么我一直强调“先花一周理解发热机理再花一天建模型”——方向错了后面全是白算。散热路径方面18650的产热主要靠外壳向环境传递少数热量通过正负极极柱导出。对流换热系数h在自然对流时大约5到10 W/(m²·K)强制风冷时20到100液冷或者接触冷板则可能做到500以上。辐射换热在自然对流场景下不能忽略尤其是电池表面温度超过60℃以后黑体辐射那部分能占到总散热量的15%到20%。这些数值后面建模都会用到。2. 三条建模路线怎么选集总参数、简化分布模型还是三维CFD搞清热的来龙去脉之后下一步就是选建模路线。很多文章一上来就推荐上COMSOL、Fluent做三维电化学-热耦合听起来高大上但实际要看你的目的和手里的资源。我自己总结下来18650热效应建模有三条主流路线各有各的适用场景。2.1 0维集总参数模型集总参数模型Lumped Parameter Model把整个电池看成一个温度均匀的质点不考虑内部温度梯度只关注“平均温度随时间和电流怎么变化”。这种模型的数学形式就是一个能量守恒微分方程m·Cp·(dT/dt) Qgen(t) - h·A·(T - Tamb) - ε·σ·A·(T⁴ - Tamb⁴)其中m是电池质量Cp是比热容Qgen是总生热功率h是对流换热系数A是散热面积ε是表面发射率σ是斯特藩-玻尔兹曼常数。集总模型最适用的情况是电池尺寸小、导热系数高、外加热流量变化慢、且满足毕渥数Bi h·L/λ 0.1。18650这种尺寸在自然对流和风冷工况下Bi数基本都在0.01到0.05之间整体上是够得着集总参数的边界的。它的核心价值在于快速获得电池平均温度的动态响应用来做系统级热管理的联合仿真、电池SOC估算里的温度修正、快充策略的初步预算都非常实用。缺点是显而易见的计算不出电池内部的温度分布特别是“中心最热、外壳稍凉”这种温度梯度现象集总模型完全没法表达。但如果你的工程目标是评估整包电池的冷却策略每一颗电芯内部的5到8度温差并不是主要矛盾集总模型就完全够用了。2.2 一维径向/轴向简化模型18650的卷芯可以近似成多层圆柱结构如果把每一层都展开成轴对称的回转体热传导方程就退化成极坐标下的二维问题。工程上经常做成“1D径向1D轴向”的两步走甚至只做1D径向把壳体温度作为边界条件用来求中心最高温度。其中的关键是把卷芯的等效径向导热系数 λ_r 和等效轴向导热系数 λ_z 当成各向异性参数来处理。经验值方面径向0.2到0.5 W/(m·K)轴向30到50 W/(m·K)。这两种数量级的差异导致电池内部在持续大电流放电时中心会比外壳高5到15℃这是一个非常经典的现象也是热失控预警系统里“预测内部温度”的物理基础。这种模型精度比集总模型高计算量又比三维CFD小一个量级适合做电池单体级别的热特性分析以及参数辨识。我自己做18650内短路的模型验证时就是用的径向1D模型分15个网格节点配合卡尔曼滤波做了虚拟温度传感器效果相当不错。2.3 三维电化学-热耦合模型三维模型是精度天花板也是时间黑洞。几何上把卷芯、外壳、极耳、绝缘环全部画出来网格动辄几十万到几百万求解器里还要耦合电化学的Nernst-Planck方程、Butler-Volmer方程和能量守恒方程。这种模型一般留给两个场景一是研究热失控和针刺这类极端工况需要准确知道局部热点位置二是做模组级液冷仿真需要解析每颗电芯外壳的温度梯度来评估冷却效果。对于绝大多数数学建模竞赛题目比如华为杯里出现的电池状态预测类问题三维电化学-热耦合模型往往不是最优选择。原因有两个第一已知数据通常只有表面温度和充放电曲线没有内部结构参数和电化学参数三维模型会面临严重的参数不确定性问题第二这种模型单次求解动辄几个小时而竞赛和实际工程里经常需要迭代上百次来做参数标定或者工况寻优时间上完全撑不住。那我平时怎么选表格说话模型类型计算成本温度场精度内部热点预测适用场景0维集总参数极低毫秒级平均温度误差约5-10℃不支持系统级热管理、SOC修正、控制策略1D/2D径向-轴向低秒级径向分布误差约2-3℃支持单体设计、虚拟温度传感、热模型标定3D CFD/电化学-热耦合高小时级全场分布误差约1℃支持结构优化、热失控研究、模组液冷设计一句话总结建模之前先问自己“算出来的温度要给谁用”——给控制算法用集总模型就够了给安全预警用径向一维是底线给结构设计和热失控分析用再上三维。别一上来就把自己压死在三维多物理场里面。3. 模型素材库热物性参数和内阻数据从哪来热效应模型的准确度七分在参数三分在模型框架。模型框架再好参数抄错一本书结果照样没法看。18650热模型必需的参数分成三个类别热物性参数、电学参数、边界换热参数。3.1 热物性参数密度、比热容、导热系数18650电芯由外壳钢壳或铝壳、卷芯电极隔膜电解液、极耳、绝缘垫片等组成。整体密度一般在2600到2900 kg/m³整颗电池的等效比热容大约在800到1100 J/(kg·K)。这里注意卷芯内部由于电解液浸润比热容会比干态材料高不少所以有条件的话尽量用成品的电芯做量热而不是拿材料手册里的干燥数值拼。导热系数是最难搞的参数因为它是各向异性的。常见做法有三种文献值参考同类型电芯发表的测试结果径向0.2到0.5 W/(m·K)轴向30到50 W/(m·K)。这个方法上手最快但同一型号不同厂家的电芯差异不小。瞬态平面热源法用Hot Disk或者类似仪器直接测卷芯的导热系数适合拆解电芯来做研究但拆解本身会破坏电解液分布测出来的数值有争议。温升反推法通过测量电池在已知生热功率下的表面温升曲线反过来拟合等效导热系数。这是工程上最常用也最可靠的办法后面第6节会细说。3.2 电学参数内阻的SOC和温度依赖电学参数核心是“直流内阻Rdc与SOC、温度、充放电方向的关系”。18650的内阻曲线有个很典型的特征低温时比如0到10℃内阻急剧上升尤其是放电方向可能从常温的几十毫欧飙到上百毫欧随着SOC降低到20%以下内阻也会显著增大。如果不把Rdc写成SOC和温度的函数而只用一个常数那你算出来的生热率在放电末段会严重偏低。获取内阻曲线的标准方法是HPPC混合脉冲功率特性测试。做法是把电池放在恒温箱里在特定SOC点先给一个10秒的放电脉冲比如1C静置40秒再给一个10秒的充电脉冲然后用脉冲期间的电压降除以电流脉冲幅值就可以得到该SOC点的放电内阻和充电内阻。SOC从100%到0%每10%取一个点温度从-20℃到50℃每10℃取一个点出来的就是一个完整的内阻MAP表。这道工序特别费时间但回报也大。我印象很深的一次经历是用常温内阻MAP算出来某个2C放电工况的温升是18℃实测22℃差异的4℃里头一大半来自放电末期内阻上翘没被模型捕捉到。后来把10%SOC附近的几个点补进MAP之后误差直接缩小到1℃以内。3.3 边界换热参数对流系数h的取值和温升测试标定边界换热参数是整个热模型中不确定性最大的部分。自然对流的h在5到10 W/(m²·K)但注意这是“电池表面到环境空气”的等效值包含了辐射贡献强制风冷的话h受风速影响明显大致跟风速的0.6到0.8次方成正比2 m/s风大约能到25 W/(m²·K)5 m/s能到45左右。如果模型里要单独考虑辐射那表面发射率ε按阳极氧化处理后的铝壳取0.8钢壳喷漆后也差不多0.8光滑亮面钢壳会低到0.2到0.3。辐射项在裸奔、无风冷、电池高温的场景里特别重要别因为“工程上一般省略辐射”就随手删掉。最靠谱的h获取方式还是通过实验温升曲线反向标定。后面第5节的实操步骤里我会给出完整的标定思路。4. 手把手搭建集总热模型公式、参数拟合和误差校验现在进入正题用Python搭一个18650集总热模型。我假设你手里有电池的放电电压、电流、外壳温度和温度箱设置这些都是最容易获取的实验数据。4.1 核心方程与模型结构模型的状态变量是电池平均温度 T(t)输入是电流 I(t)。生热功率采用“总内阻法”把反应热、极化热和欧姆热合并成一个等效生热功率Qgen(t) I(t)²·Rdc(SOC, T) - I(t)·T·dU/dT(SOC)右边第二项是熵变产热可逆热SOC低或者温度高的时候熵热系数可能为正也可能为负充电时有时候这一项是负的意味着电池在某个SOC区间充电时反而轻微吸热。这个现象放电时不太明显但快充工况下不能忽略。散热功率分为对流和辐射Qdiss h·A·(T - Tamb) ε·σ·A·(T⁴ - Tamb⁴)电池质量m和表面积A分别是典型18650尺寸质量45到48g表面积约43.9 cm²π·D·L 2·π·D²/4数值约0.00439 m²。质量用天平实测最好别用标称值不同厂家的壳壁厚度差不少能差出2到3g。最后模型就是(m·Cp)·dT/dt Qgen - Qdiss用Python的SciPy做个数值积分就能跑。4.2 快速实现代码import numpy as np from scipy.integrate import solve_ivp import matplotlib.pyplot as plt # 电池基本参数 m 0.046 # 质量kg Cp 900 # 比热容J/(kg·K) A 0.00439 # 散热面积m^2 h 8.0 # 自然对流换热系数W/(m^2·K) eps 0.8 # 表面发射率 sigma 5.67e-8 # 斯特藩-玻尔兹曼常数W/(m^2·K^4) Tamb 25.0 # 环境温度℃ # 内阻MAP的简化表达Rdc(SOC, Temp)这里用二维修正的形式 def get_Rdc(soc, temp): # 基准内阻 0.035 ΩSOC修正项和温度修正项 r_base 0.035 r_soc 0.008 * np.exp(-8.0 * (soc - 0.1)) # SOC低时内阻增大 r_temp 0.015 * np.exp(-0.03 * (temp - 25.0)) # 低温内阻增大 return r_base r_soc r_temp # 熵热系数近似单位 V/KSOC0.15和0.85附近有明显变化 def get_dUdT(soc): return 1e-4 * np.sin((soc - 0.5) * np.pi * 2) * 100 20e-6 def odefun(t, y, I_val, soc_rate): T y[0] soc 1.0 - soc_rate * t # 简化SOC线性下降 R get_Rdc(max(soc, 0.01), T) dUdT get_dUdT(max(soc, 0.01)) Qgen I_val**2 * R - I_val * (T 273.15) * dUdT Qconv h * A * (T - Tamb) Qrad eps * sigma * A * ((T 273.15)**4 - (Tamb 273.15)**4) dTdt (Qgen - Qconv - Qrad) / (m * Cp) return [dTdt] # 工况1C放电电流2.5A跑到3.0V截止约1小时 I_val 2.5 soc_rate I_val / 2.5 / 3600 t_end 3600 sol solve_ivp(odefun, [0, t_end], [25.0], args(I_val, soc_rate), methodRK45, max_step1.0, rtol1e-6, atol1e-8) plt.plot(sol.t / 60, sol.y[0], labelmodel temperature) plt.xlabel(time (min)) plt.ylabel(temperature (degC)) plt.legend() plt.grid(True) plt.show()这段代码把模型、参数、求解一次性串起来了跑完大概只需要一两秒。实际应用时内阻MAP不能像我这样随便写一个公式得用实验数据插值。4.3 标定h和Cp的反向思路初始h和Cp都来自估算最后的温升曲线跟实测肯定对不齐。解决办法是用最小二乘拟合或者遗传算法把h和Cp当作待辨识参数让模型预测的T(t)和实测外壳温度的误差最小。目标函数可以写成J Σ(T_model(tk) - T_exp(tk))²这个优化问题用scipy.optimize.least_squares就能解通常几个小时内就能收敛。标定过程有个容易犯的错误只调h不调Cp。这两个参数在温度曲线上的表现完全不同——Cp控制的是整个温升的“斜率惯性”h控制的是最终稳态温升的高度。如果一上来就同时调两个容易陷入过拟合。我的建议是先固定Cp用文献合理值只调h把稳态温升对齐再回来调Cp修正过渡段斜率。这样得到的参数物理意义才说得通。5. 三维模型实操要点卷芯等效处理、网格和边界条件集总模型能解决“整颗电池平均温度多少”但解决不了“电池中心哪里最热点到了多少度、外壳哪里温差最大”。这两个问题对Pack液冷设计和热失控预警非常关键。下面是我做三维热仿真时总结的几条实操要点。5.1 几何建模与卷芯等效很多初学者把18650三维模型画成“一根实心圆柱两层薄壳”然后给一个各向同性导热系数。这种做法我强烈不建议——它等于把前面第1节说的各向异性全丢了。正确做法是至少分三个区域卷芯区圆柱中心半径约8.8mm等效各向异性导热系数径向0.3 W/(m·K)轴向40 W/(m·K)比热容约950 J/(kg·K)密度约2700 kg/m³。外壳区厚度0.25到0.3mm的钢壳导热系数16 W/(m·K)不锈钢或200 W/(m·K)铝壳比热容500 J/(kg·K)。中心轴区有些18650是空心的有些带有卷针残留对空心结构径向等效导热系数还得再低一点因为有空气层。还有一种更高阶的等效方式是把卷芯拆成“卷绕层集流体层隔膜层”的周期性结构用均匀化方法算出等效参数。这种方式能在不画几十万层几何的情况下保留微观结构对径向导热的真实影响是做学术研究的首选但工程上有点过度。5.2 网格划分与求解设置网格方面圆柱对称结构优先用扫掠网格Sweep mesh生成六面体。径向网格需要加密因为径向温度梯度大如果径向只有3个网格峰值温度会被严重低估。我实测过径向至少10到15层网格才能看清从中心到外壳的温度变化。轴向网格可以宽松一点轴向温度梯度本来就小但靠近正负极极耳的地方需要局部加密极耳是电流汇集点局部生热密度很高。求解器设置上如果做的是稳态热仿真直接用共轭梯度法收敛标准设到1e-6。瞬态仿真则需要注意时间步长的选择太大会滤掉快速生热变化太小则计算时间爆炸。一个实用原则是时间步长控制在热时间常数的1/10以内而18650的热时间常数大约是60到150秒所以步长取5到15秒比较合适。5.3 边界条件和热源加载外壳表面与空气的换热可以用第三类边界条件对流辐射。如果做的是风冷场景还需要建一个流体域做共轭传热这时候湍流模型的选择很关键。以Fluent为例自然对流用层流模型即可强制风冷推荐用k-ε或者k-ω SST。k-ε在分离流多的场合精度一般但胜在稳定k-ω SST在近壁面温度梯度大的问题里表现更好代价是收敛慢一点。风速低于0.5 m/s时算不算湍流建议先算雷诺数确认一下Re ρvL/μ18650直径18mm、v1m/s的话Re大约1200还没到2300的临界值层流就行。很多人不管风速直接上湍流模型结果纯属给自己找不快。热源加载方式也要讲究。不要把生热功率均匀摊在整个卷芯体积里更贴近实际的做法是按集流体位置分层加载生热密度。正极铝箔和负极铜箔的电阻不同极耳连接处的接触电阻更大局部生热可能是平均值的几倍。我们用CT扫描做过一个热成像对照实验高倍率放电60秒后极耳根部附近的表面温度确实比卷芯中间高2到3度如果整个卷芯均匀生热这2到3度的差别根本看不出来。6. 模型标定和验证实验设计、传感器布点、误差分析模型建得再漂亮不拿实测数据撞一撞都是耍流氓。这节分享一套我自己摸索出来的标定验证流程适用于集总模型和简化三维模型。6.1 温升实验怎么设计实验设备其实不复杂一台恒温箱、一台充放电测试仪、热电偶若干、数据采集仪。实验流程恒温箱温度设为25℃电池放进去静置2小时以上让电芯内外彻底热平衡。在电池外壳表面中心、靠近正极极耳、靠近负极极耳的位置各贴一枚热电偶用高温胶带或导热胶固定务必让热电偶的测温点和外壳充分接触。设置放电工况先做0.5C约1.25A放电到截止电压记录全程温度然后回充到满电再做1C2.5A和2C5A关键倍率下至少重复两次确认重复性。自然对流工况的恒温箱必须关风扇如果做风冷验证则单独加一个风速计测风速保持风场稳定。这个实验最容易被忽略的是电池夹持方式。如果电池直接贴在金属夹具上接触面会额外带走大量热量h就从自然对流值往上飘。所以标定自然对流时电池悬空放置或者用尼龙支架支撑不要让它接触金属导热体。6.2 传感器布点的学问18650温度监测有一个绕不开的死结热电偶只能贴外壳采不到电池内部温度。但热失控萌芽往往发生在卷芯内部外壳温度变化存在明显的热惯性滞后。根据我的测试2C放电时内部温度和外壳温度最大能差8到10℃而且内部温度峰值发生在外壳峰值之前几十秒。工程上的对策是“虚拟温度传感器”。做法是做一个径向一维模型作为观测器用外壳实测温度作为输入通过卡尔曼滤波实时估计内部最高温度。我做过一版实验1C放电时虚拟传感器给出的内部温度估算值和内嵌光纤传感器实测的对比误差在0.8℃以内。如果能有机会用带中心孔的电芯插入光纤传感器做一次完整的对比标定你会对内部温度滞后有非常直观的认知。6.3 误差分析的常见来源模型算出来和实测对不上优先按这个顺序排查先看生热参数对不对内阻MAP是否覆盖了实际SOC和温度范围放电末期的内阻上翘有没有捕捉到再看散热边界合不合理自然对流时是否不小心混入了夹具导热辐射项有没有重复计入如果同时用“等效h包含辐射”又额外加了辐射项等于算了两遍辐射。最后检查初始条件电池入实验箱之前真的热平衡了吗很多温升曲线的“初始段异常”都是因为电池起步温度还在爬没到设定温度就开机放电了。按这个顺序排查完大部分误差都能控制在2到3℃以内。如果还差得远就要考虑是不是电芯本身产热路径异常比如内部存在微短路或者电解液老化导致内阻变化。6.4 我踩过的一个典型坑有次做风冷实验风速计显示环境风速3 m/s模型给的对流系数是35 W/(m²·K)算出来的温度却比实测低了整整6℃。排查半天发现实验台周围放了几块塑料挡板实际吹到电池表面的风速不到1 m/s。从那以后我养成一个习惯风冷实验布完局先别开机用风速计在电池表面位置多点测一遍风速分布再决定用什么h值。这种细节不写进仿真报告的坑往往才是真实误差的主要来源。7. 热效应模型能往下延伸的实战场景模型标定完千万别让它躺在脚本里吃灰。18650热效应模型的真正价值体现在它往各个工程方向的延伸能力上。第一个延伸是快充策略优化。把电热耦合模型嵌进充电控制算法里以电池内部最高温度不超过45℃或者温升不超过15℃为约束动态调整充电电流曲线。比起传统CC-CV恒定电流-恒定电压充电法这种温度约束快充可以在安全温升范围内把充电时间缩短10%到20%。这里面的大头收益来自放电末期和低SOC区间内阻高、生热猛模型能在这些区间主动降流。第二个延伸是Pack液冷设计。把单颗电芯的三维热模型组装成模组加入冷板或冷却管路的共轭传热模拟可以直接对比不同流道方案的温差。比如常见的蛇形流道和并行流道前者进出口温差大后者各电芯之间温差小。这类仿真如果只用集总模型做每颗电芯的温度是均匀的压根看不出“出口侧电芯比入口侧高4度”这种结果。第三个延伸是SOC估算的温度补偿。传统安时积分法在低温工况下会因为容量缩水而误差累积热模型可以给SOC估算器提供一个修正信号——根据温度历史动态调整可放出容量。我们做过一组数据-10℃环境下面把温度补偿加进估算算法SOC误差从12%压到了5%以内。第四个方向就是数学建模竞赛了。华为杯也好、研究生数学建模大赛也好电池类题目几乎是年年见的“钉子户”。遇到这类题我最建议的方法是不要上来就做三维电化学-热耦合先握紧手里的实测数据用集总热模型或径向一维模型把温升曲线拟合出来再做参数敏感性分析。竞赛评阅通常看重逻辑链完整、参数辨识过程合理、误差分析扎实一个线性化处理得漂亮、参数溯源清楚的集总模型远胜于一个参数全靠瞎猜的三维黑箱。做个小小的经验总结给18650电池做热效应建模最核心的链条是“发热机理→散热路径→参数获取→模型选型→标定验证→场景延伸”每一步都各有各的坑。尤其是参数实验环节只要肯花时间把内阻MAP和流换热系数标定到位哪怕只用集总模型也能在绝大多数工程问题里给出可靠预测反过来参数拍脑袋的话就是上三维CFD也是白搭。先把热从哪来、往哪走这八个字想透建模就不会跑偏。
