PT100 是工业现场最常见、也最容易被低估的测温元件。说它常见,是因为从锅炉房到恒温箱,从食品冷链到实验室烘箱,几乎到处都能看到它的身影;说它容易被低估,是因为很多人第一次画 PT100 采集电路时,都会觉得"不就是个电阻吗,通个电流测电压就完了",结果板子打回来一测,读数跳得比心电图还热闹。我前后做过四五个 PT100 采集项目,从最初用分立运放搭恒流源,到后来老老实实上 AD623 仪表放大器,中间踩过的坑足够写一本小册子。这篇笔记就把我用 AD623 放大 PT100 信号的完整调试过程摊开来讲,包括恒流源怎么选、单电源供电为什么容易翻车、PCB 布局到底哪些线不能乱走,以及那些文档里不会写、但实测会让你抓狂的细节。如果你正准备做一路 PT100 采集,或者手上已经有一块读数不稳的板子,这篇内容应该能帮你省下至少三天的返工时间。
1. 先搞清楚 PT100 到底需要什么样的信号链
1.1 为什么不能直接给 PT100 加个电压就测
很多人脑子里第一个方案是:给 PT100 串一个电阻分压,然后 ADC 直接采分压点。这个思路在理论上没错,但实际做起来问题一大堆。PT100 在 0℃ 时是 100Ω,到 100℃ 时大约 138.5Ω,满量程变化只有 38.5Ω。如果你用 3.3V 分压,假设串联电阻也是 100Ω,那么 0℃ 时分压点是 1.65V,100℃ 时是 1.94V,整个量程只有 290mV 的变化。ADC 就算用 16 位、参考电压 3.3V,1LSB 也才 50μV,290mV 对应大约 5800 个码值,看起来够用。但问题在于,分压方案里流过 PT100 的电流是随温度变化的,PT100 阻值变大,回路电流就变小,这会导致严重的非线性。更麻烦的是,分压电阻本身的温漂会直接叠加到结果里,你用个普通 1% 精度的电阻,温度一变,读数就跟着飘。
所以工业上做 PT100 采集,标准做法是恒流源激励。让一个稳定的电流流过 PT100,那么 PT100 两端的电压就严格正比于它的阻值,线性度天然就好。常用的激励电流在 0.5mA 到 1mA 之间,为什么是这个范围?因为电流太大会导致 PT100 自热,PT100 本身功耗产生的热量会让它的温度高于环境温度,引入测量误差。1mA 流过 100Ω 时功耗是 0.1mW,自热误差通常在 0.01℃ 量级,可以接受;如果上到 5mA,功耗变成 2.5mW,自热误差可能就到 0.1℃ 以上了,对于精密测量来说就不能忍了。
1.2 AD623 在这条链路里扮演什么角色
恒流源流过 PT100 之后,我们得到的是一个差分电压。0℃ 时是 100Ω × 1mA = 100mV,100℃ 时是 138.5Ω × 1mA = 138.5mV。这个信号有两个特点:一是幅度小,满量程只有 38.5mV;二是它是差分信号,而且共模电压可能不低。这时候就需要仪表放大器出场了。
AD623 是一款经典的单电源、轨到轨输出仪表放大器,它的核心价值在于三点:第一,高共模抑制比,能把 PT100 长线引入的共模干扰压下去;第二,单电阻设定增益,外部只用一个电阻就能把增益从 1 调到 1000,非常灵活;第三,单电源供电,3V 到 12V 都能工作,特别适合现在流行的 3.3V 或 5V 系统。我用 AD623 把 38.5mV 的满量程信号放大到 1.5V 左右,增益大约 39 倍,这样后级 ADC 就能充分利用它的输入范围,分辨率直接上一个台阶。
这里有个关键点:AD623 的增益公式是 G = 1 + 100kΩ / Rg。如果你想要 39 倍增益,Rg = 100kΩ / 38 ≈ 2.63kΩ。实际选型时我一般用 2.7kΩ 的 0.1% 电阻,增益就是 1 + 100/2.7 ≈ 38.04,满量程输出 38.5mV × 38.04 ≈ 1.46V,留一点余量给 ADC 的参考电压,刚刚好。
1.3 单电源供电下最容易忽略的共模范围问题
AD623 在单电源下工作时,输入共模电压范围不是从 0V 开始的。它的内部结构决定了输入共模电压有一个下限,通常比负电源轨高 1.5V 左右(具体看数据手册的共模范围曲线)。如果你用 3.3V 单电源,负轨接地,那么输入共模电压最低可能要到 1.5V 以上才能保证正常工作。但我们的 PT100 信号,如果恒流源下端接地,PT100 上端电压只有 100mV 到 138.5mV,这个共模电压远远低于 AD623 的下限,放大器根本没法正常工作。
这就是为什么恒流源不能简单接地。正确的做法是把恒流源"抬"起来,让 PT100 两端的共模电压落在 AD623 允许的范围内。常见方案有两种:一种是用一个稳定的参考电压(比如 1.25V 或 2.5V)作为恒流源的"地",PT100 下端接这个参考电压,上端就是参考电压加上 100mV 到 138.5mV;另一种是采用双电源供电,正负电源对称,共模电压自然就在 0V 附近。我个人的经验是,如果系统里已经有 5V 或 3.3V 单电源,优先用抬参考地的方案,省一路负电源,PCB 也简单。
2. 恒流源方案选型:从运放加 MOS 到双二极管
2.1 运放加 MOS 管恒流源的实战细节
恒流源是整条链路的根基,它的稳定性直接决定测量精度。我最早用的是运放加 MOS 管的方案,电路结构是:运放同相端接一个参考电压,反相端接采样电阻下端,运放输出驱动 MOS 管栅极,MOS 管源极接采样电阻上端,漏极接负载(PT100)。运放通过负反馈强制采样电阻两端电压等于参考电压,从而让流过采样电阻的电流恒定。
这个方案听起来简单,但实际调试时有几个坑。第一,运放的选择很关键。如果你用普通 LM358,它的输入失调电压可能有几毫伏,直接导致恒流精度差好几个百分点。我后来换成 OP07 或者 ADA4522 这类低失调运放,恒流精度立刻上来了。第二,MOS 管的选型要注意。小信号 MOS 管比如 2N7002,它的跨导有限,在低电流下工作点可能不稳定。我一般用 BSS138 或者专门的低压 MOS,栅极阈值电压要低,保证 3.3V 系统能完全导通。第三,采样电阻的温漂。这个电阻直接决定电流大小,如果它随温度变化,电流就跟着变。我吃过一次亏,用了普通厚膜电阻,温度升高 20℃ 后读数偏了 0.5℃,后来换成 0.1% 精度的金属膜电阻,问题才解决。
2.2 双二极管恒流源为什么在低成本方案里很香
双二极管恒流源是我在一个低成本项目里学到的方案。它的原理是利用两个二极管的压降差来产生一个稳定的电压,再通过一个电阻转换成电流。具体电路是:一个二极管接在电源和电阻之间,另一个二极管接在电阻和地之间,两个二极管的压降差(大约几十毫伏)除以电阻值就是电流。这个方案的优点是极其便宜,两个 1N4148 加一个电阻就搞定,而且温度系数可以部分抵消。
但它的缺点也很明显:电流精度依赖二极管的匹配度。两个二极管的压降差本身就有离散性,而且随温度变化的曲线不完全一致,所以恒流精度通常只有百分之几。如果你的测量精度要求不高,比如只需要分辨 1℃,那这个方案完全够用;但如果要做 0.1℃ 级别的测量,还是老老实实上运放方案。我在一个农业大棚测温项目里用过双二极管方案,因为大棚温度变化慢,精度要求不高,成本压得很低,效果还不错。
2.3 程控恒流源在多点采集里的价值
如果你的系统需要切换多个 PT100 通道,程控恒流源就很有价值了。它的思路是用一个 DAC 或者数字电位器来设定恒流源的参考电压,从而动态改变激励电流。为什么要变电流?因为不同的 PT100 可能工作在不同的温度区间,如果统一用 1mA,低温通道的信号幅度可能太小,高温通道又可能自热严重。程控方案可以让每个通道用最适合的电流。
不过程控恒流源也带来了新的问题:切换瞬间的建立时间。DAC 输出变化后,运放和 MOS 管需要时间重新稳定,如果切换太快,ADC 采到的可能是还没稳定的值。我的做法是在切换后加 10ms 到 50ms 的延时,等恒流源完全稳定再启动 ADC 转换。这个延时看起来不起眼,但在多通道轮询系统里,它会直接影响总采样率,设计时要提前算好。
3. AD623 外围电路:那些数据手册不会强调的细节
3.1 增益电阻的精度和温漂怎么选
AD623 的增益完全由外部电阻 Rg 决定,所以这个电阻的精度直接就是增益的精度。数据手册推荐用 0.1% 精度的电阻,但很多人会忽略温漂。假设你用了一个 100ppm/℃ 的电阻,温度变化 20℃,阻值变化 0.2%,增益就跟着变 0.2%,对于 100℃ 量程来说就是 0.2℃ 的误差。我一般选 25ppm/℃ 以内的金属膜电阻,虽然贵一点,但省心。
还有一个细节:Rg 的引脚要走短线。AD623 的 Rg 引脚(1 脚和 8 脚)对寄生电容很敏感,如果走线太长,会引入额外的相位延迟,严重时可能导致放大器振荡。我在第一版 PCB 上把 Rg 电阻放得离芯片有点远,结果输出上叠加了大约 50kHz 的振荡,后来把电阻挪到紧贴芯片,振荡就消失了。这个教训让我后来养成了一个习惯:仪表放大器的增益电阻,永远放在芯片旁边,走线不超过 5mm。
3.2 参考端怎么接才能让输出不跑偏
AD623 有一个 REF 引脚,它决定了输出电压的基准。在单电源供电时,如果你把 REF 接地,那么输出只能在 0V 到正电源之间摆动。但 AD623 的输出并不能真正到 0V,它有一个大约 50mV 到 100mV 的下限。如果你的信号很小,输出可能被这个下限"吃掉"一部分,导致非线性。
我的做法是把 REF 接一个稳定的偏置电压,比如 0.5V 或 1V。这样输出就以这个偏置为中心摆动,避开了输出下限的死区。偏置电压可以用一个电阻分压加缓冲器产生,或者直接用基准芯片。我通常用 TL431 产生 2.5V,再分压得到 0.5V,经过一个运放缓冲后接到 REF 引脚。这样输出的零点就在 0.5V,满量程输出在 0.5V + 1.46V = 1.96V,完全落在 ADC 的舒适区内。
3.3 输入滤波和共模干扰的实战处理
PT100 通常通过长线连接到采集板,长线就是天线,会拾取各种共模干扰。AD623 虽然有很高的共模抑制比,但那是针对直流和低频共模的,高频干扰它也无能为力。所以输入端的滤波必不可少。
我的标准做法是在 AD623 的两个输入端各串一个 100Ω 电阻,然后在两个输入端之间接一个 100nF 电容,每个输入端对地再接一个 10nF 电容。这样构成一个差分低通滤波器,截止频率大约在 1kHz 左右,能把大部分高频干扰挡在外面。注意,串联电阻不能太大,因为 AD623 的输入偏置电流会在这些电阻上产生压降,引入失调。100Ω 乘以 1nA 的偏置电流只有 0.1μV,完全可以忽略;但如果你用 10kΩ,压降就是 10μV,相当于 0.01℃ 的误差,就不能忽视了。
4. PCB 布局:PT100 采集板的成败有一半在这里
4.1 模拟地和数字地到底怎么分
PT100 采集板通常既有模拟部分(恒流源、AD623、基准)又有数字部分(MCU、ADC 数字接口)。如果地平面处理不好,数字部分的开关噪声会通过地平面耦合到模拟部分,读数就会跳。我的做法是单点接地:模拟地和数字地在 PCB 上分开铺铜,然后在 ADC 下方用一个 0Ω 电阻或者磁珠连接。这样数字地的噪声不会直接灌到模拟地。
但单点接地也有讲究:连接点要选在 ADC 的 AGND 引脚附近。因为 ADC 是模拟和数字的交界处,它的 AGND 是模拟参考,DGND 是数字参考,把连接点放在这里,可以保证 ADC 的模拟参考不受数字地噪声影响。我见过有人把连接点放在电源入口,结果 ADC 的模拟地和数字地之间还是有压差,读数照样跳。
4.2 恒流源和放大器的走线禁忌
恒流源的输出线是"脏"的,因为它上面有开关噪声和电源纹波。这条线绝对不能和 AD623 的输入线平行走,否则会通过容性耦合把噪声注入到输入端。我的做法是:恒流源输出线尽量短,直接连到 PT100 接口;AD623 的输入线从接口的另一侧引出,两条线之间保持至少 3 倍线宽的距离,中间用地线隔离。
还有一点:PT100 的走线要对称。如果你用两根线接 PT100,这两根线要等长、平行、靠近,这样它们拾取的共模干扰才一致,AD623 才能把它抑制掉。如果一根线绕了个大弯,另一根线走直线,它们拾取的干扰不一样,共模抑制就失效了。我在一个项目里因为接口位置限制,两根线长度差了 2cm,结果读数里出现了明显的工频干扰,后来改成等长走线,干扰立刻消失了。
4.3 电源去耦和基准噪声的抑制
AD623 的电源引脚必须就近去耦,我一般用 100nF 和 10μF 并联,100nF 放在芯片引脚旁边,10μF 放在稍远一点的地方。为什么要两种电容?因为 100nF 负责高频去耦,10μF 负责低频储能,两者配合才能覆盖宽频段的电源噪声。
基准电压的噪声也很关键。如果你用 TL431 产生基准,它的输出噪声可能在几十微伏量级,直接叠加到测量结果里。我的做法是在基准输出后面加一个 RC 低通滤波器,截止频率设在 10Hz 左右,把高频噪声滤掉。注意,RC 滤波器的电阻不能太大,否则基准的负载调整率会变差,我一般用 100Ω 加 100μF,效果不错。
5. 调试实录:从读数乱跳到稳定到 0.1℃
5.1 第一版板子:读数跳动的完整排查过程
第一版板子打回来后,我满怀期待地接上 PT100,结果读数在 25℃ 附近跳了将近 2℃。这个跳动幅度太大了,肯定不是 PT100 本身的问题。我按照以下顺序排查:
第一步,用万用表测恒流源输出电流。实测电流在 0.98mA 到 1.02mA 之间波动,波动幅度 4%。这说明恒流源本身就不稳,问题出在前级。我检查了运放的参考电压,发现参考电压来自一个普通的电阻分压,没有加缓冲,运放的输入偏置电流在分压电阻上产生了压降,导致参考电压随负载变化。后来加了一个运放缓冲,电流波动降到 0.1% 以内。
第二步,用示波器看 AD623 输出。输出上叠加了大约 100mV 峰峰值的工频干扰,频率 50Hz。这说明共模干扰没有被完全抑制。我检查了输入滤波,发现我忘了加差分电容,只加了两个对地电容。补上 100nF 差分电容后,工频干扰降到 10mV 以下。
第三步,检查 PCB 布局。发现恒流源输出线和 AD623 输入线有一段平行走了 5mm,虽然不长,但足以耦合噪声。我把这段线改道,中间加了一排地过孔,干扰进一步降低。
经过这三步,读数跳动从 2℃ 降到了 0.3℃ 左右,但还没达到我的目标。
5.2 第二版板子:把跳动压到 0.1℃ 的关键改动
第二版板子我做了几个关键改动。第一,把恒流源的参考电压从电阻分压改成基准芯片。我用了 REF3012,输出 1.25V,初始精度 0.2%,温漂 50ppm/℃。这样恒流源的参考电压就非常稳定了,电流波动降到 0.05% 以内。
第二,把 AD623 的 REF 引脚从接地改成接 0.5V 偏置。之前接地时,输出在低端有非线性,小信号时误差大。改成 0.5V 偏置后,输出始终工作在放大器的线性区,小信号精度明显改善。
第三,重新布局模拟部分。我把恒流源、AD623、基准芯片集中放在板子左侧,数字部分放在右侧,中间用一条宽地线隔开。AD623 的输入线从左侧接口直接引出,全程包地,不与任何其他信号线交叉。
第四,给 PT100 接口加了屏蔽。我用了一个带屏蔽罩的接线端子,屏蔽层接到模拟地。这样长线引入的干扰被屏蔽层挡在外面,只有差模信号进入放大器。
改完之后,读数跳动降到了 0.05℃ 以内,完全满足我的 0.1℃ 精度要求。实测在 0℃ 冰水混合物和 100℃ 沸水中校准,误差都在 0.1℃ 以内。
5.3 校准:单点校准还是多点校准
校准是最后一步,也是很多人容易偷懒的一步。PT100 本身有精度等级,A 级 PT100 在 0℃ 时误差 0.15℃,B 级误差 0.3℃。如果你用 B 级 PT100,不校准的话,系统误差可能就有 0.3℃。我的做法是至少做两点校准:0℃ 用冰水混合物,100℃ 用沸水(注意当地大气压对沸点的影响)。两点校准可以同时修正增益误差和失调误差。
如果你要求更高,可以做多点校准,比如 0℃、25℃、50℃、75℃、100℃ 五个点,然后用最小二乘法拟合一条曲线。但说实话,对于大多数工业应用,两点校准已经足够了,因为 PT100 的线性度非常好,非线性误差在满量程的 0.1% 以内。
校准的时候有个细节:等温度稳定再读数。冰水混合物要搅拌,让温度均匀;沸水要等水完全沸腾,并且注意温度计的位置。我一般等 5 分钟以上,确认读数不再变化再记录。这个等待时间不能省,否则校准出来的系数是错的。
6. 几个容易被忽略但很致命的实操心得
6.1 PT100 的接线方式:两线、三线还是四线
PT100 有两线制、三线制和四线制。两线制最简单,但导线电阻会直接叠加到 PT100 阻值上。假设导线电阻 0.5Ω,对应温度误差大约 1.3℃,这个误差太大了。三线制可以补偿导线电阻,前提是两根导线等长且材质相同。四线制最准,用两根线通电流,另外两根线测电压,完全消除导线电阻影响。
我的建议是:如果 PT100 离采集板很近(小于 1 米),两线制勉强能用,但最好还是用三线制;如果距离超过 1 米,必须用三线制或四线制。我在一个项目里因为现场布线已经固定,只能用两线制,结果每块板子的读数都不一样,后来在软件里给每个通道加了单独的偏移校准,才勉强能用。这个教训告诉我,接线方式在项目初期就要确定,不然后面改起来很麻烦。
6.2 自热误差到底有多大,怎么估算
自热误差是 PT100 测量里最隐蔽的误差源之一。它的计算公式是:ΔT = P / D,其中 P 是 PT100 上的功耗,D 是 PT100 的耗散系数。耗散系数取决于 PT100 的封装和安装方式,空气中通常 5mW/℃,水中 20mW/℃ 到 50mW/℃。如果你用 1mA 激励,PT100 在 100℃ 时功耗是 1mA² × 138.5Ω = 0.1385mW,在空气中自热误差是 0.1385 / 5 = 0.028℃,可以接受。但如果你用 5mA,功耗变成 3.46mW,自热误差就是 0.69℃,这就不能忍了。
所以激励电流不是越大越好。我一般选 0.5mA 到 1mA,在信号幅度和自热误差之间取平衡。如果你的 ADC 分辨率足够高,比如 24 位,那用 0.5mA 甚至 0.2mA 都可以,自热误差更小。
6.3 长线补偿和屏蔽接地的正确姿势
PT100 长线连接时,屏蔽层的接地方式很关键。屏蔽层只能一端接地,通常接在采集板这一端。如果两端都接地,屏蔽层和大地之间会形成地环路,反而引入干扰。我见过有人把屏蔽层两端都接了地,结果读数里出现了很大的工频干扰,后来把现场端断开,问题就解决了。
还有一点:屏蔽层要接到模拟地,不是数字地。模拟地是干净的参考,数字地有开关噪声,接错了等于把噪声引到信号线上。我在 PCB 上专门留了一个模拟地的接线端子给屏蔽层,效果很好。
6.4 温度采集系统的上电顺序和热插拔问题
PT100 采集系统上电时,如果恒流源先上电,而 AD623 还没上电,恒流源的电压可能会通过输入保护二极管灌到 AD623 的输入端,导致芯片损坏。我的做法是在 AD623 的输入端加两个肖特基二极管做钳位,把电压限制在电源轨以内。肖特基二极管的压降小,不会影响正常信号。
热插拔是另一个问题。如果 PT100 在系统运行时被拔掉,恒流源会失去负载,输出电压可能冲到电源轨,AD623 的输入可能过压。我在恒流源输出端加了一个齐纳二极管做钳位,把电压限制在安全范围内。这个保护措施成本很低,但能避免很多现场故障。
7. 从 AD623 到 ADS1220:什么时候该换方案
7.1 ADS1220 内置 PGA 的优势和适用场景
ADS1220 是 TI 的一款 24 位 ADC,内置 PGA(可编程增益放大器),可以直接接 PT100 的差分信号,省掉外部仪表放大器。它的优势很明显:集成度高,PCB 面积小,而且内置的 PGA 和 ADC 是匹配设计的,噪声性能通常比外部分立方案更好。我用 ADS1220 做过一个四通道 PT100 采集板,整个模拟部分只有一颗芯片加几个电阻电容,非常简洁。
但 ADS1220 也有它的局限。它的 PGA 增益范围有限,最大 128 倍,对于 38.5mV 的满量程信号,128 倍放大后是 4.9V,超过了它的参考电压范围。所以实际能用的增益可能只有 32 倍或 64 倍,需要配合更小的激励电流或者更高的参考电压。另外,ADS1220 的输入共模范围也有限制,单电源供电时同样需要把 PT100 的共模电压抬起来。
7.2 分立方案和集成方案的取舍逻辑
到底用 AD623 加分立 ADC,还是直接用 ADS1220 这类集成方案?我的判断逻辑是这样的:如果你的通道数少(1 到 2 路),精度要求高,而且你希望灵活调整增益和滤波,那 AD623 方案更合适,因为你可以自己控制每一个环节。如果你的通道数多(4 路以上),PCB 面积紧张,而且你不想在模拟电路上调太久,那 ADS1220 方案更省事。
成本方面,AD623 加一个 16 位 ADC 的成本可能和一颗 ADS1220 差不多,但 ADS1220 省掉了外围的基准、滤波、布局的麻烦。所以从工程效率角度看,集成方案往往更划算。我现在的习惯是:新项目优先考虑集成方案,只有集成方案满足不了需求时,才回到分立方案。
7.3 混合方案的探索:AD623 驱动 ADS1220
我还试过一个混合方案:用 AD623 做前级放大,输出接到 ADS1220 的差分输入,ADS1220 的 PGA 设成 1 倍,只做 ADC 用。这个方案的好处是 AD623 的共模抑制比很高,能把长线干扰压得很干净,而 ADS1220 的 24 位分辨率又能提供足够的精度。实测下来,这个方案的噪声性能比单独用 ADS1220 还好一点,因为 AD623 的前级滤波和共模抑制分担了压力。
但这个方案的成本和面积都上去了,适合对精度要求极高的场合,比如实验室标准测温。普通工业应用,单独用 ADS1220 或者 AD623 加 16 位 ADC 就足够了。
8. 写在最后:几个让我少走弯路的习惯
做 PT100 采集这些年,我慢慢养成了几个习惯,分享出来可能对你有用。第一个习惯是先算再画。在画原理图之前,先把信号链的每一级算清楚:恒流源电流多大、PT100 输出电压范围、AD623 增益多少、输出范围是否落在 ADC 输入范围内、共模电压是否满足要求。这些算清楚了,原理图基本不会有大错。
第二个习惯是留测试点。在恒流源输出、AD623 输入、AD623 输出、基准电压这几个关键节点上,我都会留一个测试焊盘。调试的时候,示波器探头直接戳上去,不用到处找线。这个习惯帮我省了很多时间,尤其是排查噪声问题时,能快速定位是哪一级引入的。
第三个习惯是先做一块最小系统板。在正式打板之前,我会先用洞洞板或者模块搭一个最小系统,验证恒流源和放大器的基本功能。虽然看起来多花了一天,但能避免打板后发现方案性错误,省下的时间和金钱远不止一天。
第四个习惯是记录每一版的改动。我在每个项目的文件夹里都有一个 changelog,记录每一版 PCB 改了什么、为什么改、改完之后效果如何。这个记录在后续项目里非常有用,因为很多问题是重复出现的,翻一下之前的记录就能找到答案。
PT100 采集看起来简单,但要做好确实需要一些经验积累。AD623 是一颗很好的芯片,但它不是"接上就能用"的,外围电路、供电方式、PCB 布局都会影响最终性能。希望这篇笔记能帮你少踩几个坑,顺利做出稳定的 PT100 采集系统。如果你在调试中遇到其他问题,欢迎一起交流,毕竟这种模拟电路的坑,一个人踩不如大家一起踩。