☰
基于ADS122U04与MK64FX512的高精度温度测量系统设计
2026/11/5 6:25:54 网站建设 项目流程

1. 工业与HVAC温度测量系统的整体设计思路

1.1 为什么选择ADS122U04IPWR与MK64FX512VDC12这个组合

工业现场和HVAC系统的温度测量,跟实验室里拿个万用表测室温完全是两码事。工业场景下,传感器可能离采集板十几米远,走线要穿过变频器、接触器、电机这些强干扰源旁边,信号线上耦合的共模噪声动辄几伏甚至十几伏。HVAC场景虽然电磁环境稍好,但同样面临长线传输、多点轮询、宽温区覆盖的问题。这种条件下,如果直接用MCU内部的12位ADC去采样,分辨率不够、抗干扰能力差,读数跳得没法看。

ADS122U04IPWR这颗芯片就是冲着这类场景设计的。它是TI的一款24位Δ-Σ型ADC,内置PGA(可编程增益放大器)、双匹配电流源IDAC、以及一个UART接口。注意,它用的是UART而不是常见的SPI,这个选择很关键——UART接口在长距离板间通信和隔离设计上比SPI省心得多,SPI在长线上容易受时钟沿畸变影响,而UART异步通信对时序容忍度更高。24位分辨率意味着在PGA增益为1时,理论最小可分辨电压可以到纳伏级别,当然实际有效位数(ENOB)受噪声限制,通常在20-22位左右,但这已经足够把PT100那点微弱的电阻变化精确捕捉到了。

MK64FX512VDC12是NXP Kinetis K64系列的一款MCU,Cortex-M4内核,120MHz主频,带FPU和DSP指令,1MB Flash、256KB RAM,封装是BGA。选它来配ADS122U04,主要看中三点:第一,它有足够多的UART外设,K64系列最多能到6个UART,可以同时挂多路ADS122U04做多通道采集;第二,它的DSP指令和FPU在做温度线性化、滤波、冷端补偿这些运算时速度够快,不用外挂协处理器;第三,工业级温度范围-40到105°C,跟ADS122U04的-40到125°C能匹配上,整板温漂可控。

这个组合的核心逻辑是:用高精度Δ-Σ ADC把传感器信号在源头就数字化,用带DSP的MCU做实时处理和通信,中间用UART做可靠的数据链路。整套方案适合做4通道以内的温度采集模块,比如HVAC的冷冻水供回水温度监测、工业炉窑的热电偶多点测温、或者环境试验箱的温度巡检。

1.2 温度传感器选型与信号链的匹配逻辑

温度测量第一步是选传感器。工业HVAC场景下常见的有三类:PT100/PT1000铂电阻、K型/J型热电偶、以及NTC热敏电阻。这三类跟ADS122U04的配合方式完全不同,得分开说。

PT100是铂电阻,0°C时100Ω,温度系数约0.385Ω/°C。它的优点是线性度好、稳定性高、互换性强,缺点是电阻变化量小——从-50°C到150°C,电阻从80.31Ω变到157.33Ω,变化量77Ω。如果用恒压源激励,1mA电流下电压变化只有77mV,再除以增益,到ADC输入端的信号就更小了。所以PT100必须用比例法或者恒流源激励,ADS122U04内置的双IDAC就是干这个的。用IDAC输出1mA或0.5mA电流流过PT100,产生电压直接进ADC,同时用另一个IDAC流过参考电阻产生参考电压,这样激励电流的温漂和噪声就被比例消掉了。

热电偶输出的是热电动势,K型在0°C时0mV,100°C时约4.096mV,灵敏度约41μV/°C。这个信号更小,而且是非线性的,还需要冷端补偿。ADS122U04的PGA可以设到128倍增益,把41μV/°C放大到5.25mV/°C,再进24位ADC,分辨率绰绰有余。但热电偶的难点不在ADC,在于冷端补偿和断线检测。ADS122U04有专门的激励电流源可以用于断线检测,也有内部温度传感器可以粗略测冷端温度,但要做高精度还是得外挂一颗高精度温度芯片测接线端子处的温度。

NTC热敏电阻便宜、灵敏度高,但线性度极差,而且互换性不好,每个批次都要单独标定。在工业场景下,除非成本压得极死,否则不建议用NTC做多点测温,标定工作量太大。如果非要用,ADS122U04的高分辨率倒是能弥补NTC的非线性,但MCU端的查表或Steinhart-Hart方程计算量会上去。

注意:传感器选型决定了整个信号链的拓扑。PT100走比例法、热电偶走PGA+冷端补偿、NTC走恒压分压+软件线性化,三条路在PCB布局和软件配置上都不一样,必须在画板子之前就定死。

1.3 系统架构与数据流规划

整套系统的数据流是这样的:传感器信号→ADS122U04的模拟输入→PGA放大→Δ-Σ调制器→数字滤波器→UART输出→MK64FX512VDC12的UART接收→MCU做温度换算和滤波→通过RS485/CAN/以太网上报。

这里有个关键设计点:ADS122U04的UART是命令-响应模式的,MCU发命令它才回数据,不是连续输出。所以MCU端的UART接收要用中断或者DMA,不能轮询,否则120MHz的M4核光在那儿等UART数据太浪费。K64的UART支持DMA触发,可以配成收到固定字节数后触发DMA搬运到缓冲区,MCU只在缓冲区满了之后处理一次,这样CPU占用率能压到5%以下。

另一个设计点是多路复用。ADS122U04本身是4通道输入(两对差分或者四路单端),如果要做8路或16路温度采集,要么用多颗ADS122U04挂在不同UART上,要么外挂模拟开关做通道扩展。外挂模拟开关的缺点是引入额外导通电阻和漏电流,对PT100这种低阻传感器影响很大——模拟开关导通电阻通常几十欧姆,跟PT100的100Ω比不能忽略。所以如果精度要求高,建议直接用多颗ADS122U04,每颗管4路,MCU用UART地址区分。ADS122U04的UART支持地址配置,可以挂多条总线。

数据上报部分,HVAC场景常用BACnet或Modbus RTU,工业场景常用Modbus RTU或CANopen。K64有以太网MAC和CAN控制器,做协议转换很方便。如果只是做温度采集模块,建议先做Modbus RTU从站,实现简单、兼容性好,上位机随便找个组态软件就能读。

2. ADS122U04IPWR的核心配置与实操要点

2.1 寄存器配置流程与关键参数计算

ADS122U04的配置全靠寄存器,一共4个寄存器:配置寄存器0到3。上电后默认是掉电模式,必须发命令唤醒并配置。配置流程一般是:发RESET命令→发START/SYNC命令→写配置寄存器0(输入多路复用器、增益、数据速率)→写配置寄存器1(模式、转换模式、滤波器)→写配置寄存器2(IDAC电流、参考选择)→写配置寄存器3(IDAC路由、断线检测)。

配置寄存器0的MUX[3:0]位选输入通道。比如要测PT100接在AIN0和AIN1之间,就设MUX=0000(AIN0为正,AIN1为负)。GAIN[2:0]位选PGA增益,PT100用1mA激励时信号约100mV,参考电压2.048V,增益设1就够了;热电偶信号41μV/°C,增益要设到128。数据速率DR[3:0]位选20SPS到2000SPS,温度测量用20SPS或45SPS就够了,速率越低噪声越小。

这里有个计算要说明:数据速率和噪声的关系。ADS122U04在增益128、20SPS时,RMS噪声约1.5μV;在2000SPS时,RMS噪声约15μV。热电偶41μV/°C,如果用2000SPS,噪声等效温度约0.37°C,根本没法用;用20SPS,噪声等效0.037°C,勉强够。所以温度测量必须用低速档,这是Δ-Σ ADC的固有特性——速率换精度。

配置寄存器1的CM位选转换模式:单次转换还是连续转换。温度测量通常用连续转换,MCU定时读就行。滤波器选择上,ADS122U04有sinc1、sinc2、sinc3和sinc4可选,sinc3在50Hz/60Hz工频抑制上表现最好,工业场景建议用sinc3,配合20SPS正好把50Hz和60Hz都压下去。

配置寄存器2的IDAC[2:0]位选激励电流:关断、10μA、50μA、100μA、250μA、500μA、1000μA、1500μA。PT100用1mA,PT1000用100μA到250μA(避免自热)。参考选择REF[1:0]位选内部2.048V参考、外部参考、或者模拟电源做参考。比例法测量时选外部参考,参考电阻上的电压进REF引脚。

配置寄存器3的IDAC路由要跟硬件设计对上。比如IDAC1走AIN0,IDAC2走AIN3,那就要设I1MUX=0000、I2MUX=0011。断线检测位BCS使能后,IDAC会轮流从两个方向注入电流,通过检测电压异常来判断传感器是否断线。

实操心得:配置寄存器写完一定要回读验证。ADS122U04的UART没有CRC,如果通信受干扰写错了寄存器,读数会莫名其妙。建议每次上电配置完后回读所有寄存器,跟预期值比对,不一致就重新配置。

2.2 UART通信协议与命令时序

ADS122U04的UART是9600bps固定波特率,8位数据、无校验、1位停止位。命令分两类:一类是短命令(1字节),比如RESET(0x06)、START/SYNC(0x08)、POWERDOWN(0x02)、RDATA(0x10);另一类是寄存器读写命令(2字节),第一个字节是命令码(RREG是0x20|地址,WREG是0x40|地址),第二个字节是数据。

时序上有个坑:命令之间要留延迟。ADS122U04内部处理命令需要时间,连续发命令如果不留间隔,第二条命令会被忽略。实测下来,RESET之后要等至少50μs才能发下一条命令;WREG之后要等至少10μs。如果MCU的UART发送是阻塞式的,发完一个字节等TC标志,那自然就有间隔了;如果用DMA连续发,就要在命令之间插延时。

读数据用RDATA命令,发0x10之后ADS122U04会回3个字节:24位转换结果,MSB在前。注意,RDATA读的是最近一次转换结果,如果转换还没完成,读到的可能是旧数据。所以要么用DRDY引脚判断转换完成,要么用连续转换模式定时读。ADS122U04有DRDY引脚,转换完成会拉低,MCU可以用外部中断接这个脚,中断里发RDATA读数据,这样最可靠。

UART的TX和RX要交叉接,ADS122U04的TX接MCU的RX,RX接MCU的TX。如果中间要加隔离,用数字隔离器比如ISO7721,注意隔离器的传输延迟不能太大,否则9600bps下可能丢位。9600bps一个位104μs,隔离器延迟通常几十纳秒,完全够。

注意:ADS122U04的UART不支持多机通信的地址识别,如果一条总线上挂多颗,要么用MCU的多个UART分别接,要么外挂模拟开关切换TX/RX。不要试图在一条UART上并联多颗的TX,会冲突。

2.3 参考电压与激励电流的稳定性设计

比例法测量的核心思想是:传感器上的电压和参考电阻上的电压用同一个激励电流产生,ADC测的是两者比值,激励电流的漂移被约掉。具体接法是:IDAC1从AIN0流出,经过PT100到AIN1,再经过参考电阻RREF到地;IDAC2可以悬空或者用于第二路。ADC的REF+接RREF高端,REF-接地。这样ADC读到的码值 = (VPT100 / VREF) × 2^23 × 增益。

RREF的选择要算:PT100在最高温时电阻最大,比如150°C时157.33Ω,1mA电流下电压157.33mV。参考电压要大于这个值,否则ADC会饱和。选RREF=1.65kΩ,1mA下参考电压1.65V,小于内部参考2.048V,留了余量。RREF的精度直接影响测量精度,要用0.1%精度、低温漂(10ppm/°C以内)的金属膜电阻。普通厚膜电阻温漂100ppm/°C,在-40到85°C范围内阻值变化0.5%,直接引入0.5%的温度误差,不能用。

IDAC的电流精度本身不高,ADS122U04的IDAC初始精度约±1%,温漂约50ppm/°C。但比例法下这些误差都被约掉了,因为分子分母同时变化。真正影响精度的是RREF的绝对精度和PT100本身的精度。PT100选A级,0°C时100±0.06Ω,对应±0.15°C误差;选AA级,±0.04Ω,对应±0.1°C。

PCB布局上,RREF要靠近ADS122U04的REF引脚,走线短而粗,避免引入热电动势。PT100的走线要用三线制或四线制,两线制会把导线电阻算进去——每米铜线约0.02Ω,10米线就是0.2Ω,对应0.5°C误差。三线制可以补偿导线电阻,四线制最准但多一根线。HVAC现场通常用三线制,工业高精度场合用四线制。

3. MK64FX512VDC12端的软件实现与温度换算

3.1 UART驱动配置与DMA数据搬运

K64的UART驱动配置分几步:先使能UART时钟,配置波特率寄存器,设置数据位、停止位、校验位,然后使能收发。9600bps在120MHz总线时钟下,波特率分频值SBR = 120000000 / (16 × 9600) = 781.25,取781,实际波特率120000000 / (16 × 781) = 9603.07bps,误差0.03%,完全在容忍范围内。

接收用DMA最省心。K64的DMA控制器(eDMA)可以配成UART接收触发,每次收到一个字节就搬运到缓冲区,收满3字节后触发中断。中断里把3字节拼成24位有符号数,做温度换算。发送也可以用DMA,把命令字节放进缓冲区,DMA自动发完。

这里有个细节:UART的接收超时。如果ADS122U04因为干扰没回数据,DMA会一直等,MCU不知道。所以要配一个定时器做超时检测,比如发RDATA后启动10ms定时器,定时器到了还没收满3字节就报通信错误,重新初始化UART。10ms是9600bps下3字节传输时间(3×10/9600≈3.1ms)的3倍余量,足够。

DMA缓冲区要用volatile修饰,因为DMA在后台改,编译器不能优化掉。缓冲区大小至少3字节,如果要做连续采集,可以用双缓冲,DMA收满一块触发中断,中断里切换缓冲区,这样不会丢数据。

3.2 24位ADC码值到温度值的换算方法

ADS122U04输出的是24位二进制补码,范围-8388608到8388607。换算成电压:V = CODE × VREF / (2^23 × GAIN)。注意是2^23不是2^24,因为满量程是±VREF/GAIN,正负对称。

PT100的比例法换算:CODE = (VPT100 / VREF) × 2^23 × GAIN。VPT100 = IPT100 × RPT100,VREF = IDAC × RREF。如果IDAC1和IDAC2是同一电流源镜像出来的,IPT100 ≈ IDAC,那CODE ≈ (RPT100 / RREF) × 2^23 × GAIN。所以RPT100 = CODE × RREF / (2^23 × GAIN)。算出RPT100后,用Callendar-Van Dusen方程反算温度。

Callendar-Van Dusen方程:T > 0°C时,R(T) = R0 × (1 + A×T + B×T²);T < 0°C时,R(T) = R0 × (1 + A×T + B×T² + C×(T-100)×T³)。A=3.9083e-3,B=-5.775e-7,C=-4.183e-12。反算T没有解析解,要用迭代或者查表+线性插值。工程上常用查表法:把-200到850°C按1°C间隔建表,表里存PT100电阻值,测量值落在哪两个表项之间就线性插值。1°C间隔下线性插值误差小于0.01°C,够用。表大小1051个float,4KB Flash,K64的1MB Flash随便放。

热电偶的换算更复杂。先算热电动势:Vtherm = CODE × VREF / (2^23 × GAIN)。然后加冷端补偿:Vtotal = Vtherm + Vcold,Vcold是冷端温度对应的热电动势。冷端温度用ADS122U04内部温度传感器或者外挂LM75测。然后查热电偶分度表反算温度。K型热电偶的分度表是非线性的,-200到1372°C,用查表+插值。表大小1573项,每项2字节(mV值×1000存成整数),约3KB Flash。

实操心得:热电偶的冷端补偿误差是主要误差源。ADS122U04内部温度传感器精度约±0.5°C,对应K型热电偶±0.5°C误差。如果要求±0.2°C,必须外挂±0.1°C精度的温度芯片,而且要放在接线端子旁边,不能放在MCU旁边,否则测的是板温不是端子温。

3.3 数字滤波与工频抑制的工程实现

ADS122U04内部已经有sinc3滤波器,20SPS时对50Hz和60Hz的抑制约80dB,这已经很强了。但工业现场还有低频干扰,比如电机启动时的电压跌落、接触器动作时的脉冲群,这些靠ADC内部滤波器不够,MCU端还要做数字滤波。

最简单的是一阶低通滤波:Y(n) = α×X(n) + (1-α)×Y(n-1),α取0.1到0.3。这个滤波计算量小,但相位滞后大,适合温度这种慢变量。温度变化通常几秒才0.1°C,采样率20SPS下,α=0.1对应时间常数约10个采样周期即0.5秒,完全够。

如果干扰是周期性的,可以用滑动平均:Y(n) = (X(n) + X(n-1) + ... + X(n-N+1)) / N。N取20,对应1秒窗口,对50Hz干扰有很好的抑制。滑动平均的相位滞后是(N-1)/2个采样周期,N=20时约0.5秒,也能接受。

更讲究的可以用IIR陷波器专门滤50Hz,但K64的DSP指令做二阶IIR只要几个周期,20SPS下CPU占用率忽略不计。不过陷波器对频率匹配要求高,电网频率波动±0.5Hz就会让陷波效果变差,所以工业场景还是滑动平均更稳。

滤波后的数据再做限幅:如果新值和旧值差超过5°C,认为是个野点,丢弃。这个逻辑能挡住大部分脉冲干扰。限幅阈值要根据实际温度变化率设,HVAC水温变化率通常小于1°C/分钟,5°C阈值很宽松;工业炉窑可能变化快,阈值要放大。

4. 常见问题与排查技巧实录

4.1 读数跳动大、噪声高的排查思路

读数跳动是最常见的问题。排查顺序是:先看电源,再看参考,再看输入,最后看配置。

电源方面,ADS122U04的AVDD和DVDD要分开滤波,AVDD用10μF钽电容+0.1μF陶瓷电容,DVDD同样。如果AVDD和DVDD共用一路LDO,LDO的PSRR要够高,至少60dB@1kHz。实测中遇到过LDO选型不当,DVDD上的数字噪声耦合到AVDD,读数跳动从±0.1°C恶化到±2°C。换用TPS7A4700这种低噪声LDO后恢复正常。

参考方面,RREF的走线要远离数字信号。如果RREF和UART走线平行走了一段,UART翻转时会耦合噪声到参考上,读数会出现跟通信同步的跳动。解决方法是RREF走线包地,或者把UART走线远离模拟区。

输入方面,PT100的引线要屏蔽,屏蔽层单点接地。如果引线没屏蔽,50Hz工频会耦合进来,20SPS下虽然sinc3滤了一部分,但共模转差模后还是会残留。用双绞屏蔽线,屏蔽层接模拟地,能改善很多。

配置方面,检查PGA增益和数据速率。增益设太高会让PGA饱和,读数卡在满量程;数据速率设太高噪声大。用示波器看DRDY引脚,如果DRDY频率跟配置的速率不符,说明配置没写进去,回读寄存器确认。

4.2 通信失败与数据错位的定位方法

UART通信失败通常有三种表现:完全没数据、数据错位、数据偶尔错。

完全没数据先查硬件:TX/RX有没有接反,ADS122U04的电源和地有没有接,RESET引脚有没有拉高。ADS122U04的RESET是低有效,如果悬空可能被干扰拉低,芯片一直复位。建议RESET接10k上拉到DVDD,或者直接接MCU的GPIO控制。

数据错位通常是波特率不匹配或者停止位不对。ADS122U04固定9600bps、8N1,MCU端如果设成9600bps但时钟源不准,比如用内部RC振荡器误差2%,累积到第10位就可能错。K64用外部晶振做UART时钟源,误差通常小于0.1%,没问题。如果MCU端用了波特率自动检测,要确认检测结果确实是9600。

数据偶尔错多半是干扰。UART线加磁珠或者共模电感,能压住高频干扰。如果线长超过1米,建议用双绞线,TX和RX各绞一对,再跟地线绞在一起。软件上加校验:虽然ADS122U04的UART没有CRC,但可以在MCU端做合理性检查,比如连续读3次,如果3次差异超过阈值就丢弃重读。

注意:ADS122U04的UART在收到无效命令时会忽略,不会回错误。所以如果MCU发了命令但没收到预期响应,不要等,直接超时重发。重发3次还失败就报故障。

4.3 温度换算偏差大的校准与补偿

温度换算偏差大,先分清是增益误差还是偏移误差。增益误差表现为全量程范围内偏差成比例,偏移误差表现为零点偏、满量程也偏同样值。

校准方法:用高精度电阻箱代替PT100,分别输入0°C、100°C、200°C对应的电阻值(100Ω、138.51Ω、175.86Ω),记录ADC码值和换算温度。如果0°C时偏差+0.5°C,200°C时偏差+1.0°C,说明有增益误差,需要调整RREF的标定值。如果0°C和200°C都偏+0.5°C,说明是偏移误差,在换算结果上减0.5°C就行。

RREF的标定值不要用标称值,要用实测值。拿6位半万用表测RREF的实际阻值,比如标称1.65kΩ实测1.6492kΩ,换算时用1.6492kΩ,能消掉0.05%的增益误差。PT100的R0也要标定,A级PT100的R0偏差±0.06Ω,对应0.15°C,如果要求高精度,每颗PT100单独标定R0。

热电偶的偏差主要来自冷端补偿。如果冷端温度测不准,整个量程都会偏。校准方法是:把热电偶短接(模拟0°C热端),读出的温度应该等于冷端温度。如果读出25°C但实际冷端是23°C,说明冷端补偿有+2°C偏差,在软件里减掉。

4.4 常见问题速查表

现象可能原因排查方法解决措施
读数跳动±2°C以上电源噪声大示波器看AVDD纹波换低噪声LDO,加π型滤波
读数跳动跟通信同步参考走线耦合数字噪声示波器看REF引脚RREF走线包地,远离UART
读数卡在满量程PGA饱和读配置寄存器确认增益降低增益或增大RREF
通信完全无响应RESET被拉低万用表测RESET引脚电压RESET上拉或接GPIO控制
数据偶尔错位波特率偏差累积示波器测位宽用外部晶振做UART时钟
温度整体偏+0.5°C偏移误差0°C点校准软件减偏移
温度随温度升高偏差增大增益误差多点校准标定RREF实际值
热电偶读数偏低冷端补偿不准短接热电偶读冷端温度校准冷端或换高精度温度芯片
断线检测误报IDAC路由配置错回读配置寄存器3按硬件连接重配IDAC路由
多路采集互相干扰模拟开关导通电阻大测开关两端电压差改用多颗ADS122U04

5. 工业与HVAC场景的落地经验与扩展思路

5.1 工业现场的抗干扰加固措施

工业现场的电磁环境比实验室恶劣得多。除了前面说的电源滤波、参考走线、屏蔽线,还有几个加固措施值得做。

隔离是工业产品的标配。ADS122U04的UART侧加数字隔离器,电源侧加隔离DC-DC,把现场侧和系统侧完全隔开。隔离耐压至少2500V,工业场景建议5000V。隔离器选ISO7721这类电容隔离,速率100Mbps,延迟几纳秒,对9600bps完全无影响。隔离DC-DC选带稳压的,比如SN6501+变压器,输出5V再LDO到3.3V。

TVS保护也不能少。PT100引线可能感应雷击浪涌,虽然能量不大,但足以打坏ADC输入。在AIN0/AIN1对地各加一颗TVS,钳位电压选5V或6V,结电容要小(小于10pF),否则影响ADC采样。TVS要放在连接器入口,走线先过TVS再进ADC。

共模扼流圈对长线传输很有用。PT100引线用共模扼流圈,比如ACM系列,阻抗选100Ω@100MHz,能压住共模噪声。注意扼流圈的直流电阻要小,否则跟PT100的100Ω比不能忽略。选直流电阻小于1Ω的型号。

PCB分区要严格。模拟区、数字区、电源区分开,地平面用单点连接或者磁珠连接。ADS122U04放在模拟区,UART走线跨到数字区时用地平面隔离。晶振远离模拟区,至少10mm以上。

5.2 HVAC多路温度巡检的扩展方案

HVAC系统通常要测十几路温度:冷冻水供回水、冷却水供回水、室内外温湿度、风管温度等。用单颗ADS122U04只能测4路,要扩展。

方案一:多颗ADS122U04+多UART。K64有6个UART,可以挂6颗ADS122U04,共24路。每颗独立配置,互不干扰。缺点是成本高,每颗ADS122U04加外围约20元,6颗就是120元。优点是精度高、隔离方便,每颗可以单独隔离。

方案二:多颗ADS122U04+UART多路复用。用模拟开关切换UART总线,MCU只有一个UART,分时跟每颗通信。缺点是切换时要有稳定时间,而且模拟开关引入电容会影响UART波形。9600bps下问题不大,但要多路复用芯片比如TMUX1574,导通电容几pF,对9600bps影响可忽略。

方案三:单颗ADS122U04+外部模拟开关。ADS122U04的4路输入通过模拟开关扩展到16路。缺点是模拟开关导通电阻影响PT100精度,要用低导通电阻的开关比如ADG1408(导通电阻4Ω),而且要做导通电阻补偿——在软件里减掉开关电阻。这个方法成本最低,但精度最差,适合对精度要求不高的场合。

实操心得:HVAC场景温度测量精度通常要求±0.5°C,方案三的模拟开关引入的误差约±0.2°C,加上PT100本身±0.15°C,总误差±0.35°C,勉强够。但如果要求±0.2°C,必须用方案一或方案二。

5.3 低功耗设计与电池供电的可行性

有些HVAC场景,比如无线温度传感器,要用电池供电。ADS122U04的功耗在连续转换模式下约1.5mA,MK64FX512VDC12在120MHz全速运行约50mA,加起来50mA以上,电池供电撑不了多久。

低功耗设计思路:间歇工作。MCU大部分时间休眠,定时唤醒(比如每10秒一次),唤醒后给ADS122U04上电,等稳定后读一次温度,然后断电休眠。ADS122U04从掉电到稳定需要约1ms,MCU从休眠到唤醒约10μs,整个采集过程约5ms,占空比0.05%。平均电流:MCU休眠约10μA,ADS122U04断电约1μA,采集时50mA×5ms/10s=25μA,总平均约36μA。用2000mAh电池可以撑约6年,实际考虑电池自放电和温度影响,2-3年没问题。

K64的低功耗模式有VLPR、STOP、VLPS等。STOP模式电流约200μA,VLPS约50μA。如果要求更低,可以用RTC唤醒,RTC在VBAT域,电流约1μA。但K64从STOP唤醒要重新配置时钟和外设,唤醒时间约100μs,对温度采集来说可以接受。

ADS122U04的POWERDOWN命令可以关断模拟部分,电流降到0.1μA。但要注意,掉电后配置寄存器会丢失,唤醒后要重新配置。配置时间约1ms,加上ADC稳定时间,总共约5ms。

5.4 从原型到产品的工程化注意事项

原型验证通过后,转产品还有几个坑要填。

EMC测试是必过的。工业产品要过IEC 61000-4-2(静电)、4-3(辐射抗扰)、4-4(快速瞬变)、4-5(浪涌)、4-6(传导抗扰)。ADS122U04的模拟输入对快速瞬变很敏感,4-4测试时如果PT100引线没加TVS和共模扼流圈,读数会跳。加TVS和扼流圈后能过4-4 Level 3。4-5浪涌能量大,TVS要选功率大的,比如SMBJ5.0A,峰值功率600W。

温度循环测试也要做。-40到85°C循环100次,看RREF的阻值有没有漂移,PT100的焊点有没有开裂。RREF选低温漂的,焊点用无铅焊锡,但无铅在低温下容易脆,-40°C时可能开裂。如果产品要过-40°C,建议用有铅焊锡或者导电胶。

长期稳定性方面,PT100会随时间漂移,每年约0.05°C。如果要求长期精度,每年要校准一次。ADS122U04的增益也会漂移,但比例法下被RREF的漂移抵消了一部分。RREF选Vishay的PTF系列,年漂移25ppm,对应0.0025°C/年,可以忽略。

生产校准要设计校准工装。用高精度电阻箱模拟PT100,在0°C、100°C、200°C三点校准,记录每块的增益和偏移,写入Flash。校准工装用继电器切换电阻箱,MCU通过UART读温度,自动计算校准系数。每块校准时间约30秒,产线可以接受。

这个方案我在几个HVAC项目上用过,冷冻水温度测量精度做到±0.3°C,工业炉窑热电偶测量做到±1°C(主要是冷端补偿限制)。ADS122U04的UART接口在长线传输上确实比SPI省心,MK64FX512VDC12的DSP做温度换算也绰绰有余。如果要做更高精度,可以考虑ADS122U04的SPI版本ADS1220,但SPI在隔离和长线上要多花心思。后续如果要扩展,可以加以太网做Modbus TCP,K64的MAC支持RMII,外挂PHY就行,软件用lwIP协议栈,实现起来不难。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询