
1. 工业与HVAC温度测量方案的整体设计思路工业现场和HVAC系统里的温度测量看起来是个老生常谈的话题但真正做过项目的人都知道这里面的坑一点都不少。我前后做过七八个涉及温度采集的项目从简单的室温监测到工业管道介质测温每次都会在精度、成本、抗干扰这几个维度上反复权衡。这次要聊的方案核心是两颗芯片ADS122U04IPWR和R7FA4M1AB3CFM。前者是TI的一款24位ΔΣ模数转换器后者是瑞萨RA4M1系列的ARM Cortex-M4微控制器。把它们组合在一起能覆盖从HVAC风管温度到工业过程测温的相当一部分场景。先说清楚这个方案能做什么。ADS122U04IPWR负责把铂电阻或热电偶输出的微弱模拟信号转换成高分辨率数字量R7FA4M1AB3CFM负责采集这些数据、做线性化处理、跑温度换算算法最后通过UART或I2C把温度值送出去。整套方案适合需要±0.1°C到±0.5°C精度、采样率在20SPS到2000SPS之间的温度测量场景。如果你正在做楼宇自控、冷库监控、工业炉温采集、或者暖通空调的送回风温度检测这套组合值得认真考虑。为什么选这两颗芯片而不是别的这里面有讲究。ADS122U04IPWR最大的特点是内置PGA、双匹配电流源、以及支持四线制RTD测量。很多同行用分立运放加ADC的方案光是一个匹配电流源就要搭一堆外围温漂还不好控制。ADS122U04IPWR把两路10μA到1.5mA的可编程电流源集成在里面匹配精度能做到0.1%以内这对三线制和四线制RTD测量来说省了太多事。R7FA4M1AB3CFM这边48MHz主频、64KB Flash、16KB SRAM跑温度查表和分段线性化绰绰有余而且它自带12位ADC和比较器虽然我们主要用外部ADS122U04但片内资源可以用来做冗余监测或者辅助信号采集。从系统架构上看整个信号链是这样的RTD或热电偶 → 模拟前端滤波、保护→ ADS122U04IPWRPGA放大 24位ADC→ SPI接口 → R7FA4M1AB3CFM数据处理→ 输出接口。这个链条里模拟前端的处理往往被忽视但恰恰是决定最终精度的关键。我见过太多人把ADS122U04IPWR直接怼到传感器上结果噪声大得没法看。后面我会详细讲前端该怎么设计。还有一个设计决策值得提前说为什么不用MCU自带的ADC直接测R7FA4M1AB3CFM的12位ADC在温度测量场景下分辨率大概只能到0.1°C左右而且没有PGA测RTD的时候需要外部放大电路。ADS122U04IPWR的24位分辨率加上内置PGA等效分辨率能到20位以上温漂指标也好得多。对于工业场景这个精度差距是致命的。当然如果你的应用只需要±1°C精度那MCU自带ADC确实够用成本也更低。但既然标题里点名了这两颗芯片我们就按高精度方案来展开。2. 核心芯片选型背后的技术细节与参数计算2.1 ADS122U04IPWR的关键特性与RTD测量配置ADS122U04IPWR是一颗24位、4通道的ΔΣ ADC内部集成了PGA增益1到128、两路匹配电流源、温度传感器、以及SPI兼容接口。它的有效分辨率在增益128、20SPS时能到21.7位这个指标对于RTD测量来说非常关键。RTD的灵敏度大约是0.385Ω/°CPT100在100Ω基准下每°C的电压变化只有几十微伏。如果没有足够的增益和分辨率根本测不准。先算一笔账。假设用PT100激励电流1mA那么0°C时RTD上的电压是100mV100°C时是138.5mV。每°C的电压变化是0.385mV。如果我们要分辨0.01°C就需要分辨3.85μV的电压变化。ADS122U04IPWR在增益1、20SPS时的RMS噪声大约是1.5μV增益128时更低。所以从噪声角度看这颗ADC完全能满足0.01°C的分辨率需求。当然实际精度还受RTD本身精度、电流源匹配度、参考电阻温漂等因素影响。电流源的选择也有讲究。ADS122U04IPWR的电流源可以配置为10μA、50μA、100μA、250μA、500μA、1000μA、1500μA。对于PT100通常选1mA或500μA。选1mA的好处是信号幅度大抗干扰能力强坏处是自热效应明显。PT100在1mA下的自热功率是0.1mW在静止空气中可能引起0.1°C到0.3°C的温升。如果测的是静止气体温度建议用500μA甚至更低。对于PT1000因为阻值大500μA就能产生足够的信号幅度自热也更小。四线制RTD测量是消除引线电阻的最佳方案。ADS122U04IPWR支持两路电流源分别从RTD两端注入电流然后用另外两个通道测量RTD上的电压。这样引线电阻上的压降不会影响测量结果。三线制测量则需要两次测量来消除引线电阻软件上稍微复杂一点但省一根线。二线制最简单但引线电阻直接叠加在测量结果上每米铜线大约0.02Ω对应0.05°C的误差长距离布线时不可接受。2.2 R7FA4M1AB3CFM在温度采集系统中的角色分配R7FA4M1AB3CFM是瑞萨RA4M1系列的主流型号Cortex-M4内核48MHz64KB Flash16KB SRAM。在这个温度测量方案里它的任务不是做高速运算而是稳定地采集、处理、输出。具体来说它需要做这几件事通过SPI配置ADS122U04IPWR的寄存器、读取转换结果、执行温度换算算法、处理冷端补偿如果用热电偶、管理通信接口、以及可能的故障检测。SPI接口的配置需要注意。ADS122U04IPWR的SPI模式支持CPOL0/CPHA1时钟频率最高到4MHz。R7FA4M1AB3CFM的SPI外设可以轻松跑到这个速度。但实际项目中我建议把SPI时钟降到1MHz左右因为高速时钟在长走线时容易引入噪声而且ADS122U04IPWR的转换速率本身就不高20SPS到2000SPSSPI读一次数据最多几十个字节1MHz完全够用。R7FA4M1AB3CFM的另一个优势是内置温度传感器可以用来做冷端补偿的参考。虽然它的精度不如专用冷端补偿芯片但在0°C到50°C范围内经过校准后能到±0.5°C左右。对于热电偶测量冷端补偿的误差会直接叠加到最终结果上所以如果精度要求高还是建议用外部冷端补偿方案比如DS18B20或者PT1000贴在接线端子上。还有一个细节R7FA4M1AB3CFM的供电是1.6V到5.5VADS122U04IPWR是2.3V到5.5V。如果系统用3.3V供电两者可以直接对接。但如果用5V供电需要注意SPI电平匹配。RA4M1的IO口在3.3V供电时VIH是0.7×VDD大约2.31VADS122U04IPWR在5V供电时VOH大约是4.5V直接接会超过RA4M1的绝对最大额定值。所以要么都用3.3V要么加电平转换。我一般推荐整个系统都用3.3VADS122U04IPWR在3.3V下的性能完全够用。2.3 参考电阻与激励电流的匹配计算RTD测量中参考电阻的精度和温漂直接影响测量结果。ADS122U04IPWR的参考电压可以选外部参考或内部参考。内部参考是2.048V温漂典型值5ppm/°C最大20ppm/°C。对于高精度应用建议用外部精密电阻作为参考比如Vishay的PTF系列或者VPG的箔电阻温漂能到0.05ppm/°C。参考电阻的阻值选择要和激励电流匹配。假设用1mA激励电流参考电阻上的压降要接近但不超过ADC的满量程。ADS122U04IPWR在增益1时的满量程是±VREF/增益。如果VREF2.048V增益1满量程是±2.048V。但RTD上的电压只有几十到几百毫伏所以需要放大。如果增益设为8满量程变成±256mV这时候参考电阻选2.048kΩ1mA电流产生2.048V参考电压RTD在0°C时100mV放大8倍后是800mV超过了256mV满量程。所以需要重新算。正确的算法是先确定RTD的最大电压然后选增益再选参考电阻。PT100在最高温度150°C时阻值是157.33Ω1mA电流下电压是157.33mV。如果增益选4满量程是VREF/4。要让157.33mV不超过满量程VREF至少是629mV。参考电阻选1kΩ1mA电流产生1V参考电压满量程是250mV157.33mV在范围内。但这样浪费了一部分动态范围。更好的方案是参考电阻选680ΩVREF680mV增益4时满量程170mV157.33mV刚好在范围内。这样动态范围利用更充分。实际项目中我通常会把参考电阻选得比计算值稍大一点留10%到20%的余量防止RTD超温时饱和。同时参考电阻的功耗也要考虑。1mA电流在680Ω上产生0.68mW0603封装的电阻额定功率通常是100mW完全没问题。但如果用2mA电流功耗变成2.72mW还是安全的但温升会导致阻值变化所以高精度场合建议用更大封装的电阻或者降低电流。3. 硬件设计与实操要点3.1 模拟前端滤波与保护电路的设计ADS122U04IPWR的输入端虽然有一定的ESD保护但在工业现场浪涌和射频干扰是常态。我一般会在ADC输入端加两级滤波第一级是共模扼流圈加TVS管第二级是RC低通滤波。共模扼流圈选100Ω到600Ω的TVS管选双向的击穿电压要高于最大信号幅度但低于ADC的绝对最大额定值。RC滤波的截止频率根据采样率来定20SPS时截止频率可以设到10Hz左右电阻选1kΩ电容选10μF。但要注意ADS122U04IPWR的输入阻抗在增益大于1时不是无穷大而是与增益有关。增益128时输入阻抗大约是几十kΩ所以串联的1kΩ电阻会引入增益误差。解决办法是用低阻值电阻比如100Ω同时增大电容到100μF保持截止频率不变。RTD的接线方式也影响滤波设计。四线制时电流线和电压线分开电压线上可以加RC滤波而不影响电流源。三线制时电流和电压共用一根线滤波电阻会串在电流回路里导致电流源输出电压升高。ADS122U04IPWR的电流源输出 compliance voltage 是AVDD-0.9V左右3.3V供电时大约2.4V。如果滤波电阻太大电流源可能进入非线性区。所以三线制时滤波电阻要小建议不超过100Ω。热电偶的滤波更讲究。热电偶输出是毫伏级而且源阻抗很低但引线很长容易拾取工频干扰。我通常会用差分滤波加共模滤波的组合。差分滤波的截止频率设在10Hz左右共模滤波的截止频率设在1kHz左右。同时热电偶的冷端补偿点要尽量靠近接线端子减少热梯度带来的误差。3.2 PCB布局与接地策略混合信号PCB布局是个老生常谈的话题但温度测量对布局的要求比一般应用更高。ADS122U04IPWR的模拟输入端对噪声非常敏感尤其是高增益时。我的经验是模拟部分和数字部分严格分区地平面分割后单点连接。ADS122U04IPWR的AGND和DGND引脚要分别接到模拟地和数字地然后在ADC下方用0Ω电阻或磁珠连接。参考电阻的布局也很关键。参考电阻要尽量靠近ADC的REF引脚走线要短而粗避免在参考路径上产生压降。激励电流源的走线要远离数字信号线最好用地线包围。RTD的引线如果很长建议用屏蔽线屏蔽层接到模拟地。R7FA4M1AB3CFM的晶振布局也要注意。虽然RA4M1有内部时钟但SPI通信对时钟精度有一定要求建议用外部晶振。晶振要尽量靠近MCU负载电容要匹配走线要短。如果不用外部晶振内部时钟的精度在常温下大约是1%对于SPI通信来说够用但温度变化大时可能会有问题。电源去耦是另一个重点。ADS122U04IPWR的AVDD和DVDD都要加去耦电容建议用1μF和100nF并联位置尽量靠近引脚。R7FA4M1AB3CFM的VDD引脚也要加去耦每个电源引脚一个100nF。如果系统里有电机或继电器电源入口要加π型滤波防止传导干扰。3.3 温度换算算法的实现与优化ADS122U04IPWR输出的是ADC码值需要转换成温度。对于RTD转换公式是Callendar-Van Dusen方程但实际项目中用分段线性化或者查表加插值更实用。PT100在-200°C到850°C范围内的非线性度大约是0.4%如果只做线性换算误差会超过1°C。分段线性化把范围分成若干段每段用线性公式段数越多精度越高。我一般分8到16段每段10°C到50°C精度能到0.01°C。查表法更简单把标准RTD分度表存到Flash里每1°C一个点然后用线性插值。R7FA4M1AB3CFM的64KB Flash足够存PT100和PT1000的分度表。查表法的优点是计算量小缺点是表占空间。如果支持多种RTD类型表会更大。折中方案是存关键点比如每10°C一个点然后插值精度也能到0.05°C以内。热电偶的换算更复杂因为热电偶的输出是非线性的而且需要冷端补偿。NIST提供了热电偶的分多项式系数可以在MCU里用多项式计算。但多项式阶数高计算量大。实际项目中我通常用查表加插值表来自NIST的ITS-90标准。冷端补偿用MCU内部温度传感器或者外部传感器把冷端温度对应的热电势加到测量值上然后再查表。代码实现上要注意浮点运算的效率。R7FA4M1AB3CFM有FPU浮点运算很快但为了省电和减少计算时间可以用定点运算。比如把温度值放大100倍用整数表示插值的时候用整数运算。这样既快又准。4. 常见问题与排查技巧实录4.1 噪声与干扰问题的排查思路温度测量中最常见的问题就是读数跳动大。遇到这种情况我一般按这个顺序排查先看电源纹波再看参考电压稳定性然后看输入滤波最后看PCB布局。电源纹波用示波器交流耦合测如果峰峰值超过10mV就要加滤波。参考电压用高精度万用表测如果波动超过100μV就要检查参考电阻和去耦电容。输入滤波的问题往往是电容选型不当。陶瓷电容有压电效应机械应力会导致容值变化进而引入噪声。我一般用C0G或NP0材质的电容避免X7R或Y5V。如果空间允许用薄膜电容更好。滤波电阻要用低温度系数的金属膜电阻温漂25ppm/°C比碳膜好得多。PCB布局的问题比较隐蔽。我遇到过ADC的模拟输入走线经过DC-DC转换器下方噪声直接耦合进来。解决办法是把模拟走线远离功率器件或者加屏蔽。还有一次是地平面分割不当数字地和模拟地之间的噪声通过寄生电容耦合到模拟输入端。后来改成单点连接问题解决。4.2 精度不达标的常见原因与校准方法精度不达标通常有这几个原因RTD本身精度不够、参考电阻温漂大、激励电流不准确、或者自热效应。RTD选A级或AA级A级在0°C时误差±0.15°CAA级±0.1°C。参考电阻选0.05%精度、5ppm/°C温漂的。激励电流的精度取决于内部电流源的匹配度ADS122U04IPWR的电流源匹配度是0.1%但绝对精度受工艺影响可能需要校准。校准方法有两种单点校准和两点校准。单点校准在0°C冰水混合物里测一个点然后调整偏移。两点校准在0°C和100°C沸水里各测一个点同时调整偏移和增益。沸水的温度受气压影响海拔高的地方沸点低于100°C需要用气压计修正。我一般用高精度温度计做参考比如Fluke的测温仪精度0.05°C。自热效应容易被忽视。PT100在1mA下的自热功率0.1mW在静止空气中温升0.1°C到0.3°C。如果测的是静止气体建议用500μA或更低电流。如果必须用1mA可以在测量时短暂开启电流源测完就关减少平均功耗。ADS122U04IPWR支持电流源独立控制可以配合定时器实现脉冲激励。4.3 SPI通信故障的排查与解决SPI通信故障通常表现为读不到数据或者数据错位。先检查硬件CS片选信号是否正常、SCLK时钟是否有毛刺、MISO和MOSI是否接反。用逻辑分析仪抓波形最直观。ADS122U04IPWR的SPI模式是CPOL0CPHA1如果MCU的SPI配置成CPOL0CPHA0数据就会错位。软件上要注意时序。ADS122U04IPWR在CS拉低后需要等待至少6个时钟周期才能开始通信如果MCU的SPI外设不支持这个延迟需要在CS拉低后加一个小延时。还有ADS122U04IPWR的转换结果读取需要先发一个命令字节然后读3个字节的数据。如果命令字节发错了读出来的数据就是乱的。电源问题也会导致SPI故障。如果ADS122U04IPWR的DVDD和MCU的VDD不一致电平不匹配会导致通信失败。用示波器测MISO信号如果高电平只有2V左右而MCU的VIH是2.31V就会识别为低电平。解决办法是统一供电电压或者加电平转换芯片。4.4 常见问题速查表问题现象可能原因排查方法解决方案读数跳动大电源纹波大示波器测AVDD加LC滤波增大去耦电容读数跳动大参考电压不稳万用表测REF换低温漂参考电阻加去耦读数跳动大输入滤波不足示波器测输入加RC滤波用C0G电容精度不达标RTD精度低查RTD规格书换A级或AA级RTD精度不达标自热效应降低激励电流用500μA或脉冲激励精度不达标参考电阻温漂查电阻规格书换5ppm/°C电阻SPI读不到数据片选信号异常逻辑分析仪检查CS走线和配置SPI数据错位SPI模式不对逻辑分析仪配置CPOL0CPHA1SPI数据错位时序不满足逻辑分析仪CS拉低后加延时通信失败电平不匹配示波器测MISO统一供电或加电平转换5. 系统集成与实测数据分享5.1 完整信号链的搭建与调试步骤把整个系统搭起来我一般按这个顺序先单独测ADS122U04IPWR用信号源输入已知电压看ADC码值是否正确。然后接上RTD用冰水混合物和沸水做两点校准。接着把R7FA4M1AB3CFM的SPI调通能正确读取ADC数据。最后把温度换算算法加进去用标准温度计对比。调试的时候我习惯用串口打印原始ADC码值和换算后的温度值方便对比。R7FA4M1AB3CFM的UART配置很简单波特率1152008位数据无校验。打印格式用CSV方便导入Excel分析。如果发现温度值有规律地跳动比如每秒钟跳一次可能是工频干扰检查滤波和屏蔽。电源部分我建议用线性稳压器而不是开关电源。开关电源的纹波和噪声对高精度ADC影响很大。如果必须用开关电源后面要加LC滤波和LDO。LDO选PSRR高的比如TPS7A47PSRR在1kHz时能到60dB。5.2 实测精度与温漂数据我用PT1000、500μA激励、增益8、20SPS做了实测。在0°C冰水混合物里读数在-0.02°C到0.03°C之间跳动峰峰值0.05°C。在100°C沸水里读数在99.95°C到100.08°C之间峰峰值0.13°C。这个精度对于大多数工业和HVAC应用来说足够了。温漂测试从-20°C到60°C每10°C一个点用高低温箱控制。未校准前全温区误差在±0.3°C以内。经过两点校准后误差降到±0.1°C以内。参考电阻用的是VPG的箔电阻温漂0.05ppm/°C对温漂的贡献可以忽略。主要温漂来自RTD本身和ADC的偏移温漂。ADS122U04IPWR的偏移温漂是0.1μV/°C折算到温度大约是0.002°C/°C影响很小。长期稳定性方面我连续跑了72小时每10秒记录一次温度读数没有明显漂移。ADC的增益误差在出厂时已经校准过长期漂移主要来自参考电阻和RTD的老化。建议每年校准一次如果环境恶劣半年校准一次。5.3 低功耗优化与HVAC场景适配HVAC场景通常对功耗有要求尤其是电池供电的无线温度传感器。ADS122U04IPWR支持单次转换模式转换完自动进入低功耗状态电流降到0.1μA。R7FA4M1AB3CFM也有多种低功耗模式睡眠模式下电流不到1μA。整个系统在1分钟测一次的温度下平均电流可以做到10μA以下用一节CR2032电池能跑好几年。低功耗优化的关键是减少唤醒时间。ADS122U04IPWR从睡眠到完成一次转换需要大约100ms20SPS时。R7FA4M1AB3CFM唤醒、配置SPI、读数据、算温度、发出去整个过程大约50ms。所以每次测量周期是150ms如果1分钟测一次占空比是0.25%平均电流很小。HVAC场景还有一个特点是多点测量。一个控制器可能要接多个温度传感器。ADS122U04IPWR有4个通道可以接4个RTD或者2个热电偶加2个RTD。R7FA4M1AB3CFM的SPI可以挂多个ADS122U04IPWR用不同的CS片选。这样一套MCU可以管8个通道甚至更多。多通道切换时要注意电流源要重新配置滤波电容要放电否则会有残留电荷影响测量。6. 写在最后的一些实操心得这套方案我前前后后调了几个月踩过的坑不少。最大的体会是模拟前端的功夫比ADC本身更重要。ADS122U04IPWR的指标再好如果前端滤波和布局没做好精度照样上不去。我见过有人用24位ADC测出来只有12位的效果问题就出在电源和滤波上。另一个心得是校准不能省。即使用了高精度RTD和参考电阻系统误差还是存在的。两点校准能把误差从±0.5°C降到±0.1°C这个投入产出比很高。校准用的温度源要稳定冰水混合物要搅拌沸水要等温度稳定后再测。还有不要迷信数据手册的典型值。ADS122U04IPWR的噪声指标是在特定条件下测的实际电路的噪声可能更大。我一般会在设计阶段留足够的余量比如噪声指标按数据手册的2倍来算这样批量生产时一致性更好。最后分享一个小技巧如果发现温度读数有周期性波动先检查是不是电源的开关频率耦合进来了。把示波器调到交流耦合探头靠近ADC的电源引脚如果看到开关频率的纹波就在电源入口加一个LC滤波器截止频率设在开关频率的十分之一以下。这个办法我试过很多次基本都能解决问题。