简介:《热电阻Pt100测温电路》是一份面向硬件工程师、传感器开发者与电子类课程学习者的实战调试笔记,聚焦铂电阻测温方案从原理到落地的关键环节。内容围绕Pt100电阻与温度的非线性关系展开,讲解模拟校正与微处理器查表校正的取舍,比较两线制与三线制接法消除导线电阻的原理,并分别剖析桥式与恒流源式两种采样电路:前者以TL431基准配合LM324差动放大,输出mV级压差信号;后者用运放构建等效恒流源,放大Pt100上的压降。文中还整理了放大倍数调整、零点设定、基准电源稳定性、恒流不超过1mA以免自热等设计与调试注意点。整包为1个PDF文件,约201KB,篇幅紧凑、图例与公式齐全。目前已有1354人学习,适合需要快速对照电路图排查测温偏差的读者。
1. 精度不在运放上:热电阻 Pt100 测温电路里最贵的那个错误
调试热电阻 Pt100 测温电路时,很多人第一反应是把 LM324 换成零漂移精密运放,觉得精度就上去了。实际搭出来会发现,换完运放,读数几乎没动;真正让误差从 ±0.5℃ 掉到 ±0.05℃ 的,是把电桥供电从 VCC 换成 4.096V 基准、把两线制改成三线制。原因很朴素:Pt100 每摄氏度只变 0.385Ω,整条信号链的绝对精度由基准源和引线电阻决定,运放只负责把已经带上误差的差模电压搬大,它搬不回被污染的原始信号。搞懂这条,才知道钱该花在哪儿。
2. 非线性校正:为什么 0℃ 到 100℃ 之间不能拿一条直线糊过去
2.1 那条曲线到底弯在哪:CVD 方程与灵敏度衰减
铂电阻的阻温关系不是一条直线,这是所有后续设计的起点。IEC 60751 给出的 Callendar-Van Dusen 方程长这样:0℃ 以上用二次多项式,0℃ 以下再补一个四次项。二次项系数是负的,意味着温度越高,每摄氏度带来的电阻增量越小——也就是灵敏度在衰减。这个衰减量在 100℃ 时还看不出来,到 600℃ 就相当可观了。
# Callendar-Van Dusen 系数(IEC 60751 标准铂电阻) A = 3.9083e-3 B = -5.775e-7 C = -4.183e-12 def r_of_t(t): """由温度反算 Pt100 电阻值,负温段要带四次项""" if t >= 0: return 100.0 * (1 + A * t + B * t * t) return 100.0 * (1 + A * t + B * t * t + C * (t - 100) * t ** 3) # 用 0.385Ω/℃ 这条"切线"去近似整条曲线,看误差能有多大 slope = 0.385 for t in (-50, 0, 100, 300, 600): r_real = r_of_t(t) r_lin = 100.0 + slope * t print(f"T={t:5d}℃ R_real={r_real:8.3f}Ω R_lin={r_lin:8.3f}Ω " f"偏差={r_lin - r_real:+7.3f}Ω ≈ {(r_lin - r_real) / slope:+6.2f}℃")跑一遍会看到,0℃ 和 100℃ 附近线性近似几乎无差,但 −50℃ 处差了 1℃ 出头,300℃ 处差了将近 9℃,600℃ 处差了四十多度。这就是为什么标称“−50~600℃ 全范围”的电路,如果只按 0.385Ω/℃ 换算,高温段的数据可以直接扔掉。参数 A、B、C 是标准常数,不是可调项;可调的是你怎么把这条曲线搬进你的系统里。
2.2 模拟校正的物理思路,和它精度上不去的根本原因
模拟校正的思路是:在放大器的反馈网络里加一段非线性元件,让增益本身随信号大小变化,从而把 Pt100 的弯曲“掰直”。常见做法是在反馈电阻上并一组二极管或者热敏电阻网络,让增益在特定区段发生折转,用几段折线去逼近那条抛物线。
这个思路在原理上完全成立,问题出在“折转点由什么决定”。二极管的正向压降本身带温度系数,大约是 −2mV/℃ 量级,环境温度一变,折转点就跟着漂。也就是说,你用一个会漂的元件去补偿一条固定的曲线,补偿量本身成了新的误差源。再加上电阻容差、运放失调、温漂,这几项叠加起来,模拟校正能做到 ±0.5℃ 已经算调得不错了。它适合成本敏感、精度要求不高的场合,比如只需要判断“有没有超温”的保护电路,而不是需要读出具体数值的测量电路。
2.3 数字化查表:把模拟域的所有不理想一次性吸收掉
数字化校正的做法是把曲线关系存进 EEPROM 或 Flash,运行时用实测 AD 码去查表,中间做插值。它的好处不只是“准”,更重要的是它把整条信号链的误差一次性吸收掉了——电桥电阻的容差、基准的实际值、运放的失调,全都在标定时体现在表里,不需要你逐个去算。
/* 表项按 ad 单调递增排列,t10 是温度值放大 10 倍(单位 0.1℃) */ typedef struct { uint16_t ad; int16_t t10; } pt_tab_t; extern const pt_tab_t g_pt_tab[]; /* 标定后写入 EEPROM 的表 */ extern const uint16_t g_pt_tab_len; int16_t pt_ad_to_temp(uint16_t ad) { uint16_t lo = 0, hi = g_pt_tab_len - 1; /* 先处理落在表两端的采样值,避免插值分母为 0 或外推 */ if (ad <= g_pt_tab[lo].ad) return g_pt_tab[lo].t10; if (ad >= g_pt_tab[hi].ad) return g_pt_tab[hi].t10; while (hi - lo > 1) { /* 二分收敛到相邻两点 */ uint16_t mid = (lo + hi) >> 1; if (g_pt_tab[mid].ad <= ad) lo = mid; else hi = mid; } int32_t dad = (int32_t)g_pt_tab[hi].ad - g_pt_tab[lo].ad; int32_t dt = (int32_t)g_pt_tab[hi].t10 - g_pt_tab[lo].t10; int32_t off = (int32_t)ad - g_pt_tab[lo].ad; /* 定点线性插值,+dad/2 实现四舍五入,全程不碰浮点 */ return g_pt_tab[lo].t10 + (off * dt + dad / 2) / dad; }这段代码有几个不能改的隐含前提。g_pt_tab必须严格单调,一旦标定过程中出现两个温度点落在同一个 AD 码上,二分就会失效,现象是读数在某个温度附近乱跳。表项间距决定插值残差,通常每 10℃ 一个点、段内残差就小于 0.01℃,比 ADC 分辨率小一个量级,不会成为误差瓶颈。二分查找是 O(log n),一张 65 点的表最多查 6 次,对任何 8 位机都不构成负担。
真正的关键在于表怎么来。用 CVD 方程反解生成表,得到的是“理想 Pt100”的曲线;用实测标定生成表,得到的是“你手上这套电路”的曲线。后者更准,因为它把电桥两臂的实际比值、基准的实际电压、运放的实际失调全都算进去了。血泪经验是:先用方程生成初版表让系统跑起来,再用两三支标准温度计在关键点做修正,把差值回写到表里。
3. 三线制与两线制:导线电阻是怎么被“抵消”掉的
3.1 两线制的误差量级:0.7Ω 引线换来 3.6℃ 偏差
工程的糟糕之处在于,理论上看起来不重要的项,实际算下来往往是最重要的一项。先把引线电阻的量级算清楚:铜的电阻率约 0.0175 Ω·mm²/m,一根 0.5mm² 的线,每米约 0.035Ω。现场布线 20 米很常见,单程就是 0.7Ω,两线制往返算两个单程,加起来 1.4Ω。
拿 1.4Ω 去除以 0.385Ω/℃,结论是 3.6℃。也就是说,在你的电路一通电还没开始测之前,就已经背了 3.6℃ 的系统误差,而且这个误差随室温变化——夏天机柜里 45℃、冬天 15℃,同一根线的电阻能差出十几毫欧,对应零点零几度的漂移。对你的客户来说,这就是“表不准”,你怎么解释都没用。
更麻烦的是这项误差不可标定。你在实验室用 1 米短线标出来的表,装到现场 20 米线上去用,表就作废了。这不是精度问题,是标定的可迁移性问题。
3.2 三线制:把引线电阻塞进相邻桥臂做一阶抵消
三线制的核心动作是:在 Pt100 的两端各引一根等长的线,这两根线分别落在电桥的相邻两个桥臂里,第三根线只接到放大器输入端,不参与分压。这样两个桥臂同时增加了相同的电阻 r,在平衡方程里一加一减。
把电桥输出写成两臂分压之差更直观:
Vout ∝ (Rpt + r) / (R1 + Rpt + r) - (Rvr2 + r) / (R1 + Rvr2 + r)其中 R1 = R2 = k 是两个固定桥臂,r 是引线电阻。对 r 求偏导,两项的导数分别是 k/(k+x+r)²,只要 Rpt ≈ Rvr2,这两个导数就近似相等,一阶项相互抵消,剩下的只有二阶残差。
这就是三线制“消除导线电阻”的真实含义——不是物理上删掉,而是让它在方程里自我抵消。一阶抵消意味着在零点附近效果最好,越偏离平衡点残差越大。以 100Ω 桥臂、0.7Ω 引线为例,从 0℃ 跑到 600℃ 时,残余误差可以到零点几度的量级,比两线制的 3.6℃ 好了一个数量级,但没到“完全消除”。
3.3 抵消的边界:三个前提被打破时会怎样
三线制不是免费午餐,它建立在三个前提上,任何一个被破坏都会翻车。
第一,三根线必须等长、同材质、走同一根电缆、处在同一温度环境里。如果现场图省事用了不同批次的线,或者一根线走了桥架另一根走了穿管,电阻和温度系数都不一样,抵消就退化成部分抵消,误差可能比两线制还难看——因为两线制的误差至少是单调的,而失配的抵消会产生方向不确定的偏差。
第二,第三根线必须接在高阻节点上,不能有电流流过。这就要求放大器的输入阻抗足够高。原文特别提到要增大运放的输入阻抗,道理就在这里:如果第三根线上有哪怕几十微安的电流,它产生的压降就会直接叠加到差模信号上,前面辛苦做的抵消白费。
第三,桥臂电阻 R1 和 R2 本身要匹配。三线制抵消的是“两根引线相等”这件事,前提是两个固定桥臂也相等。如果用 1% 精度的电阻,两个 2kΩ 最多能差 40Ω,这个失配量远大于引线电阻,会把抵消效果吃掉一大半。要真正发挥三线制的作用,桥臂电阻至少得上 0.1% 或者做配对筛选。
如果连这些都嫌麻烦,还有四线制:恒流源激励、差分高阻取样,电流回路和电压取样回路完全分开,引线电阻彻底不参与测量。代价是多两根线、多一路差分输入,成本摆在那儿。
| 接法 | 引线数量 | 残余误差量级 | 适用场景 |
|---|---|---|---|
| 两线制 | 2 | 1~5℃(取决于线长) | 短线、精度要求低、只做趋势判断 |
| 三线制 | 3 | 0.1~0.5℃ | 常规工业现场,线长几十米内 |
| 四线制 | 4 | <0.05℃ | 高精度计量、短线、实验室 |
4. 采样拓扑:桥式电路和恒流源电路各自在赌什么
4.1 桥式的零点设定:VR2 调到对应的阻值意味着什么
桥式电路的结构是:R1、R2 两个固定臂,VR2 和 Pt100 两个测量臂,四臂构成惠斯通电桥,中间取差模电压。R1 = R2 时,零点条件就是 VR2 = Pt100 在零点温度下的阻值。
如果想让 25℃ 成为零点,就把 VR2 调到 25℃ 对应的阻值。按标准方程算出来是 109.73Ω 左右,不同资料给出的数字会略有出入,差异来自各自采用的近似模型。工程上更稳妥的做法不是照着一个算出来的数去拧电位器,而是把传感器放进 25℃ 的恒温环境,一边看放大器输出一边调,直到输出落在你期望的零点电压上。
这里有个原文点出的坑,而且踩的人特别多:电位器的阻值必须在没有接入电路时测量。接入电路后,电位器与相邻桥臂并联,你在板上量到的阻值是网络等效值,不是它本身的阻值。按这个数去算零点,算出来的温度整体偏移,还不容易发现。
4.2 差动放大与负反馈:接成正反馈为什么直接废
电桥输出的是毫伏级差模信号,必须放大才能进 ADC。典型的差动放大结构是 R3 = R4、R5 = R6,增益等于 R5/R3,用单一 5V 供电。这个结构的成立条件是运放工作在线性区,而线性区的必要条件是负反馈——输出通过反馈网络回到反相输入端。
接成正反馈会怎样?输出一旦有微小扰动,反馈会把它放大并送回输入端,输出迅速撞到电源轨并锁死在那里,形成迟滞或者振荡。现象是输出要么贴 0V、要么贴 5V,中间的信号完全看不到。这种情况下你调什么参数都没用,因为电路已经不在放大器的工作区间里了。
原文提到有人建议“只有接正反馈才能工作”,导致整块板重做,这不是笑话。判断反馈极性有个不依赖记忆的办法:断开反馈电阻,给输入端加一个小信号,看输出往哪个方向跑,再决定反馈接到哪个端。上电之前用万用表通断档顺一遍反馈路径,比事后返工便宜得多。
改增益就是改 R5/R3 的比值,这一步决定了你的量程和分辨率怎么分配。增益调大,分辨率上去了,但量程被压缩;增益调小,量程够了,但每一度对应的码值变少。这是整个设计里最需要提前算清楚的一笔账。
4.3 恒流源是怎么从虚短虚断里推出来的
恒流源式的思路更绕一点,但推完会发现它其实很干净。电路用两个运放:U1A 把 4.096V 基准“翻译”成恒流,U1B 把 Pt100 上的压降放大。
推导只用两条理想运放的基本假设。虚短给出同相端和反相端等电位,V+ = V− = 4.096V。虚断给出流入运放输入端的电流为零,于是在反相端节点上,流出到 R1 的电流等于从 Pt100 流回来的电流:
(0 - V-) / R1 + (Vo - V-) / RPt100 = 0整理出 Vo,再减去 V−,就得到 Pt100 上的压降:
VPt100 = Vo - V- = V- × RPt100 / R1V− 和 R1 都是常数,所以这条支路等效于一个恒流源,电流大小是 V−/R1,而 Pt100 上的压降只跟它自己的电阻值有关。这就是恒流源式的全部秘密——它把“测电阻”变成了“测一个正比于电阻的电压”,而且这个比例关系跟引线电阻无关(只要引线不在电流回路和取样回路的公共段上)。
放大级 U1B 是标准差分放大,增益 R4/R3。按图上的 470k/47k,增益是 10。整条链路的灵敏度可以算出来:1mA 电流下,0.385Ω/℃ 产生 0.385mV/℃,放大 10 倍是 3.85mV/℃。配 4.096V 基准的 12 位 ADC,1 个 LSB 约 1mV,对应约 0.26℃。这个分辨率够用了。
4.4 自热与供电裕量:1mA 这条线不是玄学
恒流源式有一项桥式电路没有的副作用:电流是持续灌进 Pt100 的,不像桥式那样在平衡点附近几乎没有净电流。所以自热必须算。
功耗是 I²R。按图上 R1 = 3.3k、基准 4.096V,电流是 1.24mA,Pt100 在 100Ω 时功耗约 0.15mW。这个数看着小,但探头封装在静止空气里时,自热系数可以到 0.2~0.5℃/mW 的量级,折算下来 0.03~0.08℃ 的温升。对于目标是 ±0.1℃ 的设计,这个量已经吃掉一半精度预算了。所以要么把 R1 加大到 4.7k 以上把电流压到 1mA 以内,要么在液体或者良好导热的结构里用——后者自热系数小得多。
另一项是供电裕量。单一 5V 供电时,LM358 这类运放的输出上限大约在 VCC − 1.5V,也就是 3.5V 左右。按 1.24mA、增益 10 算,600℃ 时 Pt100 压降约 389mV,放大后是 3.89V,已经超过输出上限,输出会饱和在 3.5V 附近,高温段读数直接卡死。这也是为什么原文建议温度波动大时改用 ±15V 双电源——不是为了“更稳”,是为了给输出留出摆幅。做设计时把最高温度对应的输出电压算出来,跟运放的输出摆幅对一遍,这个动作花不了五分钟,能省掉一轮改板。
| 对比项 | 桥式电路 | 恒流源电路 |
|---|---|---|
| 激励方式 | 恒压,电桥分压 | 恒流,压降正比于电阻 |
| 引线影响 | 需三线制补偿 | 天然对引线不敏感 |
| 零点调整 | 调 VR2 改变零点温度 | 调基准或软件偏置 |
| 自热 | 平衡点附近净电流小 | 持续电流,需核算 |
| 输出摆幅 | 双向,可正可负 | 单向,占用电平区间 |
5. 避坑与排查:那些让板子返工重做的细节
5.1 现象:零点怎么调都对不上,偏差稳定存在几度
原因:电位器在接入电路的状态下测量阻值。板上量到的读数包含了相邻桥臂的并联效应,跟电位器本身的阻值不是一回事,按这个数算零点必然偏。更隐蔽的是,有些人在断电状态下量,忽略了电桥其他支路仍然构成通路。
解决:把电位器从电路上拆下来,或者至少断开一端,在开路状态下测量和调节。更好的做法是干脆不测阻值,直接给传感器一个已知温度环境,边看输出边调。零点这种东西,最终以输出为准,不以元件参数为准。
5.2 现象:白天测得准,晚上差 0.5℃,或者空调一开读数就跳
原因:电桥的正电源直接接了 VCC。式(1)里可以看到,输出正比于基准电压,VCC 一波动,输出同比例变化。而你的温度-电阻表是在某个特定 VCC 下建立的,VCC 变了,表就失配了。网压波动、负载切换、USB 供电不足,都能造成这种漂移。
解决:电桥正电源必须接稳定的参考基准,比如用 TL431 分压产生 4.096V,而不是直接吃 VCC。判断方法很简单:拿万用表盯着基准电压,同时开关一个 nearby 的大负载,如果基准动了几十毫伏,读数就一定会跟着动。参考基准的温漂指标也要看一眼,几十 ppm/℃ 的基准在 −40~85℃ 环境里能带来零点零几度的漂移,这个量级通常可以接受。
5.3 现象:温度一升高,读数就不再增长,卡在某个值上不动
原因:放大倍数定得太大,输出在高温段撞上了运放的输出摆幅上限。这不是 ADC 饱和,是运放先饱和了,所以你在 ADC 端看到的是一条平线,还以为是软件卡死。前面算过,5V 单电源、增益 10 的恒流源电路,高温段输出会超过 3.5V 的实际上限。
解决:先把最高温度对应的理论输出算出来,跟运放的输出摆幅对一遍。摆幅不够有三种改法——降低放大倍数、抬高供电电压、缩窄量程。三种都要重新核算分辨率,别解决了饱和又丢了精度。
5.4 现象:读数缓慢向上爬,几分钟后才稳定,断电重启又重复
原因:自热。恒流源的电流超过了传感器封装能够散掉的热量,敏感元件自身的温度高于被测介质,读数就会一路往上爬,直到热平衡。这种现象在静止空气里最明显,在搅拌的液体里几乎看不到,所以实验室测不出来,现场一装就暴露。
解决:把激励电流压到 1mA 以内,必要时降到 0.5mA 再配合更高增益。同时确认探头的安装方式——插入深度不够、导热硅脂没涂、保护套管和介质之间有空气隙,都会让自热系数变大。排查方法是:把电流减半,看读数是否往下掉一点点,如果掉,说明自热确实在起作用。
5.5 现象:放大倍数一调,输出就失真、非线性明显
原因:放大级的输入阻抗不够,或者桥臂电阻取值太小,导致前级被后级加载。差分放大级的输入阻抗由 R3、R4 决定,取值太小时会从前级吸取电流,把电桥的平衡状态带偏。原文提到要把 R2、R3 取足够大来增大输入阻抗,说的就是这件事。
解决:把差分放大级的电阻整体抬上去,比如从 47k/470k 抬到 100k/1M,同时注意运放的偏置电流乘上这个大电阻后产生的失调——这时候就要选偏置电流小的运放,否则失调电压会抵消掉提高阻抗带来的好处。这是一对相互制约的参数,不是单方向调大就好。
6. 设计取舍:桥式还是恒流源,什么情况下该认输换方案
桥式和恒流源没有绝对优劣,选型取决于你的约束条件落在哪一侧。
如果你的系统里已经有稳定的基准、线长不超过几米、量程集中在中低温段,桥式电路更省事。它的输出是双向的,零点天然落在中间,正负温区都能覆盖,配上三线制补偿后精度足够应付绝大多数工业场合。它的代价是需要一颗精密电位器来做零点,而电位器本身是长期漂移源,量产时需要标定工位。
如果你的线缆要走几十米、现场电磁环境复杂、或者探头需要频繁更换,恒流源式更合适。它的压降只跟 Pt100 自身电阻有关,对引线不敏感,可靠性更高。代价是自热必须在设计阶段就算清楚,以及单向输出会占用电平区间,高温段容易撞摆幅。
真正的分水岭其实是精度目标。要 ±0.5℃,桥式加三线制就够;要 ±0.1℃,桥臂电阻必须配对、基准必须低温漂、自热必须核算、非线性必须查表校正,这四项缺一项就达不到;要 ±0.02℃,就得考虑四线制加恒流源加高分辨率 ADC,成本上一个台阶。
还有一条经常被忽略的:当模拟域的误差已经压不下去时,不要在模拟域继续死磕,把问题挪到数字域去。查表法之所以能一劳永逸,是因为它承认“模拟电路永远不理想”这个事实,然后用一次标定把不理想全部记录下来。从那以后,我每次搭这类电路,都会在 PCB 上预留一个标定接口,先把表建起来再谈精度,而不是先纠结运放型号。希望帮到你。
本文还有配套的精品资源,点击获取