news 2026/11/5 3:14:11

工业RTD温度采集方案:ADS122U04与R7FA4M1AB3CFM实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
工业RTD温度采集方案:ADS122U04与R7FA4M1AB3CFM实战

工业现场的温度测量,最怕两件事:一是小信号被噪声吃掉,二是温漂把精度拖垮。RTD(铂电阻)本身输出只有几十毫伏到几百毫伏级别,放在变频器、接触器、电机扎堆的HVAC机房或者工厂产线旁边,稍不注意,采回来的数据就全是毛刺。这套方案的核心思路很直接——用一颗24位ΔΣ ADC(ADS122U04IPWR)专门负责把RTD的微弱差分信号干净地数字化,再用一颗带FPU的ARM Cortex-M4(R7FA4M1AB3CFM)做线性化、冷端补偿和通信调度。两颗芯片分工明确,一个管"听得清",一个管"算得准"。

我前后用这套组合做过几版温控板,从三线制PT100到四线制PT1000都跑过,踩过的坑不算少。下面把选型逻辑、硬件细节、固件实现和现场排错完整拆一遍,给正在做类似工业或HVAC温度采集的朋友一个可复现的参考。

1. 为什么是ADS122U04加R7FA4M1AB3CFM这套组合

1.1 RTD信号链的真实难点在哪

PT100在0℃时是100Ω,温度系数约0.385Ω/℃。如果激励电流取常见的1mA,那么0℃时两端电压只有100mV,到100℃也就138.5mV左右。也就是说,整个工业温度量程内,有用信号的变化量只有不到40mV。而现场共模噪声、工频干扰、热电偶效应随便一个都可能到毫伏级甚至更大。用普通12位ADC去采,LSB就已经接近1mV,根本分不出0.1℃的变化。

这就是为什么必须上高分辨率ΔΣ ADC。ADS122U04是24位、4通道(实际是2路差分或4路单端可配)、内置PGA和激励电流源的器件。它的有效分辨率在增益64、20SPS数据率下能到20位以上,折算到RTD上就是亚毫摄氏度级别的分辨能力。更关键的是它内部集成了两路匹配的IDAC激励电流源,可以直接给RTD和参考电阻供电,做比例式测量,把激励电流的漂移直接约掉。

1.2 为什么MCU选R7FA4M1AB3CFM而不是普通M0

R7FA4M1AB3CFM属于RA4M1系列,Cortex-M4内核带FPU,主频48MHz,128KB Flash、32KB SRAM。有人会问,温度采集这种慢速任务,用个M0甚至8位机不就行了?单看采集确实够,但实际项目里MCU要干的活远不止读ADC:

  • RTD的Callendar-Van Dusen线性化,涉及四次多项式,浮点运算量不小;
  • 多通道轮询时要做滤波、异常值剔除、断线检测;
  • HVAC场景通常要挂Modbus RTU或者BACnet,协议栈本身吃资源;
  • 有些还要跑简单的PID去驱动加热/制冷输出。

M4的FPU在这里是实打实的省时间。我实测过同一套线性化代码,在M0+上跑一次要几百微秒,在M4上带FPU只要几十微秒,多通道轮询时差距会被放大。而且RA4M1的外设配置灵活,SCI、IIC、SPI都全,接ADS122U04的UART接口很顺。

1.3 两者接口为什么走UART而不是SPI

ADS122U04是带UART接口的版本(型号里的U就是UART),和常见的SPI版本ADS1220不同。选UART有几个现实理由:一是走线少,TX/RX两根加一根地就能通信,PCB布局简单;二是RA4M1的SCI可以轻松配到ADS122U04支持的波特率范围;三是UART天然带起始位和校验,短距离板内通信抗干扰反而比裸SPI省心。

代价是速度。ADS122U04在UART模式下最高数据率受限,但对温度测量来说20SPS到100SPS完全够用,温度本身变化就慢,没必要追求高速。

2. 硬件设计里那些容易翻车的细节

2.1 比例式测量电路怎么搭

比例式测量的核心思想:让流过RTD的激励电流和流过参考电阻的电流是同一个(或严格匹配的),这样ADC测到的比值就直接反映电阻比,激励电流的温漂和长期漂移被约掉。

具体接法(以三线制PT100为例):

  • ADS122U04的IDAC1从AIN0输出,经RTD到AIN1,再回到IDAC2的引脚形成回路;
  • 参考电阻Rref串在激励回路里,接到REF0/REF1;
  • 三线制要额外用一路IDAC去补偿引线电阻,这是三线制的关键。

Rref的取值要算。假设激励电流1mA,RTD最大138.5Ω(100℃),那Rref上压降要落在ADC参考电压合适范围内。ADS122U04内部参考是2.048V,用外部Rref时建议让Rref压降接近但不超过参考量程。取Rref=1.65kΩ,1mA下压降1.65V,留了余量,同时RTD上的138.5mV相对参考的比例分辨率足够。

注意:Rref必须选低温漂的精密电阻,至少25ppm/℃以内,最好10ppm/℃。普通1%厚膜电阻的温漂能到100ppm/℃,直接毁掉整个精度。

2.2 激励电流选多大才合适

IDAC可选10μA到1.5mA多档。电流大,信号大,抗噪好,但自热效应严重。PT100的自热系数在静止空气中约0.2~0.5℃/mW。1mA激励下,100Ω上功耗是0.1mW,自热误差约0.02~0.05℃,可以接受。如果选1.5mA,功耗翻倍多,自热误差就上到0.1℃量级,精密场合就不合适了。

我的经验是:普通工业监测用1mA;如果探头封装散热好、或者对自热极敏感(比如测液体温度),降到0.5mA甚至0.25mA,同时把PGA增益提上去补信号。

2.3 布局和接地最容易忽略的点

  • 模拟地和数字地单点连接,连接点选在ADC的AGND引脚附近;
  • IDAC走线和RTD走线尽量等长、靠近,减少环路面积;
  • 参考电阻紧贴ADC的REF引脚,走线短而粗;
  • 输入端加RC滤波,但电阻不能太大,否则和IDAC冲突。一般串10~100Ω,配0.1μF到地,截止频率算一下别把有用信号滤掉;
  • 如果现场干扰强,输入端并TVS或者气体放电管做浪涌保护,HVAC设备经常有感性负载切换。

3. 固件实现:从寄存器配置到温度换算

3.1 ADS122U04的初始化顺序

ADS122U04通过UART发命令字配置。上电后建议按这个顺序来:

  1. 复位(发RESET命令0x06),等至少50μs;
  2. 配置寄存器0:选择MUX通道、增益、PGA使能;
  3. 配置寄存器1:数据率、工作模式、转换模式;
  4. 配置寄存器2:IDAC电流大小、IDAC路由、参考选择;
  5. 配置寄存器3:IDAC2路由、断线检测等。

关键寄存器位要理解清楚。比如增益设置,PGA增益和IDAC是两回事,别混。增益64意味着输入满量程是±2.048V/64=±32mV,RTD的138mV信号在增益4(±512mV)下就够,增益太高反而容易饱和。

3.2 单次转换还是连续转换

温度测量推荐用单次转换(single-shot)模式,每次需要时触发一次,读完进低功耗。连续模式适合高速采样,但温度场景没必要,还费电。单次模式下,发START/SYNC命令启动,等DRDY拉低或者读状态,再读3字节数据。

数据是24位二进制补码,读回来要拼装:

int32_t raw = ((int32_t)buf[0] << 16) | ((int32_t)buf[1] << 8) | buf[2]; if (raw & 0x800000) raw |= 0xFF000000; // 符号扩展

3.3 从ADC码值到电阻再到温度

比例式测量下,RTD电阻的计算是:

Rrtd = Rref * (Code / Gain / 2^23) / (1 - ... )

实际更简单的做法是用比例关系:因为RTD和Rref流过同一电流,ADC测的是两者压降之比(通过切换MUX分别测,或者用差分参考)。如果参考直接取Rref上的压降,那么:

Rrtd = Rref * Code_rtd / Code_ref

前提是两次测量增益一致。很多实现是让参考电压就来自Rref,这样ADC读数直接正比于Rrtd/Rref,激励电流完全约掉。

拿到Rrtd后,用Callendar-Van Dusen方程换算温度。0℃以上用:

R(t) = R0 * (1 + A*t + B*t^2)

反解t用求根公式或者查表插值。0℃以下还要加C项(t-100)t^3。A=3.9083e-3,B=-5.775e-7,C=-4.183e-12。

实际固件里我一般用分段线性插值加二分查找,比实时解四次方程省事,精度也够。建一张0.1℃步进的表,Flash占用不大。

3.4 三线制引线电阻补偿的实现

三线制的意义在于补偿引线电阻。假设三根线电阻都是Rl,接法让其中一根线的压降被另一路测量抵消。固件里要做的是:分别测量带引线补偿的通道和参考通道,做差值。具体实现依赖硬件接法,常见的是用IDAC2给补偿线供电,然后MUX切换测量。

如果偷懒用两线制,引线电阻直接加进RTD读数。一根1米长的普通铜线约0.02Ω,折合温度约0.05℃。线长了、线细了误差更大。所以工业场合老老实实上三线制,四线制更好但接线成本高。

4. 实测中的噪声、漂移与断线问题排查

4.1 读数跳动大,先查这几处

第一次调试时如果发现读数末几位乱跳,按这个顺序排查:

  • 激励电流和参考是否真的匹配。用万用表量Rref和RTD上的实际压降,算比值看和ADC读数是否一致;
  • 数据率是不是设太高。20SPS下ADC内部数字滤波强,噪声低;设到1000SPS噪声明显上来。温度测量没必要高速;
  • 输入端RC滤波是否合适。截止频率设在几Hz到几十Hz,能压掉工频和高频干扰;
  • 电源是否干净。ADC的AVDD要用LDO单独供,别和数字电源混,加磁珠和去耦电容。

我遇到过一次读数跳±0.5℃,最后发现是IDAC走线和RTD走线平行太长,形成了耦合。把两根线拉开、缩短环路后立刻稳定。

4.2 温漂问题的定位方法

温漂表现为:常温校准好了,一加热或者环境温度变化,读数就偏。定位方法:

  • 把整板放进温箱,从-20℃到70℃扫一遍,记录读数偏差;
  • 如果偏差和温度强相关,先怀疑参考电阻的温漂;
  • 再查ADC本身的失调漂移,ADS122U04的失调漂移典型值很低,一般不是主因;
  • 最后查RTD引线和焊点,不同金属接触会产生热电势。

比例式测量能约掉大部分激励漂移,但约不掉参考电阻的漂移。所以Rref的选型是温漂控制的第一道关。

4.3 断线检测怎么配

ADS122U04内置断线检测(burn-out current source)。配置寄存器里使能后,会往输入端注入一个小电流,如果RTD断线,输入会被拉到一个轨,读数异常。固件里判断读数超出合理范围就报断线故障。

但要注意:断线检测电流会影响正常测量,所以要么在测量间隙做检测,要么用专门的检测周期。我一般每N次正常测量插一次检测,避免干扰主测量。

4.4 通信异常的处理

UART通信偶尔丢字节是常事。固件里要做:

  • 每条命令后校验返回;
  • 读数据时校验状态字节;
  • 加超时重试,连续失败几次报通信故障;
  • 关键配置寄存器定期回读比对,防止被干扰翻转。

RA4M1的SCI有FIFO和错误标志,用中断方式收发比轮询可靠。

5. 现场部署与长期稳定性经验

5.1 校准策略:单点还是多点

出厂校准建议至少两点:0℃(冰水混合物)和100℃(沸水,注意当地气压修正)。要更高精度就加中间点。校准的本质是修正R0和增益误差。单点校准只能修R0,增益误差修不了,所以至少两点。

现场如果没法拆探头,可以用已知温度的参考探头做比对校准,但精度受参考探头限制。

5.2 长期漂移和自热的管理

长期运行后读数慢慢偏,常见原因是RTD本身老化(铂丝晶粒变化)和焊点氧化。工业场合建议每年校准一次。自热方面,如果探头插在静止空气里,激励电流要保守;插在流动液体或金属套管里,散热好,可以适当加大电流换信噪比。

5.3 和上位机通信的工程细节

HVAC系统里常见Modbus RTU。RA4M1做从站,把温度值放到保持寄存器。注意:

  • 温度用定点数传,比如放大10倍存成int16,避免浮点传输的兼容问题;
  • 寄存器地址和字节序要和上位机约定清楚,大端小端搞反是经典坑;
  • 加看门狗,通信卡死时能自恢复。

5.4 我踩过的最深的一个坑

有一次批量出货后客户反馈低温下读数偏高约1℃。查了很久,最后发现是PCB上RTD接线端子的焊盘和走线在低温下热胀冷缩导致接触电阻变化,加上用了两线制,误差直接进读数。改成三线制并换了更可靠的接线端子后问题消失。这件事让我彻底放弃了在工业场合用两线制的念头。

6. 几个能直接抄的配置参考

6.1 寄存器配置速查

参数推荐值说明
增益4~8匹配RTD信号幅度,别饱和
数据率20SPS温度场景足够,噪声最低
转换模式单次省电,按需触发
IDAC1mA兼顾信噪比和自热
参考外部Rref比例式测量
滤波输入RC约10Hz压工频和高频

6.2 温度换算的定点实现思路

浮点在M4上虽然快,但为了跨平台一致,我常用定点。把Rrtd放大1000倍存成int32,用预计算的系数做多项式,最后输出0.01℃分辨率的int16。这样上位机解析简单,也不会有浮点舍入的跨编译器差异。

6.3 上电自检清单

  • 读ADS122U04的配置寄存器,确认写入成功;
  • 测一次已知参考电阻,验证读数在合理范围;
  • 检查IDAC是否正常输出(可测Rref压降);
  • 断线检测触发一次,确认能报故障;
  • 通信回环测试。

这套自检跑通,基本能挡掉大部分装配和焊接问题。

整体用下来,ADS122U04加R7FA4M1AB3CFM这套组合在工业和HVAC温度测量里属于"够用且稳"的档位。ADC的24位分辨率和内置IDAC省掉了不少外围,M4的算力让线性化和协议栈都不吃力。真正决定成败的往往不是芯片本身,而是比例式电路的搭建、参考电阻的选型、三线制的坚持,以及固件里那些不起眼的校验和重试逻辑。把这些细节做扎实,精度和稳定性自然就上来了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/5 3:13:56

ADS122U04IPWR与STM32F030RC工业温度传感链路设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/5 3:13:46

ADS122U04IPWR+STM32F215RE工业温度测量实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/5 3:12:38

ADS122U04IPWR+STM32F429ZI工业温度采集系统设计实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/5 3:12:17

高精度温度采集方案:ADS122U04与STM32的工业级设计与校准实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/5 3:11:40

ADS122U04搭配PIC18F86K90:工业RTD温度采集方案解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/5 3:11:35

工业温度测量硬件设计:ADS122U04IPWR+STM32F745ZG高精度信号链构建

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华