在许多电子测量系统中,负温度系数(NTC)热敏电阻由于成本低廉且接口简易而被广泛使用,但其测量精度与线性度有限。本文探讨是否能用铂电阻温度传感器(PRTD)直接替代NTC,无需大幅修改原有电路,即可实现更宽的测量范围与更佳的线性度…
首先简单地说明这个设计实例的背景:最近我发现在我自制的一支雨量计上,气体温度传感器开始出现异常。短期的解决方案是先修好它(已完成),但从长远来看,我希望能彻底进行改进——这便是本文的起点。
这款气体传感器采用一颗标准的Vishay负温度系数(NTC)热敏电阻,其规格为25℃时10kΩ,β值为3977。它与负载电阻组合后,输出电压送入一颗PIC微控制器(MCU),以8位分辨率取样,并经由无线电链路传回主机端进行处理与显示。图1显示了这个典型电路及其对应的温度响应曲线。

图1:基本热敏电阻电路与计算得到的温度响应曲线。
看似奇怪的是,该负载电阻的阻值为15699Ω,但这正是该热敏电阻在15℃时的电阻值——也是我的理想测量范围——-9℃至+40℃的中点。每隔大约30秒,PIC会启动一次测量,持续时间足以让读数趋于稳定。
图中曲线显示计算所得的响应,并叠加一条直线,通过两个实际校准点:0℃ (碎冰融化点)与30℃ (与已知准确的温度计比较)。此响应曲线并非使用简化指数近似式计算,而是采用更精确的Steinhart–Hart (S-H)方程。
S-H在NTC热敏电阻中的角色,就如同Callender-Van Dusen (CVD)对铂电阻温度传感器(PRTD)的作用:S-H修正指数曲线,而CVD修正原本接近线性的关系。
虽然相关维基百科的词条已有相当详尽的说明,不过Vishay数据表第4页提供了更实用的S–H方程式与完整常数作为参考。有趣的是,Vishay的温度—电阻对照表采用截断值而非四舍五入值,因此将本组件的R15标为15698Ω,而非15699Ω。依S–H方程式计算,实际值为15698.76639545805…Ω,误差仅在皮欧姆等级。
为什么图是倒置的?你可能注意到图1的曲线是倒过来的!这是刻意设计的:实际上温度升高时电压会下降,但我将输出图形设计成温度升高时向上,以便更直觉地呈现数据。我觉得这样更符合人类直觉。
将PRTD匹配至NTC
前述那条通过0℃与30℃两点的直线,正是此设计构想的关键。若能让PRTD产生与该直线相符的输出信号,就能在不大幅修改处理程序代码(特别是校准部分)的情况下,直接取代NTC。此外,PRTD测量范围更宽,精度更高。
由于热敏电阻电路输出电压是比例式的,因此PRTD的输出电压也必须是电源电压的一个比例。为此,需要放大PRTD两端电压、补偿CVD曲线的线性偏差,并加入适当偏移。
能同时完成这三项的最简单电路如图2a所示。

图2:最简单的PRTD输出仿真热敏电阻响应电路:2a为原始版本,2b为稍加改良版本。但这两个电路都存在缺陷,组件值尚未优化,仅用于说明原理而非实际设计。
这种简化设计带来新的复杂性:图2a中几乎每个组件都会互相影响。即便在理想(仿真)组件条件下,设计已相当棘手,而实际校准可能需数小时反复调整。图2b中,通过对偏移电压缓冲可略为改善,但多出的运算放大器其实还能更有效地利用。
实际电路设计
将电路拆成两部分,设计与校准将会更容易,如图3所示。

图3:最终可行电路示意,放大与偏移电路分离,使校准大幅简化。
MCU通过启动Q1供电(原先控制热敏电阻的GPIO引脚为高电平启动,现需改为低电平以驱动Q1栅极,这是唯一程序代码修改)。FDC604导通电阻(RDS(ON))低至仅数十毫欧,压降约100µV,即使ADC参考为Vdd轨,影响也微乎其微。(MCU内部偏移可能更大)
电路每半分钟仅启动约1毫秒,PRTD自加热可忽略。系统消耗电流约为5V时3mA,3.3V时2mA。
R1将电流导入PRTD,产生的电压由A1a放大,其增益可由R5调整。R6反馈至PRTD与R1,补偿CVD及PRTD电阻变化造成的驱动电流差异。R6阻值相当关键:33kΩ足够,但更精准设计可用31.95—33kΩ||1MΩ,理论上在100℃范围内误差不到1毫度。虽然对8位输出而言过度精准,但若仅增加一个电阻即可消除误差,值得采用。
A1b进一步放大(并反相)信号,提供可调偏移。其输出以电源电压比例表示,与PRTD温度直接成正比。值得注意的是,增益预设:R7/R8比值应尽量接近3.9,而绝对阻值不敏感。其结果如图4所示。

图4:将输出对PRTD电阻作图后,几乎与理想直线重合,对应的理论误差小于1毫度,展示了此电路的性能极限;实际使用时不必期望完全达到此精度。
建模与绘图
使用简单程序(Python搭配Pygame)可在不同尺度下绘制电路工作,方便观察R6与A1a增益变化的影响:曲线倾斜表示增益误差,曲线弯曲表示补偿误差。这条曲线需尽量平直。
第一阶段建模需要反复迭代,初始假设以1单位电压通过R1,并以约0.7单位施加于R6。计算PRTD两端电压并放大,即得到此阶段输出,可反馈至R6再次计算V_RTD。反复计算直到连续结果在八位有效数字内收敛,通常不超过十次迭代。A1b阶段较简单:将A1a输出乘以3.9,并扣除偏移即可。
为了交叉验证,我将计算结果输入Ltspice仿真,得到几乎一致的结果。微小差异可能是因为即便是模拟运算放大器也存在有限增益,而非单纯的计算不同。
方程式生成表1,列出PRTD在不同温度(以15℃为中心)的电阻值及对应输出电压,并以Vdd比例表示。输出亦以0–255范围表示,包括十进制及十六进制值。
这些数值均已四舍五入为合理长度,但仍超过一般测试套件分辨率。数字过多或过少都不理想,但至少保证精度足够。

表1:PRTD电阻与图3电路输出对应温度(以15℃为中心),输出以原始十进制、四舍五入十进制及十六进制表示。
长导线补偿
目前的电路尚不适合直接针对PRTD长导线进行真正的3线或4线补偿——对于电阻值高达数kΩ的NTC来说,这种补偿是不必要的。然而,采用4线Kelvin接法,将供电线与传感线分开,应能有效减少导线影响,如图5所示。在PRTD与电路之间距离不足1米时,我使用了扬声器线——铜线的温度系数(TCR)接近PRTD的TCR。

图5:PRTD长导线可能造成偏移误差。采用4线Kelvin接法可将此类误差降到最低。如果MCU ADC具有外部参考电压引脚,可由电路驱动,以提升理论精度。
图5同时展示了如何将ADC参考电压引脚接到电路电源轨来改善精度,虽然对粗略取样而言意义不大。此外,这也可补偿Q1造成的压降(若该压降重要的话)。若需要,Q1甚至可以省略,电路直接由GPIO直接供电,虽然这会降低电源轨电压,但如果将电压反馈到REF+,则无关紧要。
此电路的优化设计以25℃为中心,因为大部分热敏电阻的规格皆以此温度为基准,负载电阻也等于R(25)值。与图3中以15℃为中心的版本不同,我尚未实际制作或测试此电路,但相信其表现应该很稳定。理论误差曲线与图4几乎一致,只是整体曲线向右平移了约10℃。
理论与实践误差
运算放大器的输入偏移电压会随温度改变,是潜在误差来源。以MCP6002为例,其典型输入偏移变化率为±2µV/℃,虽然不大,但也不可忽略。将电路加热约40℃ (以100Ω电阻取代PRTD)后,输出偏移对应温度误差不到0.05°,还可接受,而且与计算一致。(老式吹风机是我工作台的固定工具之一)此电路与PRTD将置于户外,两者温度大致相同,因此环境对性能影响有限。
实际测试目前电路已依图3搭建并校准完成,但尚未安装。测试使用一个由固定电阻、可变电阻与开关组成的PRTD仿真器,可将电阻连接到电路或经过精准校准的万用表,以便精细调整。仿真温度从-10℃到+50℃测试时,输出误差如下:
-10℃时:误差为0
+50℃时:误差为-0.22°
无论供电为3.3V或5V,结果均相似。若进一步微调(例如R7/R8比值略微不匹配),误差还可进一步改善,但现有误差已小于MCU的8位分辨率(~0.351℃/计数,或约2.85计数/℃),足以完成预期功能,且表现良好。
结语与应用建议
虽然此方法无法完全取代正统的PRTD电路,但它是一个理想的热敏电阻替代方案,提供更宽广的测量范围与更佳线性度,而且无需额外处理。希望真正的专家不会对此设计挑剔过多。
顺道一提,这里所谓的“专家”一词,其实是说“你经过艰苦经验学到的东西:亲身历练,吃过苦头”(stuff you’ve learned the hard way: been there, done that, worn the hair shirt)。除非你的目标是找到一张舒适的椅子,否则别太相信那些只会坐在沙发上“纸上谈兵”的专家。
文章来源:EDN电子技术设计