工业现场的温度测量最怕两件事一是小信号被噪声淹没二是长期漂移导致数据不可信。ADS122U04IPWR 这颗 24 位 ΔΣ ADC 配合 STM32F415RG恰好是冲着这两个痛点去的组合——前者负责把 RTD 那点毫伏级压降干净地数字化后者负责把数据算成温度、跑滤波、做通信。这套方案在 HVAC 的冷热量表、风管温度、锅炉回水监测里都能直接落地。下面我把从选型到跑通的完整链路拆开讲包括那些手册上不会写、但调试时一定会遇到的细节。1. 为什么工业温度测量绕不开 24 位 ΔΣ 架构1.1 RTD 的信号到底有多小先算一笔账。工业上最常用的 PT1000℃ 时阻值 100Ω温度系数约 0.385Ω/℃。如果激励电流取常见的 1mA那么 0℃ 时 RTD 两端压降是 100mV每升高 1℃ 只增加 0.385mV。也就是说你要分辨 0.1℃ 的变化就得稳定地测出 38.5μV 的电压差。这个量级意味着什么STM32F415RG 内置的 12 位 ADC参考电压 3.3V 时最小分辨率为 3.3V/4096 ≈ 806μV。用它直接测 RTD连 1℃ 的分辨率都勉强更别说工业场合常要求的 ±0.1℃。所以外挂一颗高精度 ΔΣ ADC 不是锦上添花而是没有它根本做不了。ADS122U04IPWR 的 24 位分辨率、内置 PGA增益 1~128、双匹配电流源正好把这件事变得简单PGA 把 100mV 量级的信号放大到接近满量程24 位分辨率把量化误差压到 nV 级电流源直接给 RTD 供电省掉外部恒流电路。1.2 ΔΣ 与逐次逼近的本质差异很多人知道 ΔΣ 精度高但说不清为什么。简单类比逐次逼近SAR像用一把刻度尺去量长度量一次读一次ΔΣ 则像用天平反复比较、把误差平均掉。ΔΣ 通过过采样和噪声整形把量化噪声推到高频段再用数字滤波器滤除从而在低频段获得极高的有效位数。对温度测量这种变化极慢的信号ΔΣ 是天然匹配的——你根本不需要高速采样你需要的是低频段的低噪声和高分辨率。ADS122U04 在 20SPS 数据率、增益 128 时有效分辨率能到 20 位以上等效输入噪声只有几十 nV这就是它能测出 0.01℃ 级别变化的底气。1.3 集成度带来的系统简化传统方案是运放 基准 独立 ADC 外部恒流源四五个器件每个都贡献误差和漂移。ADS122U04IPWR 把这些收进一颗 TSSOP-16 里内置低漂移基准典型 5ppm/℃省掉外部基准芯片双匹配电流源专门为 RTD 比例测量设计内置 PGA省掉前置放大内置温度传感器可做冷端补偿支持 SPI 和 UART 两种接口对 HVAC 这种成本敏感、又要长期稳定的场景器件越少、误差链越短可靠性越高。这是我选它而不是分立方案的核心理由。2. ADS122U04IPWR 与 STM32F415RG 的硬件连接设计2.1 接口模式的选择SPI 还是 UARTADS122U04 的U后缀表示它支持 UART 接口但同时也兼容 SPI。这里有个容易踩的坑它的 SPI 模式并不是标准四线 SPI而是通过配置寄存器切换的。实际项目里我建议用 SPI原因有三第一STM32F415RG 的 SPI 外设成熟DMA 配合方便采样节奏好控制第二SPI 时钟可以拉到较高频率读寄存器效率高第三UART 模式下多机通信和帧同步处理更麻烦HVAC 现场电磁环境复杂UART 更容易受干扰误帧。接线大致如下ADS122U04 引脚功能STM32F415RG 连接SCLKSPI 时钟PA5 (SPI1_SCK)DIN数据输入PA7 (SPI1_MOSI)DOUT/DRDY数据输出/数据就绪PA6 (SPI1_MISO)CS片选PA4 (GPIO 输出)AVDD模拟电源3.3V经 LC 滤波DVDD数字电源3.3VREFP0/REFN0基准输入接内部基准或外部基准AIN0~AIN3模拟输入RTD 与参考电阻注意DOUT/DRDY 是复用引脚读数据时是 DOUT空闲时是 DRDY 中断输出。配置时务必确认寄存器里 DRDY 功能已使能否则中断永远不来。2.2 模拟电源的脏与净这是我最想强调的一点。ADS122U04 的 AVDD 如果和 STM32 的数字 3.3V 直接共用一条走线你会看到读数里混进明显的周期性噪声——那是数字开关噪声通过电源耦合进来的。正确做法是AVDD 用独立的 LDO 供电或者至少在 AVDD 前串一个磁珠如 600Ω100MHz加 10μF 0.1μF 去耦。模拟地和数字地在 ADC 下方单点连接不要铺成一大片连在一起。我实测过同样的电路电源处理得当噪声能降一个数量级。2.3 基准与比例测量RTD 测量最优雅的方式是比例法让同一个激励电流同时流过 RTD 和一颗高精度参考电阻ADC 测两者的比值。这样激励电流的温漂、绝对值误差都被约掉了只剩参考电阻的精度决定结果。ADS122U04 的双匹配电流源就是为这个设计的。IDAC1 流过 RTDIDAC2 流过参考电阻两个电流源匹配度典型 0.1%。参考电阻选 0.1% 精度、10ppm/℃ 低温漂的金属膜电阻比如 1.62kΩ对应 PT100 在 0℃ 附近的比例关系。配置寄存器时把基准源选为 REFP0/REFN0外部参考增益设为 8 或 16让信号落在合适量程。具体增益怎么算下一节展开。3. 寄存器配置与增益、数据率的取舍逻辑3.1 增益不是越大越好很多人直觉认为 PGA 增益拉满128最准其实不然。增益放大的同时输入共模范围会收窄而且 PGA 本身有噪声和失调。正确做法是让信号在 ADC 满量程的 50%~80% 之间既充分利用动态范围又留出余量。以 PT100、1mA 激励、-50℃~150℃ 量程为例-50℃ 时 RTD 约 80.31Ω压降 80.31mV150℃ 时 RTD 约 157.33Ω压降 157.33mV信号跨度约 77mV若基准为 2.048V增益 16 时满量程输入为 2.048/16 128mV。信号最大 157mV 会超量程。增益 8 时满量程 256mV信号落在 31%~61%比较合适。所以这里选增益 8而不是盲目上 16 或 128。3.2 数据率与噪声的权衡ADS122U04 的数据率从 5SPS 到 2000SPS 可调。数据率越低内部数字滤波器抑制工频干扰越强噪声越低。工业温度测量根本不需要高速我一般选 20SPS——这个档位对 50Hz 和 60Hz 工频都有很好的抑制sinc 滤波器零点正好落在工频上。如果你现场工频干扰特别严重可以选 20SPS 并开启 50/60Hz 同步抑制模式。代价是响应变慢但对温度这种慢变量完全无所谓。3.3 关键寄存器配置示例下面是一段初始化配置的核心逻辑伪代码形式便于理解寄存器含义// 配置寄存器0增益820SPS连续转换 // MUX选择AIN0/AIN1差分输入 write_reg(REG0, 0x08 | 0x04 | 0x00); // 0x08: 增益8 | 0x04: 20SPS | 0x00: 连续转换模式 // 配置寄存器1使能内部基准IDAC电流1mA write_reg(REG1, 0x30 | 0x02); // 0x30: 内部基准使能 | 0x02: IDAC 1mA // 配置寄存器2IDAC1接AIN2IDAC2接AIN3 write_reg(REG2, 0x50 | 0x0A); // 0x50: IDAC路由 | 0x0A: 电流源输出引脚选择 // 配置寄存器3DRDY使能SPI模式 write_reg(REG3, 0x80);提示每次上电后建议先发复位命令0x06再写配置避免寄存器处于未知状态。我遇到过因为没复位导致增益配置没生效、读数偏小一半的情况排查了半天。4. 从原始码值到温度换算链路与校准4.1 比例法换算公式用比例法时温度计算不依赖激励电流的绝对值。设RTD 阻值 R_rtd参考电阻 R_refADC 测得 RTD 通道码值 Code_rtdADC 测得参考通道码值 Code_ref则R_rtd R_ref × (Code_rtd / Code_ref)得到 R_rtd 后再用 Callendar-Van Dusen 公式换算温度T 0℃: R R0 × (1 A×T B×T²) T 0℃: R R0 × (1 A×T B×T² C×(T-100)×T³)PT100 的标准系数A 3.9083e-3B -5.775e-7C -4.183e-12。正温度区间可以直接解二次方程负温度区间建议用迭代法或查表插值因为四次项解析求解麻烦。我在 STM32 上用的是牛顿迭代三次就收敛耗时可以忽略。4.2 为什么必须做两点校准理论公式再准实际电路也有偏差参考电阻的容差、走线电阻、PGA 失调。所以出厂前必须做两点校准。做法是把传感器放到已知低温点比如冰水混合物 0℃和已知高温点比如沸水或恒温槽 100℃记录 ADC 读数拟合出实际的增益和偏移修正系数。校准后精度通常能从 ±0.5℃ 提升到 ±0.1℃ 以内。注意校准用的参考温度源精度必须比目标精度高一个数量级。用普通温度计去校准 0.1℃ 精度的系统等于白校。4.3 三线制 RTD 的引线电阻补偿工业现场 RTD 离变送器往往几米到几十米引线电阻不可忽略。两线制会把引线电阻直接算进 RTD 阻值每米铜线约 0.02Ω10 米就是 0.2Ω对应约 0.5℃ 误差。三线制是标准解法两根引线分别接 IDAC 和 ADC 输入第三根做补偿。ADS122U04 支持通过配置实现三线制补偿——让 IDAC1 和 IDAC2 分别流过两根引线在 ADC 输入上引线压降相互抵消。配置时要把 MUX 设成对应的差分对并在软件里做一次补偿计算。四线制最准但布线成本高一般只在实验室或高精度场合用。HVAC 现场三线制是性价比最高的选择。5. 实测中那些手册不会告诉你的坑5.1 DRDY 中断丢失导致读数卡死现象系统跑一段时间后温度值不再更新但 SPI 通信正常。根因DRDY 是开漏输出如果上拉电阻太大比如 100kΩ加上走线电容上升沿变缓STM32 的边沿中断可能漏触发。我一开始用 100kΩ 上拉偶发丢中断换成 10kΩ 后彻底稳定。另一个原因是中断服务函数里做了太多事比如直接在里面算温度导致下一次 DRDY 来时还在处理上一次。正确做法是中断里只置标志位主循环处理数据。5.2 工频干扰的识别与压制如果读数呈现周期性波动周期约 20ms50Hz或 16.7ms60Hz基本可以确定是工频耦合。排查顺序先看数据率是否设在 20SPSsinc 滤波器零点在工频再看模拟输入走线是否远离强电最后检查 RTD 引线是否用了屏蔽双绞线、屏蔽层是否单端接地。我遇到过一次现场风机变频器干扰通过 RTD 长线耦合进来最后靠屏蔽层在变送器端单点接地 输入端加 RC 低通1kΩ 100nF解决。5.3 自热效应激励电流不能随便加大IDAC 电流越大信号越强、信噪比越好但 RTD 自身会发热导致读数偏高。PT100 在静止空气中1mA 激励的自热误差约 0.05℃如果加到 2mA误差翻倍到 0.1℃ 以上。工业标准一般推荐 1mA 或更低。如果一定要用大电流提高信噪比就得在软件里做自热补偿或者用脉冲激励只在测量瞬间通电。HVAC 场合我一般就用 1mA配合 20SPS 已经足够。5.4 冷端与接线端子的温度梯度变送器接线端子处的温度如果和 RTD 本体差很多三线制补偿也会引入误差。尤其是机柜内发热元件旁边端子温度可能比环境高 5~10℃。对策接线端子尽量远离发热源必要时在端子上贴一颗 NTC 做端子温度监测软件里做二次修正。这个细节很多人忽略但在高精度场合是实打实的误差来源。6. 软件架构让采样、换算、通信各司其职6.1 分层设计思路我把固件分成三层驱动层负责 SPI 读写、寄存器配置、DRDY 中断处理只输出原始码值算法层负责比例换算、CVD 公式求解、滤波、校准系数应用应用层负责 Modbus/自定义协议上报、报警判断、参数存储这样分层的好处是换传感器或换 ADC 时只动驱动层算法和应用不受影响。我在一个项目里从 PT100 换成 PT1000只改了参考电阻和增益配置算法层一行没动。6.2 数字滤波的取舍硬件已经滤掉大部分高频噪声软件滤波主要对付随机跳动。我常用的是滑动平均 限幅组合滑动窗口取 8~16 个点做平均同时对单次跳变超过阈值的点做限幅防止野值污染。不建议用复杂的卡尔曼滤波——温度信号本身很慢卡尔曼的收益有限反而增加调试难度。除非你的应用对动态响应有要求否则滑动平均足够。6.3 断线与短路检测ADS122U04 内置激励电流检测功能可以判断 RTD 是否断线。配置寄存器开启后如果检测到电流异常会置位相应标志。软件里读到标志就上报故障这对 HVAC 远程监测很重要——传感器坏了必须能报出来而不是给个假温度。短路检测则靠量程判断如果换算出的阻值接近 0 或远超量程上限直接判故障。7. 这套方案在 HVAC 场景的落地形态7.1 冷热量表中的应用冷热量表需要同时测进水和回水温度温差精度直接决定热量计量精度。用两路 ADS122U04或一颗四通道型号分别接进回水 PT100配合 STM32F415RG 的浮点运算能力做焓值计算是标准做法。关键是两路要用同一颗基准、同一批参考电阻保证通道间一致性。7.2 风管温度与室外温度监测风管温度测量点分散通常用 RS485 总线组网。STM32F415RG 带多个 USART一路接 ADC 做本地测量一路做 Modbus RTU 从站很方便。室外温度则要注意防雷和宽温设计ADC 和 MCU 都要选工业级温度范围。7.3 长期稳定性设计HVAC 设备动辄运行十年以上长期漂移是最大敌人。除了选低温漂器件还要做定期自校准利用系统内已知的参考电阻周期性测量其阻值如果偏离标称值超过阈值说明基准或电流源漂移了触发维护提醒。这个机制我在多个项目里都用过能提前发现老化问题。8. 调试工具与验证方法8.1 用高精度万用表做交叉验证调试阶段用六位半万用表同时测量 RTD 两端电压和参考电阻电压和 ADC 读数对比。如果偏差在几个 LSB 以内说明换算链路正确如果偏差大逐级排查增益、基准、公式。8.2 恒温槽标定流程正式标定要用恒温槽至少取 0℃、50℃、100℃ 三个点做最小二乘拟合。每个点等温度稳定后连续采 100 个点取平均记录均值和标准差。标准差反映噪声水平均值反映准确度两者都要看。8.3 长时间老化测试新设计的板子我会连续跑 72 小时记录温度读数的漂移曲线。如果前几小时漂移明显、之后趋于平稳通常是器件预热效应如果持续单调漂移可能是基准或电阻有问题。这个测试能筛掉大部分隐患。我个人在实际操作中的体会是这套 ADS122U04IPWR STM32F415RG 的组合硬件设计占成功率的六成软件算法占三成剩下那一成是调试耐心。电源和基准处理好了后面基本顺风顺水电源马虎后面全是玄学问题。另外别迷信理论精度实测校准永远比公式可靠——我见过太多理论 ±0.01℃、实测 ±0.3℃的案例问题都出在没做现场校准。最后分享一个小技巧把参考电阻和 RTD 放在同一块导热良好的铝基板上让它们温度一致比例法的温漂抑制效果会更好这个细节在温差大的机柜环境里特别管用。