ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

三线制PT100高精度测温系统:LTspice仿真与设计实战

三线制PT100高精度测温系统:LTspice仿真与设计实战 做测温项目的时候我被PT100的导线电阻坑过一次。探头本身标称精度0.1%接上线缆一测整体误差能到1℃以上。后来我把整个三线制PT100高精度测温系统搬进LTspice里完整仿真了一遍才算把每个误差来源都看明白。如果你正准备做测温板卡或者想搞懂三线制到底是怎么回事这篇文章可以给你一套可以直接复用的仿真和设计思路。文章不会只丢电路图我会把为什么要用三线制、激励电流为什么选1mA、仪表放大器增益怎么定、LTspice里PT100模型怎么建以及仿真时那些“看起来没错但结果就是不对”的坑全部摊开讲清楚。整套方案以工业级高精度为出发点目标是把测温误差控制在0.2℃以内适用场景包括变送器、仪器仪表、环境监控和各类需要长距离布线的测温前端。1. 三线制PT100测温到底在解决什么问题1.1 PT100传感器的几组关键数字PT100是铂热电阻核心原理是铂的电阻率随温度变化而且变化规律接近线性。0℃的时候阻值正好是100Ω所以叫PT100。根据IEC 60751标准0到100℃之间平均温度系数是0.00385/℃也就是说温度每升高1℃阻值大约增加0.385Ω。这个0.385Ω/℃粗略值很多场合够用但高精度设计不能拿它做全量程计算。更准确的是Callendar-Van Dusen方程Rt R0 × (1 A×t B×t²)0℃以上时C项为0。其中A 3.9083×10⁻³B -5.775×10⁻⁷R0 100Ω。这也是PT100的“非线性”来源。举个例子按线性0.385Ω/℃估算100℃时阻值应该是138.5Ω实际按IEC标准算出来是138.51Ω差别不大但到200℃时线性估算175.0Ω实际是175.86Ω偏差将近0.9Ω对应超过2℃。所以想做高精度一定要用标准公式或者查表不能在软件里简单写成R 100 0.385×T完事。正是这个非线性让我在LTspice里建模时没有用固定斜率而是把公式直接写进了B源表达式。这样才能把150℃、200℃这种大跨度范围仿真准确。1.2 两线制的误差到底有多大算给你看先看最粗暴的两线制接法两根导线把PT100和测量电路连起来电流从一根线进去从另一根线回来测量电压也取自这两根线的同一端。假设测温距离50米用0.5mm²铜线铜的电阻率约0.0175Ω·mm²/m那么单根导线的电阻大约是Rw ρ × L / S 0.0175 × 50 / 0.5 1.75Ω两根线就是3.5Ω。如果用1mA恒流源激励导线在测量回路里额外产生的压降是V_err I × (Rw1 Rw2) 1mA × 3.5Ω 3.5mV这个3.5mV折合成PT100的阻值变化就是3.5Ω再除以0.385Ω/℃大约是9.1℃的误差。注意这还没算线缆温度变化带来的阻值漂移。铜的电阻温度系数大约是0.0039/℃50米铜线从20℃变到40℃单根线电阻从1.75Ω变成约1.89Ω造成的附加误差又会增加0.5℃左右。实际项目中导线电阻不一定是固定的1.75Ω可能走桥架、过端子排、接插件氧化导致接触电阻变大。接触电阻的影响更麻烦它不稳定完全无法通过一次校准消除。这就是为什么两线制只适合短距离、低精度、传感器和电路板在同一块PCB上的场景。1.3 三线制为什么能抵消导线电阻原理一点就透三线制接法的本质是把“电流路径”和“电压测量路径”分开。我直接说接法一根线接恒流源输出叫电流线L1。一根线接PT100负端电流从这根线流回GND叫回流线L2。一根线接PT100正端但不走电流专门用于电压采样叫采样线L3。三根线从传感器端引出PT100正端接L1和L3负端接L2。测量电路这边恒流源经过L1给PT100供电电流从L1流入PT100再从PT100流出经L2回到GND。仪表放大器正输入接L3负输入直接接PT100负端L2。关键来了。流过PT100的电流是IPT100两端的真实压降是I×Rpt。看各个节点的电位节点B也就是PT100负端对GND的电压是I×Rw2。因为回流线L2上流过全部电流I产生压降I×Rw2。节点A也就是PT100正端对GND的电压是I×(Rpt Rw2)。注意电流线L1上的压降没有进入这个电位因为L1在恒流源内部恒流源会动态调整输出端电压来维持电流恒定。采样线L3上没有电流所以它不产生压降仪表放大器正输入端看到的电压就是节点A的电压也就是I×(Rpt Rw2)。仪表放大器负输入接节点B电压是I×Rw2。差分电压等于V V - V- I×(Rpt Rw2) - I×Rw2 I×Rpt导线电阻Rw2被完美减掉了。L1上有没有电阻、压降多大根本不进测量回路。L3只要保证没有电流流过就不引入误差。这就是三线制的核心逻辑不是“测不准所以加根线补救”而是通过合理的接线拓扑把导线电阻这个共模干扰从差分测量中去掉。它和四线制的区别也很清楚。四线制是PT100两端各接两根线两根走电流、两根测电压理论上完全消除所有导线电阻影响但线缆成本高传感器接线端子也要更多。三线制只用三根线就实现了导线电阻消除代价是要求放大器输入阻抗足够高取样线上不能有明显漏电流以及恒流源稳定度要好。工业变送器大量使用三线制就是在成本和性能之间找到的最佳平衡点。2. 高精度测温系统方案与关键参数确定2.1 系统模块划分与信号流我设计的三线制PT100测温系统信号流是这样的恒流源产生1mA激励电流经过三线制接法驱动PT100PT100两端产生随温度变化的电压信号。这个信号直接送入仪表放大器仪表放大器完成差分放大把毫伏级信号放大到ADC合适的输入范围。放大后的电压再进ADC做模数转换最后交给MCU查表换算成温度。这个架构里最容易被忽略的一点是恒流源是整个系统的精度基础。因为输出电压等于I×Rpt电流源哪怕只有0.1%的波动在150℃时就会带来约0.15℃的误差。高精度设计里激励电流的稳定性甚至比放大器的增益精度还重要。2.2 激励电流为什么选1mA能不能加大这个参数很多新手会随意选我建议严格按自热效应来算。电流流过PT100会产生焦耳热功率是P I² × Rpt假设PT100探头热阻θja大约250℃/W这已经是封装比较差的探头了好的探头热阻能做到50℃/W左右。如果用1mA在100℃时Rpt约为138.5Ω功率P (0.001)² × 138.5 0.138mW自热温升大约是0.138mW × 250℃/W ≈ 0.035℃。这个量级对0.2℃精度的系统可以接受。但如果有人图省事把电流加到5mA功率是1mA时的25倍自热温升直接到0.86℃系统就算做得再完美误差也下不了1℃。这还没完大电流还会让PT100的电阻发热测得温度比实际环境温度高热惯性大时半天都稳态不下来。所以1mA是相当合理的折中。如果系统功耗非常敏感可以降到500μA但ADC输入信号也相应减半对信噪比和放大器失调电压的要求会更高。我不建议再小了因为PT100在0℃时电压才100mV太小信号被噪声淹没。如果追求极致精度可以设计脉冲激励方式测量只在短脉冲期间通电流自热影响可以再降一个数量级但电路复杂度明显上升。2.3 仪表放大器增益设计从测温范围倒推设计增益之前先确定量程。我这里以0℃到150℃为例这也是工业上比较常见的水温、油温和环境温度范围。按IEC 60751公式计算0℃时Rpt 100.00Ω差分电压 100.00mV50℃时Rpt 119.40Ω差分电压 119.40mV100℃时Rpt 138.51Ω差分电压 138.51mV150℃时Rpt 157.33Ω差分电压 157.33mV温度从0℃变到150℃差分信号变化量为57.33mV。如果ADC参考电压是2.5V希望全量程映射到0到2.5V理论上增益需要G 2.5V / 57.33mV ≈ 43.6实际设计中我会留一点裕量不顶满ADC满量程取G 30。这样150℃时输出约1.72V0℃时0V。剩下1.72V到2.5V的空间可以覆盖传感器误差、恒流源偏差、超量程保护等场景避免ADC提前饱和。如果用三运放仪表放大器结构增益公式是G 1 2R1 / RG设R1 10kΩ要让G 30RG的计算RG 2R1 / (G-1) 20000 / 29 ≈ 689.7Ω标准电阻里取RG 680Ω实际增益为G 1 20000/680 ≈ 30.41150℃时输出约为1.743V挺好。如果后面想换量程比如做到200℃这时候差分信号范围是75.86mV取G25或者调整RG改成820Ω输出也能匹配2.5V ADC。2.4 ADC到底怎么选为什么热词里会带ADS1220放大后的信号最终还是得数字化。24位ADC看起来精度很高但要注意24位只是分辨率不直接等于精度。对于PT100这类随温度变化缓慢的信号ΔΣ架构的ADC自带数字滤波抗工频干扰能力强还能内置PGA可编程增益放大省掉外部仪表放大器的大半工作。热词里出现“ADS1220 PT100”这个组合不是偶然。ADS1220是TI的一颗24位ΔΣ ADC带4个差分输入、内置PGA、内置两个可编程电流源IDAC输出电流可以从10μA到1.5mA步进调节。它最方便的地方是两颗IDAC可以直接做三线制PT100的激励源PGA配合内部基准可以省掉外部精密放大器和参考源。不过我用LTspice做仿真的阶段不会把ADC放进仿真器里跑因为ADC的开关电容输入等效模型、数字滤波行为、量化噪声都不是LTspice擅长的领域。LTspice的价值在模拟前端恒流源、三线制接法、仪表放大器、噪声和误差预算。ADC选型放在设计阶段的硬件参数确认中去处理二者分工明确。如果你手里有现成的24位ADC比如ADS1220、ADS124S08、AD7793这类它们内部集成了激励电流源和PGA外部电路可以做得非常简洁。但为了把原理讲透我在LTspice里还是用分立元件搭建完整前端这样能看到每个节点真实的电压。3. LTspice仿真搭建与完整验证3.1 PT100在LTspice里的建模两种可复现的方法LTspice默认的电阻是“理想固定阻值”温度变化不会自动改变阻值。要让PT100随温度变化有两种常用方法我把具体操作都写出来。方法一用带温度系数的电阻。在原理图中放置电阻R按住Ctrl右键打开属性对话框在Value栏写100在SpiceLine栏填写TC10.0039083 TC2-5.775e-7然后仿真指令用.step temp 0 150 5LTspice会按temp全局变量对电阻进行温度修正公式是R(T) R0 × (1 TC1×(T-25) TC2×(T-25)²)注意TC1、TC2中T的参考温度是25℃而不是0℃。PT100的0℃基准100Ω要换到25℃参考就变成109.735Ω左右所以在Value里直接写100时仿真出来的0℃阻值不会正好是100Ω会有偏差。这是这个方法最容易被坑的地方。方法二用B源做行为电阻。这个方法更可控也是我仿真主推的。放置一个B源命名为B1正端接A点负端接B点。右键把Value写成一串表达式I V(A,B) / (100 * (1 3.9083e-3*(T-0) - 5.775e-7*(T-0)**2))这里的T就是温度变量0℃时电阻正好是100Ω。仿真时不用.step temp换成.step param例如.step param T 0 150 5同时要放一个0V电压源或者直接在电路中形成电流通路让B源能根据两端电压计算电流。B源本质上是一个压控电流源它的电流表达式里直接把V(A,B)除以电阻效果等同于一个可变电阻。从精度上讲方法二直接用了IEC标准公式0℃基准明确没有25℃偏移问题。再加上.step param扫描的温度T可以单独指定比.step temp灵活还能同时配合其他参数扫描。所以我下面所有仿真例子都基于B源。有一点必须提醒B源表达式里的温度T是参数变量不是LTspice内建那个temp。如果你不写.param T仿真时B源的T就是未定义参数电路会报错。使用前先加一行.param T100这样无论是瞬态仿真还是其他扫描B源都能正常工作。3.2 三线制恒流源测温电路LTspice里怎么搭现在正式搭建完整的仿真电路。我用节点命名来表述你可以按这个网络在LTspice里连线。电源部分用理想电流源I1电流值设1m一端接网络Vin另一端接GND。PT100的B源连接在网络A和网络B之间。三根导线的电阻分别用三个电阻表示这里模拟50米线缆的电阻每根取1.75ΩRw1Vin到网络A1.75ΩRw2网络B到GND1.75ΩRw3网络A到Vin_sense也就是仪表放大器正输入端1.75Ω注意Rw3接的是网络A那端也就是PT100的正端。仪表放大器正输入接Vin_sense负输入直接接网络B而不是接GND。这是三线制成败的关键。我额外放一个两线制对照组方便比较。两组电路的PT100模型一样激励电流一样只是两线制没有Rw3放大器正输入接在Vin节点上。最后用两个仪表放大器分别输出一起看波形。这里有个细节恒流源的理想模型直接输出1mA你不需要关心它的地电位。但换成实际恒流源电路时要注意它的最低工作电压。普通运放恒流源在1mA输出下如果负载端电压接近GND运放输出级可能进入饱和区。仿真时如果发现恒流源电流不再是1mA大概率是运放供电电压不够或者三极管管压降不够。连线完成后给仪表放大器供电我用±5V双电源。仿真指令.tran 0 5m .step param T 0 150 5每条温度曲线跑5ms瞬态等输出稳定后读取末值。3.3 仪表放大器电路仿真三运放结构与增益调整仪表放大器我没有用LTspice里现成的单模块因为标准库里的仪表放大器模型不一定都带而且自己搭三运放结构能看到内部节点工作状态学习意义更大。三运放仪表放大器由三个运算放大器构成两个输入级运放接成同相缓冲放大第三个运放做差分减法。两个输入级运放的反馈电阻相等设为R1R210kΩ两个输入端之间的增益调节电阻RG接在两个输入级运放的反相输入端之间取680Ω。增益公式是G 1 2R1/RG 1 20000/680 ≈ 30.41运放模型我直接用LTspice自带的UniversalOpamp2放置后右键设置成level2供电电压设±5VAol默认足够大GBW设1MHz以上就行。PT100信号变化极慢带宽根本用不到多少重点是直流增益和失调特性。实际连线时正输入级运放U1同相端接Rw3远端网络Vin_senseU2同相端接网络B。U1输出串R1反馈到反相端U2输出串R2反馈到反相端RG跨接在两个反相端之间。第三级运放U3做差动减法正输入经过电阻接U1输出负输入经过等值电阻接U2输出反馈电阻和接地电阻全部取10kΩ。为了让减法器共模抑制比高这4个10kΩ电阻必须匹配LTspice里直接用理想电阻实物设计需要选0.1%精密电阻或者用集成INA芯片。仿真出来之后我习惯直接看输出端V(out)的瞬态波形。每次.step param T都会产生一条曲线0℃时输出接近0V150℃时约1.743V。如果看到输出反向或者饱和到电源轨先检查两个输入级是否接反再查RG有没有短路或者放错位置。实际上如果你不想自己搭三运放也可以用LTspice里的behavioral差分电压源简化表达式直接写V V(Vin_sense, B)×30.41这样模型验证起来更快尤其适合先验证三线制原理、再验证具体放大器的分步调试思路。我实际仿真时会两种都用先用行为源验证拓扑对不对再换成真实三运放验证细节。3.4 温度扫描仿真从波形到数据的完整复盘仿真跑完以后波形图里每条曲线代表一个温度点下的输出。为了读取更方便我习惯加两个辅助测量点一个是PT100两端的真实压降V(A,B)一个是仪表放大器输出V(out)。读取数据可以用LTspice的波形光标直接测量但更高效的方法是让LTspice在测量命令里自动算。在仿真指令后面加.meas TRAN vout150 FIND V(out) AT5m WHEN T150这个指令不是标准做法实际批量提取需要配合.meas循环比较繁琐。我一般直接在波形图里右键打开数据或者用SPICE的.errorlog方式导出数据。简单点说最实用的方法是把.step param T的步长设小一点比如每1℃一步然后从波形图上用光标读出全量程输出导入Excel里做线性度分析。仿真数据会和理论值对得非常接近。理论计算0℃输出0V、150℃输出1.743V仿真值基本重合差别只在B源表达式的浮点计算精度里。这个一致性也反向验证了PT100模型和三线制接法是对的。我建议在仿真完成后专门把两线制对照组和三线制测试组摆在一起看。你会看到同样在150℃、同样1mA激励两线制输出明显偏高偏高的量正好约等于I×Rw2×G也就是1mA×1.75Ω×30.41≈0.053V。三线制输出则没有这个偏移。这个反差非常直观比任何理论解释都有说服力。4. 仿真中常遇到的那些坑4.1 温度扫描没效果电阻阻值根本不变这是最常遇到的问题。排查顺序很简单先确认用的是B源还是普通电阻。用普通电阻时如果只填了阻值100没有在SpiceLine里写TC1、TC2或者用.step param T而不是.step temp温度系数就不会生效。用B源时先确认.param T有没有定义。另一个坑是B源表达式里用到的T和.step param的T重名。LTspice的.step param T扫描的是一个参数变量B源表达式里的T在仿真启动后会取到当前扫描步的值逻辑上没问题。但如果你同时用了.step temp和.step param T就可能出现变量名覆盖行为会变得非常难查。我的建议是温度扫描永远只用.step param T别把.step temp混进来。还有一个很隐蔽的问题B源本质上是个电流源如果它两端没有接任何形成回路的负载仿真器可能认为它和别的元件组成奇异回路导致直流工作点不收敛。这种情况在B源输出端串一个1μΩ的电阻或者并一个1GΩ电阻能解决。4.2 三线制测量电压不对导线电阻没抵消干净如果你按我上面的接法搭了但输出还是包含导线电阻十有八九是仪表放大器负输入端接错了位置。负输入端必须接PT100负端网络B也就是电流回流线和PT100的公共节点。假如你把负输入端接到了GND那么测出来的电压直接变成I×Rpt I×Rw2等于三线制失效变成“伪三线制”。还有一种情况是采样线Rw3接错端点。Rw3必须从PT100正端引出接到放大器正输入端。只要Rw3上没有电流流过电压就能准确传递。但如果你不小心让Rw3串进了恒流源电流回路比如接到恒流源输出端而不是PT100正端那么Rw3会产生压降测量就完全乱了。判断方法很简单看仿真里流过Rw3的电流是不是接近0A如果不是检查连线。最后如果仪表放大器正输入端和负输入端之间的输入偏置电流不匹配也会引入残余误差。LTspice里用UniversalOpamp2默认的偏置电流很小仿真中看不出来但实物的铜缆长距离传输场景下建议选低偏置电流运放比如OPA2188这类零漂移运放输入偏置电流和失调电压都能压得很低。4.3 理想恒流源换成实际电路后精度下降一半仿真验证用理想电流源I11mA非常干净但实物不可能有理想电流源。我自己常用的是运放精密基准三极管搭建的恒流源。原理是运放控制三极管发射极电压发射极电阻上的压降等于基准电压从而确定电流。这类电路在LTspice里仿真有个典型问题运放供电电压不够。比如你用5V单电源供电PT100在150℃时阻抗157.33Ω加上导线和发射极电阻的压降恒流源电路需要超过3V以上的余量运放容易饱和电流上不去。解决方法是把供电电压提高到12V或者24V或者换成低压差的恒流源结构。另外恒流源里的精密基准电压源我建议用LTspice自带的理想电压源先替代验证电路逻辑真正流片前再换成TL431或者REF5025这类实际基准模型。基准温漂是关键参数基准漂移1mV在1mA恒流源上会引起0.1%电流误差直接换算到150℃就是0.15℃的误差。实物选型时基准电压温漂必须小于10ppm/℃运放失调电压温漂也要小于0.1μV/℃。4.4 从仿真到实物的精度预算与校准建议仿真通过不代表实物能达到同样精度因为仿真里的电阻没有容差、运放没有失调、基准没有温漂。实物精度预算要单独做。以一个目标0.2℃误差的系统为例拆解一下误差来源PT100本身A级精度在0℃时±0.15℃150℃时约±0.35℃这是传感器固有误差可以通过校准修正。恒流源精度基准电压温漂10ppm/℃运放失调温漂0.05μV/℃叠加起来大约0.05%电流误差对应0.075℃。仪表放大器失调电压25μV折算到输入端约0.8μV对应约0.002℃基本可忽略但增益电阻匹配误差会直接影响增益精度比如0.1%增益误差对应0.15℃。ADC量化与噪声24位ADC噪声一般在微伏级折合温度约0.001℃不是瓶颈。导线电阻残余三线制理论上完全消除但三根导线的电阻如果不相同回流线上的压降和取样线上无电流假设不再严格成立残余误差一般在0.05℃以内。整体最坏情况叠加不做校准大约0.6℃这就是为什么高精度系统必须做校准。我常用的做法是两点校准用精密电阻箱模拟0℃100Ω和100℃138.51Ω两个校准点标定系统的增益和零点偏移然后在下位机做线性插值或多项式修正。校准之后系统整体误差能压到0.1℃以内。最后再说一个实操细节在做完整个LTspice三线制PT100高精度测温系统仿真之后我最大的体会是仿真最大的价值不是“跑通”而是“能看到每个节点的电压”。两线制的误差、三线制抵消导线电阻的过程、增益调整对输出范围的影响这些在实物电路上不容易直接观察的东西仿真里一目了然。还有一个细节很实用LTspice工程文件默认会生成多个文件包括.asc原理图、.raw波形数据、.log运行日志、.net网表等。建议每个方案单独建一个目录仿真指令里的注释写清楚量程和增益方便后续修改。我经历过一次把好几种方案混在同一个目录下最后搞不清哪个波形对应哪一版电路白白浪费了一个下午。下一步如果你想把精度继续往上做我建议直接把ADS1220这类带PGA和激励电流源的24位ADC引入系统同时保持三线制PT100的接法不变用内部PGA替代外部仪表放大器用内部IDAC替代外部恒流源。这样整个模拟前端集成度更高PCB面积更小而且ADC内部的PGA和基准都是做过温度补偿的低温漂性能比自己搭的运放电路更稳妥。LTspice仿真可以帮助你把前端电路参数和ADC输入范围匹配好再进入硬件设计阶段。
返回列表