做PT100测温的硬件,说难不难,说简单也真不简单。我最早入门时也觉得这东西不就是一颗铂电阻加个ADC的事,结果被项目里的精度要求反复按在地上摩擦:同一块板子,换根线读数就偏,换台电源又偏,温度一上去数字就开始漂。最后我才明白,PT100本身只是一颗传感器,真正决定“精密”二字的,是一整套电路设计、接线方式、器件选型和校准流程的配合。这篇硬件手册,就是把我之前做PT100精密测温电路时踩过的坑、试过的方案和最终沉淀下来的设计思路整理出来,适合刚接触模拟测温的硬件工程师,也适合想把手头仪表测温精度再往上提一档的嵌入式开发。文章会从原理讲到接线,从器件选型讲到参数计算,最后给出一份可以直接抄作业的四线制测温电路实操方案。
1. 拆解精密测温的底层逻辑:PT100为什么难做
1.1 从0.385Ω/℃开始理解信号有多小
PT100本质上是一颗正温度系数的铂电阻,IEC 60751标准规定它在0℃时阻值正好是100.00Ω,在100℃时阻值约138.51Ω。按这个数据算,0到100℃的平均灵敏度大约是0.385Ω/℃。单看这个数值,你可能觉得很容易处理,但把它放进电路里一算,问题就暴露出来了。
假设你用一个1mA的恒流源给PT100供电,温度每变化1℃,PT100两端的电压只变化0.385mV。这是什么概念?普通12位ADC在2.5V参考电压下的1个LSB大约是0.61mV,也就是说,直接采集的话,1个数字跳变对应的温度可以达到1.6℃。如果项目要求的测温精度是±0.1℃,光靠12位ADC是不可能完成的,必须在“激励电路”“信号放大”“ADC位数”“噪声抑制”这几个方向上想办法。
PT100电阻与温度之间也并非严格线性。0到100℃区间用线性近似误差还不算大,但做0到200℃甚至更大跨度测量时,非线性就必须处理了。IEC 60751给出的近似公式为Rt = R0 × (1 + A·t + B·t²),其中A约为3.9083×10⁻³,B约为-5.775×10⁻⁷。在200℃时,如果直接按线性0.385Ω/℃计算,阻值会偏大好几欧姆,换算成温度会有数摄氏度的偏差,所以精密测量要么分段查表,要么用多项式拟合,这一点后面讲到软件补偿时再展开。
1.2 恒流源激励与比例法:为什么比例法是工程首选
想要把PT100的电阻变化转换成ADC能读取的数字,最直接的方法是给PT100通过一个恒定电流,然后测量它两端的电压。这就是恒流源激励法。第二种方法则更巧妙,用一个相同的电流同时流过PT100和一个精密参考电阻Rref,分别测量两个电阻上的电压,然后把两个电压相除,得到PT100与参考电阻的阻值比,再换算成温度。
我自己的经验是:恒流源激励法听起来简单,做起来却绕不开“恒流源性能”这道坎。普通三端稳压芯片加电阻凑出来的恒流源,电流会随环境温度、电源电压变化,哪怕只漂移1μA,在100℃时就能给测温结果带来约0.1℃的偏移。精密运放加基准源构成的恒流源当然可以做得很好,但成本和PCB面积都会上去。
相比之下,比例法对电流源的绝对值要求降低了很多。因为PT100和Rref流过的是同一个电流,电流的任何变化都等比例地体现在两个电压上,测量比值时电流的绝对值就被消掉了。实际电路里,我习惯把ADC的参考电压直接接到Rref两端,让ADC用Rref上的电压作为转换参考,这样ADC读到的码值天然就是Vpt除以Vref,也就是Rpt除以Rref,不用做任何复杂的换算,电流源漂移、参考电压漂移都自动抵消掉了。这个方法实测下来非常稳,是精密测温工程项目里最可靠、最高效的方案。
2. 接线方式决定误差上限:二线、三线与四线制
2.1 二线制为什么做不了“精密”
二线制测温是最简单的接法:两根导线把PT100和测量电路连起来,恒流源流过导线到达PT100,电压测量也是在这两根线上完成。问题是,测量端读到的电压,包含了导线电阻上的压降。
以1mA激励电流、每根导线电阻0.5Ω计算,两根导线一共引入1Ω的额外电阻,体现在测温结果上就是温度偏高了大约1除以0.385,也就是2.6℃。这还只是用了0.5Ω导线的情况,现场如果线缆更长或者线径更细,导线的引入误差会成倍放大,而且导线电阻本身还会随环境温度变化,这种误差不是简单校准一次就能消除的。所以二线制只适合测温精度要求不高的场合,比如设备外壳的温度指示、简单的温度报警,谈不上“精密”。
2.2 三线制:工业现场的折中方案
三线制的思路是让测量电路能够把导线电阻“对消”掉。工业温度变送器、PLC模拟量采集模块里应用最广的接法,是让两根相同规格的导线分别接在电桥的两个相邻桥臂上,导线电阻在电桥平衡条件下相互抵消,第三根线则用于补偿电源线或提供参考电势。也可以在恒流源激励加仪表放大器的方案里,用三线制来做开尔文补偿,只是效果逊于四线制。
三线制的优势是比四线制少一根线,长距离敷设时线材成本更低,现场施工也更方便。在100米以内的工业现场,用三线制配合适当的校准,把系统误差控制在±0.2℃以内通常不难。缺点是它依赖导线长度、电阻对称性,如果两根导线的实际阻值差异较大,抵消效果就会打折扣,所以做三线制时,务必选用同规格、同长度的线缆,并且尽量减少中间接头。对精度有更高要求的实验室环境,我一般直接跳到四线制。
2.3 四线制:开尔文连接让导线电阻彻底“出局”
四线制是精密测温最可靠的电气连接方式,它把电流回路和电压采样回路完全分开。PT100的两端各接两根线:其中两根专门给恒流源传输激励电流,另外两根连接到高输入阻抗的电压测量端。因为电压测量端几乎不吸取电流,所以电压线上的压降可以忽略不计,导线电阻对测量结果的影响就彻底消除了。
下面这个接线示意是我在项目里用四线制PT100和ADC模块对接时的连线方式:
恒流源输出(+I) ──> 红线A ──> PT100引脚1 ──> 白线S+ ──> ADC差分输入正端(IN+) │ 恒流源回路(-I) ──> 红线B <── PT100引脚2 ──> 白线S- ──> ADC差分输入负端(IN-)PT100引脚1上同时连着激励线和电压采样线;PT100引脚2也一样。虽然激励电流经过引脚接点时可能会在铜箔上产生一个极微小的压降,但只要采样线从PT100引脚位置直接引出,而不是从电流走线末端引出,四线制的误差就会比三线制小一个数量级以上。
三种接法放到一起对比,各自的定位就很清晰了:
| 接法 | 消除线阻能力 | 引线数量 | 实现成本 | 典型应用 |
|---|---|---|---|---|
| 二线制 | 完全不能消除 | 2根 | 最低 | 低精度温度指示、报警 |
| 三线制 | 基本消除对称线阻 | 3根 | 中等 | 工业变送器、PLC采集 |
| 四线制 | 彻底消除线阻 | 4根 | 较高 | 实验室仪表、精密温控 |
做0.1℃精度级别以上的测温系统,只要条件允许,无脑选四线制。尤其配合后面的比例法方案,四线制+比例法基本就是目前低成本高精度测温的黄金组合。
3. 关键器件选型与参数计算:从激励电流到ADC分辨率
3.1 激励电流定多少:自热效应与信噪比的取舍
激励电流的选择是设计PT100测温电路时要做的第一个算术题。电流太小,PT100两端电压太小,后面ADC的输入信号被噪声淹没;电流太大,PT100自身发热,会带来“自热效应”,导致测得温度比真实环境温度偏高。
PT100的自热功率等于I²乘以Rpt。以1mA为例,0℃时P=1mA²×100Ω=0.1mW。如果探头的热阻是200℃/W,自热温升大约0.02℃,对一般应用完全可接受;如果探头被埋在热阻较高、散热不好的介质里,热阻可能上升到500℃/W以上,自热温升就会接近0.05℃。想要把自热压到极低,可以改用0.5mA激励,此时0℃时的自热功率只有0.025mW。
但降低电流的代价同样是真实的:在0.5mA下,0到100℃对应的电压变化是19.25mV,折合0.193mV/℃,对ADC有效位数、放大电路噪声的要求更高。所以我通常第一版设计直接选1mA,如果测试发现自热明显,再降为0.5mA,并同步检查ADC的分辨率和噪声是否依然够用。这个取舍没有绝对标准,项目里最好用实际探头在目标介质里做一次对比测试,判断自热到底影响了多少。
3.2 参考电阻、ADC与PGA怎么搭配
比例法方案中Rref的选择有一个很容易忽略的原则:Rref的阻值必须大于测温范围上界对应的PT100阻值。因为比例法里ADC的参考电压就是Rref两端的电压,如果Rpt的最大阻值超过Rref,输入电压Vpt就会超过参考电压,转换结果出现饱和,整个量程就废了。
假设你的测量上限是200℃,PT100在200℃时阻值约为175.84Ω,那么Rref最小也要选200Ω。考虑留出适当裕量,我习惯选200Ω的精密电阻。这样在室温范围,PT100的电压一直小于参考电压,转换比值始终小于1。Rref的温度系数直接决定了测量的稳定性,最好选±5ppm/℃以内、初始精度±0.1%的金属箔电阻或低温漂贴片电阻,普通厚膜电阻就不要拿来用了。
ADC的选择上,如果你想要极致的简单和稳定,我首推24位Σ-Δ型ADC。以TI的ADS1220为例,它内部集成了可编程增益放大器PGA,支持外部参考,四路输入可以配成两路差分。配置PGA增益为8、数据率20SPS时,一个温度周期的有效分辨率达到10μV级别完全可行。用它来测量1mA激励下的PT100,理论上温度分辨率能轻松做到0.001℃量级,当然实际系统噪声会把这个值拉大,但做到0.01℃的分辨率并不难。
相比之下,用普通12位ADC做精密测温,哪怕引入10倍放大器,受限于放大器的失调漂移和噪声,最后能稳定到0.1℃都非常费劲。以下是我做选型时常看的一份对照表:
| 方案 | 典型器件 | 分辨率 | 抗噪能力 | 电路复杂度 | 适用场景 |
|---|---|---|---|---|---|
| 12位SAR ADC | ADS1110等 | 约1.6℃/LSB(无放大) | 一般 | 低 | 低成本粗测 |
| 24位Σ-Δ ADC | ADS1220、ADS1247 | 远优于0.01℃ | 较强 | 中 | 精密测温 |
| 高精密仪表放大器+24位ADC | INA823+ADS1256 | 优于0.005℃ | 强 | 高 | 实验室级设备 |
3.3 运放、基准与布线的几个硬指标
如果选用了自带PGA的Σ-Δ ADC,外置运放的环节可以省掉,这是简化设计的关键。PGA增益设置要结合测量范围和参考电压来算。ADS1220内部PGA在增益8时,差分满量程是±VREF/8,如果VREF是200mV量级(Rref=200Ω、I=1mA),满量程是±25mV,明显不够。所以这种方案里我不会用外部参考电压,而是直接让Rref电压作为ADC的参考输入,让输入信号和参考电压同比例缩放,这样PGA只放大差分信号,不会触到参考电压上限。实际上,如果使用外部独立VREF则建议VREF取2.5V以上并配合适当PGA。
基准和电源是精密模拟电路的一半。恒流源如果用运放搭建,参考基准选用REF5025之类低温漂的2.5V基准;模拟供电用LDO单独供电,并且避免和继电器、显示屏等开关性负载共用一路电。PCB布局上,PT100的激励走线和电压采样走线尽量靠近,形成“开尔文连接”后再连到ADC,模拟地和数字地在ADC芯片下方单点汇合,避免大电流地平面把噪声灌进采样回路。
4. 实操:搭一套0到200℃四线制PT100测温电路
4.1 系统整体连接与原理框图
下面是一套我已经在项目里跑通的四线制PT100测温电路,核心思路是用比例法配合ADS1220完成电阻测量,供电和恒流源部分用最简单可靠的方案实现。整体结构分成三块:恒流源激励、四线制PT100连接、24位Σ-Δ ADC采样。
恒流源我采用REF200,一颗芯片内部集成了两组100μA恒流源,把两组并联可得到200μA,再经一级输出缓冲放大转换成1mA。这样做的原因是REF200的恒流特性比用LM334搭出来的电路稳定性高得多,温度漂移小一个数量级。如果你手头没有REF200,也可以用“低压差基准+运放+精密电阻”搭建恒流源,但温漂和噪声需要用基准的指标严格把关。
ADC部分采用ADS1220,外部晶振选32768Hz,通信走SPI,主机使用STM32或ESP32均可。ADS1220的AIN0和AIN1接PT100的电压采样线,AIN2和AIN3暂不接;REFP1、REFN1接Rref两端,把Rref电压作为转换参考。这种接法下,ADC输出码值直接表示Rpt与Rref的比值,比例关系非常干净。
接线示意大致如下:
+3.3V ─ VDD SDA/SCL/CS/DRDY ─ MCU SPI 恒流源1mA ──> PT100引脚1 ── 采样线S+ ──> AIN0 恒流源回路 <── PT100引脚2 ── 采样线S- ──> AIN1 恒流源1mA ──> Rref(200Ω) ──> GND REFP1 ─ Rref高端 REFN1 ─ Rref低端4.2 参数配置与完整标定流程
上电后先配置ADS1220寄存器。关键参数包括:PGA增益设置为主增益2或4(取决于你的参考电压和输入范围),数据率设为20SPS,输入通道选AIN0/AIN1差分,内部温度传感器关闭。转换结果读出来以后,用下面的公式反算PT100阻值:
Rpt = (CODE / CODE_MAX) × Rref
其中CODE是从ADS1220读到的比例码值,CODE_MAX是满量程对应的码值(24位ADC按8388608的一半计算,具体视二进制补码格式而定)。完整代码逻辑里我习惯做一个循环采样取平均,积累32次再算一次结果,能非常有效地抑制工频和开关电源噪声:
uint32_t sum = 0; for (int i = 0; i < 32; i++) { sum += ads1220_read_single(); // 读一次转换结果 } double ratio = (double)sum / (32.0 * FULL_SCALE); double rpt = ratio * RREF_VALUE; double temp = calc_temp_from_rpt(rpt);标定是系统误差管理里不能跳过的一步。我建议至少做两点标定:0℃用冰水混合物,100℃用沸水浴。把探头放进冰水混合液中,读取实际计算出的Rpt,记为R0_cal;再把探头放进沸水浴,记录R100_cal。如果R0_cal相对于100Ω偏了一个固定偏移,多半是器件偏差或PCB铜箔残留电阻,可以在软件里做偏移修正;如果R100_cal与R0_cal的间距和标准值的间距不成比例,则说明恒流源或参考电阻的增益存在比例误差,需要做增益校正。修正公式可以简单写成:
Rpt_corrected = Rref × ratio × K_cal + R_offset
K_cal和R_offset就是标定得到的一阶校正系数。想要更高精度,可以做-20℃、0℃、50℃、100℃多点温槽标定,用最小二乘法拟合二阶曲线,但一般项目的两点标定已经能到±0.2℃以内,剩下的误差主要来自PT100元件自身的精度等级。
4.3 温度计算与线性化补偿
得到修正后的Rpt之后,就不能再用粗略的线性公式去换算温度了。我用的是IEC 60751的标准反算方法,先假设温度在0℃以上,用二次函数迭代逼近,或者直接建立一个查表数组,按1℃一个间隔存储Rpt对应表,线性插值得到温度。查表法最简单,代码占用也不大,适合单片机场景。
C语言里查表加插值的实现很直接:
float calc_temp_linear_table(float rpt) { if (rpt <= RT_TABLE[0]) return TABLE_T0; if (rpt >= RT_TABLE[TABLE_LEN-1]) return TABLE_T0 + (TABLE_LEN-1); // 二分查找或线性扫描,然后按阻值线性插值 ... }如果不用查表,也可以用多项式直接计算。0到200℃范围内,三阶多项式就能达到不错的精度;100到850℃的宽量程才需要更高阶拟合。实际项目里,我通常把查表和标定系数一起封装成函数,既方便调参也能随时换探头。
5. 调试实录:我踩过的那些坑
5.1 读数乱跳:先怀疑接地,再怀疑算法
第一次把整套电路跑起来时,最大问题是读数在±0.3℃之间跳动,怎么调平均都压不下来。排查到最后,问题出在我把PT100采样线的屏蔽层接到了数字地,同时ADC的模拟地又和单片机地离得很远,形成了典型的地环路。屏蔽层应当单端接地,而且最好接在模拟地侧;模拟地和数字地之间用单点磁珠或0Ω电阻连接。改完布局重新打样后,跳变幅度直接降到了±0.03℃以内。这个经验让我养成了一个习惯:凡是模拟小信号电路,先画清楚电流回路和地回路再画信号走向。
5.2 读数随引线加长而变大:四线制的采样线被污染了
在另一个现场,我把PT100探头用5米屏蔽线延长后,读数明显偏高且不稳定。拆开接线发现,现场施工时把采样线S+和激励线接在了同一个接插件引脚上,采样线上的高阻抗被激励电流的铜箔压降“污染”了。四线制的采样线必须直接从PT100引脚位置独立引出,绝不能中途搭接电流线,否则开尔文连接就等于白做了。接头处最好用焊接或旋转端子,避免压线端子松动带来的接触电阻漂移。
5.3 线性偏差越到高温越明显:查一下传感器允差等级
还有一个常见的坑,校准后0℃很准,100℃也算准,可是到150℃偏差就变大了。如果标定系数没问题,那要检查PT100探头的允差等级。铂电阻按IEC 60751分为AA级、A级和B级,对应0℃附近允差分别是±0.1℃、±0.15℃和±0.3℃,而且允差会随温度绝对值变大。精密应用请务必选用A级或AA级探头,B级探头虽然便宜,在中高温区段的漂移很难用一次校准完全修正。
我把调试过程中遇到的问题整理成了一张速查表,方便你们现场快速定位:
| 现象 | 可能原因 | 排查步骤 | 解决办法 |
|---|---|---|---|
| 数据跳动大 | 地环路、屏蔽层接地不当 | 断开屏蔽层再测 | 屏蔽层单端接模拟地 |
| 读数整体偏高 | 自热效应、线阻污染 | 降低激励电流对比 | 用0.5mA或用四线制 |
| 高温段偏差规律变化 | 传感器允差等级不足 | 换A级探头重标定 | 选AA/A级PT100 |
| 测量值超过量程后突变 | Rref偏小或PGA饱和 | 检查CODE是否接近满码 | 增大Rref或减小PGA增益 |
说实话,测温电路做到后面,比拼的已经不只是原理图本身,而是对细节的把握。四线制配合比例法,再选一颗合格的Σ-Δ ADC和低温漂参考电阻,整个硬件系统的上限就能拉得很高。我现在做任何新的测温项目,第一件事都是确认接线方式是不是开尔文连接,第二件事是确认参考电阻是不是低温漂,这两个点守住之后,后面就很少需要为精度问题返工。如果让我给刚入手的同行一个最实在的建议,那就是:少走“先用二线制试试”的弯路,直接上四线制加比例法,多花一根线,省下的是大量调试时间。