把IGBT结温估算这个话题单独拎出来,不是因为技术资料少,而是因为真正能把结温估算做准、做稳、用于量产项目的人不多。电机控制器里烧IGBT的案例,十有七八最后都能查到“温度”头上——要么是结温超过了设计上限,要么是温度循环把功率模块的焊层疲劳掉了。可问题是,结温没法直接用热电偶插进去测,芯片完全密封在模块封装里,开关瞬间还有高压干扰。所以工程上只能用各种间接手段去“猜”。这篇文章就把目前主流的结温估算路子挨个拆开,讲清楚原理、适用场景、实现细节和量产落地时容易踩的坑。
1. 结温为什么是电机控制器的“体温计”
1.1 温度直接决定功率模块的寿命与安全性
功率模块(这里主要指IGBT模块)的失效模式里,热相关失效占了很高的比例。长期高温会加速栅氧层退化、增大漏电流,甚至直接导致闩锁效应;而温度循环则会让芯片与陶瓷基板之间的焊料层产生热疲劳裂纹,裂纹逐渐扩展,热阻变大,结温进一步上升,最终芯片脱落或者键合线剥离。这个过程在功率循环试验台架上看得非常清楚:一开始一切正常,几百次循环之后热阻明显变大,再跑下去就是热失控式的失效。
工程上常用寿命模型来估计这个损伤,比如基于结温波动幅度的 Coffin-Mason 模型、基于平均结温的 Arrhenius 模型等。以现场实际经验来看,结温波动每降低 10K,功率循环寿命往往能翻几倍;反过来,如果散热设计不好导致结温偏高 20K 以上,模块寿命可能缩水一个数量级。所以结温不只是一块“监控值”,它是控制策略里一个真正影响可靠性的关键变量。
1.2 为什么不能直接用温度传感器测结温
很多人第一次接触这个工程问题时都会问:直接在IGBT芯片旁边装个热敏电阻不就完了吗?遗憾的是,功率模块内部的芯片表面极其敏感,模块封装在出厂后是一个完整的密封体,没有给用户预留任何接触测量点。即便在研发阶段做破坏性开盖处理,在芯片表面贴热电偶也会改变散热路径和电场分布,测到的数据只能做标定参考,没法用于量产产品的实时监控。
从模块外部能接触到的温度点,只有底座(Baseplate)或者散热器(Heatsink)上的位置。绝大多数量产模块会在基板上集成一颗NTC热敏电阻,通过它来间接监控模块内部的温度状态。但NTC离芯片有相当一段距离,中间隔着陶瓷覆铜层、焊料层、硅脂、基板等结构,存在明显热阻和热容。芯片发热要先经过这条热路径才能传到NTC位置,这就产生了时间延迟。重载突加的时候,芯片结温可能已经飙升到临界值,但NTC电压还没怎么动。这也是为什么单纯看NTC温度来做过温保护,往往要么过于保守牺牲性能,要么反应太慢直接烧模块。
所以,结温估算本质上是在做一个“体温推定”——利用能测到的壳温、母线电压、输出电流、开关频率等参数,结合IGBT的热特性和损耗模型,反推出芯片内部的真实温度。它既是一套算法,更是一整套测试标定和校验的手段。
2. 主流结温估算方案的技术拆解
2.1 热网络模型:从热阻热容到运算式
热网络模型是目前工程上应用最广泛的结温估算方法。它的核心思路是:把从芯片结到周围环境(通常是冷却液或空气)的热传导路径,等效成一串热阻和热容组成的分级网络。这个网络在数学上能很好地描述温度随时间变化的动态过程。
具体分两种表示方式。Cauer模型直接对应物理结构层,第一阶热阻热容代表IGBT芯片到陶瓷层的热路径,第二阶代表陶瓷层到基板,第三阶代表基板到散热器;Foster模型不追求物理对应关系,只是为了精确拟合结到壳的瞬态热阻抗曲线,所以阶数和参数都是纯数学拟合出来的。工程上做控制算法时记住一个原则:Foster模型容易标定、计算稳定、参数可以直接从器件厂商的瞬态热阻抗曲线里提取,所以软件算法里用得多;Cauer模型虽然更能反映物理层,但参数辨识麻烦、对层间变化敏感,一般只在仿真环境或故障诊断研究里用。
用清晰的数学表达就是:结温等于壳温加损耗在热阻抗上的抬升。结升温升可以写成损耗功率对某类瞬态热阻抗进行卷积计算。实际离散化实现时,我们不是去存一长串功率历史,而是把热网络转成状态空间方程,每个时刻用一个三阶或四阶的状态变量更新,计算量极小。以10kHz中断周期为例,Foster三阶模型的运算量乘以一片GPIO翻转的周期都比它大,在MCU上跑完全没问题。
需要注意的是,热网络模型的精度直接受损耗估计影响。IGBT的损耗包括导通损耗和开关损耗,导通损耗好算,电压乘电流再按占空比折算;开关损耗则需要查表或者用能量曲线的参数拟合,和母线电压、电流、栅极电阻、结温都有关系。损耗算不准,后面热网络再精也白搭。所以实现的时候,损耗模型需要单独在台架上校准。
2.2 Vce(on)在线提取:把芯片自己当成温度计
热网络模型的短板在于它依赖损耗估计的准确性,损耗模型误差会累积到结温上。想要更直接的测量思路,业界一直在打IGBT导通饱和压降 Vce(on) 的主意。因为Vce(on)的大小既跟流过芯片的电流有关,又跟芯片温度有关。在已知电流的前提下,通过测量Vce电压反推结温,是一种“自传感”方法,不需要额外传感器。
不过工程实现难度不小。正常PWM工作状态下,IGBT大部分时间处在开关切换过程,Vce波形包含很高的 dv/dt 和 di/dt 干扰,直接测量结温比较困难。一个成熟的思路是:特意在每一个PWM周期内插入一个“测量脉冲”窗口,在短脉宽下导通一个恒定的、很小的检测电流,此时Vce的压降主要由芯片结温和这个检测电流决定,和主功率电流基本解耦。采样到低压侧的Vce后,查标定表换算成结温。
这个方法的优点是不依赖热网络模型,响应速度极快,可以检测到几十毫秒甚至几毫秒级别的结温变化;缺点是测量电路复杂,需要高速采样、隔离放大和精确的时序控制,而且测量窗口会稍微增加额外损耗,标定工作量也很大。在量产乘用车电驱控制器里,这种方法多见于特殊工况下的保护策略(如短时峰值功率预测),作为NTC外推法的验证补充,而非完全替代。
2.3 NTC测温与热瞬态修正的经典组合
量产电机控制器里最常见、最稳定的,还是“NTC测基板温度+热网络外推”的组合。NTC本身测量可靠、成本低、通过ISO 26262的监控也容易做,但它只能反映基板温度或者散热器温度,不能直接当结温用。所以需要根据损耗和热网络模型,把结温相对于NTC温度的差值预测出来。
至于外推的准确性,关键看两块:一是热网络参数的准确性,通常要测出模块的瞬态热阻抗曲线;二是对损耗的动态估算。实际运行时,如果把电机控制器当作一个大功率发热源,结温升幅随负载波动,薄壳温度变化幅度小且缓慢;但是结温追踪功率损耗变化很快,特别是在堵转、急加速、峰值功率交替的工况下,结温会有很大的瞬时波动。算法上要能捕捉这个“快速瞬态分量”。工程实现时,低通滤波的时间常数选大了会滤掉真实的结温过冲,选小了又会抖动误保护,这个参数需要通过台架上的功率循环实验校准。
我见过的可靠做法是:把热网络拆成两条并行支路,一条模拟稳态温升,一条模拟瞬态冲击。稳态支路用来修正长时间运行后的温度漂移,瞬态支路用来捕捉短时过载冲击。两者叠加后再和NTC测量值求和得到最终结温估计。保护逻辑同时监测稳态结温和瞬态结温,一旦瞬态结温超过阈值,立刻做降额或限流。
2.4 其他辅助手段:红外标定与数据驱动的补充
除上述方案外,研发阶段会用红外热像仪或者红外显微镜对开盖模块做结温实测标定,得到损耗模型和热网络参数的基准参考。这个手段不适合量产随车运行,但它是验证算法精度的“标准答案”。
现场还见到一些团队尝试用数据驱动方式,比如把母线电压、电机电流、转速、冷却液流量温度等信号输入神经网络,用采集到的结温标签做训练,从而得到经验上的结温预测模型。作为科研探索没问题,但是量产落地时需要谨慎考虑数据覆盖度、泛化能力和負值工况。数据驱动模型在已知数据集内精确度可能很高,出了覆盖范围就可能给出不可信的预测,而结温估算最终是和安全保护绑定的,不能基于不确定模型冒险。
3. 结温估算从理论到量产的完整落地路径
3.1 先解决“测什么、怎么采”的硬件链路
结温估算算法能不能在目标MCU上稳定运行,取决于输入信号质量。主要输入信号包括:三相输出电流(通常是相电流重构得到的),直流母线电压,NTC基板温度,冷却液温度(如果控制器内部有传感器),以及电机转速和开关频率等运行状态。
采集链路的关键在于同步性和采样精度。电流采样相电流的精度直接影响损耗估算;如果相电流偏大5%以上,导通损耗按电流平方关系会偏更大,结温估算就会系统性偏高或偏低。母线电压如果只有平均值,在低母线电压工况下开关损耗的估算也会偏小。所以我建议在设计阶段,给算法预留专门的电压采样通道,并且用同步采样或者锁相时序保证电流、电压、PWM占空比在同一控制周期内匹配。
NTC的采样同样有讲究。NTC是慢信号,直接在一个非关键周期采样一次再滤波即可;但要注意NTC分压电路里的上拉电阻值,不同系列的NTC有不同B值,采样电路要保证温度范围内电压分辨率足够。主线处理时,把NTC温度滤波和结温热网络计算分开,不要让NTC滤波延迟叠加到热网络上,否则会造成结温估算对负载变化响应迟钝。
3.2 热参数辨识的完整实操流程
理论模型再多,没有准确参数等于白搭。热参数辨识这件事,我的建议是直接在目标控制器和真实散热系统上做,而不要只拿厂商DATASHEET里的典型曲线去拟合,因为散热器、硅脂、装配工艺对总热阻影响非常大。
具体流程我常用这套分步操作:
- 把控制器安装在完整系统台架上(带真实的冷却液回路和最终散热器),接通热测试软件,设置开路绕组或者短路绕组模式让逆变器工作在连续导通状态,给予固定的直流电流负载,产生已知损耗。
- 稳定运行一段时间(一般要等NTC和水温不再变化,大概15到30分钟),记录结温估算参考值(可通过开盖样件的热电偶获取,或者红外实测)、壳温/NTC温度、冷却液温度和加载功率。功率可以从母线电压和直流电流精确计算。
- 改变负载功率,重复多个稳态工作点,得到不同功率下的“结到NTC/结到壳”稳态温升差,据此拟合稳态热阻 Rth(jc) 和 Rth(jh)。
- 在稳态基础上做快速负载阶跃:瞬间从空载切换到固定负载,全程记录结温和NTC温度曲线。这条温升曲线的时间常数值,用来拟合Foster网络中的热容参数。我一般用二到三阶,每阶一个时间常数,拟合效果已经足够好。
- 最后用一个变化的负载序列做验证,把实测温升曲线和算法输出对比,误差控制在 ±5K 以内就算工程上可用。
这个过程中最容易忽略的是:每次切换负载后要等足够长时间,让水温也稳定下来,因为冷却液温度变化会影响壳温基线,如果不排除这个干扰,拟合出的热阻会不准。测试时还要保证环境温度基本恒定,避免空调变化带来的基线漂移。
3.3 算法离散化与任务调度
热网络模型通常在控制中断(比如10kHz)或者更低频率的慢任务(1kHz)里跑。损耗估算因为依赖电流电压,需要在电流采样后的同步周期里计算;热网络更新则可以在独立的慢任务里做,因为热时间常数本来就在毫秒到秒级,没必要占用高频中断资源。
离散化实现时,用后向欧拉或者双线性变换都可以。一个三阶Foster网络更新一次的计算量,包括三次状态变量更新和一次输出求和,大约几十个乘加运算。这个量级在主流MCU上几乎可以忽略。重要的是注意状态变量的饱和与清零。比如长时间下电后再上电,如果状态变量还保留历史结温,但实际模块已经冷却,估算就会在启动初期给出一个错误的高温值,触发热保护。解决方法是上电时根据NTC实测温度初始化所有状态变量——通常做法是认为长期停机后结温等于基板温度。
任务调度上还有一个细节:结温估算不能每个周期都从零积分,损耗算一次后要平滑过渡,防止因电流尖峰导致结温估算剧烈波动,引发保护误动作。保险起见,我会在算法里加一个“准承诺”机制:结温估算要连续超过保护阈值若干毫秒才触发降额,这个延迟设置要和模块的短时过载能力匹配,避免矫枉过正。
4. 实测校准、失效辨识与工程避坑清单
4.1 从台架到实车:NTC响应延迟和散热工况修正
台架上测出来很准,一装到整车系统里可能又对不上了。原因主要出在“环境散热”变了。台架上的冷却液温度稳定可控,但整车实际运行时,冷却液温度受发动机余热(混动车型)、空调冷凝器散热、外部环境温度等多因素影响,波动范围很大。
纯靠NTC外推结温,一旦水温大幅上升,结温估算会跟着偏高,这本身没错;但如果水温上升的同时整车还在大功率输出,而冷却液流速不够,散热器热阻也会变。常见的修正办法是引入“冷却液温差修正系数”,按冷却液流量和水温查表对Rth(jh)或者热网络输出做修正。这要求控制器里必须有冷却液流量信号,没有的话,至少要在结温估算结果里留一个和冷却液温度相关的补偿项。
另一个常见问题是NTC响应延迟。在突加载荷下,IGBT结温可能在几十毫秒内上升20到30K,而NTC要几百毫秒到几秒才能反映到基板温度变化。整车上看到的现象是:急加速一瞬间电流很大,但NTC温度读数还停留在怠速状态。如果算法不给瞬态修正,过温保护就会漏报。因此量产策略上必须把快速功耗变化作为过温保护的核心判断依据,而NTC更适合作为偏置校正项而非主判断项。
4.2 热老化、硅脂老化和螺栓力矩的影响
结温估算的另一个坑,是模块在使用过程中热特性会慢慢变化。出厂标定的热阻值,在模块老化后可能会升高20%甚至更多。硅脂的老化和挤出、基板与散热器之间接触压力的变化、功率循环产生的焊层裂纹,都会引起热阻漂移。如果控制算法始终用固定热阻,老模块的结温就会被系统性低估,出问题的概率自然上升。
工程上可以做两件事。第一,在控制器的生命周期内给热网络模型加一个“老化修正系数”。这个系数可以根据模块运行时间、累计功率循环次数估算,也可以通过定期自检得到——比如在某些空闲时间段注入特定测试电流,测量模块温升,反推热阻变化。第二,安装环节的管控要严格:螺栓力矩不够,散热器接触热阻偏大,即使新装的样件也可能出现结温估算偏差。这个要靠工艺文件和Audit来保证,不是算法能补回来的。
4.3 常见问题的现场排查速查表
多年的调试经验里,结温估算相关的故障多半有相同的症状和根因,我整理成一个速查表格,方便对照排查。
| 故障现象 | 可能原因 | 排查手段与对策 |
|---|---|---|
| 低温工况下误报过温保护 | NTC未正确安装,接触不良 | 检查NTC焊接/压接,上电校准温度偏差 |
| 突加载荷时报温慢、保护滞后 | 算法只依赖NTC,缺少瞬态热网络修正 | 增加损耗前置的瞬态结温估算,关键保护用估算结温 |
| 结温估算长期偏高或偏低 | 热阻参数标定不匹配实际散热系统 | 重新在目标台架上做稳态和阶跃响应标定 |
| 估算值随电流纹波剧烈抖动 | 损耗模型对电流尖峰过于敏感 | 对损耗计算做滤波,增加保护阈值确认时间 |
| 下电重启后瞬间高温误报 | 热状态变量未按NTC初始化 | 上电时用NTC温度初始化所有热状态变量 |
| 整车上坡/堵转工况误保护 | 水温升高导致散热恶化,未考虑水温修正 | 增加冷却液温度补偿项,实时调整热阻参数 |
| 同一型号模块更换后估算偏差变大 | 批次差异或硅脂涂抹量不一致 | 制定装配工艺标准,抽样做热参数复测 |
这张表里的每一项,基本都在项目现场碰到过不止一次。比如“下电重启后瞬间高温误报”,曾经在一次客户试驾中,车辆刚上电就报IGBT过温,整车限功率,排查了好久才发现是热状态变量保存了上一次运行末期的结温,重启后没有归零。后来统一改成上电用NTC初始化,问题彻底消失。这类问题看起来不大,但放到整车故障排查里,特别绕人。
5. 结语:把这套“体温计”用好,需要的是系统工程思维
做了这么多个控制器项目,我越来越觉得结温估算不是一个单独的算法模块,而是一条完整的数据链,从台架标定、硬件采样、损耗建模到保护标定,每一步都有关联。只把注意力放在“Foster加了几阶”上,很容易在实车验证时被NTC响应、水温波动或者老化漂移打脸。
一个小体会是:很多时候结温估算不准,并不代表算法公式不对,而是原始输入信号没有处理干净。先把电流传感器温漂、NTC精度、冷却液流量这些工程基础打好,再回头调热网络模型,你会发现精度提升立竿见影。最后再分享一个技巧:做完一套结温估算之后,一定要在实车上录制不同类型工况的时间序列数据(城市走走停停、高速巡航、极限爬坡、连续再生制动),拿这些数据回归验证算法的边界,尤其是要确认在最恶劣的峰值功率叠加电机堵转的工况下,估算值依然落在模块安全区内。这块验证做完,整个结温估算方案才算真正可信。