ARTICLE DETAIL

资讯详情

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

三线制PT100高精度测温前端LTspice仿真与误差分析

三线制PT100高精度测温前端LTspice仿真与误差分析 三线制PT100高精度测温系统真正麻烦的地方不在ADC位数而在前端那几根导线上。这篇文章记录的是我在LTspice里把一套三线制PT100前端完整仿真验证的过程包括PT100行为建模、三线制接线效果对比、恒流比例采样链路搭建以及最后的误差分析。适合正在做测温仪表、工业传感器采集或者准备用ADS1220这类24位ADC直接采PT100的工程师参考也适合刚接触LTspice但想用仿真验证模拟前端设计的新手。先说一下我为什么非要先做仿真再动手。PT100本身阻值变化很缓慢0℃时100Ω150℃时也就157Ω出头总共才57Ω的变化量。而导线电阻、接触电阻、基准漂移随便来一点误差就是好几摄氏度。用LTspice的好处是可以把这些误差源一个一个单独加进去看影响这在实物上很难做到因为你不能把某根导线电阻“拔掉”来对比。仿真跑通了再去画板子踩坑成本要低得多。1. 从0.1℃精度目标反推前端设计1.1 PT100的阻温特性与关键检定点PT100是铂电阻温度传感器0℃时标称阻值100Ω所以叫PT100。它的阻温特性遵循IEC 60751标准在-200℃到850℃范围内用一个多项式描述。很多资料上会看到“PT100近似线性”的说法这个“近似”到底有多近似做高精度设计时必须量化。IEC 60751的标准公式是R(T) R0 × [1 A×T B×T² C×(T-100)×T³]其中R0100ΩA3.9083e-3B-5.775e-7C-4.183e-12温度T的单位是摄氏度。注意第三项只在0℃以下才严格生效但在0℃以上这一项的量级很小对0.1℃精度的设计可以直接忽略。我习惯在仿真模型里把三项都写进去这样全温区都能用。先记住几个关键检定点后面仿真验证和误差分析都用得上温度标准阻值与0℃差值-40℃84.270Ω-15.730Ω0℃100.000Ω050℃119.400Ω19.400Ω100℃138.505Ω38.505Ω150℃157.325Ω57.325Ω灵敏度方面PT100在0℃附近大约是0.385Ω/℃这意味着0.1℃只对应0.0385Ω的阻值变化。如果用1mA激励电流换算成电压信号就是38.5μV。顺着这个数字往下想后级ADC的量化噪声、放大器的输入失调、基准源的温漂任何一环稍微马虎一点0.1℃精度就保不住。1.2 导线电阻误差与三线制消除原理两线制接法最简单就是从PT100两端直接拉两根线到测量电路。问题在于导线本身有电阻。以常见的0.5mm²铜导线为例每米电阻大约是35mΩ如果传感器离仪表有30米来回两根线就是2.1Ω。代入PT100灵敏度0.385Ω/℃2.1Ω相当于5.5℃的误差这还没算接插件接触电阻。三线制之所以能消除大部分导线电阻误差原理不是把线阻变没了而是让导线电阻不出现在测量回路里。典型接法是这样的恒流源激励电流从一根导线流入PT100从第二根导线流出第三根导线接在PT100低端连接到ADC或放大器的差分负输入端。因为差分输入阻抗非常高第三根线上几乎没有电流所以这根线上即使有电阻两端电压也约等于零ADC负输入端看到的就是PT100低端的真实电位。同理高端检测点取在PT100高端节点而不是激励电流注入点之前这样流入导线的压降也被排除在测量回路之外。所以三线制最终测到的电压就是PT100本身的压降两根电流导线的电阻误差基本被消除。注意这里说的是“基本”如果恒流源的输出阻抗不够高、或者ADC输入偏置电流太大残余误差还是会有。后面仿真时我会专门演示如何验证这个消除效果。1.3 系统误差预算分配做高精度系统一开始就要算误差预算否则做完发现指标差一截根本不知道是谁的锅。我习惯把0.1℃精度目标先换算成电阻再层层分解到各个环节。0.1℃对应0.0385Ω用1mA激励就对应38.5μV电压误差。把这个总预算拆成四份传感器本身允差B级PT100在0℃的标准允差是±0.3℃这已经超出0.1℃目标了。所以要做0.1℃级别得选A级允差约±0.15℃甚至更高或者做单点/两点校准把传感器的绝对误差校准掉。激励与基准误差比例测量方案中激励电流漂移和ADC参考电压漂移是相互抵消的但Rref电阻的温度系数会直接转化为误差。选10ppm/℃的精密电阻温升10℃也就100ppm折合温度误差约0.026℃可以接受。信号链噪声与失调放大器、ADC本身引入的噪声和失调需要控制在10μV以内。线阻残余与接触电阻三线制把线阻误差降到0.01Ω以下也就是0.026℃这部分余量很小所以连接器选型必须用镀金或低阻端子。这么一拆就清楚多了。所谓“高精度”从来不是靠某一个高指标器件撑起来的而是每个环节都刚好控制在预算内。2. 方案选型恒流比例式为什么比电桥更适合PT1002.1 主流前端拓扑对比PT100的前端处理电路主要有两类一类是传统的电桥加仪表放大器另一类是恒流源激励加高精度ADC其中又以比例测量方式最为常见。两类方案各有各的适用场景我把关键差异列成了一张表。对比项电桥 仪表放大器恒流源 Σ-Δ ADC比例测量电路复杂度中等需要精密桥臂电阻和INA简单核心元件少非线性电桥输出与ΔR非线性需软件校正PT100自身非线性但无附加非线性抑制线阻能力三线制可部分抵消依赖电阻匹配三线制直接消除效果更好激励源要求需要稳定电压源源漂移直接影响精度电流漂移与参考漂移成比例抵消抗共模干扰差动输出抗共模能力较好差分检测同样具备集成度分立器件多成本中等一颗ADS1220基本搞定电桥方案最大的问题是桥臂电阻的匹配度。经典惠斯通电桥需要四个桥臂电阻严格匹配实际中用0.1%精度的薄膜电阻已经不错但温度梯度造成的阻值变化仍然难控。恒流比例方案里桥臂匹配的问题被Rref单颗电阻取代误差源少了一半。另外电桥方案的输出是非线性的桥输出电压和ΔR之间还有一个分母项的变化这会造成额外的线性误差必须在软件里补偿。恒流方案则不存在这层非线性测到的电压直接正比于RTD阻值软件只要处理PT100本身的多项式非线性就够了。2.2 本设计选用的仿真方案我最终选择的是恒流源激励加比例式测量的路子这也是ADS1220这类24位ΔΣ ADC数据手册里推荐的典型接法。比例测量的核心思想是让同一个激励电流分别流过RTD和一个精密参考电阻Rref然后直接用RTD上的电压和Rref上的电压做比值。具体实现时把Rref的电压接到ADC的参考输入端把RTD的电压接到ADC的信号输入端。因为信号和参考都来自同一个电流源电流源的绝对漂移在分子分母里被约掉了。以ADS1220为例它内部有两个可编程电流源可以配置为250μA到1.5mA还有集成PGA可编程增益以及温度传感器和内部基准。用这颗芯片做三线制PT100外围器件少到只需要一个Rref和几个滤波电容。我在LTspice里仿真时先不直接挂ADS1220的模型而是用行为级B源模拟“理想PGAADC”的逻辑这样能先验证前端模拟链路的正确性再逐步替换成更具体的器件模型。LTspice能验证的部分包括PT100模型是否正确、三线制接线是否真的消除了线阻、不同温度下的信号范围是否匹配ADC满量程、后级放大是否饱和。它不能验证PCB布局寄生、热电动势、实际安装应力造成的传感器漂移这些必须靠实物测试。仿真和实物各管一段配合起来效率最高。3. LTspice仿真实操PT100建模与三线制链路搭建3.1 用行为电阻给PT100建模LTspice里没有现成的PT100库元件但建模不需要画蛇添足。PT100本质上就是一颗阻值随温度变化的电阻我直接在电阻元件的Value里填入行为表达式即可。放置一颗电阻右键编辑属性在Value栏填入{100*(13.9083e-3*Tc-5.775e-7*Tc*Tc-4.183e-12*(Tc-100)*Tc*Tc*Tc)}这个表达式里的Tc就是摄氏温度变量。注意不要用T作为变量名因为T在LTspice里是绝对温度开尔文的内置符号覆盖它容易出各种奇怪问题。我习惯用Tc一眼就知道代表Celsius温度。然后在原理图里添加SPICE指令.step param Tc -40 150 1 .op.step param的意思是让Tc从-40℃到150℃以1℃步进扫描.op是做静态工作点计算。运行之后波形窗口的横轴就是Tc纵轴可以看任意节点电压也可以直接右键加法运算表达式。关于模型精度建议把C项的完整表达式都写上。虽然0℃以上C项理论上可以省略但实测在0~150℃范围内它的贡献不超过0.002℃量级直接写全公式可以省去在不同温区切换公式的麻烦而且表达式长度也就多出一小段LTspice完全支持。3.2 三线制前端电路与比例采样链路搭建搭建仿真电路前先把节点规划清楚。我用的三线制接法如下电流源Iexc的正端接节点Vexc电流设定为1mA。Rw1是流入导线从Vexc接到pt_hi节点阻值设置1Ω。PT100行为电阻Rpt跨接在pt_hi和pt_lo之间。Rw2是回流导线从pt_lo接到ref_hi节点阻值1Ω。Rref是参考电阻从ref_hi接到GND阻值1kΩ。这个电阻上的电压将作为ADC参考电压。Rw3是第三根检测线从pt_lo接到sense_lo节点阻值1Ω。接入点是行为电压源的负输入端因为没有电流流过所以Rw3的阻值不影响测量。后级信号提取用一颗behavioral voltage sourceB源最简单在B源表达式里写V10*(V(pt_hi)-V(pt_lo))这里的10就是模拟后级PGA增益。你也可以先不改增益直接用差电压验证前端等需要验证ADC采样范围时再调整增益。整个仿真文件的SPICE指令就三条.step param Tc -40 150 1 .op .include AD8226.lib最后那行是可选的真实INA模型后面再细说。运行仿真后把V(pt_hi)-V(pt_lo)这个表达式加到波形窗口你看到的曲线应该就是一条近似直线的电压-温度曲线。0℃时电压100mV100℃时电压138.5mV和理论计算完全吻合。3.3 用真实放大器模型做进阶验证行为级B源能快速验证链路方向但设计进入细化阶段后还是要用真实器件模型验证放大器的共模范围、输出摆幅和带宽。这里以ADI的AD8226仪表放大器为例说明导入流程。ADS8226是单电源、轨到轨输出的仪表放大器增益范围1到1000单一电阻设定增益适合电桥和RTD信号调理。从ADI官网下载AD8226的LTspice模型后在原理图里添加.include AD8226.lib然后通过文本网表或者子电路符号调用。如果是文本方式调用格式类似XU1 pt_hi sense_lo VCC VCC/2 REF vout AD8226X开头的行表示子电路调用引脚顺序要和.lib文件里的.subckt AD8226定义保持一致所以不同版本的模型可能有一两个引脚差异要以你下载到的文件为准。如果懒得多折腾也可以在LTspice中用三个通用运放自己搭仪表放大器结构这样所有元件都是内置的不会导入失败。真实模型的价值在于能看到实际放大器的输入失调、CMRR限制以及输出饱和。行为级B源是理想器件任何共模抑制问题都不会暴露。我第一次仿真时就是用行为源一路跑通结果实物电路输出偏了几十毫伏排查半天才发现是仪表放大器的共模输入范围不够PT100低端电位在共模范围边缘晃。后来回到LTspice里换成真实模型问题一秒就复现了。4. 看仿真结果算误差线阻、非线性和ADC量化4.1 温度扫描结果验证用上面搭建的三线制恒流方案在-40℃到150℃范围内扫描正常情况下pt_hi和pt_lo的电压差就是PT100上的压降1mA激励下等于阻值毫伏数。取几个关键温度点对照如下温度PT100阻值差分电压1mA10倍增益后-40℃84.27Ω84.27mV842.7mV0℃100.00Ω100.00mV1.000V50℃119.40Ω119.40mV1.194V100℃138.51Ω138.51mV1.385V150℃157.32Ω157.32mV1.573V仿真跑出来的数值和标准表对得上说明PT100行为模型没建错。此时可以看到一个关键信息如果后级ADC的参考电压是2.048V10倍增益的输出范围842mV到1.573V完全落在0到2.048V范围内余量很充足。如果想把分辨率用满可以让ADC输入范围再贴近满量程但实际工程我并不建议把信号顶到满量程给ADC留出冗余更稳妥。非线性方面差分电压对温度的曲线在-40℃到150℃区间内弯曲并不明显但把放大后的曲线和数据理想直线对比最大偏差大约出现在温度区间两头折合成温度大约是0.5℃量级。这个非线性来自PT100本身的B项温度系数无法靠前端电路消除必须放到软件里用查表或多项式拟合处理。4.2 两线制与三线制误差对比仿真前面一直在说三线制能消除线阻到底消得多干净最好用仿真数据说话。操作很简单把Rw3的阻值改成一个超大值比如1GΩ模拟第三根检测线断掉同时把sense_lo节点直接接到ref_hi这就退化成了两线制接法。对比两组仿真结果。三线制正常接法时Rw1和Rw2都设置为1Ω0℃时差分电压是100.00mV和理论值一致。退化到两线制后差分电压直接变成100mV加上Rw2上的压降因为测量负端接到ref_hi等于把Rw2的1Ω电压也算了进来1mA激励下就是多出1mV。1mV折算成温度是1mV/(0.385Ω/℃×1mA)≈2.6℃。这就是一进一出2.6℃的误差还只是每根线1Ω的情况。实际工业现场的接线端子松动、线缆老化电阻漂移比这大得多。把Rw1改成2Ω、Rw2改成3Ω三线制接法下的差分电压几乎纹丝不动而两线制误差会进一步扩大。这个仿真做完你就能很直观地理解为什么仪器仪表行业宁可多拉一根线也要用三线制。4.3 ADC量化与系统级精度估算前端信号的范围确定后还需要验证后级ADC能否分辨出目标温度。以ADS1220为例它的24位ΔΣ ADC在数据率20SPS、PGA增益16时输入参考噪声典型值大约在1μV以内。我们按照最保守的1μV算在1mA激励下PT100灵敏度是385μV/℃1μV噪声对应的温度噪声约0.0026℃远优于0.1℃目标。但ADC量化只是误差的一部分。把下面的误差项全部加起来才是真实精度PT100传感器本身允差A级在0℃约为±0.15℃如果不校准这是最大头。Rref温漂10ppm/℃的电阻在环境变化20℃时贡献0.06℃。激励电流热效应引起的自热升温1mA下PT100自热约0.05℃到0.2℃取决于传感器封装和散热条件。滤波和共模抑制不足引入的工频干扰如果没有做低通滤波50Hz干扰整流后会直接叠加为直流误差这在工业现场是隐形杀手。估算下来不校准裸奔的A级PT100加ADS1220方案整体误差大概率在±0.3℃到±0.5℃之间。如果做两点校准把传感器和Rref的固定偏差都消掉系统可以稳定做到±0.1℃以内。这就是为什么市面上的高精度测温板几乎都保留校准接口因为器件的标称精度只能保证下限系统精度靠校准往上拉。5. 踩坑记录与工程落地建议5.1 LTspice仿真中的常见问题仿真过程中最容易遇到的问题有两个模型没加载和曲线不符合预期。模型加载失败多半是路径问题。LTspice的.include指令如果写绝对路径换一台电脑或者换个目录就找不到文件了。建议把.lib文件复制到原理图同一个目录下.include后面直接写文件名这样移植工程时不会报错。如果写入后还是报Unknown subcircuit检查一下.lib内部定义的子电路名是否和调用名称一致有些模型文件里会带版本后缀。曲线不符合预期的情况常见原因是表达式里的温度变量名冲突。我刚开始直接用T做变量结果电阻值完全不随扫描变化后来查手册才发现T在LTspice里另有含义。解决方法是换一个无冲突的名字比如Tc、Rtemp都行。另外一个让人困惑的点是LTspice保存工程时目录里会多出好几个文件。.asc是原理图主文件.raw是仿真结果数据文件.log是运行日志还有各种.plt是波形配置。这些文件在有新仿真结果时会自动覆盖不需要手动清理更不要随便删掉.lib或.asc之外的文件。如果你把工程打包发给别人只需发送.asc和被include的.lib文件.raw和.plt删了也无所谓。5.2 实物调试时的接线与接地细节仿真通过之后实物调试还有几个仿真里不容易暴露的坑。第一是屏蔽和接地。传感器线缆在工业现场会经过电机变频器这类强干扰源三线制虽然对线阻误差不敏感但对共模干扰并没有天然免疫力。强烈建议用屏蔽双绞线屏蔽层单端接地然后在ADC输入端加RC低通滤波截止频率放在几十赫兹级别。滤波器带宽太低会拖慢响应太高又滤不掉工频干扰要根据测温的实时性要求折中。第二是自热评估。仿真里用理想电流源永远不会发热但实际PT100通电后自身温度会上升。判断方法是给传感器通电后连续记录读数看到数值稳定下来需要多久稳定值和上电初期值差多少。如果自热超过0.1℃就应该降低激励电流或者更换热阻更小的传感器封装。第三是接触电阻。即使三线制理论上消除了线阻但接线端子松动会让线路表现为间歇性接触不良这种故障连仿真也救不了。实物调试时要把每个端子拧紧后做一次拉力测试有条件的直接用压接端子。5.3 校准与线性化处理的工程思路最后聊聊校准和线性化这部分决定了系统最终能标定到多准。最简单的做法是两点校准在0℃用冰水混合物在100℃用沸水或恒温槽分别记录ADC读数然后按比例修正增益和偏置。如果是生产线批量校准两点校准足以覆盖传感器和参考电阻的主要误差。更细一点可以做多点标定把-40℃、0℃、50℃、100℃、150℃几个温度点的实测数据拟合成二次多项式。PT100的阻温关系本来就是一个二次主导的多项式用最小二乘拟合一个二次多项式就能把非线性误差压到0.01℃量级。在MCU里计算时用float运算就够了不需要上double速度更快。校准过程中要注意温度源的稳定性和均匀性。恒温槽的波动要小于目标精度的一半比如你想标到0.05℃恒温槽波动必须在±0.025℃以内否则标定出来的参数反而会引入额外的随机误差。这些都是我在仿真和实物都踩过之后才总结出来的。先把LTspice里的前端仿真跑通再去调实物至少能帮你省掉一半的排错时间。等你再回头处理线缆长度、接地、校准这些问题时心里会非常清楚每一步在系统误差里占多少分量。
返回列表