工业现场的温度测量,说起来简单,做起来全是细节。PT100、热电偶、热敏电阻这些传感器本身精度可以做到很高,但真正决定系统测量质量的,往往是前端信号链和数字处理部分的配合。这次要聊的是一套基于 ADS122U04IPWR 和 PIC18F56K42 的温度测量方案,主要面向工业过程控制和 HVAC 场景。ADS122U04IPWR 是 TI 的一款 24 位低功耗 ΔΣ ADC,内置 PGA 和双匹配电流源,PIC18F56K42 是 Microchip 的一款 8 位 MCU,带 12 位 ADC 和丰富的通信外设。两者搭配,可以覆盖从 PT100 到热电偶的多种温度传感器类型,量程和精度都能满足大部分工业需求。
这套方案的核心价值在于:用一颗集成度较高的 ADC 解决模拟前端最头疼的微弱信号放大和噪声问题,再用一颗性价比突出的 MCU 完成数据处理、线性化和通信。适合做温度变送器、HVAC 控制器、工业数据采集模块的工程师参考。下面我会从选型逻辑、硬件设计、寄存器配置、固件实现、校准方法、常见问题几个维度展开,把实际调试中踩过的坑和验证过的参数都写出来。
1. 为什么是 ADS122U04IPWR 加 PIC18F56K42 这个组合
1.1 温度测量对信号链的真实需求
先想清楚一个问题:工业温度测量到底难在哪。PT100 在 0°C 时阻值 100Ω,灵敏度约 0.385Ω/°C。如果测量范围是 -200°C 到 850°C,满量程电阻变化大约 385Ω。要分辨 0.1°C,需要分辨约 0.0385Ω 的电阻变化。如果用 1mA 激励电流,对应电压变化只有 38.5μV。这个信号幅度下,运放失调电压、温漂、PCB 漏电流、电源噪声都会直接吃掉有效分辨率。
热电偶更麻烦,K 型热电偶灵敏度约 41μV/°C,冷端补偿还要额外一路温度测量。如果直接送进 MCU 的 12 位 ADC,参考电压 3.3V 时 LSB 约 0.8mV,对应温度分辨率接近 20°C,完全不够用。所以必须在前端做低噪声放大和高分辨率数字化。
ADS122U04IPWR 的定位正好卡在这个需求上。它内部有 24 位 ΔΣ 调制器,PGA 增益可设 1 到 128,输入失调漂移典型值 5nV/°C,增益漂移 1ppm/°C。内置两个匹配电流源,可以给 PT100 提供 10μA 到 1.5mA 的激励,匹配精度 0.1%。这些特性意味着外部只需要少量无源器件就能搭出完整的测温前端。
1.2 PIC18F56K42 在系统中的角色
PIC18F56K42 不是用来做高速运算的,它的价值在于集成度和外设组合。这颗 MCU 带 12 位 ADC、运算放大器、比较器、DAC、PWM、UART、SPI、I2C,还有 CRC 和存储器访问分区。在温度变送器里,它负责几件事:通过 SPI 读取 ADS122U04IPWR 的转换结果,做温度线性化和冷端补偿计算,驱动 4-20mA 或 0-10V 输出,处理 HART 或 Modbus 通信,管理校准参数存储。
选它而不是选更高级的 32 位 MCU,理由很实际:成本敏感、功耗要求不高、计算量可控。温度测量的采样率通常不高,每秒 10 到 20 次足够,线性化用查表加分段拟合就能做到 0.01°C 精度。PIC18F56K42 的 12 位 ADC 还可以用来监测环境温度做冷端补偿,或者监控电源电压。它的运算放大器可以配置成缓冲器,减少外部器件。
1.3 两芯片分工的边界
实际设计里,ADS122U04IPWR 负责所有模拟信号调理和模数转换,PIC18F56K42 只处理数字域的事情。这个边界要划清楚,不要把模拟信号再引到 MCU 的 ADC 上做二次处理,那样会引入额外噪声和误差。MCU 的 ADC 只用于辅助监测,比如冷端补偿传感器、电源电压、参考电压回读。
通信接口用 SPI,ADS122U04IPWR 支持 SPI 模式 1,最高时钟 4MHz。PIC18F56K42 的 SPI 外设配置成主机模式,时钟极性空闲低、第二个边沿采样。片选、数据就绪、复位这几个控制线要单独分配 GPIO,不要复用。
2. 模拟前端电路设计的关键细节
2.1 PT100 三线制接法和电流源配置
PT100 三线制是为了消除引线电阻影响。ADS122U04IPWR 有两个匹配电流源 IDAC1 和 IDAC2,可以分别从两个引脚输出。典型接法是:IDAC1 从 AIN0 流出,经过 PT100 到 AIN1,再经过引线回到地;IDAC2 从 AIN2 流出,经过第二根引线到 AIN1。这样两根引线的电阻在差分测量中相互抵消。
具体连接:PT100 的一端接 AIN0 和 AIN1 之间,另一端接 AIN2 和 AIN3 之间。IDAC1 路由到 AIN0,IDAC2 路由到 AIN3。测量通道选 AIN0 和 AIN1 之间的差分电压,或者 AIN2 和 AIN3 之间。实际调试时发现,IDAC 电流值要选得合适:太小则信号弱,太大则自热明显。PT100 自热系数约 0.2°C/mW,如果选 1mA 激励,PT100 上功耗约 0.1mW,自热误差约 0.02°C,可以接受。选 500μA 更保守,但信号减半,对 PGA 要求更高。
注意:IDAC 电流源需要外部旁路电容,典型值 0.1μF 到 1μF,靠近引脚放置。电流源输出阻抗很高,走线要短,避免引入噪声。
2.2 参考电阻的选择和温漂控制
ADS122U04IPWR 的转换结果是比例式的,参考电压来自外部参考电阻上的压降。参考电阻的精度和温漂直接决定测量精度。如果参考电阻用普通 1% 厚膜电阻,温漂 100ppm/°C,在 -40°C 到 85°C 范围内阻值变化 1.25%,对应温度误差超过 1°C,完全不可接受。
正确做法是选精密低温漂电阻,比如 Vishay 的 PTF 系列或 Vishay 的 VPR 系列,初始精度 0.01%,温漂 2ppm/°C 到 5ppm/°C。参考电阻阻值要和 IDAC 电流匹配,使参考电压落在 ADC 输入范围内。如果 IDAC 选 1mA,参考电阻选 1.65kΩ,参考电压 1.65V,配合 PGA 增益 8,PT100 满量程电压约 0.385V,放大后 3.08V,接近参考电压,利用率高。
参考电阻的布局要远离发热器件,不要放在 MCU 或电源芯片旁边。实测中把参考电阻放在板边、远离 DC-DC 的位置,噪声比放在板中央低 30% 左右。
2.3 热电偶冷端补偿的硬件实现
热电偶测量需要冷端补偿。常见做法是用一颗集成温度传感器,比如 TMP117 或 LM75,放在热电偶接线端子附近,测量冷端温度。ADS122U04IPWR 本身没有冷端补偿功能,需要 MCU 读取冷端温度后做计算。
硬件上,冷端传感器要尽量靠近接线端子,热耦合要好。可以在端子下方铺铜,传感器贴在铜皮上,减少热梯度。如果冷端温度变化慢,也可以用 MCU 内部温度传感器,但精度差,典型误差 ±2°C,只适合要求不高的场景。
热电偶信号很弱,K 型 41μV/°C,PGA 增益要设到 32 或 64。ADS122U04IPWR 在增益 64 时输入失调约 10μV,对应温度误差约 0.25°C,可以接受。输入共模电压要设置在合适范围,偏置电阻和滤波电容要匹配。
2.4 输入滤波和抗混叠设计
ΔΣ ADC 本身有很强的数字滤波,但模拟输入端仍然需要抗混叠滤波。典型做法是差分 RC 滤波,截止频率设在 ADC 采样频率的一半以下。ADS122U04IPWR 在正常模式下采样率 20SPS 到 2000SPS,如果选 20SPS,截止频率可以设在 10Hz 左右。
差分滤波电容选 100nF 到 1μF,共模滤波电容选 10nF 到 100nF,电阻选 1kΩ 到 10kΩ。电阻太大会引入热噪声,1kΩ 电阻在 10Hz 带宽内热噪声约 13nV,可以忽略。电容要选低漏电流的 C0G 或 X7R,避免漏电流造成直流误差。
提示:滤波电阻要匹配,误差 0.1% 以内,否则会降低共模抑制比。实测中两个 1kΩ 电阻误差 1% 时,共模抑制比从 100dB 降到 80dB 左右。
3. ADS122U04IPWR 寄存器配置与初始化流程
3.1 寄存器映射和关键配置位
ADS122U04IPWR 有四个配置寄存器,通过 SPI 访问。寄存器 0 控制多路复用器、增益、数据速率和工作模式;寄存器 1 控制电压参考、IDAC 电流源、IDAC 路由和温度传感器;寄存器 2 控制数据就绪、CRC、字节序和烧毁检测;寄存器 3 控制 IDAC 精细电流和寄存器锁。
初始化顺序很重要:先复位,再配置寄存器 0 到 3,最后启动转换。复位可以通过发送 RESET 命令或拉低 RESET 引脚。建议用软件复位,发送 0x06 命令,等待 1ms 让内部电路稳定。
配置寄存器 0 时,MUX 位选输入通道,GAIN 位选增益,DR 位选数据速率,CM 位选转换模式。比如 PT100 测量,MUX 选 AIN0 和 AIN1,GAIN 选 8,DR 选 20SPS,CM 选单次转换。寄存器 1 里 VREF 选外部参考,IDAC 选 1mA,IDAC1 路由到 AIN0,IDAC2 路由到 AIN3。
3.2 SPI 通信时序和命令格式
ADS122U04IPWR 的 SPI 命令是 8 位,读寄存器命令是 0x20 加寄存器地址,写寄存器命令是 0x40 加寄存器地址。读数据命令是 0x10,连续读是 0x12。发送命令后要等待至少 4 个时钟周期再读数据。
SPI 模式要设成 CPOL=0,CPHA=1,即空闲低、第二个边沿采样。时钟频率不要超过 4MHz,实际用 2MHz 比较稳。片选信号在命令和数据传输期间要保持低,传输完成后拉高。数据就绪引脚 DRDY 在转换完成时拉低,MCU 可以用中断或轮询方式读取。
注意:SPI 走线要短,如果超过 10cm,要加串联电阻匹配,典型值 22Ω 到 100Ω。实测中走线 15cm 不加匹配电阻时,误码率明显上升。
3.3 转换模式选择和时序计算
ADS122U04IPWR 支持单次转换和连续转换。单次转换适合低功耗场景,每次需要时启动一次,转换完成后自动进入低功耗模式。连续转换适合高速采样,但功耗高。
转换时间取决于数据速率和滤波模式。正常模式下,20SPS 时转换时间约 50ms,2000SPS 时约 0.5ms。如果开启 50/60Hz 陷波,转换时间会增加。实际计算:如果选 20SPS,单次转换加读取总共约 55ms,每秒可以采样 18 次左右。对于温度测量,这个速率足够。
如果要多通道轮询,比如同时测 PT100 和热电偶,需要切换 MUX 后等待稳定。切换通道后建议丢弃第一次转换结果,从第二次开始读。实测中切换通道后第一次转换误差可能达到 0.5°C,第二次恢复正常。
4. PIC18F56K42 固件架构与温度计算
4.1 主循环结构和任务调度
固件用前后台架构,主循环轮询任务,中断处理 SPI 和定时器。主循环里做几件事:检查 DRDY 标志,读取 ADC 数据,做温度计算,更新输出,处理通信。定时器中断每 1ms 触发一次,用于超时管理和周期性任务。
任务调度用简单的时间片轮询,每个任务分配固定时间槽。温度采样任务每 50ms 执行一次,通信任务每 10ms 执行一次,输出更新任务每 100ms 执行一次。这样保证实时性,又不会让某个任务占用太多时间。
提示:PIC18F56K42 的 SPI 接收用中断方式,避免轮询占用 CPU。中断里只做数据搬运,计算放到主循环。
4.2 PT100 温度计算的查表与拟合
PT100 的电阻-温度关系用 Callendar-Van Dusen 方程描述。0°C 以上:R(t) = R0 * (1 + At + Bt²),其中 A=3.9083e-3,B=-5.775e-7。0°C 以下还要加 C 项。直接解方程计算量大,用查表加分段线性拟合更实用。
做法:把 -200°C 到 850°C 分成若干段,每段 10°C,存储对应的电阻值。测量到电阻后,先查表找到所在段,再用线性插值计算温度。这样计算量小,精度可以做到 0.01°C。表存在 Flash 里,每段两个端点值,共 106 个点,占用 424 字节。
实际调试时发现,分段线性拟合在 0°C 附近误差稍大,因为曲线曲率变化。可以在 0°C 附近加密分段,每 5°C 一段。或者用二次拟合,每段存三个系数,计算量增加不多,精度更高。
4.3 热电偶冷端补偿和线性化
热电偶的计算分两步:先根据热电动势和冷端温度查表得到热端温度,再做冷端补偿。K 型热电偶的电动势-温度表是标准的,存在 MCU Flash 里。测量到热电动势后,加上冷端对应的电动势,再查表得到实际温度。
冷端补偿的精度直接影响整体精度。如果冷端传感器误差 0.5°C,整体误差至少 0.5°C。所以冷端传感器要选好的,TMP117 精度 ±0.1°C,比较合适。冷端传感器和热电偶端子之间的热阻要小,可以用导热硅脂或导热垫。
线性化用查表加插值,表的分段根据精度要求定。K 型热电偶在 -200°C 到 1372°C 范围内,每 10°C 一段,共 158 个点。插值用线性,误差小于 0.1°C。
4.4 校准参数存储和 CRC 校验
校准参数存在 MCU 的 EEPROM 或 Flash 里,包括零点偏移、增益误差、参考电阻实际值、冷端传感器偏移。存储时要加 CRC 校验,防止数据损坏。PIC18F56K42 有硬件 CRC 模块,可以计算 16 位 CRC。
校准流程:在已知温度点测量,比如 0°C 冰水混合物和 100°C 沸水,记录 ADC 读数,计算偏移和增益。参数写入 EEPROM 后回读验证,CRC 不匹配则使用默认值并报错。
注意:EEPROM 写入次数有限,不要频繁写。校准参数只在产线校准和现场校准时更新,平时只读。
5. 实测中的噪声、漂移和排查过程
5.1 电源噪声对测量结果的影响
第一版板子调试时,发现测量值跳动很大,峰峰值超过 1°C。用示波器看电源纹波,发现 3.3V 上有 50mV 峰峰值的开关噪声,频率约 500kHz。ADS122U04IPWR 的电源抑制比虽然不错,但这么高的噪声还是会耦合到模拟输入端。
排查过程:先断开传感器,短接 ADC 输入,看噪声是否还在。结果短接后噪声仍然存在,说明是电源或参考电压的问题。再测参考电压,发现参考电阻上的压降也有噪声。最后定位到 DC-DC 开关频率耦合到了参考电阻的走线上。
解决方案:在 ADC 电源引脚加 π 型滤波,10μF 钽电容加 0.1μF 陶瓷电容,再串一个 10Ω 电阻。参考电阻的走线远离 DC-DC 电感,下面铺地屏蔽。改板后噪声降到 10μV 以下,对应温度噪声小于 0.01°C。
5.2 热电偶冷端补偿的常见错误
热电偶调试时,发现测量值始终偏高约 3°C。检查冷端传感器读数正常,热电偶信号也正常。后来发现是冷端补偿计算时,冷端温度没有加到热电动势上,而是直接减去了。正确做法是:热电动势加上冷端对应的电动势,再查表。
另一个常见错误是冷端传感器和热电偶端子之间的热梯度。如果端子附近有发热器件,比如稳压芯片,冷端温度会比实际高。实测中把稳压芯片移开 2cm 后,冷端误差从 1.5°C 降到 0.2°C。
5.3 IDAC 电流源匹配误差的校准
PT100 三线制测量时,如果 IDAC1 和 IDAC2 不匹配,引线电阻抵消不彻底。ADS122U04IPWR 的 IDAC 匹配精度典型值 0.1%,但实际电路中走线电阻和开关电阻会引入额外失配。
校准方法:短接 PT100 两端,测量差分电压,理想应为 0。如果非零,记录偏移值,在后续计算中减去。实测中短接后偏移约 5μV,对应温度误差 0.013°C,可以接受。如果偏移大于 20μV,要检查走线是否对称,IDAC 路由是否正确。
5.4 长期漂移和温度循环测试
工业产品要做温度循环测试,-40°C 到 85°C,循环 100 次。测试中发现,前 10 次循环后零点漂移约 0.05°C,之后趋于稳定。分析原因是 PCB 应力释放和焊点老化。建议在出厂前做温度循环老化,稳定后再校准。
长期漂移主要来自参考电阻和 PGA 的温漂。选 2ppm/°C 的参考电阻,在 125°C 范围内阻值变化 0.025%,对应温度误差 0.06°C。PGA 增益漂移 1ppm/°C,影响更小。整体漂移可以控制在 0.1°C 以内。
6. 从原型到产品的工程化建议
6.1 PCB 布局和接地策略
模拟部分和数字部分要分开布局,地平面分割,单点连接。ADS122U04IPWR 的模拟地和数字地引脚分别走线,最后在 ADC 下方汇合。参考电阻的地要单独走,不要和数字地混在一起。
输入走线要对称,差分对走线等长,间距一致。滤波电容靠近 ADC 引脚,走线短而粗。IDAC 走线要远离 SPI 走线和时钟线,避免耦合。
提示:如果板子空间允许,模拟部分加屏蔽罩,可以进一步降低噪声。实测加屏蔽罩后噪声降低约 40%。
6.2 通信接口的隔离和保护
工业现场通信接口要做隔离,防止地环路和浪涌。SPI 接口如果走板间连接,要加隔离芯片,比如 ADuM3151 或 ISO7741。电源也要隔离,用隔离 DC-DC 模块。
模拟输入要加保护,防止过压和静电。PT100 输入端加 TVS 管,钳位电压选 5V 到 6V。热电偶输入端加 RC 滤波和 TVS,共模和差模都要保护。
6.3 校准流程和产线测试
产线校准用两个温度点:0°C 和 100°C。0°C 用冰水混合物,100°C 用沸水。校准前先预热 30 分钟,让系统温度稳定。记录 ADC 读数,计算偏移和增益,写入 EEPROM。
测试项目包括:零点误差、满量程误差、线性度、噪声、功耗、通信功能。每个板子测试时间约 2 分钟。测试数据存档,便于追溯。
6.4 功耗优化和低功耗模式
如果产品是电池供电,功耗要优化。ADS122U04IPWR 在单次转换模式下,转换完成后自动进入低功耗,电流约 1μA。PIC18F56K42 在休眠模式下电流约 20nA,唤醒时间约 1ms。
工作周期可以这样设计:每 10 秒唤醒一次,启动 ADC 转换,读取数据,计算温度,更新输出,然后休眠。平均电流可以做到 10μA 以下,一节电池可以用几年。
注意:休眠前要关闭 IDAC 和参考电压,否则功耗降不下来。ADS122U04IPWR 的 IDAC 关闭后,电流从 1mA 降到 0。
7. 几个容易被忽略的实操细节
7.1 上电顺序和复位时序
ADS122U04IPWR 和 PIC18F56K42 的上电顺序没有严格要求,但建议 ADC 先上电,MCU 后上电。如果 MCU 先上电,SPI 引脚可能输出高电平,导致 ADC 误触发。可以在 SPI 线上加串联电阻,或者 MCU 上电后先拉低片选,再配置 SPI。
复位时序:ADC 复位后需要至少 1ms 稳定时间,再发送配置命令。MCU 复位后要先初始化 GPIO,再初始化 SPI,最后配置 ADC。顺序错了可能导致配置不生效。
7.2 温度传感器的自热和响应时间
PT100 自热前面提过,选 1mA 激励时自热约 0.02°C。如果封装小,自热更明显。贴片 PT100 的自热系数可能到 0.5°C/mW,1mA 激励下自热 0.05°C。如果精度要求高,选 500μA 激励。
响应时间取决于封装和安装方式。探头式 PT100 响应时间几秒到几十秒,贴片式快一些。如果测量快速变化的温度,要选响应快的传感器,或者做动态补偿。
7.3 电磁兼容性测试中的常见问题
EMC 测试时,辐射发射容易超标的是 SPI 时钟和 DC-DC 开关频率。SPI 时钟加串联电阻,降低边沿速率。DC-DC 加屏蔽电感,输入输出加滤波。辐射抗扰度测试时,模拟输入容易受干扰,加 TVS 和滤波电容。
传导发射测试时,电源线加共模电感,典型值 1mH 到 10mH。共模电容选 2.2nF 到 10nF,注意漏电流限制。
7.4 固件升级和参数备份
如果产品支持固件升级,要留升级接口,比如 UART 或 I2C。升级前备份校准参数,升级后恢复。PIC18F56K42 支持自编程,可以在应用内升级。
参数备份用双区存储,主区和备份区,写入时先写备份区,验证后再写主区。读取时如果主区 CRC 错误,从备份区恢复。
这套方案在实际项目中跑过多个版本,从 PT100 两线制到三线制,从热电偶到热敏电阻,都验证过。核心体会是:模拟前端的布局和参考电阻的选择比 ADC 本身更重要,固件里的线性化和校准决定了最终精度。ADS122U04IPWR 和 PIC18F56K42 的组合在成本和性能之间找到了不错的平衡点,适合中小批量工业温度测量产品。如果要做更高精度的方案,可以考虑 ADS122U04 加 32 位 MCU,但成本和开发复杂度会上升。对于大部分 HVAC 和工业过程控制场景,这套配置足够用了。