news 2026/9/24 12:57:48

半导体制冷片(TEC)实战:从原理到PID温控设计

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
半导体制冷片(TEC)实战:从原理到PID温控设计

在光学检测、生物样本处理这类对温度敏感的场合摸爬滚打多年,我碰过不少温控方案,电阻加热、压缩机制冷、水循环都试过,但真正让我觉得“好用又头疼”的,还是半导体制冷片。说它好用,是因为一块小小的TEC就能同时实现加热和制冷,而且没有压缩机那套复杂的管路和制冷剂;说它头疼,是因为如果不懂选型原理和热端散热设计,它分分钟给你表演“冷热不均”“直接烧毁”的戏码。

这篇就把我在实际项目中反复踩坑后攒下的经验捋一捋,从帕尔贴原理、参数表解读,到完整的选型计算、驱动电路和PID温控实现,一次性讲透。所有结论都来自我的实际调试记录和测量数据,不是抄数据手册,也不是纸面推导。不管你是打算给激光器做精密控温,还是给PCR仪设计升降温模块,这篇文章应该能让你的第一版硬件就少走一半弯路。

1. 原理与实际结构:TEC不是“魔法”,是电子在搬运热量

很多入门资料一上来就摆公式,但真正动手做项目,你得先把TEC的运行逻辑在脑子里转明白,否则后面选型和调试都会被动。

1.1 帕尔贴效应的通俗理解

帕尔贴效应说白了就是:当直流电流流经两种不同导体或半导体的接点时,接点处会吸收或释放热量。这个现象是法国钟表匠帕尔贴在1834年发现的,但直到半导体材料成熟之后,它才真正具备实用价值。

打个比方,你可以把TEC看成一台“热量泵浦”——电子就是搬运工,电流方向决定了搬运工是把热量从A端搬到B端,还是从B端搬到A端。所以同样的一个TEC,只要切换电流方向,冷端变热端、热端变冷端,反过来就能当加热器用。这一条在实际系统里非常关键,意味着你只需要一个器件就能实现双向温控,省掉了制冷和加热两套系统的体积和成本。

还有一个容易被忽略的点:帕尔贴热量Qp与电流成正比(Qp = π·I,π是帕尔贴系数),而电阻焦耳热与电流平方成正比(Qj = I²·R)。这就导致制热量随着电流呈现“先升后降”的抛物线关系,超过最佳工作电流后,焦耳热会吞掉帕尔贴泵热的效果,制冷量反而下降。所以TEC不是电流越大越冷,这一点后面选型会反复用到。

1.2 TEC内部到底长什么样

拆开一片TEC,内部结构并不复杂。几十对甚至上百对P型、N型半导体颗粒(通常是碲化铋Bi₂Te₃基材料)电串联、热并联地排列在上下两层陶瓷基板之间。通入电流后,N型半导体中电子运动方向与电流相反,把热量从一端带向另一端;P型半导体中空穴则是顺着电流方向运动,同样把热量从一端带向另一端。因为两者在电气上串联,所以在同一侧的接点会同时吸热或放热,宏观上就形成了一面制冷、一面发热的效果。

TEC颗粒数量、截面积和高度共同决定了它的最大制冷量和工作电压。同样是50W级别的TEC,有的片是几十对大颗粒、低电压大电流,有的是上百对小颗粒、高电压小电流。选型时电压和电流是必须同时关注的,只看“多少W”远远不够。我踩过的一个坑就是只看制冷量买了一片“大功率”TEC,结果驱动电压要24V,我的电源只有12V,硬撑着供电,实际冷量连标称的一半都不到。

为什么热端散热如此重要?从物理上讲,TEC从冷端泵送热量到热端,还要叠加自身的输入电功率热量。如果热端热量排不出去,热端温度升高,根据温差电效率公式,热端温度越高,制冷量下降越快。极端情况下热端超过TEC最大耐温(一般陶瓷基板级TEC在90℃左右,具体看厂家),内部焊料会回流甚至熔化,直接报废。

1.3 能量流向的清晰图景

在实际测量中,我把一片TEC断电放在26℃的房间里,冷端开始吸热,热端变热。稳定后我用红外测温枪读数据:冷端能到12℃左右,热端却到了45℃左右,温差大约33℃。这个数字远远小于数据手册标的ΔTmax=66℃,原因是有热负载(测温枪接触点、空气对流)以及热端散热不够理想。

查看TEC的性能曲线你会发现,制冷量Qc和温差ΔT是“负相关”的:温差为0时制冷量最大,温差越大,制冷量越小。这一点在系统设计时极端重要。比如你要把激光器从室温降温到15℃(ΔT=10℃),在制冷曲线上对应的可用制冷量可能只有标称最大制冷量的70%~80%;如果你要降到5℃(ΔT=25℃),可用制冷量可能只有50%甚至更低。这也是“按最大制冷量买就完了”做法最大的坑。

TEC还有一个业内不太愿意多谈的特性:它的COP(性能系数,制冷量与输入电功率的比值)非常低,量产器件一般在0.4~0.7之间,远低于压缩机的2~4。也就是说,一片TEC消耗100W电,制冷效果可能只有40~70W,其余全部变成热端的热量。如果算上热端风扇和电源损耗,整机能效比更难看。所以TEC适合的是冷量需求不大但要求紧凑、无振动、无制冷剂的场景,而不是追求能效的大规模降温场景。应用时定位一定要选对,否则方案从根上就是错的。

2. 参数表格背后的秘密:选型前先把这五个数字吃透

TEC厂家提供的规格书密密麻麻,但真正决定选型成败的核心参数就五个:Qcmax(最大制冷量)、ΔTmax(最大温差)、Imax(最大电流)、Vmax(最大电压)、Th(热端温度)。把这五个数字的关系搞明白,你就不会只看“功率”被表象欺骗。

2.1 四大参数如何互相制约

规格书里的Qcmax和ΔTmax是“极限值”,不是“常态值”。Qcmax指的是温差ΔT=0时能达到的最大制冷量(通常还要标Immersion采样条件,热端温度不同,Qcmax也会不同);ΔTmax则是制冷量Qc=0时的最大温差,两个参数不同时出现。

举一个实际例子:我常用的某款TEC,规格书标Qcmax=50W(Th=27℃),ΔTmax=66℃(Th=27℃),Imax=6A,Vmax=15.4V。翻到性能曲线,在ΔT=10℃时,Qc大约只有35W左右。如果直接按“需要50W冷量”去用,等到实际工作温差拉到10℃以上,系统根本达不到设计温度。所以正确做法是:把工作温差代入曲线,反查可用制冷量,在这个基础上再乘1.2~1.5的安全系数。

Vmax还要格外提醒一下:TEC片的内阻会随温度变化,冷态时内阻小,开关瞬间的浪涌电流可能远超Imax。我测量过一片标称Imax=6A的TEC,冷态启动瞬间电流能达到8.5A,如果驱动模块没有限流保护,很容易触发电源保护或把MOS管打穿。驱动电路必须留出至少30%~50%的电流裕量,同时做好软启动限流。

2.2 从热量来源倒推制冷量需求

选型时不要从“我需要降到几度”逆推,先算清楚“冷端有哪些热量需要搬走”。实际场景里热量来源主要分四块:

  • 主动热源(Q_active):被控对象自身的工作发热,比如激光二极管的光电转换效率低,大部分电能变成热量,这个值通常能用输入电功率乘以(1 - 电光转换效率)估算。
  • 对流漏热(Q_convection):冷端表面与空气的自然对流换热,实验环境风速影响波动较大。
  • 辐射漏热(Q_radiation):冷端与环境的辐射换热,温差大了以后不能忽略。
  • 传导漏热(Q_cond):从制冷结构件、线缆、气体管路传导进来的热量,是实际中做样机时最头疼的损耗来源。

一只安装在冷端铝块上的小型TEC,环境温度25℃,冷端目标温度5℃,铝块表面积20cm²,如果外部没有包裹绝热层,光对流和辐射漏热就能达到5~8W,这个量级对小冷量系统已经不容忽视。所以设计时一定要给对象做真空绝热罩或聚氨酯发泡绝热层,漏热小了,TEC的负载才能减轻,温差才能拉得更低。

2.3 温差与ΔTmax的实际余量取舍

还有一个要提前预期的点:ΔTmax=66℃不代表你的系统能达到冷端5℃。因为ΔTmax是在无热负载、热端理想散热下测得的极限值,实际系统里温差能达到ΔTmax的60%~80%就已经叫“设计得不错”了。我做过多次对比,普通铝挤散热器加风扇的热端散热条件下,TEC实际可用温差只有理论ΔTmax的50%~65%。比如标称ΔTmax=66℃,热端50℃、环境30℃时,冷端稳定在12℃左右就是常见水平,想更低就得加多级TEC级联或换水冷散热。

选型时我通常按“目标温差 ≤ 0.6×ΔTmax”作为初筛条件,超过这个比例就会去找更大规格的TEC或者换模块数量。有一个更稳妥的经验法则是:该TEC的ΔTmax最好比你实际需要的温差大出1.3~1.5倍。比如你需要拉15℃温差,那就找ΔTmax在20℃以上的TEC;需要25℃温差,至少找ΔTmax在32℃以上。这样热负载、散热波动、老化衰减算进来之后,系统才不容易掉链子。

3. 驱动电路与热端散热:硬件方案成败的关键

选好TEC型号只是第一步,驱动电路决定它能不能稳定工作,热端散热决定它能稳定工作多久。这两块是TEC项目踩坑的重灾区,我见过太多TEC烧毁、电流过冲、温控振荡的案例,根源全在硬件上。

3.1 双向驱动:H桥还是双电源?

TEC需要双向温控(既制冷又制热),驱动电路至少得能做正反两个方向的电流输出。最常见的是H桥拓扑——四个开关管(MOS管)构成全桥,通过控制对管导通方向实现电流换向。H桥方案的优势是一颗单电源就能搞定,供电简单,配合PWM调速可以做占空比控制;缺点是换向瞬间存在桥臂直通风险,死区时间没设置好会炸管。

双电源(正负电源)线性驱动方案则是用两个功放分别输出正负电流,配合运放做模拟PID,好处是电流纹波极小、控制平滑,适合低温漂、低噪声的精密温控场景;坏处是电源系统复杂、效率低、发热大。如果是做激光器波长锁定、探测器暗电流测试这类对温度波动要求±0.05℃以内的系统,我会优先选双电源线性驱动;如果只是食品保温、饮水机加热这种±1℃级别,H桥+PWM就够了,别给自己找麻烦。

3.2 电流纹波与PWM频率怎么选

PWM驱动TEC时,频率太低会导致TEC两端温度波动跟随PWM周期上下摆动,这在热敏电阻采样时表现得特别明显;频率太高则会增加MOS管开关损耗。实际调下来,10kHz~50kHz是一个比较合理的区间,在这个范围里TEC的热惯性会自然滤掉纹波影响,温控精度能稳住。

电流纹波还影响TEC寿命。过大的纹波会在半导体颗粒的PN结上产生额外的焦耳热,局部热点会加速半导体材料性能衰退,长时间运行后制冷量下降明显。如果发现同一片TEC越用越“虚”,排除散热老化之外,很大概率就是驱动电流纹波太大。测量方法很简单:把电流探头夹在TEC供电线上,示波器看峰峰值,通常纹波系数控制在5%以内问题不大;超过10%就要考虑加LC滤波或者提高换向频率。

3.3 热端散热系统的设计与热阻计算

热端散热是整个TEC系统里最容易成为性能瓶颈的环节。原因前面说过:TEC消耗的电功率绝大部分会转化为热端的热量,而且这个热量还叠加了泵送过来的冷端热量。换句话说,TEC标称功率是100W,热端实际需要散掉的热量可能高达130W以上,超过标称值的30%。

热端散热器的选型必须围绕热阻Rth展开。公式很简单:Rth=(Th-Ta)/Qh,Th是热端目标温度,Ta是环境温度,Qh是热端需散热量。举个例子,环境30℃、热端控制在50℃、Qh=130W,要求Rth≤(50-30)/130=0.154℃/W。一款常规铝挤散热器(尺寸200×200×50mm,配120mm风扇)的热阻大约在0.2~0.35℃/W,明显不够;此时要么换成更大面积的散热器,要么上水冷板,或者直接用热管散热器,否则热端温度会一直升上去,制冷效果急剧衰减。

我还遇到过一种“自投罗网”的设计:把风扇装反了,风从散热片吹向热端,热端温度不但没降,还把热量吹回TEC。散热器设计时记得标注气流方向,热风一定要和冷端隔离,不能回流。热端和散热器之间也必须涂导热硅脂,而不是靠“贴合紧”,空气的导热系数只有0.026W/(m·K),是差得不能再差的导热介质,缝隙里藏空气等于给热量修了一堵墙。

3.4 温度传感器选型与放置位置

温度传感器放哪里,直接影响闭环控制的效果。常见选择有NTC热敏电阻、PT100铂电阻、DS18B20数字温度传感器。NTC性价比高、响应快、灵敏度高,但非线性强,需要查表或多项式拟合;PT100线性好、精度高,适合精密温控,但成本略高;DS18B20胜在数字接口免校准,但温漂和采样延迟相对明显。

如果你只关心被控对象的温度,传感器尽量贴在冷端负载表面、靠近被控器件;如果你需要保护TEC本身,还要同时监控热端温度,防止过热损坏。我见到不少初学者把NTC用双面胶贴在TEC冷端铝块上,热阻大、响应慢,PID的参数怎么调都振荡。正确做法是开槽埋入铝块内部(孔径和传感器直径一致,用导热硅脂填充),让传感器和铝块热接触最大化。一个容易忽视的细节是传感器引线也要做热沉处理——如果没有固定好,引线会成为传导漏热的通路,导致读数偏高。

4. 温控闭环如何调试:用PID把温度“粘”在目标值

硬件搭好后,温控系统的灵魂在软件闭环。控制TEC的算法虽然可以比PID更花哨(比如模型预测、模糊控制),但在绝大多数TEC温控场景,把PID调好已经够用,而且更稳定、更易排查。首要一条是搞清楚被控对象的热惯性与滞后。

4.1 温控对象的“大惯性”问题

TEC与负载组成的系统热惯性非常大,从电流变化到温度变化体现出明显的非线性滞后。纯P控制会留下残差,要加入积分项来消除稳态误差;但积分项过强,又容易引发超调和持续的周期振荡,尤其在热惯性大的系统上,振荡周期可能长达几分钟,调试时务必耐心观察,别被前几十秒的假象误导。

一个典型的温度阶跃响应曲线:上电后温度快速逼近目标,超过目标后衰减振荡,最后稳定下来。如果振荡持续时间超过数个周期或者振幅越来越大,最常见的罪魁祸首是积分时间常数太小。我把PID的三个参数放在一个表里,参照这个表可以快速定位问题。

  • P偏大:快速振荡 / 发散
  • I偏大:低频振荡、超调明显
  • D偏大:高频抖动、噪声被放大
  • 三者都偏大:系统完全发疯,输出剧烈跳变

用纯P控制先固定P值,让系统先达到一个“稳定的振摆状态”,再逐步加上积分。积分时间从大往小调,观察稳定情况。微分项在TEC系统里不一定要用,因为热系统带宽低,温度传感器噪声本身就容易被微分放大,除非你做好了传感器滤波,否则建议D值先置零。

4.2 PWM输出与“死区”问题

PID的输出最终要映射到PWM占空比上。H桥+PWM方案里,PWM的频率和死区设置直接影响驱动波形质量。死区时间太小,上下桥臂直通发热,MOS管温度飙升;死区时间太大,电流输出存在畸变,控制精度下降。一般参考驱动芯片的数据手册,设置200ns~1μs比较常用,具体以实测波形为准。

还有一个容易被忽略的坑:PWM占空比“死区”附近的非线性区。TEC两端电压很低的时候,电流非常小,但PWM的最小可分辨占空比有限,输出会不连续,导致PID输出在小信号时失准。应对办法是给驱动加一个最小占空比限制,或者使用模拟线性驱动方案处理小信号区。恒流源驱动模式则更平滑,但如果驱动环路带宽跟不上,也会限制PID的调节速度。

4.3 自动整定与手动整定的取舍

市面上很多温控器支持自整定,原理是让系统在目标温度附近做一个阶跃或正弦扰动,观察响应来反推PID参数。在热惯性小、噪音小的系统上自整定非常好用,一套下来基本就能稳定。但TEC系统的滞后经常骗过自整定逻辑,整出来的参数实测振荡很多。所以我的习惯是:自整定参数作为初始值,再根据振荡曲线手动微调。调参时可以使用示波器或串口绘图工具观察温度曲线和PWM输出。

具体操作要点是:先把目标温度设在常温附近,观察启动时的阶跃响应,记录上升时间;然后逐步增大P值让超调量在10%~20%之间;再慢慢减小积分时间,让稳态误差消失;最后检查稳态波动范围,如果波动超过期望,回头审视传感器放置位置和驱动纹波,而不是继续调PID。另外,系统启动时TEC的浪涌电流很大,需要做软启动限流:初始PWM占空比从0慢慢爬升到目标值,通常10~15秒内完成,这样既保护了TEC又不会让温度过冲太严重。

5. 常见问题与调试心得:实测出来的避坑清单

这部分内容是我在这些年用坏了一整抽屉TEC之后总结出的经验,每一条都对应过一次真实的“翻车”现场,现在整理成速查表,可以直接对照排查。

现象可能原因检查顺序
冷端温度降不下去热端散热不足先测热端温度,超过60℃优先处理散热器
电流很大但制冷效果差热端温度过高、TEC已部分失效断电后测TEC内阻,对比新品数据
温度波动持续振荡PID参数不合适先减小积分强度,再看P值
温度上电过冲很大没有软启动查PWM初始占空比
热端温度异常高散热风扇故障/反向查看气流方向、风扇转速
冷凝水导致短路冷端保温不良检查保温罩密封性,必要时用防潮胶封装

冷凝水问题是被低估的杀手之一。冷端温度低于环境空气露点时,空气中的水蒸气会在冷端表面凝结成水珠,滴到电路板上直接短路。我对策有三层:第一层,冷端表面整体包裹闭孔橡塑保温棉,减少与空气的接触;第二层,对PCB和接线端子做三防漆或灌封处理;第三层,在高湿度环境下,可以考虑做露点检测,当接近露点时自动提高冷端目标温度。但凡做过一次冷凝水短路烧板子,你就知道这三步有多重要。

热循环应力是TEC老化的另一个主导因素。反复的升降温会让内部焊点经历热胀冷缩,时间久了焊点疲劳、断裂,TEC制冷量下降。所以系统设计时要避免不必要的冷热交替,用PID把温度控制在窄范围内,而不是让它频繁开关。还有选型时尽量挑选质量稳定的品牌,我比较过廉价片和品牌片,同样的工作条件和时间,廉价片一年内制冷量衰减了约20%~30%,品牌片两年衰减不到10%,差价翻倍都值。

电磁干扰则是做集成时很难避开的坑。PWM驱动TEC的瞬态电流变化会产生噪声,耦合到温度传感器或模拟前端后很容易造成采样值跳变。对策是驱动线路用双绞线或屏蔽线,传感器线路远离功率线路布局,或者在地平面做分割。

选型预算可以这样估:如果要求的温差小于15℃,热负载小于50W,用普通风冷TEC完全够;如果温差要25℃以上或热负载100W以上,就要上双级TEC、水冷模块,甚至换压缩机制冷。万事先算热负载,再选TEC型号,千万别拍了脑门就下单。这个先后顺序,值得每一个温度控制项目的负责人多花半天时间反复核对。

6. 从项目复盘看温度控制的落地要点

当时做那台需要控温的精密检测装置,总共用了两片TEC、一套水冷板加一台微型水泵。首版样机出来效果很差,冷端到不了目标温度。从那一次开始我做了一张检查表,每次TEC系统无法达标时都要过一遍:

  1. 热端散热器热阻是否真的达标?实测热端温度多少?
  2. 冷端漏热是否控制好?保温棉、密封胶有没有做好?
  3. 驱动电流是否足够?电压有没有被限流?
  4. 传感器读数是否可信?有没有被引线导热影响?
  5. PID参数是否还被初始值卡着?环路调节得够不够?

这张表解决的问题,比任何模拟仿真都多。实际调测中我发现,首版样机的瓶颈常常不在电路或算法,而在机械结构的热设计。比如负载块与TEC冷端之间的接触面没有精细打磨,中间夹着一层厚厚的空气,热阻就大了;解决方法是把接触面研磨平整,涂导热硅脂,或加一层铟片。别看这些小细节,往往就是“差几度”的来源。

另外,TEC性能随热端温度的变化非常显著。我测过一片TEC,热端温度分别控制在35℃、50℃和65℃时,同一个负载条件下冷端温度明显不同。热端每降低10℃,冷端就能多拉下3~5℃。这就解释了为什么很多实验室设备非要上水冷——不是为了酷,是为了把热端温度压住,换取更低的冷端极限温度。如果你的产品允许,优先考虑水冷系统,或者至少用热管散热器替代纯风冷。

从产品维度看,TEC系统一旦立项,最好在项目早期就确认热端散热方式和冷端漏热预算,这两个数字直接决定TEC选型和电源功率。不要指望后期靠修改PID参数把物理性能不足“调”回来——温控算法只能控制现有系统能达到的温度范围,无法突破热力学的天花板。这个认知越早建立,项目返工次数越少。

我自己经手的TEC项目里,能把温度稳定在±0.1℃、连续运行数千小时不衰减的方案,无一例外都是在“热负载评估→TEC选型→热端散热设计→传感器布局→PID调试”这条完整链路上下过功夫的。如果你正在做类似的事情,别急着买TEC,先花半天把你需要控制的对象热负载算明白,这个准备时间能让你整个项目周期缩短一半。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/24 12:57:32

6DoF运动跟踪实战:从MPU6050到四元数姿态解算

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/24 12:57:19

CAN总线调试工具选型指南:CANTest、ZCANPro、USB-CAN Tool实测对比

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/24 12:56:50

ESP32-C3+0.96寸OLED低成本联网显示实战:接线、中文显示与排障

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/24 12:56:37

HFSS螺旋线圈建模教程:参数化设计、扫掠技巧与Optimetrics优化

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/24 12:56:31

端侧AI部署实战:模型瘦身、算力榨取与硬件协同优化

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/24 12:55:39

从零设计AI加速器:FPGA实现矩阵运算与存储优化实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华