最近调完一套温度采集系统,板子上的主角是 TI 的 ADS122U04IPWR,配合 Microchip 的 PIC18F97J94,目标很明确:把工厂车间和 HVAC 机组里分散布置的温度信号稳定、准确地送进控制器。这套组合乍一看有点冷门,但实际用下来,我认为它是中小规模工业测温里很省事的一套搭配。ADS122U04IPWR 是一颗带 UART 接口的 24 位 Δ-Σ ADC,PIC18F97J94 则是一颗自带 LCD 驱动和多个串口的单片机,芯片本身的功能正好互补。这篇就把从选型、电路设计、固件开发到现场调试的完整过程写出来,适合正在做温度采集、楼宇自控,或者打算把手头的传感器方案做一次升级的朋友参考。
1. 为什么是 ADS122U04IPWR + PIC18F97J94:这套方案的定位与价值
1.1 一个被很多人忽略的痛点:传感器离控制器远怎么办
很多初次接触工业温度采集的工程师,第一反应是选一颗 SPI 接口的 ADC,再随便配个单片机,好像就能完事。SPI 确实快,但在工业现场,温度传感器往往不在主控板旁边。HVAC 的风机盘管、冷却塔、风管上的传感器,可能离控制器十几米甚至几十米;工厂里更夸张,仪表层和执行层隔着半层楼。SPI 是同步串行总线,SCK 和片选信号一旦拉长到几米,波形畸变、抖动、干扰问题就全冒出来了,别指望靠降速解决问题,现场布线成本和故障率都扛不住。I2C 稍好一点,但寻址、上拉电阻、电平转换,在多点位长距离应用里也是无止境的折腾。
UART 在这类场景里反而成了天然的“老朋友”。只要波特率别拉太高,9600 或者 19200,普通双绞线就能走几十米,而且很容易转成 RS-485/RS-422,和现场的上位机、PLC、触摸屏直接对接。所以把 ADC 的接口做成 UART 并不是技术倒退,而是真正考虑到了工业布线的现实。ADS122U04IPWR 正是这样一颗专门为“远程测量”设计的 ADC,它的接口就是 UART,这让整个信号链从一开始就避开了同步总线的长距离痛点。
1.2 ADS122U04IPWR 的选型逻辑:UART 口是所有自控人的“母语”
ADS122U04IPWR 不是普通的串口 ADC。它是一颗完整的 24 位 Δ-Σ 模数转换器,内部集成了可编程增益放大器 PGA、两个匹配的激励电流源 IDAC、内部基准电压源,还有温度传感器和 CRC 校验功能。这意味着什么?意味着你只需要把传感器电阻或者热电偶的毫伏信号接到它的模拟输入端,它会自己把信号放大、滤波、转换成数字量,然后通过 UART 发给你,中间几乎不需要额外搭运放、基准源和精密恒流源电路。板子面积和 BOM 成本都省了一大截。
从实际收益来看,24 位分辨率对于温度测量来说属于“高配但不过剩”。PT100 在 0℃ 时大约 100Ω,温度变化 1℃ 电阻变化约 0.385Ω,如果用 1mA 激励电流,对应的电压变化只有 385μV。普通 16 位 ADC 在 5V 参考电压下的最小分辨电压是 76μV,勉强能用但余量不大;而 24 位 ADC 即使有噪声,也能把信号分辨得很干净。再配合 PGA 可调增益,把毫伏级小信号放大到合适的满量程范围,这样读出来的温度在 0.1℃ 量级上才有可能稳定。
我选它还有一个很现实的原因:UART 接口对单片机几乎没有门槛。只要你会用串口收发字节,就能操作这颗 ADC。不需要研究复杂的 SPI 时序、DMA 描述符、寄存器级 bit-banging。尤其对于从 PLC 或自控背景转来做嵌入式方案的人,UART 几乎是“母语”,上手速度快得惊人。调试的时候一根 USB 转 TTL 就能把 ADC 的数据直接引到电脑上,不用先跑通整套 MCU 固件,这对前期方案验证特别友好。
1.3 PIC18F97J94 在 HVAC 场景的互补优势
PIC18F97J94 这颗芯片,第一眼看过去可能觉得平平无奇,但它有个非常贴合 HVAC 场景的杀手锏:内置段码 LCD 驱动。HVAC 控制面板最典型的需求就是显示温度值、设定值、运行模式,如果外扩 LCD 驱动器,既增加 BOM 又占 I/O。用这颗 MCU,直接把面板上的段码液晶接上,省掉一个驱动芯片,这在实际量产中就是实打实的成本优势。
它还有多个增强型 UART 模块,这点正好和 ADS122U04IPWR 搭配。一个系统里如果只有一两路温度,一个 UART 口就够;但 HVAC 机组往往是多路采集,风管温度、回水温度、室外温度、压缩机排气温度,一路一路接进来看似没问题,实际上多个 ADS122U04 用多个 UART 并行接,每个传感器独立通信,互不干扰,读数据的实时性也高。PIC18F97J94 有足够的串口资源来干这件事,不会因为外设数量而捉襟见肘。
另外它的供电范围宽、功耗控制灵活,工作温度范围也能覆盖工业产品的常规要求。对 HVAC 设备来说,主控板往往不是单纯的处理单元,还要兼顾按键扫描、阀体控制、风机调速、故障报警这些杂活,PIC18 的引脚丰富度和抗干扰能力在这些年经受了大量验证。把温度采集这种“精细活”交给 ADS122U04,把逻辑控制和面板交互交给 PIC18F97J94,分工明确,整体可靠性反而更容易把控。
2. 硬件设计:从传感器到 ADC 到 MCU 的信号链搭建
2.1 温度传感器的选择:RTD 还是 NTC
在我做过的 HVAC 和工业项目里,传感器的选用基本取决于精度需求和成本预算。NTC 热敏电阻便宜,灵敏度高,在 -40℃ 到 +150℃ 范围内响应很快,但非线性非常严重,而且器件一致性差,批量生产时必须逐点标定或者依赖软件查表。ADS122U04IPWR 内置的 IDAC 电流源可以直接给 NTC 供恒流,但 NTC 高阻值区域对噪声敏感,布线稍差就会让温度读数抖动。
如果系统精度要求是 ±0.5℃ 甚至 ±0.2℃,那就老老实实上 PT100/PT1000 铂电阻。铂电阻线性度好,虽然价格贵一些,但在工业现场属于“一次到位”的选择。HVAC 的冷热水管温度、风管温度,精度要求没有实验室那么夸张,但长期稳定性很重要,铂电阻和单片机、ADC 组成的系统调校一次能稳定用很多年,后面维护成本低。这个选择逻辑,我用一个表总结过很多次:
| 对比维度 | NTC 热敏电阻 | PT100 铂电阻 |
|---|---|---|
| 成本 | 低 | 中高 |
| 线性度 | 差,需要查表或拟合 | 较好,近似线性 |
| 长期稳定性 | 一般,易漂移 | 好,工业计量级 |
| 灵敏度 | 高,阻值变化大 | 较低,需高分辨率 ADC |
| 与 IDAC 适配 | 可直接适配,注意自热 | 匹配度高,适合比率测量 |
| 适合场景 | 消费级 HVAC、低成本测温 | 工业过程、高精度 HVAC 监控 |
如果让我给第一次尝试这套方案的人一个建议:直接用 PT100。因为 ADS122U04IPWR 的分辨率足够高,PT100 的微弱信号也能抓得很准,而且你省掉了对付 NTC 非线性的精力,可以把时间花在系统调试上。
2.2 模拟前端与比率式测量电路拆解
ADS122U04IPWR 的 IDAC 电流源是这套方案的灵魂。做电阻类温度测量,最常见的接法是让恒流源激励传感器,然后测传感器上的电压。麻烦在于,任何电流源都有温漂和噪声,激励电流一变,测出来的电压就跟着变。ADS122U04IPWR 提供了一个很聪明的解法:让同一个 IDAC 电流同时流过传感电阻和一个精密参考电阻,ADC 用外部参考电压方式去测传感电阻两端的压降。
具体接法是这样的:IDAC1 从某个引脚输出,先经过参考电阻 Rref 回到模拟地,在参考电阻上产生一个稳定的参考电压;同时,IDAC 电流也经过 PT100 温度传感器。因为流过参考电阻和 PT100 的电流完全相同,PT100 电压和 Rref 电压的比值就等于它们的电阻之比,最后 ADC 转换结果直接反映这个比例,电流源的绝对精度和漂移被完全抵消掉了。这就是比率式测量的核心。这种接法要求 Rref 精度和温漂必须足够好,建议用 0.1% 精度、温度系数 25ppm/℃ 以内的精密电阻,比如金属箔电阻或高稳定性薄膜电阻。
我实际采用的电路是:IDAC1 配置为 500μA 或 1mA 输出,经过 Rref 到地,再从同一路径经过 PT100 后接入差分输入正端。PGA 增益我通常设在 8 到 16 倍,这样 0℃ 时 PT100 上的 100mV 信号被放大到 0.8V 到 1.6V,处于 ADC 满量程的安全区间内。如果是 PT1000,激励电流可以用 500μA 或者更小,因为阻值大,电压本身就是够用的,太大的电流反而会因为自热效应引起测量偏差。
关于自热,我自己的经验是:在小体积封装、空气静止的场合,1mA 激励在 PT100 上会产生将近 0.1℃ 的附加升温,这个误差虽然不大,但对高精度要求来说不能当作没看见。优先用 500μA,信号幅度降低一半,靠 PGA 增益拉回来,自热影响会小很多。传感器线缆比较长的时候,尽量用四线制或三线制接法,两线制的线电阻误差很难消除,尤其 PT100 这种低阻传感器。
2.3 电源、地线与 PCB 布局的实战注意点
每一次有人说自己板子上的 ADC 读数跳得没法看,我判断九成问题出在电源和地上。ADS122U04IPWR 是 24 位精度器件,模拟电源和数字电源虽然可以在芯片内部处理,但外部供电纹波一旦超过几个 mV,转换结果就会出现肉眼可见的底噪。我板子上的做法是:模拟供电用 LDO 单独供,后面放 10μF 钽电容加 0.1μF 陶瓷电容组合,数字部分供电从另一个 LDO 出,中间用电感或磁珠隔离两路。
地线处理更要命。ADC 的模拟地引脚和数字地引脚不能图省事直接混接铺铜,比较好的做法是模拟地 AGND 作为模拟信号的回流地,数字地 DGND 负责 MCU 和串口部分,两者在板子的某一点单点连接。传感器线缆的屏蔽层也只在一端接地,避免形成地环路。我在第一版板子上就没注意,屏蔽层两端都接了地,结果现场变频器一启动,温度数据直接漂了 2℃ 以上,后来把屏蔽层改成控制板一端接地,问题立刻消失。
PCB 布局上,最核心的原则是让模拟小信号走线尽可能短,尽量靠近 ADS122U04 的输入引脚,并避开数字走线。参考电阻和去耦电容要放在 ADC 旁边,IDAC 的输出路径不要和晶振、串口线平行走线。PIC18F97J94 的晶振和 UART 走线算数字信号,必要时在中间加一条地线隔离。还有一点容易被忽略:ADC 输入引脚旁边有没有放一个几百 pF 的电容到地,用来滤掉射频干扰。这个电容不能太大,太大会让信号建立时间变慢,一般 1nF 以内比较稳妥。
3. 固件开发:把 24 位数据从 ADS122U04 读进 PIC18F97J94
3.1 MCU 侧初始化与 UART 链路打通
PIC18F97J94 跑 UART 是我的老本行,但新项目第一次调,还是建议先把 MCU 侧串口单独调通,不接 ADC,拿一块 USB 转 TTL 直接自发自收,确认波特率、字节格式都对了再往下走。我常用的波特率是 19200,8 位数据位、无校验、1 位停止位,这个速率在 24 位数据量下完全够用,同时距离十几米时误码率也低。如果现场干扰极强,可以降到 9600,配合 CRC 校验会更稳。
PIC18F97J94 的 EUSART 配置要点是波特率发生器要老老实实按手册算 SPBRG 值。主频越高,波特率误差越小,但也不要盲目把主频拉到极限,优先保证器件在工业温度范围下运行稳定。我一般把系统主频配置在 32MHz 左右,算出来的 SPBRG 误差在 0.1% 以内,足够了。串口接收要开启帧错误和溢出错误中断,这两个标志位在现场就代表“线缆被干扰”或“对方上电太快没同步”。读 UART 数据时我习惯用一个环形缓冲区,中断里只收字节、置标志,主循环里再解析命令帧,这样不容易丢数据。
3.2 ADS122U04 的配置指令与数据读取流程
ADS122U04IPWR 的 UART 通信是命令-响应模式,主机发命令,ADC 干完活或读取请求时回数据。第一次用的时候不要急着把所有功能全配置上,我建议按“复位 -> 写寄存器 -> 触发转换 -> 读数据”的最小路径走通,再慢慢加功能。
上电后第一件事是发复位命令或等待器件自身复位完成,然后通过写寄存器指令配置 PGA 增益、数据速率、激励电流值、内部基准开关、单端/差分模式等关键参数。这里特别注意:写寄存器命令的数据字节顺序千万别搞反,我踩过坑,写成反序之后读出来的数据完全不对,后来翻手册逐字节对照才发现。还有一个隐藏技巧:配置完成后把配置寄存器的内容读回来,和你想写进去的值对比一下。这个自检步骤在批量生产时特别重要,用来筛掉出厂一致性不佳的芯片。
数据读取分连续转换和单次转换两种模式。连续模式适合要求实时性高的控制场景,只要转换完成,ADC 自动更新数据,你随时可以发读数据命令;单次模式适合低功耗应用,触发一次转换,等数据就绪标志或直接延时一段时间再读。在 HVAC 控制场景里,我通常用连续模式,但主循环会做一个时间片管理,比如每 500ms 读一次当前温度,避免为了图快把串口资源和 MCU 时间全占满。一次完整读取流程大概是:确认 DRDY 引脚或状态位 -> 发送读数据命令 -> 接收 3 个字节的数据 -> 拼接成 24 位原始码。
3.3 从补码到温度:数据处理别丢符号位
ADC 输出的是 24 位二进制补码,这直接关系到最后温度是正还是负。24 位补码的范围是从 -8388608 到 +8388607,对应负满量程到正满量程。很多人在这一步犯的典型错误是把它当成无符号数来读,结果室温下读出来变成一百多万的“巨大电压”,再换算温度直接爆表。
我处理的办法是:先判断最高位是 0 还是 1,如果是 1,就把整个值减去 16777216,还原成负数。得到真正的有符号原始码后,再做电压换算。电压等于原始码乘以参考电压除以 2 的 23 次方再除以 PGA 增益,细节公式以数据手册为准。对于 PT100 加比率式外部参考的结构,可以跳过电压绝对值,直接利用原始码和满量程的比值算电阻比,这样连参考电压的绝对精度都可以不关心,只需要一个准确的 Rref。
换算成电阻后,PT100 的温度值一般用查表法或者多项式拟合。MCU 资源够的话,存一个每 10℃ 的线性插值表,查表加插值误差可以做到 0.1℃ 以内。我实际项目中用的是 0℃ 到 200℃ 温度点表,间隔 10℃,配合线性插值,效果非常稳定。浮点运算在 PIC18 上不是强项,尽量用定点数做,比如把温度乘以 10 存成整数,显示时再拆整数部分和小数部分,这样既省 CPU 又不会出现打印格式问题。
3.4 多通道与多路 ADC 扩展的规划
ADS122U04IPWR 本身有四通道输入,可以配置成四个单端输入,或者两路差分输入。如果需要在同一个 ADC 上切换多个传感器,切换命令前一定要让通道稳定一段时间,尤其是传感器线缆较长、输入电容较大时,稳定时间不够就直接采数,读到的值会偏低。我的习惯是在通道切换之间加至少一次空转换,让输入信号建立起来,再发起正式转换。
如果点位更多,PIC18F97J94 的优势就出来了。它有多个 EUSART,可以同时挂好几片 ADS122U04IPWR,每片独立通信。多片 ADC 挂在同一个 MCU 上时,我给每一片分配固定设备标识,代码里做成结构体数组,把每个通道的当前温度、状态标志、最近一次通信时间都放在结构体里,主循环统一调度。这种设计在后续加点位时,只需要改数组长度和传感器配置表,不用重写通信逻辑。
4. 精度标定与 HVAC/工业现场调试的“魔鬼细节”
4.1 为什么必须做两点标定而不是只调零点
很多工程师把“硬件能读到数”当成“精度合格”,这是大忌。ADS122U04IPWR 是精密器件,但整个信号链里还有参考电阻、传感器、分压节点、板级热电动势等误差源。只做一个零点漂移校准,能消除固定偏置,却消不掉增益误差。实际测 0℃ 可能很准,测 100℃ 时却差了 0.8℃,这就是典型的增益误差。
两点标定的做法不复杂:把传感器分别放到 0℃ 和 100℃ 两个已知温度点,各取一段稳定的读数。根据这两个实际值,算出一组偏移量和增益修正系数,存到 MCU 的 Flash 里。之后每读一个原始温度,先按修正系数做乘加运算,再输出最终温度值。0℃ 可以用冰水混合物做,但要等热平衡;100℃ 用沸水,注意当地大气压带来沸点偏差,如果精确要求高,用精密电阻箱模拟传感器阻值来标定反而更省事。比如 0℃ 对应 100Ω,100℃ 对应 138.51Ω,电阻箱比水的控温精度高一个量级。
更高要求时可以做三点标定,覆盖低、中、高三个温度段,用二次多项式拟合消除轻微非线性。我之前的项目对精度要求是 ±0.2℃ 全范围,两点标定不够,加了 50℃ 第三个点之后,误差才压到目标内。
4.2 抗工频干扰与软件滤波策略
HVAC 现场最不缺的就是电磁污染:变频风机、水泵、接触器、大功率可控硅调光,都在给模拟信号“投毒”。ADS122U04IPWR 本身是 Δ-Σ ADC,内置数字滤波器,对工频有不错的抑制能力,但前提是你选对了数据速率。很多默认数据速率虽然快,但对 50Hz 电网干扰的抑制并不理想。我的经验是:优先选择手册里明确写了“50/60Hz 抑制最高”的那个数据档位,哪怕转换速率慢一点也无所谓,温度本来就不是一个要求毫秒级响应的物理量。
软件层我再加两道保险:采样平均值滤波和中位值滤波。中位值滤波主要对付偶然的尖峰脉冲,比如接触器吸合一瞬间的毛刺;中位值滤波后再做滑动平均,把随机噪声进一步抹平。实测下来,一组 5 次中位值加 10 次滑动平均,能在不牺牲稳态响应的情况下把数据抖动压到 ±0.02℃ 级别。需要注意的是,滤波强度太大会让温控系统的反馈滞后,风机或者阀门的动作跟不上温度变化,引起振荡。所以滤波窗口要配合控制周期调,控制周期短就少滤,控制周期长就可以多加几次平均。
4.3 长距离布线与 RS-485 扩展的现场经验
如果系统点位比较集中,UART 直接连就行;一旦要跨越车间或者楼层,我更推荐把 UART 信号转 RS-485 传输。TTL 电平到 RS-485 之间用一个隔离型收发器,比如带光耦隔离或内置隔离电源的模块,把控制板和现场传感器网络彻底隔开。这样做的好处是,现场接地电位不一致导致的共模电压差、地环路噪声,基本都能被 RS-485 的差分传输和隔离化解掉。
RS-485 布线要遵循手拉手总线结构,不要星形连接,末端并联 120Ω 终端电阻。线材用屏蔽双绞线,屏蔽层单端接地。波特率 19200 时,几百米距离问题不大。多台 ADS122U04 在 RS-485 总线上工作时,可以用带地址的通信方式,不同 ADC 配不同地址,上位机或 MCU 按地址轮询。这时候 PIC18F97J94 的多个 UART 就能分别管理不同总线段,把高速本地采集和远程低速网络分开,系统容量和稳定性都能提升不少。
我在一个工厂的实际部署中,就是这样把 16 路温度扩展到 64 路,主机和从机之间走隔离 RS-485,模拟量信号没有再跨长距离跑,整个系统投运后很少出问题。所以说,这套方案的扩展能力并不是纸面参数,把它放进现场,能少走很多弯路。
4.4 低功耗与自热控制的取舍
如果你的设备靠电池供电,或者需要满足待机功耗要求,那就不能一直开着激励电流和 ADC。ADS122U04IPWR 支持低功耗模式,可以按需唤醒、单次转换。我做过一个用电池供电的 HVAC 管路温度记录器,平时 MCU 进睡眠,定时器每 30 秒唤醒一次,给 ADC 上电、开 IDAC、触发转换,等数据稳定后读回,然后立刻关掉 ADC 电源。整个测量周期约 30ms,平均功耗非常低。这里有个容易忽略的点:每次刚给 ADS122U04 上电后,不要马上转换,要留出内部基准和 IDAC 的建立时间,否则第一组数据会明显偏大或偏小。我自己在代码里固定等 20ms 再发触发命令,数据就完全正常了。
自热控制更依赖硬件。前面提到的激励电流选小一些,是最直接的办法。另外传感器本身跟被测物的热接触要良好,如果传感器只是悬空在风道里,测出来的不是空气温度,而是传感器自身的热平衡温度,误差很大。在管道安装时,传感器的导热套管、插入深度、导热硅脂都直接影响动态响应和稳态精度。这些环节做得不到位,ADC 再精确也白搭。
5. 常见问题排查:温度读数不准和通信异常的根因分析
5.1 典型故障现象速查表
做调试和售后时,我把现场最容易碰到的问题汇总成了一个速查表,技术群和同事都找我要过。现在整理出来,按“现象 -> 可能原因 -> 处理方法”直接给:
| 现象 | 可能原因 | 处理方法 |
|---|---|---|
| 读数为满幅正/负值或稳定不变 | 差分输入接反 | 把 ADC 输入正负端对调 |
| 读数为全 0xFFFFFF | 片选、上电时序异常或输入被钳位 | 检查供电和复位时序,确认激励电流通路 |
| 读数跳变几度甚至十几度 | 电源纹波大、屏蔽层未单端接地 | 检查 LDO 滤波、屏蔽层接法、走线隔离 |
| 远传后数据混乱偶尔丢字节 | 波特率误差大或 RS-485 端接缺失 | 重新计算 SPBRG,检查端接电阻 |
| 长时间运行读数缓慢漂移 | 参考电阻温漂大 | 换低温度系数精密电阻,做周期自校准 |
| 0℃ 准但 100℃ 偏 | 增益误差未标定 | 做两点或三点标定 |
| 温度响应迟钝,滤波后滞后严重 | 滤波窗口太长或数据速率过低 | 缩短滑动平均窗口,提高转换速率 |
| 休眠唤醒后第一读数异常 | ADC 未稳定就转换 | 上电后延时,先空转换一次 |
5.2 我最常踩的坑:上电时序与“看起来正常”的假通信
第一个坑是处理器和 ADC 的上电时序。PIC18F97J94 如果复位后立刻给 ADS122U04 发配置命令,而 ADC 的供电或内部振荡器还没完全稳定,命令就会丢失,而且 ADC 不会主动报告“我没收到”。表现非常具有迷惑性:串口正常,命令也发出去了,但 ADC 就是不响应。排查到最后才发现是 MCU 侧复位引脚释放得太早。后来我在代码里加了一个简单的延时,MCU 上电后先等 100ms 再初始化外设,之后再也没有出现过这个问题。
第二个坑是“假通信”:串口调试助手里能看到一堆数据,波形看起来也对,但字节之间的间隔或者时序不对,导致 ADC 把指令解析成了乱码。我遇到过一次,做了一半的板子,示波器看 TX 波形和 RX 波形都正常,波特率也对,但无论怎么发数据,ADC 都不回。折腾了几个小时,最后用逻辑分析仪抓整帧才发现,我发的配置帧多了一个字节,刚好把后续命令的首字节吞掉。从那以后,我每写一条通信命令,都会先在逻辑分析仪里确认报文长度,再进可视化链路测试。如果你所在地没有逻辑分析仪,一个最简单的办法:发一条固定命令,用万用表看 ADC 引脚上有没有对应的电压跳变,有时候比看数据更快。
第三个比较隐蔽的问题是热电动势:传感器线缆接头处用了不同金属材质,比如铜线和铁螺丝直接连接,会形成一个微型热电偶,产生几微伏到几十微伏的电压。在 24 位 ADC 面前,这足以引起零点漂移。解决办法是尽量用相同材质的端子,避免在信号通路上形成异种金属连接点,同时保持接线端子温度一致,减小温度梯度。
写在最后:这套方案给我留下的真实体会
ADS122U04IPWR 和 PIC18F97J94 这套组合,我在多个项目里反复用,从楼宇空调箱到小型工业烘箱,心得可以浓缩成一句话:整套系统最难的不是把硬件跑通,而是让它在现场干扰下长期稳定地保持精度。芯片本身可以很优秀,但参考电阻、PCB 布局、屏蔽接地、标定流程、通信状态机,每一个环节都值得花时间打磨。真正测出稳定数据的那个晚上,往往是前面所有“看起来多此一举”的细节全部做到位的时候。
如果后面还有机会做同类方案,我想把总线那边再扩展一下,让多个 ADS122U04 挂在一条 RS-485 总线上,配合本地缓存和数据记录,做更完整的设备级监控。最后再分享一个小技巧:量产前一定要写一个自动化自检程序,把配置寄存器回读、激励电流通路、通信误码率测试都跑一遍,能筛掉绝大多数现场“灵异故障”的隐患。温度采集这件事,本质上是把每个细节都拧紧,不着急,慢慢来,数据自然会给你最诚实的回报。