ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

LTspice仿真Pt100测温电路:从传感器建模到信号链验证

LTspice仿真Pt100测温电路:从传感器建模到信号链验证 1. 测温方案选型为什么最终会走到Pt100上个月帮朋友做一个恒温槽的项目测温方案倒来倒去最后朋友甩给我一句话别整那些花里胡哨的就Pt100。三个字堵死所有讨论。说实话这个选择一点都不意外。工业测温场景里Pt100几乎就是默认答案但默认归默认真要把它用明白尤其是先在LTspice里把整个测温电路跑一遍还是有不少门道的。1.1 三种常用传感器的性格差异很多新手第一反应是NTC热敏电阻毕竟便宜、灵敏度高电桥一搭就能出结果。NTC的问题在于阻值随温度按指数规律变化0到100°C之间还算勉强可用一旦跨度拉大非线性能把人逼疯。而且NTC批次一致性差同一型号不同批次可能差出2°C以上做成产品后每台都要单独校准。热电偶则是另一个极端测温范围确实宽几千度都能碰但输出信号只有几十微伏每摄氏度对后级放大器的噪声和失调要求极高还必须做冷端补偿。冷端补偿要是没做好误差轻轻松松超过2°C。Pt100的定位正好卡在中间温度范围覆盖-200°C到850°C对绝大多数工业应用完全够用输出信号虽然不算大但比热电偶强一个数量级更关键的是铂电阻的重复性和长期稳定性极好十年用下来漂移通常小于0.1°C。实验室级别的铂电阻甚至可以当传递标准用这是NTC和热电偶都做不到的。下面的对比表可以比较直观地看出三者的定位传感器灵敏度线性度长期稳定性典型成本主要痛点NTC热敏电阻高-4%/°C差一般低互换性差、非线性严重热电偶低μV/°C较好一般低需冷端补偿、信号微弱Pt100中0.385Ω/°C好极好中激励需恒流/恒压、信号需放大1.2 Pt100阻值与温度的数学关系Pt100的100指的是在0°C时阻值为100Ω。它的阻值随温度变化不是简单的直线而是遵循IEC 60751标准定义的多项式。0°C到850°C范围内用二次多项式表示R(T) R0 * [1 AT BT²]其中R0100ΩA3.9083e-1/°C⁻¹B-5.775e-7/°C⁻²。-200°C到0°C的低温和区还要再加一个三次项R(T) R0 * [1 AT BT² C*(T-100)*T³]C-4.183e-12/°C⁻⁴。很多人习惯用简化公式R(T)100*(10.00385*T)来估算这个线性近似在0到100°C误差还不算离谱但到了200°C就会露出马脚。我算过一笔账200°C时线性近似给出的阻值是177Ω而标准多项式算出来约175.86Ω差了1.14Ω。按每摄氏度0.385Ω换算这就是约3°C的误差。所以只要测温跨度超过100°C就别再用那个简化公式了老老实实用二次多项式。记住几个常用点的标准阻值对后面验证仿真模型很有帮助温度标准阻值温度标准阻值-50°C80.31Ω150°C157.33Ω0°C100.00Ω200°C175.86Ω25°C109.73Ω300°C212.05Ω100°C138.51Ω400°C247.09Ω1.3 为什么要在LTspice里先验证信号链Pt100的灵敏度只有0.385Ω/°C如果用1mA恒流源激励电压变化也只有0.385mV/°C。这个信号量级直接进ADC是不现实的必须经过放大。而一套完整的测温信号链至少包含传感器模型、恒流源或电桥、差分放大器、电平搬移和滤波这几个环节其中任何一个环节的增益算错、偏置算错到实物阶段都要花几倍时间排错。LTspice这种SPICE仿真工具最大的价值不是把电路画一遍而是逼你把每个节点的电压、电流、增益、误差在数字上落实清楚。我以前吃过亏画原理图的时候想当然觉得差分放大增益没问题结果输出直接顶到电源轨示波器一看傻眼了。如果当时先在LTspice里把温度扫描跑一遍这个问题十秒钟就能发现。后面要讲的所有东西都是围绕让你在动手焊板子之前把能踩的坑先在软件里踩一遍这个思路来的。2. 在LTspice里建立Pt100行为模型LTspice默认元件库里有电阻、电容、二极管但没有现成的Pt100传感器模型。不过这不影响使用因为Pt100本质上就是一个阻值随温度变化的电阻完全可以用一个参数化电阻来精确建模。2.1 参数化电阻的写法在LTspice原理图里放一个电阻R1右键把Value改成花括号表达式{Rpt100}然后在原理图上添加SPICE指令快捷键S或点击工具栏里的.op图标.param Rpt100 100*(13.9083e-3*T-5.775e-7*T*T) .param T25这里T是我们自定义的传感器温度参数单位和温度一致。仿真时想扫描温度就在后面再加一条.step param T -50 200 5这条指令的意思是让T从-50°C以5°C为步长一直扫到200°CLTspice会把这个范围内的每一个T值都算一遍工作点。电阻值用花括号表达式这是LTspice的一个关键语法。凡是元件值不是固定数字、需要由参数计算得到的都必须用花括号包起来。比如设置R1的Value为{Rpt100}仿真参数T变化时R1的阻值就会跟着变。如果不想用中间变量也可以直接把表达式写在电阻值里R1 n001 0 {100*(13.9083e-3*T-5.775e-7*T*T)}两种写法效果一样但用.param定义变量更清晰后面想改成别的传感器类型只需要改一处。2.2 用1A恒流源校验模型精度模型建好了怎么确认它真的符合Pt100分度表有个非常取巧的验证方法在电阻上并联一个1A的理想电流源然后测电阻两端的电压。欧姆定律VI*R电流源是1A那么电压数值就直接等于电阻值。具体操作是在原理图里放一个直流电流源设置Current为1A接到参数化电阻两端。做一次直流工作点仿真或者直流扫描然后把节点电压放到波形窗口里看。因为电压单位是V而数值恰好是欧姆数读起来非常直观。我在前面列了几个标准阻值点这里可以直接对照T0°C时读出来应该接近100VT100°C时应该接近138.5VT200°C时接近175.9V。当然因为这是1A的大电流源实际电压数值是100多伏看起来有点吓人但这是纯粹为了读取阻值本身不构成实际电路。实测几个点如果二次项系数没写错误差应该在0.01Ω以内。这一步相当于在仿真世界里给传感器模型校准模型不准后面所有仿真结果都不可信。2.3 别用.temp全局温度来扫描传感器温度LTspice的电阻确实有温度系数参数可以用TC1、TC2也可以设置环境温度.temp但我不建议用这个来做Pt100仿真。原因有两个。第一.temp是一个全局仿真温度参数它影响的不只是这一个电阻还会改变三极管PN结、二极管、运放内部模型等所有半导体器件的温度。这样T一扫描你的运放自身也在变热输出结果里混入了不必要的变量没法单独评估传感器温度变化带来的影响。第二.temp对电阻的温度建模是线性TC模型精度达不到Pt100二次多项式的要求。你可以在电阻属性里写R100 TC10.00385但这样只能做线性近似200°C以上的误差会累积到几摄氏度。更干净的思路是把传感器温度和电路工作温度彻底分开电路工作温度固定在25°C不动传感器温度用我们自定义的参数T来扫描。这样仿真结果里所有的变化都只来源于传感器阻值变化问题定位起来非常舒服。这也是我坚持用参数化电阻建模的原因。3. 信号链架构恒流源激励 差分放大3.1 先说结论为什么不用电桥教科书里Pt100测温电路的经典方案是惠斯通电桥三个精密电阻一个Pt100桥路输出差分电压。电桥的好处是输出以0°C为参考零点差分形式对电源波动有一定抑制能力配合仪表放大器用起来很顺手。但电桥有个绕不开的麻烦桥臂电阻的匹配精度直接决定共模抑制效果。桥臂电阻用1%精度的普通电阻共模抑制能力大概只有40dB左右电源上的一点纹波都会被折进输出。想把共模抑制做到70dB以上三个桥臂电阻都得选0.1%甚至0.01%的精密电阻成本马上就上去了。而且电桥的输出是非线性的输出与ΔR/R的关系是R/(2RΔR)这种形式的分式不像恒流源激励那样VI*R电压和阻值成严格正比。非线性意味着后面查表补偿的工作量更大。如果非要用电桥LTspice里仿真的过程和恒流源方案差别不大节点分析更简单这里就不展开了。3.2 低边采样恒流源节点电压分析我实际用得最多的方案是一个低边采样的恒流源结构非常简单Vref2.5V ──→ 运放同相输入端 运放输出 ──→ Pt100高端 ──→ Pt100低端 ──→ Rsense2.5kΩ ──→ GND │ └─→ 运放反相输入端原理一句话讲清楚运放通过负反馈迫使反相输入端电压等于同相输入端电压也就是Pt100低端被固定在2.5V。那么流过Rsense的电流就是I Vref / Rsense 2.5V / 2.5kΩ 1mA这个电流从运放输出端出发依次流过Pt100和Rsense回到地。因为运放输入阻抗极高反相输入端几乎不取电流所以流过Pt100的电流也是精确的1mA。于是Pt100两端的电压为V_pt100 I * R(T) 1mA * R(T)以0°C为例V_pt100100mV200°C时约175.9mV。这个电压是悬在2.5V共模电平之上的后面的差分放大器负责把它提取出来。这里每个参数都是有意选择的。Rsense选2.5kΩ是为了和2.5V基准配合得到1mA激励电流这个电流量级是Pt100自热和信号幅度的折中后面专门分析。运放用LT1001这类普通精密运放就行在仿真里甚至可以先用理想运放。3.3 差分放大器增益怎么定Pt100两端信号是共模2.5V上的一个毫伏级差分信号所以必须用差分放大器把共模去掉、把差分部分放大。LTspice里用一个运放四个电阻就能搭出单运放差分放大器Pt100高端 ──→ R1 ──→ 运放反相输入端 ──→ R2 ──→ 运放输出 Pt100低端 ──→ R3 ──→ 运放同相输入端 ──→ R4 ──→ GND增益由R2/R1决定同时要保持R1R3、R2R4这样才能保证差分平衡。我的常用参数是R1R310kΩR2R4150kΩ增益15倍。增益的确定要先看信号范围和ADC输入范围。我打算测-50°C到200°C这个范围内Pt100的压降从80.31mV变化到175.86mV差分信号本身就有105.55mV的跨度。放大15倍之后输出从1.205V变化到2.638V落在一个5V单电源运放比较舒服的输出摆幅内也给后级ADC留了足够的裕量。这里要特别提醒一点单运放差分放大器的共模抑制能力完全取决于四个电阻的匹配精度。仿真里LTspice的电阻是理想的阻值绝对精确所以共模抑制在仿真里看不出问题。但实物上1%电阻的共模抑制只有40dB左右2.5V共模电压会产生可观的误差。想验证这个影响可以在仿真里给电阻加一些不匹配的容差.tolerance R11% R31% R21% R41%不过LTspice默认不做蒙特卡洛容差分析需要配合.step或自定义参数手动模拟。更省事的方案是直接用集成的仪表放大器模型比如AD620或LT1167内部激光调阻精度高共模抑制天然就是100dB级别。如果只是验证信号链逻辑单运放差分放大器足够如果要做接近实物的仿真建议换仪表放大器模型。3.4 在LTspice里把整个电路搭起来搭建步骤按照LTspice的常规操作来放一个电压源V1设置DC5V作为整个电路的总电源。放一个电压源V2设置DC2.5V作为恒流源的参考电压。实板上这里用精密基准芯片仿真里理想电压源就够。放运放U1和U2。元件库路径是[OpAmps]LT1001、AD8603这些模型都在里面。没有特别要求的话先用[OpAmps]里的UniversalOpamp2理想运放模型简单快速不出幺蛾子。按前面的拓扑连好恒流源部分U1同相接V2输出接Pt100高端Pt100低端接Rsense到地同时接回U1反相端。Rsense设为2.5kΩ。Pt100用参数化电阻替代Value写{Rpt100}并在原理图上添加.param和.step指令。接着连差分放大器U2配合四个电阻阻值按R1R310kΩ、R2R4150kΩ设置。给U2的供电脚接上V1和地。如果模型是理想运放可能没有供电脚这一步可以省略。连接完成以后在输出节点上放一个电压探针直接跑直流工作点仿真。先看T25°C这一单点理论上输出应该是1mA * 109.73Ω * 15 1.646V如果这个值对得上说明信号链链路没有接错。对不上的时候优先检查恒流源部分直接用电压表测Rsense两端电压是不是2.5V再测Pt100两端电压是不是109.7mV左右。分段确认比盯着整条链路瞎猜效率高得多。4. 仿真验证三步走扫描、评估、线性度电路搭建好之后接下来就是让LTspice帮你把这个设计从头到尾审一遍。核心是三步温度扫描看整体输出失调扫描看误差边界线性度计算看要不要补偿。4.1 用.step做温度扫描拿到Vout-T曲线在原理图里加上.step param T -50 200 5然后跑一遍直流工作点仿真。LTspice会对每个T值计算一次静态工作点输出节点会形成一条Vout随T变化的曲线族。之前单点仿真看到的1.646V25°C现在会变成一条平滑上升的曲线从1.205V-50°C一路涨到2.638V200°C。把鼠标移到曲线上LTspice会显示对应点的T值和Vout值。随手记录几个关键点建议做成一张表存档温度输出Vout对应满量程百分比-50°C1.205V0%参考点0°C1.500V20.3%50°C1.791V40.3%100°C2.078V60.1%200°C2.638V98.5%这张表是做标定的基础。后续无论用查表法还是直线拟合法都从这组仿真数据出发。曲线整体趋势应该是单调上升的如果发现某段输出出现台阶、跳变甚至掉头多半是运放输出饱和了。把输出范围压到运放的线性区里这是第一步要确认的。4.2 扫描运放失调电压看误差边界理想运放的失调电压是零但实物不是。通用运放的失调电压通常在1-5mV精密运放能做到50μV以内斩波运放能做到亚微伏级。这个参数对测温电路的影响有多大我算给你看。差分放大器增益是15倍如果运放输入端存在1mV的失调电压等效到输出端大约是15mV左右的固定偏移单运放差分结构的具体公式是Vos*(1R2/R1)即16mV左右。测温灵敏度是每摄氏度0.385mV放大15倍也就是5.775mV/°C。拿16mV除以5.775mV/°C算出来的结果是大约2.8°C。也就是说一个1mV失调的普通运放直接让这台温度计产生将近3°C的零点误差。这在很多工控场景里是不可接受的。LTspice里验证这个影响很简单在差分放大器的同相输入端串联一个低值电压源Voff然后扫描它.step param VOS -1m 1m 0.5m在Voff的Value里写{VOS}配合上面的扫描输出曲线会呈现一组平行线。从这组曲线能直观看到失调电压每变化1mV输出端偏移大约16mV等效温度误差约2.8°C。解决思路有三个方向。一是选低失调运放比如OP07失调150μV、LT1001失调60μV、LTC2057失调0.5μV二是采用自动调零或斩波架构三是在软件里做单点校准把固定偏移消掉。工程上通常是硬件选低失调软件单点校准双管齐下。4.3 线性度计算与软件补偿策略接下来是把仿真曲线和理想直线做对比看看Pt100的非线性在这个量程内到底会造成多大误差。最简单的方法是用端点连线作为参考直线。在我这个-50°C到200°C的量程内两个端点分别是(1.205V, -50°C)和(2.638V, 200°C)理想直线斜率正好是5.775mV/°C。用这条直线回算各个温度对应的理想输出电压再与仿真实际输出对比。算出来最大的偏差出现在中间某个位置具体数值因量程而异。我在0到200°C范围评估时最大非线性误差折合温度大约是0.5°C到1°C如果把量程扩展到-50到500°C这个误差会急剧放大到好几摄氏度。处理这个误差有两条路线。如果系统里用的是带查表功能的微控制器最稳妥的办法是存储一组温度-输出对照表用线性插值计算温度。以5°C步长生成一张51点的表插值误差可以控制在0.05°C以内。如果存储资源紧张就用最小二乘法拟合一个二次多项式T aVout² bVout c把仿真数据导出在Excel或者Python里做一次多项式拟合就能得到系数。二次拟合在这个量程内可以把残余误差压到0.1°C以下。我自己的习惯是前期仿真阶段先不纠结补偿算法把原始的非线性误差算清楚、记录好等到确定ADC分辨率和处理器资源之后再来决定用查表还是多项式。因为补偿算法的写法取决于最终系统的算力而误差数据本身是线路硬件决定的提前算清楚不会白费功夫。5. 仿真里容易忽视的工程细节很多人在LTspice里跑通了电路就觉得万事大吉结果焊完板子却差好几摄氏度。这是因为仿真里的理想条件在现实里并不存在。以下这几个坑我建议在仿真阶段就有意识地把它们加进模型里。5.1 自热效应1mA这个值不是随便定的恒流源激励电流越大Pt100上的压降越大信噪比越高但同时自热效应也越严重。自热本质上是激励电流在传感器电阻上消耗功率产生焦耳热导致铂电阻自身温度高于被测介质温度。自热功率公式是PI²R。我选的1mA电流在200°C时R175.86Ω功率是0.176mW。Pt100的自热系数根据封装和安装方式不同大约在2到40°C/W之间。以最不利的空气环境计算0.176mW产生的自热温升约0.007°C可以忽略不计。但如果把电流调到5mA功耗变成4.4mW自热温升可能达到0.1°C以上在某些低导热介质里甚至到0.5°C。这个误差比很多运放失调还严重而且它不像失调电压那样可以通过单点校准消掉因为它随被测温度变化而变化。所以激励电流的选择原则是在系统ADC分辨率允许的前提下尽量用小电流。0.5到1mA是Pt100应用里的常见选择。如果后续把恒流源改成2.5V桥路激励记得也按这个逻辑核算一下传感器的发热。5.2 引线电阻二线制、三线制、四线制的误差量化仿真原理图里传感器和放大器之间没有导线电阻但实际上一米长的普通铜导线就有毫欧到百毫欧级电阻。这个电阻是串联在测温回路里的会直接叠加到Pt100的阻值上。我做一个简单的二线制估算假设每根引线电阻0.1Ω两根就是0.2Ω。注意Pt100的灵敏度是0.385Ω/°C那么这0.2Ω折合成温度就是0.2/0.385≈0.52°C。如果引线再长一点、线径再细一点误差轻松超过1°C。更麻烦的是引线电阻还随环境温度变化如果线缆一段在热区一段在冷区误差根本没法用固定值补偿。三种接线制式的对比接线方式误差来源典型误差引线0.1Ω/根适用场景二线制两根引线电阻全部串联约0.52°C短距离、精度要求低三线制等价于抵消一根引线约0.26°C工业现场常规四线制测量回路无电流理论上为零高精度计量三线制和四线制在LTspice里怎么验证很简单在Pt100两端各串一个电阻模拟引线然后在差分放大器的输入端从Pt100本体的两端引出而不是从引线远端引出。四线制的本质是激励电流走两根线测量电压走另外两根线测量回路里没有电流所以线上没有压降误差自然为零。如果你打算做二线制我强烈建议在仿真里把引线电阻显式加上去然后跑一遍温度扫描看看在你的测温量程内引入了多少绝对误差。很多时候仿真跑完你就不想用二线制了。5.3 给ADC的一阶RC滤波信号链的末端是ADC。如果ADC直接采样放大器的输出高频噪声和工频干扰会被一起采进去。常规做法是在放大器和ADC之间加一个一阶RC低通滤波。截止频率的选择要兼顾抑制噪声和响应速度。我的经验是取信号带宽的10倍以上同时把截止频率放在远离工频干扰的位置。假设测温环路本身的响应是10Hz量级RC滤波截止频率可以设在100Hz左右。计算方法是fc 1 / (2πRC)取R10kΩC0.1μF算出来fc159Hz符合预期。这个组合对50Hz和100Hz干扰都有比较明显的衰减。在LTspice里可以用交流分析跑一版频率响应直接验证这个滤波器对带外噪声的抑制能力。关于RC滤波还有一个细节滤波电阻本身的小温漂和误差会在ADC输入端引入分压误差如果ADC输入阻抗不够高的话。所以仿真时看一下ADC输入端的直流负载效应如果差得多就把R改小、C改大。5.4 从LTspice到实物别把仿真当成终点最后说点仿真之外的事。LTspice能帮你解决增益、偏置、噪声、误差分配这些电路级的问题但有几样东西仿真里看不到。电阻容差。仿真电阻值是精确的实物电阻有1%甚至5%的误差。差分放大器的共模抑制直接受电阻匹配度影响我在3.3节里算过1%电阻就能造成好几摄氏度的等效误差。所以实物选型时差分部分的四个电阻要么用0.1%的薄膜精密电阻要么直接用集成仪表放大器。运放的偏置电流和失调温漂。偏置电流流过外部电阻会产生额外压降失调温漂是温度变化后失调电压跟着漂这两样在高精度场合都不能忽视。选型时优先考虑偏置电流在纳安级以下、失调温漂在0.1μV/°C量级的运放。ADC前端的输入阻抗和采样保持特性。有些ADC的输入端在采样瞬间会抽取脉冲电流如果之前的RC滤波电阻太大会充不上电导致采样偏差。这块就需要结合具体的ADC数据手册来看了。如果你不想自己搭模拟前端也可以用集成了恒流源、PGA和24位ADC的专用芯片比如AD公司的ADS1220就是这类方案的典型代表两个内部IDAC可以直接给Pt100提供激励内置可编程增益放大器和温度传感器几行寄存器配置就能跑起来。LTspice对这类混合信号芯片的仿真支持很有限通常只能仿它前面的分立前端但前面讲的传感器建模、自热核算、引线误差估算这些方法放到集成方案里一样成立因为物理规律不会因为芯片集成度变了就失效。我自己通常的做法是在LTspice里把分立前端方案完完整整跑一遍取得各点电压、误差分配和滤波参数然后对照集成芯片的数据手册看哪些指标需要由芯片内部资源来保证哪些指标还得靠外围电路兜底。这样既能把原理吃透又不至于在方案选型上钻牛角尖。
返回列表