每年夏天我都会收到几条类似的求助消息:“板子跑起来有点烫手,要不要紧?”“一直80度会不会烧?”“热得像个小火炉,但功能倒是正常的。”说实话,能问出这些问题说明已经把板子调通了,但真正让人夜不能寐的问题还在后面:这温度到底是正常发热还是失效前兆?结温还有多少余量?散热片该贴多大?
这就是硬件工程师必须掌握的热设计要解决的事。很多人以为热设计是结构工程师或者仿真工程师的活,自己在原理图阶段留好散热焊盘就万事大吉。但实际项目里,芯片选型、功耗估算、降额设计、散热路径规划,每一步都跟电路设计深度绑定。等板子打样回来才发现热超标,改版成本可不是一两个礼拜能补回来的。
这篇文章不聊那种动不动就上Flotherm的复杂仿真,而是从硬件工程师日常最需要的角度切入:功耗怎么算、热阻怎么用、结温怎么卡、散热片怎么选,最后再用一个实际电源板的案例把整个流程串一遍。新手可以当入门指南,老手也可以用来查漏补缺。热设计这件事,早一点想清楚,后面就能少流很多汗。
1. 热设计到底在解决什么问题
1.1 热失效的底层逻辑:不是你感觉烫,而是芯片觉得烫
先说一个容易混淆的点:我们摸到外壳烫手,和芯片结温超标,是完全不同的两个概念。封装外壳到空气之间存在热阻,芯片内部硅片到外壳也存在热阻。芯片真正关心的是内部那个“结”的温度,也就是硅片工作时的温度,这个值才是数据手册里Tj(max)的来源。
拿一个常见的小封装LDO来说,SOT-23封装的热阻Rth(j-a)通常在180°C/W左右。如果这颗LDO压差3V、输出电流100mA,功耗就是0.3W,理论上的结温温升约为0.3×180=54°C。环境温度25°C时结温79°C,看着还能接受;可要是环境温度升到60°C呢?结温直接飙到114°C,而很多LDO的Tj(max)是125°C,这就已经贴着红线跑了。
这就是热设计的第一层逻辑:热量从硅片出发,沿着封装、焊点、PCB铜皮、外壳、空气一路传递,每个环节都有热阻。我们要做的不是消灭热量,而是控制热流路径,让结温永远待在安全区。
1.2 热设计在项目周期里的位置:原理图阶段就要动手
我见过不少工程师的做法是:原理图画完、PCB布局做完,才想起来看看功耗。这个顺序基本是反的。功耗估算应该在器件选型阶段就开始,因为很多热问题到最后根本不是换个散热片能解决的,而是选型那一步就埋下了雷。
比如DCDC选型,同样的3.3V输出,不同IC的导通电阻、静态电流、开关频率差得很远。一颗Rds(on)只有50mΩ的同步Buck,在1A负载下导通损耗只有0.05W;而一颗Rds(on)高达150mΩ的,同样条件下导通损耗就是0.15W,是前者的三倍。这个差距在原理图阶段用公式一算就出来了,根本不需要等板子回来再用热像仪找茬。
热设计的位置应该是在电路设计、结构设计、PCB设计三者的交界处。原理图阶段估功耗,PCB阶段铺铜和打过孔,结构阶段定风道和散热器,每个环节都能处理一部分热量传递的问题,也都会因为提前规划而省下大把返工时间。
2. 功耗计算:热设计的源头一切的前提
2.1 数字IC功耗估算:动态功耗为主,静态功耗别忽略
数字芯片的功耗主要分两块:动态功耗和静态功耗。动态功耗来自电容充放电和翻转电流,公式是P = C×V²×f,也就是负载电容乘以电压平方再乘翻转频率。这个公式在初中物理电学层面就能理解:电压越高、频率越快、负载越重,功耗越大。
举个例子,一颗FPGA内核电压1.0V,等效负载电容10nF,工作在100MHz,粗略算下来动态功耗P = 10nF × 1² × 100MHz = 1W。这还只是一路内核供电的估算,实际项目中要把内核、IO、PLL、收发器等模块分开算,再叠加静态功耗。
静态功耗就是漏电流造成的损耗,在先进工艺节点上越来越不可忽视。7nm以下的芯片,即使什么都不干,静态功耗可能都占整体功耗的30%以上。对于硬件工程师来说,最靠谱的方式不是自己硬算,而是查数据手册或者用厂商提供的功耗估算工具。但你要能看懂这些工具输出的结果,知道哪些参数被高估了、哪些被低估了,不能拿来就用。
2.2 功率器件损耗拆解:导通损耗、开关损耗一个都不能少
MOS管和DCDC是热设计里的重点关照对象,因为它们往往贴着电流上限跑。MOS管的损耗可以拆成三块:导通损耗、开关损耗、栅极驱动损耗。导通损耗最好理解,就是I²×Rds(on),但Rds(on)会随温度升高而变大——温度越高、损耗越大、温度再升高,这就是个正反馈的过程。数据手册给出的Rds(on)一般是25°C下的值,高温时可能翻倍,算功耗时一定要用100°C左右的典型值。
开关损耗更隐蔽,它发生在MOS管导通和关断的过渡过程中。这期间电压和电流同时不为零,乘积形成的损耗就是Psw = 0.5 × V × I × (tr + tf) × f。开关频率越高,开关损耗占比越大。这就是为什么高频DCDC往往需要选用栅极电荷更小的MOS管,不是为了显得高级,是真能降损耗。
无源器件也常被忽略。电感上的铜损是I²×DCR,磁损来自磁芯损耗,频率越高磁损越严重。电容虽然不怎么发热,但ESR在纹波电流下也会产生I²×ESR的损耗。这些损耗虽然单个不大,但积少成多,而且是PCB上局部热点的主要来源之一。
2.3 功耗计算的工程技巧:留裕量、分场景、看最恶劣情况
理论公式会算之后,更关键的是怎么把功耗计算落到工程实践中。我的习惯是给每个发热器件建一张功耗表,按“典型工况”“满载工况”“最恶劣工况”三列分别估算。典型工况用于电池续航估算,满载工况用于多数散热设计,最恶劣工况则用来验证极限安全性。
最恶劣工况要综合考虑输入电压上限、负载电流上限、开关频率上限、环境温度上限,以及器件参数随温度的漂移。比如一个Buck电路,输入电压最高、负载电流最大、环境温度最高时,功耗往往超标。如果你只按典型参数算,选出来的散热方案在夏天高温环境里就是裸奔状态。
这里还有个实操技巧:把测试样机放在恒温箱里拉满载,等温度稳定后记录温升。实测数据比任何估算都可靠,但前提是你要知道测量点选在哪里,后面第4节我会专门说测试的事。
3. 从热阻模型到结温控制:把热量送到该去的地方
3.1 读懂热阻参数:Rth(j-a)和Rth(j-c)的区别决定设计思路
热阻是热设计里最核心的概念,没有之一。热阻的单位是°C/W,含义是每消耗1W功率产生的温差。Rth(j-a)是从芯片结到环境的总热阻,Rth(j-c)是从结到封装外壳的热阻,Rth(c-a)则是从外壳到环境的热阻,三者满足串联关系:Rth(j-a) = Rth(j-c) + Rth(c-a)。
数据手册里常见的Rth(j-a)值有个大坑:它是在厂商指定的测试条件下测出来的,通常是标准JEDEC测试板,铜箔面积、层数、过孔密度都是固定配置。你把芯片焊在自己设计的2层板上,Rth(j-a)可能比手册值翻倍。千万别直接把手册里的Rth(j-a)拿来算结温,要不然计算结果会乐观得离谱。
Rth(j-c)相对稳定,因为它主要由封装材料决定。功率器件通常会在数据手册里标注Rth(j-c),这个值用来做散热器选型非常有用。对于底部带散热焊盘的QFN、SOP-8等封装,PCB铜皮其实就是主要的散热通道,这时候Rth(j-c)和焊盘到PCB的热阻更像是并联关系,散热设计的关键就变成了怎么把热量从焊盘引导到更大的铜皮和过孔阵列上。
3.2 结温计算公式:Tj = Ta + P × Rth(j-a) 的适用边界
结温计算的基本公式是Tj = Ta + P × Rth(j-a)。这个公式看起来简单,但它隐含了一个重要前提:热阻是“稳态”的,而且是“线性”的。实际上当功率大到一定程度,自然对流条件下散热效率会变化,热辐射的比例也在改变,用恒定热阻算出来的值会偏离真实情况。
拿实际的LED驱动板举例,某颗线性恒流IC在12V输入、350mA电流下,压差5V,功耗1.75W。如果手册给的Rth(j-a)是60°C/W,那么结温温升就是105°C。环境温度40°C时结温145°C,远超125°C的Tj(max)。这个计算还没考虑铜皮面积和过孔的影响,实际可能比计算值好一点,也可能更差。
工程上更稳妥的做法是倒推:定好允许的最高结温,减去预估的最高环境温度,剩下的温升额度除以预估功耗,得到需要达到的热阻值。比如Tj(max)=125°C,环境最高65°C,功耗2W,那么需要的热阻就是(125-65)/2=30°C/W。如果器件自身Rth(j-a)是60°C/W,就需要设计额外的散热通道把这60°C/W压到30°C/W以下。
3.3 散热方案选型:不是所有场景都要上散热器
散热方案的选择逻辑是:先优化热路径,再考虑加散热器。第一优先级是PCB铜皮面积,因为这是零成本的散热手段。一个TO-252封装的MOS管,如果周围铜皮铺得足够大,热阻可以从80°C/W降到40°C/W以下,效果比加个小散热片还好。
第二优先级是过孔阵列。对于有底部散热焊盘的封装,焊盘下方打一排过孔,把顶层热量导到底层大铜皮上,是几乎所有功率板的标配做法。过孔的内径、焊盘直径、孔间距都有讲究,内径0.3mm、孔间距1mm左右的过孔阵列是经过大量验证的常用配置。注意过孔最好用锡填充或者做树脂塞孔,否则焊接时容易藏锡导致虚焊。
第三优先级才是散热器。散热器选型看的是热阻值,而不是尺寸大小。同样体积的散热器,做成了齿片状比平板状的热阻低得多。强制风冷能让散热器热阻下降一半以上,这也是为什么不少工业产品明明可以做无风扇,却为了功耗成本选择带风扇。
4. 实操环节:一块电源板从0开始的散热设计全流程
4.1 场景设定与功耗摸底
用一个具体的案例把整个流程走一遍。假设要做一块输入12V、输出5V/3A的Buck电源板,环境温度最高50°C,结构上是密封外壳、无强制风冷,只能靠自然对流和传导散热。这算是一个非常典型的工业控制板供电场景。
先做功耗摸底。假设选的Buck芯片是同步整流架构,高边MOS的Rds(on)为80mΩ,低边MOS的Rds(on)为60mΩ,占空比D约等于5/12=42%。高边导通损耗Pd_high = D × I² × Rds(on) ≈ 0.42 × 9 × 0.08 ≈ 0.30W,低边导通损耗Pd_low = (1-D) × I² × Rds(on) ≈ 0.58 × 9 × 0.06 ≈ 0.31W。开关损耗按经验估算为0.2W,控制电路自身损耗按0.1W算,总功耗约0.9W。
电感选型方面,如果DCR是30mΩ,电感上的铜损为9×0.03=0.27W。输出电容的ESR按10mΩ计算,纹波电流约1A,损耗为1×0.01=0.01W,可以忽略。整个电源模块的发热量总和大约1.2W,这个数字就是散热设计要处理的总功。
4.2 散热路径规划与器件布局
功耗摸清之后,下一步是规划散热路径。目标是让这1.2W热量的传递路径尽量短、尽量粗。芯片是主要的发热源,它的底部散热焊盘要通过大面积铜皮连接到更大面积的铺铜区,散热焊盘的过孔阵列把热量导到底层,再通过边缘的铜皮传导到外壳或散热器。
器件布局顺序也有讲究。输入电容要靠近高边MOS,输出电感靠近低边MOS,输出电容靠近电感输出端。这样做不只是为了电性能,也是为了让主要发热器件尽量分散,避免热点集中。一个常见的错误是为了走线方便把所有功率器件挤在一起,结果电性能似乎没问题,但热像仪一看,局部温度比周围高出一大截。
铜皮面积要舍得给。5V/3A电源板的主功率路径,根据经验40mil以上的线宽够用,但散热铜皮不是按线宽算的,是按面积算的。高边和低边MOS所在的那一片区域,铜皮至少要留出2cm×2cm的连续面积,而且顶层底层都要铺,中间用过孔连起来。这样热量能从芯片焊盘扩散到一个大得多的“热池”里。
4.3 加测点、跑实测、对照计算
板子回来后要做实测验证。测量工具有两种:热电偶和红外热像仪。热电偶便宜但只能测点,热像仪能看到全局温度分布但价格不便宜。我的做法是先用热像仪找到热点,再在热点上贴热电偶做长时间监测。热电偶要用导热胶粘在器件表面,不能用普通胶带,否则测的是空气温度而不是器件温度。
实测条件要覆盖典型和极端两种工况。典型工况是25°C室温、满载稳定运行;极端工况是放在恒温箱里,温度拉到50°C甚至60°C,再跑满载。恒温箱里测出来的温度增量加上环境温度,才是真实的结温估算。比如芯片表面实测温度90°C,壳温Ta还是50°C,那么温升就是40°C。如果Rth(j-c)是8°C/W,功耗1.2W时,结温比壳温高约9.6°C,实际结温大约100°C,留了25°C左右的裕量,这个设计算是合格的。
如果实测结果比计算值高很多,不要先怀疑公式错了,重点排查两个方向:一是热阻参数是不是被高估了,二是散热路径上有没有中断。热路径中断最典型的例子是铜皮被走线切断,或者过孔阵列没有放在焊盘正下方,导致热量只能绕远路走。
5. 常见问题与排查技巧实录
5.1 加散热器后温度反而变高?
听起来匪夷所思,但我真遇到过。问题出在散热器与器件之间的接触面。如果散热器只用导热胶随便粘上去,接触面存在空气间隙,空气的导热系数极低,相当于在热路径上串了一个大热阻。正确的做法是使用导热硅脂填隙,硅脂只需薄薄一层,涂太多反而会因为硅脂自身导热系数不够高而增加热阻。
还有一个容易被忽略的细节:散热器的固定方式。用螺丝固定时要注意力矩,拧太紧可能压坏封装,拧太松又接触不良。比较稳妥的方式是用带弹簧的螺丝或者卡扣,保证在一定范围内压力恒定。吹塑铝散热器安装时看底面是否平整很关键,变形的散热器再怎么涂硅脂也没用。
5.2 结温估算与实测的差距
有个常见问题:用Rth(j-a)估算的结温是120°C,结果实测壳温才90°C,是不是哪里算错了?不一定。Rth(j-a)手册值是特定测试板上的结果,你的PCB铜皮面积更大、层数更多、过孔更密,实际热阻可能比手册值低30%~50%。所以实测结温比估算值低是合理的,反而说明散热设计做得好。
反过来就危险了:估算结温100°C,实测壳温已经110°C,结温肯定超过了。这时候不用再纠结计算公式,赶紧降功耗或者加强散热。实测壳温加Rth(j-c)乘功耗得到的结温,往往比直接用Rth(j-a)估算更接近真实值,因为壳温是实测的,绕开了PCB散热能力的不确定性。
5.3 PCB散热设计的三个偷分技巧
第一个技巧是电源铺铜与信号铺铜分离。大电流路径的铜皮不要和敏感信号共用地,这一方面是电气问题,另一方面也是散热考虑。信号地往往因为布线限制被分割得支离破碎,热量沿着这些碎片铜皮传导效率很低。
第二个技巧是散热焊盘下方的过孔尽量做成阵列。单颗过孔的热传导能力极其有限,一颗0.3mm过孔能传递的热量大概只有同面积实心铜柱的1/10左右。所以必须用阵列,密密麻麻打个几十颗,才能形成有效的导热通道。过孔阵列的正下方对应到底层铜皮,也要保持完整的形状,不要被其他网络的走线切断。
第三个技巧是顶层和底层铜皮之间多放一些热连接用的通孔,尤其是在主要发热器件附近。这些通孔既不影响电气连接,又能显著降低顶层到底层的热阻。如果PCB厂支持盘中孔和树脂塞孔,那么封装焊盘上直接打孔会得到更好的热性能,但一定要提前确认焊接工艺,否则容易造成漏锡虚焊。
5.4 环境温度这个变量,永远不要按25°C算
最后说一个热设计里最容易被忽略的变量:环境温度。很多工程师做热估算时习惯性地拿25°C室温做基准,但产品实际使用的环境可能是40°C、50°C甚至更高。结温公式里Tj = Ta + P × Rth(j-a)中,环境温度每升高1°C,结温就跟着升高1°C,这是线性关系,没有任何可以回旋的余地。
所以我认为,热设计的核心不在“算得多准”,而在于“把最恶劣工况想得多全”。最高工作温度下的满载运行、放置在最不通风的角落、散热器灰尘堆积之后的热性能衰减,这些都在考验设计时的裕量是否给足。我自己常用的一个经验值是:只要成本允许,结温按85%降额设计——也就是如果Tj(max)是125°C,设计目标尽量控制在106°C以下。这样即使实际环境比预估高几度,或者器件个体差异导致热阻偏大,依然能安全运行。
热设计这门功夫,说到底是把器件的耐温极限、你的功耗估算和散热通道的导热能力三件事对齐,让发热器件知道“热量该往哪里走”。它不会让产品变得更高端,但一定能让它活得更久。