ADS122U04与PIC18F57K42的工业温度采集方案:从RTD到热电偶完整设计

发布时间:2026/11/5 3:16:09
ADS122U04与PIC18F57K42的工业温度采集方案:从RTD到热电偶完整设计 我们项目一开始的需求很简单一个 HVAC 水系统的温度采集改造要给十几个测点换上高精度的温度传感器同时还要并进工业现场的监视系统。整套系统选型到最后核心方案敲定成“ADS122U04IPWR PIC18F57K42”这两颗芯片一个做模拟前端一个做控制和通信。这个组合在工业和 HVAC 应用里非常典型值得把整个设计过程、硬件接线、固件实现和现场踩坑一起梳理清楚。这个方案解决的是温度测量里最让人头疼的一类问题传感器信号幅度小、现场干扰大、要求长时间稳定、还要能快速部署。ADS122U04IPWR 是 TI 的 24 位 delta-sigma ADC自带可编程增益放大器、两个激励电流源、内部基准和 UART 接口可以直接接 PT100/PT1000 铂电阻也能接热电偶。PIC18F57K42 则是 Microchip 的 8 位 MCU外设丰富、5V 供电、工业温度范围两者配在一起几乎不需要额外的模拟调理电路很适合做温控表、楼宇自控、变风量机组控制器这类产品。如果你正打算做类似的测温产品或者只是想把实验室里那套“ADCMCU”测温度的方案搬到真正的现场环境里这篇文章值得读完。下面我会从选型逻辑、硬件电路、固件协议、现场抗干扰到常见问题排查完整过一遍。1. 项目背景与总体设计思路1.1 工业与 HVAC 测温场景的真实痛点先说清楚我们要面对的是什么场景。HVAC 领域常见测点包括冷冻水供回水温度、AHU 送风温度、新风温度、冷却塔出水和车间室温工业领域则会碰到管道蒸汽温度、储罐液温、压缩机排气温度等等。这些测点的共性是传感器离控制器远线缆长且附近往往有变频器、接触器、压缩机这类强干扰源。温度传感器本身输出的信号并不友好。PT100 在 0°C 时电阻才 100Ω温度每升高 1°C 阻值只变化约 0.385ΩK 型热电偶更夸张1°C 对应电压只有 40 微伏出头。想把这些微弱信号变成稳定可靠的数据前端必须有一个低噪声、高增益、高分辨率的模拟链路。最省事的做法是直接买 4-20mA 变送器输出电流环抗干扰能力强但成本高、每路都要供电而且很多现场已有的传感器就是裸的铂电阻直接替换变送器不现实。另一个常见做法是用 MCU 内置 ADC 加仪表放大器但且不说 12 位 ADC 的精度天花板光是放大器温漂和 PCB 布局引入的误差就够折腾一阵子。所以我们在设计时定了几条硬指标分辨率至少 16 位有效位、具备差分输入、激励源内置以减少外围、通信接口简单且能容忍一定线长、出厂后不需要频繁校准。这些需求直接指向了 24 位 delta-sigma ADC 方案。1.2 为什么是 ADS122U04IPWR 配 PIC18F57K42ADS122U04IPWR 这颗芯片本质上是把“ADC 模拟前端 数字接口”做成了一颗完整的前端器件。它内部有四个模拟输入通道、PGA增益 1 到 128、两个匹配电流源 IDAC1/IDAC2、2.048V 基准源、内部温度传感器、低温漂振荡器还带 UART 通信接口支持四线制或两线制连接。这意味着你不需要单独设计恒流源、基准源、仪表放大器甚至不需要给 ADC 提供外部时钟。它最大的区别是接口。ADS1220 是 SPI 接口ADS122U04 改成 UART这在分散式测温场景里很实用。控制器和 ADC 之间只需要两条线TX/RX没有 SPI 的时钟同步要求对线缆长度和信号布线的宽容度高很多。PIC18F57K42 选它主要看中几点内部振荡器精度够用省晶振5V 供电后和 ADC 的数字电平可以直接对接支持多路 UART后续扩展通信接口方便带有数据 EEPROM可以把校准系数保存在本地最关键是它属于 Microchip 的 Core Independent PeripheralsCIP系列外设模块有 DMA、CLC 这类资源哪怕以后要升级成多通道同时采集也还有余量。这套方案的总体架构可以概括成一句话传感器信号直接进 ADS122U04ADC 完成放大、滤波、模数转换通过 UART 把 24 位数据传给 PIC18F57K42MCU 负责数据处理、协议转换、显示和对外通信。两级分工非常干净。2. 硬件电路设计传感器前端与 ADC 配置2.1 RTD 比例式测量电路PT100 和 PT1000温度测量用得最多的是铂电阻。ADS122U04 最方便的一点是支持比例式测量这种方式可以消除激励电流源本身的温漂和误差。基本原理是这样芯片内部的 IDAC 输出一个恒定电流同时流过参考电阻 Rref 和传感器电阻 RTD。ADC 的参考电压不取自内部基准而是取 Rref 两端的电压。这样当 IDAC 电流因温度发生变化时RTD 上的电压和参考电压会同比例变化最终数字结果几乎不受电流源漂移影响精度主要取决于参考电阻的绝对精度和温漂。具体接法我以 PT100 三线制为例。IDAC1 配置成 1mA从 AIN0 引脚输出经过 RTD再从远端地线返回。参考电阻 Rref 选 1kΩ 精密电阻放在 IDAC 的电流回路里。测量端接 AIN1。ADC 的 PGA 增益设成 8这样室温下 RTD 两端大约 110mV 的信号被放大到约 880mV接近满量程又不至于饱和。PT1000 的情况稍微不同。同样 1mA 电流在 0°C 时 RTD 两端就有 1kΩ信号电压达到 1VPGA 增益只能设 2 甚至 1。也可以把 IDAC 电流降到 250µA这样自热效应更小远程长线测量更稳。比例式测量里Rref 选型是关键。我建议选 0.1% 精度、温漂 25ppm/°C 以内的金属膜电阻价格不贵但对系统精度贡献很大。RTD 的信号线上要加一级 RC 低通滤波通常用 100Ω 串联加 100nF 对地电容作用是滤除高频干扰同时给 ADC 的采样电容提供电荷。注意电容不能选太大太大会拖慢建立时间尤其是切换 PGA 增益后需要更长的稳定时间。2.2 热电偶测量与冷端补偿如果测量对象是高温管道或者压缩机排气用热电偶更合适。ADS122U04 直接接 K 型热电偶正端接 AIN0、负端接 AIN1PGA 增益配 32 或 64。K 型热电偶在 1000°C 时输出约 41mV增益 32 时满量程对应 64mV不会饱和。热电偶必须做冷端补偿。ADS122U04 内部有自带温度传感器可以读取芯片结温。设计上要让 ADC 芯片尽量贴近热电偶端子让结温和冷端温度尽量一致。软件上读取内部温度传感器的值换算成冷端温度再查热电偶分度表或使用多项式计算出补偿电压加到测量电压上。热电偶信号线同样要加低通滤波但阻值要选 1kΩ 以上因为热电偶源阻抗低而噪声大RC 滤波对 EMI 抑制非常有效。2.3 PIC18F57K42 与 ADC 的数字硬件连接数字连接非常直接。PIC18F57K42 的串口 TX 接 ADC 的 SDIADC 的 SDO 接 PIC 的 RXDRDY 引脚接一个普通 IO。这套连接我推荐用四线制 UART 模式SDI 和 SDO 分开全双工通信省去方向切换的时间时序调试也简单。电源方面我给 ADC 用 3.3V 供电MCU 用 5V。数字电平在 3.3V 和 5V 之间逻辑兼容TTL 电平下 3.3V 的高电平阈值完全能被 5V MCU 识别。如果担心更恶劣的电气环境可以在中间加一级数字隔离芯片比如 ISO7741UART 的两根线、DRDY 一起隔离这样可以切断接地环路。PCB 布局上模拟电源和数字电源分开走AVDD 和 DVDD 各自的去耦电容都要靠近引脚放置。模拟输入线尽量短并且和数字线拉开距离。这个看似基础的要求实际决定了很多现场问题能否避免。3. 固件实现UART 通信与 ADC 控制3.1 ADS122U04 的 UART 协议与寄存器配置ADS122U04 的 UART 协议其实非常简单。帧格式兼容标准异步串口默认 8 个数据位、一个停止位可选用奇偶校验和 CRC。芯片上有 ADR0 和 ADR1 两个地址引脚可以同时挂 4 片 ADC 在同一条 UART 总线上对多通道扩展非常友好。命令字不多无非是复位、锁定/解锁寄存器、读寄存器、写寄存器、读转换结果这几类。上电后第一件事是发送复位命令然后解锁寄存器LOCK/UNLOCK 机制因为配置文件在锁定状态下是不能修改的。配置完成后再次锁定防止现场干扰导致配置意外改变。寄存器组包括 CONFIG0 到 CONFIG3 和 FIR 滤波器配置寄存器。CONFIG0 控制通道 MUX 选择和 PGA 增益CONFIG1 控制 IDAC 电流值、激励电流输出引脚和传感器开路检测CONFIG2 控制采样率和数字滤波器模式CONFIG3 负责基准源、内部温度传感器等开关。写配置时的注意事项这也是我踩过坑的地方修改寄存器之后必须等待足够时间让内部模拟链路稳定不能立刻启动转换。特别是修改 PGA 增益后要留出建立时间否则前几个采样点的数据会偏大或偏小。3.2 初始化序列与数据采集代码架构PIC18F57K42 这边我推荐用 MPLAB Code ConfiguratorMCC生成 UART 和外设初始化代码再手动补上 ADS122U04 的驱动。MCC 生成的代码结构清晰而且时钟配置、波特率寄存器都能在图形界面里自动算好省去查数据手册的心力。下面是一个简化版的初始化序列和读取流程用 C 语言描述// 1. 初始化 PIC UART1波特率 57600 uart1_init(57600); // 2. 复位 ADC adc_send_command(CMD_RESET); __delay_ms(10); // 3. 解锁寄存器 adc_send_command(CMD_UNLOCK); // 4. 配置寄存器 // CONFIG0: AIN0输入正端, AIN1输入负端, PGA8 // CONFIG1: IDAC1mA, IDAC1 输出到 AIN0 // CONFIG2: 采样率20SPS, 开启 50Hz 陷波 uint8_t cfg0 0x20; // 示例值 uint8_t cfg1 0x30; // 示例值 uint8_t cfg2 0x04; // 示例值 adc_write_reg(REG_CONFIG0, cfg0); adc_write_reg(REG_CONFIG1, cfg1); adc_write_reg(REG_CONFIG2, cfg2); // 5. 锁定配置 adc_send_command(CMD_LOCK); // 6. 轮询 DRDY等待数据准备 while (drdy_pin 1); int32_t raw adc_read_data();上面的寄存器值是示意实际值要按数据手册表格查。但流程骨架就是这样复位、解锁、配置、锁定、轮询 DRDY、读取。读数据需要注意的是24 位结果拆成 3 个字节要按 ADC 定义的字节顺序拼接成 int32_t。如果你配置的是双极性或单极性模式还要处理符号位。PT100 测量为了得到正负温度通常配置成双极性这样 0°C 附近code 会在零刻度附近正负摆动代码里要做符号扩展。3.3 从原始码到温度值的数学处理拿到 24 位原始码只是第一步关键是把码值换算成实际温度。RTD 采用比例式测量时换算公式很简洁。假设参考电阻为 RrefPGA 增益为 G满量程为 2^23单极性模式则RTD 阻值 (Rref × RawCode) / (2^23 × G)这个公式里的 G 就是 PGA 增益。得到阻值后再用 PT100 的分度表或者 Callendar-Van DusenCVD多项式转成温度。CVD 方程是铂电阻测温的标准数学表达0°C 以上的公式是R(t) R0 × (1 A×t B×t²)其中 A 大约等于 3.9083×10⁻³B 大约等于 -5.775×10⁻⁷。这个函数反解出 t 就能得到温度精度足够满足 HVAC 的要求。如果你用的是 PT1000把 R0 换成 1000Ω 即可。热电偶的处理路径不同。先通过 PGA 放大后的电压值计算出热电偶的测量电压再读取 ADS122U04 内部温度传感器值作为冷端温度查 K 型分度表得到冷端补偿电压两者相加最后从分度表反查出实际温度。这个过程查表法比多项式方便代码也容易维护。我建议把这两种转换函数都封装好RTD 和热电偶的通道配置、转换逻辑分开后面换传感器类型只需要改配置和调用不同的换算函数不用动主流程。4. 现场抗干扰与可靠性设计4.1 50Hz/60Hz 工频干扰抑制与数字滤波器配置不管是工业还是 HVAC工频干扰都是躲不开的问题。变频器、电机、照明线路都会在传感器线缆上感应出 50Hz国内或 60Hz部分地区的共模和差模干扰。delta-sigma ADC 的优势在于内置数字滤波器。ADS122U04 的采样率配置可以直接在 50Hz 或 60Hz 处设置陷波点。标准做法是把采样率设为 20SPS此时 SINC3 滤波器的陷波正好落在 50Hz 以内同时对 50Hz 有很强的衰减。如果现场是 60Hz 电网可以配置对应的采样率。这里有个容易被忽略的点数字滤波器对周期干扰的抑制只对稳定信号有效。如果现场干扰是变频器产生的非工频整倍数谐波比如 PWM 载波频率产生的噪声单靠 ADC 内滤波不够还需要配合前级的 RC 低通。硬件低通负责滤高频ADC 数字滤波负责滤工频两层配合才能把读数压到稳定。4.2 传感器断线检测与上电时序现场测温系统最怕的不是测不准而是传感器断线了控制器还显示一个离谱的温度。ADS122U04 有专门的开路检测功能原理很简单配置一个额外的激励电流源当传感器断开时ADC 输入引脚会被拉到一个明确的高或低电平转换结果超过正常范围软件就能判断出断线。PT100 断线后IDAC 电流没有通路AIN 引脚电压会被内部偏置电路拉到接近电源轨读数会变成接近满量程的某个值。我们在固件里做了上下限判断采集值换算成电阻后超过 400ΩPT100或者低于 80Ω就判定为异常输出报警状态而不是温度数据。上电时序也要重视。工业现场往往存在多个设备同时上电的情况电源波动大。ADC 的 AVDD 和数字电源要保证先稳定再开始通信。代码里我在初始化 ADC 之前除了延时还检查了 DRDY 引脚的电平状态确保 ADC 内部上电复位完成。如果 DRDY 一直维持高电平说明 ADC 没起来可能是电源有问题这时不要盲目发命令重试而是先查电源。4.3 HVAC 现场的接地、布线与保护实践现场组装设备时最容易出问题的是接地。我见过很多信号跳变、数据漂移的案例最后查出来都是屏蔽层两端都接地或者控制系统和变频器共用了接地线。传感器信号线建议使用屏蔽双绞线屏蔽层只在控制器端单点接地。如果屏蔽层两端都接地现场不同设备之间的接地电位差会形成电流流过屏蔽层反而感应出干扰。这个原则在 HVAC 项目里特别重要因为现场接地网质量参差不齐两点之间几十毫伏的地电位差非常常见。长线传输还有雷击浪涌和静电问题。虽然温度测量的线缆经常在室内但也会经过桥架、管井难免跟动力电缆平行走线。在端子排入口处我给每路信号线加了 TVS 管和串联的限流电阻。TVS 把瞬态高压钳位到安全范围限流电阻限制故障电流。成本不高但能显著降低返修率。5. 常见问题与排查实录5.1 通信与配置类问题速查这套方案里通信问题占了我排查记录的将近一半。最典型的是 UART 波特率失配导致的乱码尤其是把波特率设到 115200 的时候。ADS122U04 使用内部振荡器精度有限在高波特率下累积位误差可能超过 UART 的容差范围。我的对策是降到 57600 或 38400同时用 PIC 的示波器或者逻辑分析仪看一帧实际波形确认位宽符合预期。如果一定要跑 115200那就需要给 ADC 提供外部高精度时钟或者接受偶发错误的可能并通过重发机制兜底。多片 ADC 挂在同一条总线上时要检查 ADR 引脚配置和命令帧里的地址位是否一致。我一开始用两片 ADC 时第二片老是没响应排查半天发现地址引脚悬空了加上下拉电阻后解决。寄存器配置无法修改也是常见问题。原因几乎都是忘记了先解锁。LOCK 机制是保护现场运行配置的如果程序是在线升级固件后重新初始化一定要在复位后重新解锁再写寄存器。5.2 数据精度与稳定性问题速查读数跳字大是精度问题里最常见的。可以先看原始码的跳动幅度再用固定电阻代替传感器做实验。如果固定电阻下读数还是跳问题大概率在模拟前端配置要么 PGA 增益不合适要么 RC 滤波电容太大导致建立时间不够要么基准源被噪声污染。RTD 测量温漂大优先检查 Rref。很多低成本设计把 Rref 选成普通贴片电阻温漂 100ppm/°C这直接决定了系统温漂下限。换成 0.1% 25ppm 的精密电阻后系统稳定性会明显改善。热电偶冷端温度不准也比较常见。ADC 芯片本身有功耗结温和环境温度之间有偏差如果板子散热不好内部温度传感器读到的结温会比冷端实际温度高几度。设计时要把 ADC 尽量靠外并且和热电偶端子布局在同一热阻路径上必要时做一点软件校准。5.3 我踩过的坑和最终方案第一次打样时我在模拟输入上采用了比较激进的低通参数1kΩ 串联加 1µF 电容。结果发现 ADC 在切换增益后的第一次转换结果总是偏小而且采样率提高后跳动增加。后来才意识到过大的滤波电容和输入阻抗网络会拖慢 ADC 内部采样电容的建立过程。最终改成 100Ω 加 100nF并在每次增益切换后丢弃前 3 个采样点数据就稳定了。还有一个现场返修的案例让我记忆深刻。某项目的室内温度测点时不时跳成 -80°C派人去现场检查发现是传感器的三线制接法在端子排上被前一个人接成了两线制。导线电阻叠加在传感器上导致换算出的阻值异常。后来我在固件里加了电阻范围判断不在 20Ω 到 400Ω 之间的一律当作错误处理这个问题才彻底解决。经过这一轮调试我的体会是24 位 ADC 的精度上限很高但能不能发挥出来取决于电源、基准、布线和配置的每一个细节。这套 ADS122U04IPWR 加 PIC18F57K42 的方案最后量产了上百套稳定运行一年多现场基本没有再动过软件。如果让我重新设计一次我会从一开始就把校准流程做进产线每块板子出厂前用精密电阻源做两点校准把偏置和增益系数写入 PIC18F57K42 的 Data EEPROM。这样即便元件有批次差异现场用户也感知不到。再说个实用小技巧固件里保留一个调试模式通过 UART 直接输出 ADC 原始码现场排查问题时不用每次都拆机下载程序比带示波器去机房方便太多了。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询