1. 先弄清楚:Pt100测温电路到底要解决什么问题
做温度采集这些年,Pt100是绕不开的一个传感器。最近要验证一套测温方案的线性度和误差,我顺手用LTspice把整个链路搭出来跑了一遍。这篇文章就把从传感器选型、信号调理到仿真验证的完整思路整理出来,希望能给正在纠结怎么设计或验证Pt100测温电路的朋友一点参考。你不需要一开始就画PCB,先用LTspice把电路行为看清楚,很多坑可以在仿真阶段提前避开。
1.1 为什么是Pt100,而不是NTC热敏电阻
很多人开始做测温时,会先考虑NTC热敏电阻,因为成本低、灵敏度高。但NTC有个比较麻烦的问题:电阻-温度曲线是非线性的,而且每一批的B值一致性参差不齐。虽然现代NTC也会做分档,但要做到0.5℃以内的稳定测量,换传感器后标定工作量会明显变大。
Pt100正好相反,它是铂电阻,0℃时的标准阻值是100Ω。铂的电阻温度特性稳定、复现性好,在-200℃到+850℃范围内都能保持接近线性的关系。虽然响应速度没有NTC快,价格也会高一些,但在工业设备、医疗仪器、实验室仪表这些对稳定性和可重复性要求高的场景,Pt100几乎是默认选项。
我实际项目里最喜欢它的一点,是它的“老化漂移”很小。NTC用上一两年,常温阻值就可能偏出去不少,而Pt100的长期稳定性好很多。对于测温电路来说,传感器的稳定性有时候比灵敏度更重要,因为灵敏度不够还可以用放大器补,稳定性不够就只能靠定期校准,这是很麻烦的事。
1.2 Pt100的温度特性决定了电路怎么设计
Pt100的经典阻值表达式可以写成:
[ R(T)=R_0 \times (1 + A \times T + B \times T^2) ]
其中 (R_0=100\Omega),(A=3.9083\times10^{-3}),(B=-5.775\times10^{-7})。这个公式在0℃到850℃范围内误差很小。
如果只做-40℃到150℃范围的常规测温,很多设计会直接采用线性近似:
[ R(T)\approx100\times(1+0.00385\times T) ]
也就是温度每变化1℃,电阻变化约0.385Ω。这个线性近似在0℃到100℃之间带来的误差大约在0.4Ω以内,折合温度不到1℃,对很多应用已经够用。如果想做更高精度,再在软件里用多项式校正即可,电路层面不用太纠结。
电路设计的关键,就是要把“电阻变化”可靠地变成“电压变化”。因为传感器本身不产生能量,你必须给它一个激励,然后测量电压。最常用的做法有两种:一是用恒流源给Pt100供电,测它两端的电压;二是用电桥,把电阻变化转成差分电压,再用仪表放大器放大。
我在设计时倾向于恒流源方案,原因后面会详细说。但无论哪种方案,电路里都会涉及放大器、参考电压和ADC的配合,而这些过程完全可以在LTspice里先跑通。
2. 方案选型:恒流源、三线制/四线制和放大器
测温电路最核心的问题不是“放大器怎么选”,而是“怎么接传感器”。Pt100只有两个端子,但实际应用中导线会有电阻,这个电阻会叠加在测量结果里,才是误差的最大来源。
2.1 二线制、三线制、四线制,差别到底在哪
先看二线制。两根导线分别接在Pt100两端,恒流源通过这两根线给Pt100供电,电压表也通过这两根线测量电压。问题很明显:电流流过导线电阻,会在线阻上产生压降,电压表量到的电压是“Pt100压降+两根导线压降”。如果导线电阻只有1Ω,折合Pt100温度就已经有约2.6℃的误差,而且导线越长、环境温度变化越大,误差越不可控。
三线制解决了一部分问题。它用了三根导线,其中两根接在Pt100两端,第三根用于补偿。原理是把导线电阻等效到电桥的两个相邻桥臂上,当两边的导线电阻相等时,电阻变化能够相互抵消。工业现场距离远,三线制是最常用的折中方案。
四线制最彻底。两根线为Pt100提供恒流激励,另两根线专门用来测量Pt100两端电压。因为电压测量回路输入阻抗非常高,几乎不从传感器取电流,所以测量线本身的电阻不会引入误差。四线制在实验室和计量设备里很常见,代价是需要四根线,接线成本高一些。
我把三种接线的特点整理成了一张表:
| 接线方式 | 导线电阻影响 | 典型应用 | 误差表现 |
|---|---|---|---|
| 二线制 | 直接计入测量回路 | 短距离、低精度 | 误差随线长和环境温度变化 |
| 三线制 | 对称抵消,精度较高 | 工业现场、过程控制 | 依赖两侧导线阻值一致 |
| 四线制 | 不影响测量 | 实验室、高精度设备 | 测量线无电流,无压降误差 |
2.2 恒流源激励和电桥方案怎么选
电桥方案在教科书里很常见。把Pt100放到惠斯登电桥的一个桥臂上,另外三个桥臂用固定电阻,桥路输出一个差分电压。电桥的好处是初始点可以调零,不用处理很大的直流偏置。但它也有一个缺点:电桥的输出和电阻变化不是严格线性关系,如果温度范围很宽,输出会有明显弯曲。
恒流源方案更直接。给Pt100通一个恒定的电流,根据欧姆定律,电阻变成电压,电压直接和电阻成正比。只要电流恒定,后续放大和ADC处理都比较直观。
恒流源方案需要解决的是“怎么得到恒流源”。在LTspice仿真中,我会用理想电流源代替,这样能先把信号调理链路跑通。实际硬件中可以用运放和基准电压搭恒流源,或者用专用的电流源芯片。具体做法可以根据项目成本去选择,纯电路设计逻辑是一样的。
我自己的原则是:如果只是验证放大器增益和输出范围,先用理想电流源是最省事的。电路行为搞清楚后,再把理想电流源替换成实际恒流源,单独仿真恒流源部分,整个系统就分而治之了。
2.3 仪表放大器的作用与LTspice里的实现
Pt100的信号是毫伏级别的,直接送给ADC要么分辨率不够,要么噪声太大,所以需要放大器。如果传感器一端没有接地,信号还带有一定的共模电压,此时普通单端放大器会把共模电压一起放进去,造成误差。
仪表放大器就是为这种场景准备的。它有两个高阻抗输入端,通过内部巧妙的结构使输入级“只差模,不放大共模”。在LTspice里可以找现成的仪表放大器模型,比如AD620,但有时候手头没有模型文件,用三个普通运放搭一个三运放仪表放大器也能跑仿真,而且能更直观地理解原理。
我习惯用LTspice自带的LT1001运放搭,因为模型内置、无需额外下载,直流精度也够。如果你之前用过其他运放,换型号也很简单。关键在于放大器周围的四个增益电阻要足够匹配,否则共模抑制比会被电阻失配拖累。实际电路里这是很隐蔽的坑,仿真时因为用的是理想电阻,往往会显得性能很好,这一点要在心里有数。
3. LTspice仿真电路搭建全流程
LTspice是ADI提供的免费SPICE仿真工具,Windows和macOS都有版本。它内置了大量电源、运放、晶体管模型,非常适合做模拟电路验证。搭建Pt100测温电路,本质上就是“恒流源、可编程电阻、仪表放大器”三者组合。
3.1 LTspice环境准备与Pt100电阻建模
LTspice界面很朴实,左边一大块元件列表,中间是原理图编辑区。新建一个原理图后,通过右键或者菜单栏的Component可以调出元件库。Pt100在库里并没有直接对应模型,但可以用一个带温度参数的普通电阻来模拟。
我的做法是在原理图里放一个电阻,把它的阻值属性改成:
{100*(1+0.00385*T)}这里的T不是一个随机变量,而是我定义的温度参数。为了让T有数值,需要在原理图里加一行SPICE指令:
.step param T -40 150 10意思是让T从-40开始到150结束,每10℃步进一次。这样每次直流工作点分析时,T取一个不同的值,Pt100电阻也跟着变化,相当于在跑一个完整的温度扫描。
这里有个容易犯的错:表达式一定要用花括号。LTspice的规则是,花括号里的内容会被当作参数表达式计算,不加花括号它可能直接当成字符串,导致仿真报错。
如果不想手动输入,还可以在电阻属性框里勾选“Temperature coefficient”,然后设置TC1=0.00385,LTspice也能根据环境温度自动改变阻值。但我更推荐参数T的方式,因为这样对“温度”这一物理量的概念更清晰,也更方便在同一个图表里观察输出随温度的变化。
3.2 完整电路连接图和元件参数
电路结构分成三个部分:恒流源与传感器回路、电压跟随器输入级、差分放大输出级。
恒流源部分,我用一个理想电流源I1,参数设置为1mA。为了避免二线制误差干扰,我在传感器两端串入模拟导线电阻Rwire1和Rwire2,都取10Ω。电流路径是:I1正端A点经过Rwire1到S+,再经过Pt100到S-,再经过Rwire2回到地。这个电流回路模拟了四线制里的“电流环”,而后面放大器接的是S+和S-,这两点就是Pt100本体两端的电压。
在LTspice里,我会给各节点标上网络标签,例如A、S+、S-、VOUT。标注网络标签的好处是波形窗口里可以直接输入V(S+)-V(S-)来查看差分电压,非常方便。
输入级用两个运放接成电压跟随器。第一个跟随器输入接S+,输出接V1;第二个跟随器输入接S-,输出接V2。电压跟随器输入阻抗极高,不会从Pt100分流,这样四线制才成立。因为LT1001是单运放,我在原理图里放两个实例,分别命名为U1、U2。
差分输出级用第三个LT1001,接成标准减法器。关键电阻取值为:R3=10k,R5=10k,R4=100k,R6=100k。R3从V1接到运放反相输入端,R4从反相输入端接到输出端;R5从V2接到同相输入端,R6从同相输入端接到地。这样增益为:
[ 增益=\frac{R_4}{R_3}=10 ]
运放供电用±5V,一个正电源和一个负电源。LTspice里直接放两个电压源,一个5V,一个-5V,接地参考点共用。
完整元件清单大概是这样的:
| 元件 | 数量 | 参数 | 说明 |
|---|---|---|---|
| I1 | 1 | 1mA | 恒流源激励 |
| Rwire1、Rwire2 | 2 | 10Ω | 模拟导线电阻 |
| Rpt | 1 | {100*(1+0.00385*T)} | Pt100电阻 |
| LT1001 | 3 | — | 仪表放大器单元 |
| R3、R5 | 2 | 10kΩ | 差分输入电阻 |
| R4、R6 | 2 | 100kΩ | 反馈电阻 |
| V+、V- | 2 | +5V、-5V | 运放电源 |
3.3 温度扫描设置与波形查看
原理图画好后,添加SPICE指令:
.step param T -40 150 5这里我选择5℃步进,曲线会更平滑。接着运行直流工作点分析:在菜单Simulate里选择Run,LTspice会弹出一个Spice Error Log和波形窗口。因为电阻阻值在随T变化,所以每次工作点都会重新计算一次,最终生成以T为横轴的结果。
在波形窗口里,右键Add Trace,输入V(VOUT),就能看到输出电压随温度变化的曲线。也可以输入V(S+)-V(S-)*?。更精确地,我输入V(S+)-V(S-)查看传感器原始电压,再输入V(VOUT)查看放大后的输出。
如果你发现波形窗口横轴不是T,可以检查是否用了.op加.step的组合。LTspice会把步进参数自动作为横轴,这是最直观的查看方式。如果要在固定温度下观察具体电压值,也可以直接在Error Log里看每个步进点的数值。
4. 参数计算、仿真结果与线性度验证
仿真不是跑出一条曲线就结束,关键是要把曲线背后的计算逻辑说清楚。这样才能判断仿真结果是否合理,也方便后面做增益调整。
4.1 恒流源电流和放大增益怎么定
恒流源电流的选择要兼顾两个指标:测量信号大小和传感器自热。
Pt100在0℃时阻值100Ω,1mA电流下产生的电压是0.1V。这个信号水平已经远高于运放的失调电压,不需要太高的增益就能给到ADC。如果把电流加大到5mA,信号会更大,但Pt100本身的自热功率也会增大。1mA时的自热功率只有0.1mW,对常规Pt100来说基本可以忽略。
我最终采用1mA,既能让信号有足够幅度,又能把自热误差控制在0.1℃以内。如果传感器热阻比较差,比如放在静止空气里,还可以考虑降到0.5mA。
增益的计算取决于ADC输入范围。假设ADC参考电压是3.3V,我们希望在150℃时输出电压尽量接近满量程。但我不打算一开始就把增益设得很高,因为还要考虑0℃时的偏置输出。我先把增益定为10,得到一组数据,然后再讨论如果换成0~3.3V输出该如何调整。
用公式算一下输出:
Pt100两端电压:
[ V_{pt}=I_{exc}\times R_{pt}=0.001\times100\times(1+0.00385T) ]
在0℃时:
[ V_{pt}=0.1V ]
在150℃时:
[ R=100\times(1+0.00385\times150)=100\times1.5775=157.75\Omega ]
[ V_{pt}=0.15775V ]
放大10倍后,0℃输出1.0V,150℃输出1.5775V。
温度每变化1℃,输出电压变化:
[ \Delta V_{out}=0.001\times0.385\times10=0.00385V ]
也就是3.85mV/℃。这个数值对验证仿真很有用,直接可以用斜率判断电路是否正常工作。
4.2 仿真输出电压与理论值对照
仿真结束后,我取几个关键温度点来做对照:
| 温度T(℃) | Pt100电阻(Ω) | 理论Vpt(mV) | 理论VOUT(V) | 仿真VOUT(V) |
|---|---|---|---|---|
| -40 | 84.60 | 84.60 | 0.846 | 0.846 |
| 0 | 100.00 | 100.00 | 1.000 | 1.000 |
| 50 | 119.25 | 119.25 | 1.193 | 1.193 |
| 100 | 138.50 | 138.50 | 1.385 | 1.385 |
| 150 | 157.75 | 157.75 | 1.578 | 1.578 |
从LTspice里读取的仿真值,和理论计算基本一致。由于用的是理想电阻和理想电流源,偏差非常小。如果仿真值和计算值对不上,通常是表达式里的符号写错了,或者电流源方向反了。
我还要看一个重要指标:输出曲线的线性度。把VOUT对T做线性拟合,斜率大约就是3.85mV/℃,截距约1V。这正好符合前面的推导。因为Pt100本身是近似线性的,放大后的输出自然也是近似线性。若做更严格的误差分析,在100℃附近因为B项的存在会有一点点弯曲,但在常规工业测温场景里不需要额外修正。
4.3 如果要输出到0~3.3V ADC,该怎么改
前面的电路增益是10,输出落在1V到1.6V之间,对3.3V ADC来说没有充分利用量程。实际项目里我们往往希望传感器在测温范围内能映射到0~3.3V,或0~5V。
最简单的方法是提高增益,但同时要把0℃时的那1V偏置减掉。在差分放大器后端加一个减法/偏置调整电路即可。比如希望0℃输出0V,150℃输出3.3V,那么有效增益应该满足:
[ 增益\times(0.15775-0.1)=3.3 ]
解得增益大约需要57.2。如果把增益设为60,输出范围会略超3.3V,这时可以用电阻分压和软件标定解决。
在LTspice里验证也不难:先把R3/R5改为5k,R4/R6改为300k,增益就到60。0℃时VOUT约6V,早已超过运放+5V电源,会饱和。所以必须在差分放大端加入偏置扣除电路。常见做法是给同相输入端叠加一个参考电压,或者在反相输入端通过一个电阻注入参考电流。
这里我不展开偏置电路细节,只说一个思路:用两只电阻把3.3V基准分压,生成一个约1V的偏置,接到差分放大器的反相输入端注入节点,通过选择注入电阻,可以实现输出平移。LTspice非常适合调整这些电阻值,可以直接仿真出想要的0~3.3V输出曲线。
5. 常见问题与实操避坑
这部分内容不是仿真跑通就结束了。我把自己遇到的几个高频问题和解决办法整理出来,希望能帮你少走弯路。
5.1 LTspice仿真中最容易踩的3个设置坑
第一个坑是电阻表达式不使用花括号。如果你在电阻属性里直接填100*(1+0.00385*T),LTspice大概率会报错。正确写法是{100*(1+0.00385*T)}。花括号就是告诉LTspice:“这里是一段表达式,请先算数值,再作为元件参数。”
第二个坑是忘了定义T。如果在表达式里用了T,但原理图里没有.step param T,LTspice不知道T是多少,仿真会报“unknown parameter”之类的错误。实际上你可以在原理图加一行.param T 25先做单点验证,再加上.step param T做扫描。这样调试起来更稳。
第三个坑是波形横轴不对。有时候跑完.step,波形窗口里看不到曲线,或者横轴显示的是别的变量。这通常是没在Add Trace里指定要绘制的电压,或者运行的不是带扫描的工作点分析。我的习惯是每次只选择V(VOUT)查看,如果横轴不对,就检查是否用了正确的.op配合.step,而不是混入了瞬态分析.tran。
5.2 运放饱和、自热和导线电阻带来的隐患
运放输出饱和是仿真和实物中都很常见的问题。当增益调大后,0℃时的1V偏置很容易被放大到接近电源轨。用正负5V供电,输出大约只能在±4V左右摆动,超过就削顶。解决方法是减小增益,或者加入偏置调整。如果在LTspice里看到输出曲线顶部变平,第一反应应该是运放饱和,而不是传感器有问题。
自热问题在仿真里很容易被忽略,因为理想电流源不发热。实际硬件里,电流持续流过Pt100会使其内部温度略高于被测介质。1mA电流下,自热功率只有0.1mW,影响不大;但如果长期在线且介质导热差,尽量用0.5mA,或者使用脉冲激励。
导线电阻的影响可以通过对比仿真验证:把放大器输入端改接在A点和地之间,也就是模拟二线制,此时VOUT会把两个10Ω导线电阻也算进去。仿真结果会比四线制明显偏高。这能直观说明为什么远距离测温要用三线制或四线制。
5.3 从仿真到PCB的几个建议
仿真证明电路可行后,真正做板子还要注意几个点。
第一,差分电阻匹配。R3/R4和R5/R6的比例如果不一致,共模抑制能力会变差。建议用0.1%精度的薄膜电阻,或者用集成仪表放大器芯片,内部匹配会好很多。
第二,运放的失调电压。LT1001这类精密运放失调电压很小,但市场上有些通用运放失调能达到几毫伏,折算成温度就是好几摄氏度,选择时要留意。
第三,滤波。测量回路容易拾取50Hz工频干扰,建议在仪表放大器输出端加一个低通RC滤波器。截止频率不需要太高,几十赫兹足够。LTspice里也可以加一个RC验证效果,时间常数取10ms左右,转折频率约16Hz。
第四,电源退耦。运放供电脚要加0.1μF到1μF的陶瓷电容,靠近电源引脚放置。这一点仿真不会体现,但对硬件稳定性影响很大。
我个人做测温电路的习惯是:先用LTspice把激励电流、增益、偏置和输出范围全部算清楚,再动手画板。这样后面调试的时候,基本只需要检查焊接和电阻精度,不会因为电路设计问题返工。Pt100本身虽然简单,但它旁边的信号调理电路才是决定整个系统精度的关键,而LTspice就是验证这套思路性价比最高的工具之一。