ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

基于LTspice的Pt100测温电路设计:从建模到仿真全流程

2026/10/3 1:24:43 拓冰建站 浏览量
基于LTspice的Pt100测温电路设计:从建模到仿真全流程 做温度采集这几年我最大的感受就是Pt100测温电路看起来很基础真正做准了并不容易。去年我调一个从零下10℃到105℃的测控模块第一版图省事用了NTC现场跑了一个月就漂了小两度换成Pt100之后又被恒流源的噪声和零点偏置折腾了好几轮。后来养成了一个习惯任何测温链路先在LTspice里把静态工作点、增益、零点扫一遍再决定打不打样。这篇就把我基于LTspice设计一套完整Pt100测温电路的流程整理出来包括传感器建模、偏置与放大链路计算、仿真参数设置以及几个容易踩的坑。内容对正在做温度采集的硬件工程师、相关专业的学生以及准备从NTC转用Pt100的开发者应该都有参考价值。1. 设计思路与方案选型1.1 测温元件为什么不选NTC或热电偶测温这件事很多人第一反应就是用NTC便宜、灵敏度高、电路简单。但NTC有个天生短板互换性差同一个型号不同批次之间的阻值离散度比较大而且B值本身随着温度变化经验公式在不同温度区间需要分段拟合。更麻烦的是长期稳定性胶封或玻封的NTC在高温高湿环境下老化后阻值会漂漂移量还不一定一致这意味着你在产线校准一次过几个月可能又偏了。热电偶则是另一个极端测温范围宽、响应快、耐高温但输出信号只有几十微伏到几十毫伏对环境噪声和冷端补偿要求极高。你要在常温附近做一个0.5℃精度的温度采集用热电偶就得把冷端补偿、等温块、滤波器、高增益低噪声放大器全部做扎实成本并不便宜。Pt100刚好落在两者中间。铂电阻的阻温特性由IEC 60751标准定义A级产品在0℃的误差能控制在±0.15℃以内长期稳定性远好于NTC。虽然它的灵敏度不高100℃范围内才变化38.5Ω但正因为信号变化不大整个测量链路的设计反而更需要讲究这也是我写这篇文章的出发点把Pt100电路从传感器模型到仿真验证一点点抠清楚误差就能控制在可接受的范围内。1.2 为什么先把电路扔进LTspice再上板LTspice是能免费商用且没有节点数量限制的SPICE仿真工具对低频模拟电路来说完全够用。很多人觉得测温电路就几个电阻一个运放直接焊板子也能调但问题在于有些坑是焊完才知道的零点偏置不对、放大器增益压不住、电流源温漂超预期、甚至原理图看着没问题实际PCB走线串进来的噪声却很大。用LTspice做设计验证核心价值不是“模拟”一个电路而是把一个模糊的想法变成可以量化的数据。比如恒流源给0.5mA、Pt100在100℃时输出多少毫伏、放大多少倍能匹配ADC满量程、中间有没有非线性误差、参考电阻温漂能不能接受这些在仿真里花十分钟就能跑清楚。改参数也只是改一个数字的事不用反复焊接、拆件。另外一个优势是LTspice自带的库里有大量运放模型比如LT1001、LT1014这些也有通用运放模型UniversalOpamp2。测温电路用到的器件并不偏门几乎不需要额外下载第三方模型复现成本很低。下面我就按这套流程从传感器建模开始一步步把整个电路设计出来。2. Pt100传感器模型从物理特性到仿真建模2.1 Pt100的阻值-温度关系到底怎么算Pt100的标称阻值是0℃时100Ω。在0℃到850℃范围内IEC 60751给出的阻温特性是R(t) R0 * (1 At Bt²)其中R0100ΩA3.9083e-3/℃B-5.775e-7/℃²。注意B是负值这意味着Pt100的阻值-温度曲线并不是一条直线而是略微向下弯曲。以0.5mA恒流源激励为例不同温度下的阻值和电压如下表温度(℃)理论电阻(Ω)PT100两端电压(mV)相对0℃差值(mV)0100.00050.0000.00025109.73554.8674.86750119.39759.6999.69975128.98764.49414.494100138.50669.25319.253虽然我们常说铂电阻近似0.385Ω/℃但在整个0~100℃区间里实际斜率是在变化的。100℃时真实阻值是138.5055Ω如果直接用0℃时的斜率0.39083Ω/℃做线性外推算出来会差大约1.5℃。如果采用0℃和100℃两点校准做线性内插中间50℃附近也会有0.3~0.4℃的非线性残差。所以高精度应用要嘛用完整多项式换算要嘛用查表法。2.2 在LTspice里搭一个可扫描温度的Pt100模型LTspice里模拟Pt100最直接的办法是把电阻的阻值写成温度参数的函数表达式。原理图上放一个普通电阻把Value栏填成{100 * (1 0.0039083 * Temp - 0.0000005775 * Temp * Temp)}然后在原理图里添加两条SPICE指令.param Temp 25 .step param Temp 0 100 5运行.op静态工作点仿真时LTspice会按5℃步进自动扫描Temp这个参数每扫描一次就重新计算一次电阻值。查看波形时横轴默认就是Temp可以直接看到整个温度范围内的输出变化。这里有个容易出错的地方如果不加花括号直接把整个表达式填进电阻Value栏LTspice会把它当成一串字符串仿真就会报“Unknown schematic syntax”之类的错误。所以花括号必须保留参数名我习惯用Temp而不是T避免和spice里温度节点的简称混淆。如果你希望把Pt100封装成一个独立子电路反复调用也可以建一个subckt用0V电压源采样支路电流再用行为电压源按等效电阻压降输出。一个可参考的模型是* Pt100 温度等效电阻子电路 .SUBCKT PT100_THERM A B PARAMS: Temp25 V1 A N1 0 E1 N1 B VALUE {I(V1) * 100 * (1 0.0039083 * Temp - 0.0000005775 * Temp * Temp)} .ENDS PT100_THERM不过这个行为源模型在有强反馈回路时偶尔会遇到收敛困难所以我的建议是验证电路架构用简单电阻表达式就够只有当你需要把PT100封装成库里一个固定器件、或者做更复杂的传热动态仿真时再考虑子电路方式。2.3 模型验证仿真之前先确认没有搭建错误很多人在LTspice里搭完电路就急着看输出曲线结果波形不对又找不到原因。我习惯先做一个最简单的验证把I1设成0.5mA理想电流源只接PT100电阻模型到地跑一次.op静态工作点然后波形窗口看PT100两端电压用电压除以电流换算回来对照表格里的理论电阻值。比如扫到50℃时PT100两端电压应该约59.699mV电流0.5mA除回来就是119.398Ω。如果这个数和理论值对不上那就是模型表达式写错了先修模型再看后续电路。这一步虽然简单却能把“传感器模型错误”和“放大电路错误”这两类问题隔离省掉后面联调时的排查时间。3. 测温电路完整设计与参数计算3.1 恒流源偏置0.5mA这个电流是怎么定下来的Pt100是电阻型传感器必须给它一个激励才能转换成电压。最常见的两种激励方式恒压源加分压电阻以及恒流源。恒压分压确实简单但输出电压和电阻之间是非线性关系信号动态范围被压缩恒流源激励下传感器两端电压UI*R(t)阻值变化直接线性映射到电压变化后面做放大和ADC采集都更友好。激励电流不能随便选主要受两个因素限制自热和灵敏度。电流越大传感器上的信号电压越大但功耗也越大。Pt100探头在大气环境下的自热系数通常在0.02℃/mW到0.4℃/mW之间0.5mA电流在100Ω上产生的功耗是P I² * R 0.0005² * 100 25μW这个功耗引起的自热温升基本可以忽略。如果加码到1mA功耗变成100μW多数探头自热误差还能接受到2mA就是0.4mW在散热差的探头里就可能带来0.1℃甚至更高的漂移。所以高精度场合我习惯用0.5mA既保证信号幅度够用又把自热压到极低。在LTspice里这一步可以直接放一个DC电流源I1电流值设0.5mA。实物电路可以用LM334/LM134这类可编程恒流源也可以用基准电压运放晶体管搭有源恒流源后者精度更高但基准电压的温漂会成为新的误差源选型时要注意。3.2 双恒流源差分结构零点是设计出来的不是调出来的如果只用一个恒流源给Pt100供电0℃时输出也有50mV的直流电平。直接放大100倍后就是5V放大器早就饱和了。所以必须在电路结构上做零点消除。我常用的结构是双恒流源差分测量一路0.5mA电流流过Pt100另一路0.5mA电流流过参考电阻R0R0取100Ω精度0.1%、温漂25ppm/℃。两个电阻下端都接到系统地仪表放大器的正输入端接Pt100高端负输入端接R0高端。在0℃时Pt100100Ω两路压差为0100℃时Pt100138.5055Ω两路压差为(138.5055 - 100) * 0.5mA 19.25275mV这个19.25mV就是我们需要放大的全部信号零点被电路结构从硬件上消掉了。相比用一个电位器在0℃慢慢调零点这种结构最大的好处是零点稳定不随运放失调、电源电压变化而大幅漂移。3.3 放大增益计算与仪表放大器选型假设后续ADC参考电压是2.5V希望0~100℃的输出尽量贴近0~2.5V的满量程范围。那么增益是G 2.5V / 19.25275mV ≈ 129.85取整数G129那么100℃时最大输出电压约2.484V给50mV左右的余量让运放输出不至于撞到电源轨。仿真时可以先用行为电压源E1实现这个增益Value表达式写{(V(pt) - V(r0)) * 129}搭真实硬件时推荐用仪表放大器比如INA128、AD8221、AD620。INA128的增益公式是G150kΩ/RG代入129后得到RG≈390.625Ω取标称390Ω时实际增益约129.2100℃输出约2.49V完全满足要求。有人会问能不能用单个运放搭差分放大电路可以但单运放差分放大器的两个输入阻抗不对称在热电阻这类低阻抗源上指标会受影响CMRR也不理想。工业测温中传感器引线可能较长共模干扰更明显仪表放大器的高CMRR和有源输入缓冲是省不掉的。这也是整个设计里最值得花钱的部分。3.4 噪声与分辨率核算放大倍数不是越大越好增益定下来之后还要算一遍系统分辨率。如果ADC是12位、参考2.5V那么1个LSB对应的电压是2.5V / 4096 ≈ 0.61mV对应到温度就是0.61mV / 0.1925mV·℃⁻¹ ≈ 3.17℃如果你看到的采集温度最后一位乱跳、精度上不去很可能就是ADC位数不够。换成16位ADC后1个LSB对应约0.038mV折算温度分辨率约0.2℃这就比较合理了。如果ADC位数已经固定也可以通过继续提高增益来提升分辨率但要留出足够的满量程余量防止最高温时放大器饱和。所以放大倍数不是越大越好要跟ADC参考、温度范围、运放输出摆幅一起看。4. LTspice仿真搭建与验证过程4.1 新建原理图与元件放置要点打开LTspice XVII新版界面略有不同但操作逻辑一致File - New Schematic开始新建原理图。要放的元件包括两个电流源I1、I2电流值设0.5mA方向要仔细确认电流必须从电源侧流入Pt100和R0的高端再从电阻下端流出到地。放反了高端电压变成负值后面所有静态工作点全乱。一个电阻Rpt100Value填上面写的温度表达式作为Pt100模型。一个电阻R0阻值100Ω作为参考电阻。一个行为电压源E1Value填差分放大表达式。一个电压源VCC5V给整个系统供电因为电流源本身不消耗能量模型但接一个电源更接近真实系统。节点命名很重要。在需要观测的节点上放Net Label比如pt、r0、out。LTspice波形窗口默认按节点名显示电压命好名以后看波形会非常清晰不用在一堆N001、N002里面猜。4.2 设置温度扫描与静态工作点仿真在原理图里放置好SPICE指令包含三行.param Temp25 .step param Temp 0 100 5 .op.param定义默认温度.step让温度从0℃扫到100℃、步进5℃.op做直流工作点分析。对于纯阻性和运放构成的静态测温电路.op就够了不需要跑.tran瞬态。设置完成后点击RunLTspice会自动计算所有温度扫描点。查看V(out)和V(pt)、V(r0)的波形。如果横轴不是温度在波形窗口右键选择X Axis Settings把X轴的变量改成Temp即可。我还习惯把两个支路的电流也加到波形窗口里确认I1和I2都稳定在0.5mA附近。如果电流偏了说明模型表达式或者电流源方向有问题。4.3 仿真输出结果与指标核对按上面的参数仿真得到的输出应该是这样温度(℃)理论输出(V)说明00.000零点差值为0250.628略高于满量程25%的0.625V501.251中段接近2.5V的50%751.870非线性导致略低于75%的1.875V1002.484接近满量程留有少量余量这个结果说明两个问题第一整体增益已经把19.25mV小信号放大到接近2.5V的量级后级ADC的动态范围能被充分利用第二输出和温度之间并不是完美的直线因为Pt100的B项非线性会带上系统里来中间温度点和线性插值会有偏差。所以后续软件标定时我建议用多点标定或者查表不要只做两点线性校准不然在50℃附近会引入0.3~0.4℃的误差。5. 常见问题与排查技巧实录5.1 自热效应与激励电流的取舍激励电流选0.5mA是折中但在实际项目里会遇到一些特殊情况。比如有些微小型薄膜Pt100探头热容很小、散热条件差0.5mA下的25μW可能仍然会让感温元件自身温度高出环境零点几度。你可以在LTspice的模型里把自热近似成一个受控源并把探头热阻模型引进去但我个人觉得这点误差不如直接实测来得准在恒温槽里分别用0.25mA、0.5mA、1mA激励对比读数如果温度变化超过设定精度的一半就该降低电流。另外一个常被忽略的坑是恒流源的纹波和噪声。瞬态噪声虽然不一定会改变平均电流但会通过传感器电阻变成电压噪声叠加在信号里。仿真时可以给电流源并联一个RC低通到地或者在看噪声时跑.noise分析看一下等效到输入端的噪声电压密度提前判断是否需要加滤波。5.2 导线电阻与二线制/三线制/四线制的误差分析Pt100探头如果离电路板距离远导线电阻就会混进测量回路。以0.5mm²铜线为例百米来回大概3Ω多按Pt100平均灵敏度0.385Ω/℃算就是将近8℃的误差完全不能用。接线方式误差来源适用场景二线制引线电阻全部计入传感器阻值距离很近的板级测温三线制利用两根等长线压降近似相等做补偿工业变送器10~50m走线四线制激励和采样分开采样线几乎无电流精密测量、实验室级系统在LTspice里可以直观模拟这个过程在PT100模型两端各串一个0.1Ω到1Ω的小电阻再看输出变化。我实际测试过串1Ω电阻在0.5mA下会带来0.5mV误差折算温度约2.6℃这个量级足以让一个原本合格的方案变得不合格。所以板内走线建议用开尔文连接把电流路径和采样路径分开避免共享一段覆铜。5.3 LTspice仿真常见报错与收敛问题用LTspice仿真这种电路最常见的几个问题我按出现概率排序Unknown schematic syntax多半是电阻Value表达式少了花括号或者参数名写错。检查一下SPICE指令里的.param和.step有没有拼写正确电阻表达式有没有用大括号包住。行为电压源不收敛E1的行为源表达式里如果引用了节点电压在某些运放闭环结构下可能出现收敛冲突。最简单的处理是给行为源输出端并一个1MΩ电阻到地给迭代器一个直流路径通常就能解决。运放模型找不到LTspice库里的运放模型已经够用但如果你图省事想用某个具体型号而没有装对应的库就会报模型缺失。建议先用UniversalOpamp2它有两个版本UniversalOpamp有理想的输入阻抗和输出能力UniversalOpamp2则可以设置开环增益、GBW、输出电流等参数更适合模拟真实运放。.step扫描范围太粗如果最终确认某个温度点附近有细节问题把.step步进改成1℃甚至0.1℃再跑一次别用5℃的曲线去判断细节。调试顺序也很重要。我一般是先断开放大链路单独看PT100和R0的电压确认传感器模型和电流源正常再接上E1看差分和增益是否正确最后才接入真实运放模型或者更复杂的电路。每步一个验证点出了错也知道是哪层的问题。6. 从仿真到实物的硬件落地经验6.1 实际元件选型与PCB布局要点仿真通过之后硬件选型有几个容易踩的坑。R0参考电阻的误差会直接变成零点误差R0漂移多少系统零点就漂多少。R0一定要选低温度系数的精密电阻0.1%精度、25ppm/℃比较稳妥预算够的话用5ppm/℃的更好。恒流源部分如果自己搭运放恒流源基准电压芯片的温度系数是最容易被忽略的。普通TL431温漂在几十ppm量级高精度场合建议用REF5025或者类似低漂移基准。如果不想在恒流源上花太多精力LM334/LM134这类三端可调恒流源方案也能用但注意它的设定电流精度受温度影响需要按数据手册做温度系数补偿。PCB布局上PT100的采样走线要尽量远离大电流和开关节点。差分信号的两条线靠在一起走最好走成一对平行线减少环路面积。仪表放大器的引脚旁边就近放0.1μF去耦电容整个模拟区域和数字区域用单点或星型接地。输出到ADC之间可以加一阶RC低通截止频率根据采样率来定我常用10Hz左右的低通滤掉工频和高频噪声。6.2 标定与软件校准无论硬件设计多好出厂校准都躲不掉。最简单的两点校准是用冰水混合物做0℃点用沸水或恒温槽做100℃点分别记录ADC的原始码值然后计算增益修正和偏移修正gain (adc_100 - adc_0) / 100 offset adc_0这个线性模型在0~100℃范围内大约有0.3~0.4℃的非线性残差。如果要求更高可以在20℃、40℃、60℃、80℃多取几个点做分段线性插值或者最小二乘多项式拟合。实测下来用五段查表后整个0~100℃范围内的误差可以压到0.15℃以内剩下的主要限制就是传感器自身公差和恒温槽的波动了。这个标定参数建议写进EEPROM量产时每个单板单独标定一次。仿真阶段算出的理论增益只是参考实际电阻误差、运放失调、ADC增益误差都会让真实曲线偏离理想值不做标定就出厂的产品精度是不可能达标的。6.3 实测误差来源与仿真差异分析仿真和实测之间永远存在差距提前知道差距来自哪里调试时就能少走弯路。第一个差异是电流源仿真里的理想电流源是完美0.5mA实物恒流源会有温漂基准电压的变化会直接线性映射到输出电压上折算成温度误差。第二个是传感器本身A级Pt100在0℃也有±0.15℃的公差这不是电路能解决的需要靠标定消除。第三个是热电动势焊点处不同金属接触只要存在温度梯度就会产生微小的热电势对毫伏级信号有影响。尽量避免在信号通路上制造太多异种金属焊点并让关键焊点处于等温状态。真机调试时我习惯先在板级短接一个精密电阻模拟Pt100比如100Ω和138.5Ω看输出是否正确这样可以先把恒流源和放大链路调准再接入实物探头避免传感器和电路问题混在一起。最后分享一点个人习惯仿真跑通后不要急着打样我会在LTspice里把激励电流分别改成1mA和0.25mA各扫一次观察输出余量和自热对结果的影响再在关键节点加一个10Hz低通提前评估噪声抑制效果。测温电路没有一招鲜的方案早期多花一个小时在仿真上出样后至少能少焊接三次。