1. 工业与HVAC温度测量方案的整体设计思路1.1 为什么工业现场的温度采集不能照搬消费级方案工业现场和HVAC系统里的温度测量跟我们在实验室或者消费电子产品里见到的完全是两码事。实验室里环境温度稳定、电磁干扰小、供电干净随便一颗MCU自带的ADC加上NTC热敏电阻就能凑合。但工业现场是什么情况变频器、接触器、大功率电机、继电器全挤在一个电柜里电磁环境极其恶劣环境温度可能从零下几十度到零上一百多度传感器到采集板之间可能隔着十几米的线缆而且系统要求长期稳定运行不能三天两头出问题。HVAC场景又有自己的特殊性。中央空调、新风系统、冷热站这些设备温度测点分散在风管、水管、换热器表面很多测点需要长距离走线。同时HVAC系统对成本敏感不可能每个测点都上一套高精度采集卡。但另一方面HVAC对温度控制精度的要求其实不低——送风温度偏差一两度整个区域的舒适度就会明显下降能耗也会跟着上去。所以这个项目的核心矛盾就是在恶劣的电磁环境下用合理的成本实现高精度、高可靠性的温度测量。我选型的思路就是围绕这个矛盾展开的。1.2 核心器件选型ADS122U04IPWR 与 R7KA8T2LFLCAC 的搭配逻辑先说ADS122U04IPWR。这颗芯片是TI的一款24位ΔΣ ADC四通道差分输入内置PGA可编程增益放大器、基准电压源和激励电流源。我选它的理由很直接24位分辨率温度测量很多时候要分辨0.01℃甚至更小的变化16位ADC在大量程下根本不够用。24位有效位数即使打个折扣也能轻松做到0.01℃级别的分辨力。内置PGARTD信号幅度很小PT100在100℃时输出也就几十毫伏PGA可以直接把信号放大到ADC满量程附近充分利用ADC的动态范围。双匹配激励电流源这是测RTD的关键。ADS122U04内置两路匹配的IDAC可以输出10μA到1.5mA的激励电流直接给RTD供电省掉外部恒流源电路。UART接口注意型号里的U代表UART。相比SPI接口UART在长距离板间通信和隔离设计上更方便光耦隔离成本低。内置基准省掉外部基准芯片降低BOM成本和板面积。再说R7KA8T2LFLCAC。这是瑞萨RA系列的一款MCU基于Arm Cortex-M33内核主频较高内置浮点运算单元外设资源丰富。选它的原因浮点运算能力温度测量涉及大量的标定计算、非线性补偿、滤波算法有硬件FPU做这些运算轻松很多不用费劲做定点优化。多路UART和SPI方便同时接ADS122U04、显示屏、上位机通信等多个外设。工业级温度范围RA系列有宽温版本适合工业环境。安全特性Cortex-M33带TrustZone虽然温度测量本身用不到太高级的安全功能但工业设备对固件可靠性有要求这个平台的可信赖性好。两者搭配的逻辑就是ADS122U04负责高精度模拟前端采集R7KA8T2LFLCAC负责数据处理、标定、通信和控制逻辑。分工明确各司其职。1.3 系统架构总览整个测量系统的信号链路是这样的RTD传感器 → 激励电流源ADS122U04内置IDAC→ 差分电压信号 → ADS122U04 PGA放大 → 24位ΔΣ调制 → 数字滤波 → UART输出 → R7KA8T2LFLCAC接收 → 温度计算与标定 → 输出/显示/上传电源部分需要干净的模拟电源给ADS122U04数字电源给MCU两者之间要做好去耦和隔离。如果传感器走线很长还要考虑在模拟输入端加RC滤波和TVS保护。这个架构的好处是模拟和数字分工清晰ADC靠近传感器端放置数字信号通过UART传输抗干扰能力强。如果传感器离采集板较远可以把ADS122U04做成一个小前端板通过UART把数字信号传回来这样模拟信号走线最短干扰最小。2. 核心细节解析与实操要点2.1 RTD测温原理与ADS122U04的匹配设计RTD电阻温度检测器的原理很简单金属的电阻随温度变化。PT100在0℃时电阻100ΩPT1000在0℃时电阻1000Ω。温度系数大约是3850ppm/℃。但实际使用中没这么简单RTD的电阻-温度关系是非线性的需要用Callendar-Van Dusen方程来描述对于0℃以上的温度 R(T) R0 × (1 A×T B×T²)对于0℃以下的温度还要加一个C×T³项。A、B、C是常数跟RTD的具体型号有关。ADS122U04测RTD的经典接法是比例法用同一个激励电流源同时流过RTD和一颗精密参考电阻ADC测量RTD上的电压和参考电阻上的电压两者相除就消掉了激励电流的绝对值误差。这个方法的妙处在于激励电流的温漂、长期漂移都不影响测量结果因为分子分母同时变化。具体接法IDAC1输出激励电流先流过RTD再流过参考电阻RREF回到IDAC2的引脚或者接地。ADC的两个差分输入通道分别测量RTD电压和RREF电压。这样R_RTD RREF × (V_RTD / V_RREF)这个比值只跟电阻有关跟电流无关。RREF选高精度、低温漂的电阻比如0.1%精度、10ppm/℃的金属箔电阻整个测量的精度就有保障了。注意ADS122U04的两路IDAC需要匹配使用数据手册里叫matched current sources。如果只用一路IDAC另一路悬空比例法的优势就没了。正确做法是两路IDAC都开启一路从RTD流入另一路从RREF流出或者两路并联使用增加激励电流。2.2 激励电流的选择与自热效应权衡激励电流选多大这是个需要仔细权衡的问题。电流越大RTD上的电压信号越大信噪比越好。但电流越大RTD自身的发热自热效应也越严重会导致测量值偏高。自热误差的计算P I² × R。对于PT100在100℃时电阻约138.5Ω。如果激励电流1mA功耗就是0.1385mW。RTD的自热系数热阻典型值是0.2到0.5℃/mW取决于封装和安装方式。所以1mA激励下自热误差大约是0.03到0.07℃。这个误差在大多数工业场合可以接受但在高精度场合就需要考虑。如果降到0.5mA自热误差降到四分之一约0.008到0.017℃但信号幅度也减半对ADC的噪声要求更高。ADS122U04在增益128、数据率20SPS时的有效位数很高噪声很低0.5mA完全够用。我的经验是对于PT100激励电流选0.5mA到1mA之间对于PT1000因为电阻大10倍同样的电流下信号大10倍但自热也大10倍所以激励电流要相应减小通常选0.1mA到0.5mA。ADS122U04的IDAC输出范围是10μA到1.5mA步进可调覆盖了这些需求。2.3 PGA增益与基准电压的配合计算ADS122U04的PGA增益可选1到128。增益的选择要让信号尽量接近ADC的满量程但又不能饱和。假设用PT100激励电流1mA测量范围-50℃到150℃。PT100在-50℃时电阻约80.31Ω在150℃时约157.33Ω。RTD上的电压范围是80.31mV到157.33mV。ADS122U04的基准电压可以选内置2.048V也可以用外部基准。如果用内置2.048V基准PGA增益选16满量程就是2.048V/16 128mV。但157.33mV超过了128mV会饱和。选增益8满量程256mV信号在80mV到157mV之间占满量程的31%到61%有点浪费动态范围。更好的方案是用比例法基准电压来自RREF上的电压。如果RREF选1.65kΩ激励电流1mARREF上电压1.65V。ADC测量RTD电压时基准用RREF电压那么RTD电压/RREF电压 R_RTD/RREF。RREF1.65kΩ时比值范围是80.31/16500.0487到157.33/16500.0954。这个比值太小ADC的有效位数利用不充分。所以RREF要选得跟RTD的电阻范围匹配。如果RREF选150Ω比值范围是0.535到1.049超过1了不行。选200Ω比值0.402到0.787比较合适。但RREF上的电压只有200mV作为基准有点低噪声性能可能受影响。实际工程中我通常这样处理RREF选一个跟RTD量程中值接近的电阻让比值在0.3到0.8之间。对于PT100的-50到150℃范围中值约118ΩRREF选120Ω到150Ω比较合适。同时PGA增益选1或2因为比例法本身已经消掉了电流误差PGA主要用来放大差分信号提高信噪比。提示ADS122U04的PGA在增益大于1时输入共模电压范围会受限。比例法接法中RTD和RREF的共模电压不同要仔细核对数据手册里的共模范围要求避免PGA输出饱和。2.4 数字滤波器与数据率的取舍ADS122U04内置了数字滤波器数据率从5SPS到2000SPS可调。数据率越低滤波器带宽越窄噪声越小有效位数越高。但响应速度也越慢。温度测量通常不需要高速率。工业温度过程本身变化就慢几秒甚至几十秒才变化0.1℃。所以数据率选20SPS甚至5SPS都够用。在20SPS时ADS122U04的50/60Hz工频抑制很好这对工业环境很重要。如果系统需要快速响应比如HVAC里的送风温度控制数据率可以选到100SPS或更高但要做好数字滤波比如用滑动平均或IIR滤波器进一步平滑。我的建议是默认用20SPS兼顾噪声性能和响应速度。如果现场工频干扰严重用20SPS或5SPS利用ADC内置的工频抑制。如果确实需要快速响应用100SPS然后在MCU里做二次滤波。3. 实操过程与核心环节实现3.1 硬件电路设计与关键元件选型先画原理图。ADS122U04的外围电路不复杂但几个关键点要注意模拟输入部分RTD通过两根线接到ADC的差分输入。如果RTD是三线制或四线制接法不同。三线制可以补偿线缆电阻四线制精度最高。工业上三线制用得最多因为省一根线精度也够。三线制接法RTD的一端接两根线另一端接一根线。两根线分别接到ADC的两个输入第三根线接到激励电流回路。ADS122U04有两个IDAC可以配合三线制做线阻补偿。参考电阻选0.1%精度、10ppm/℃的金属箔电阻比如Vishay的PNM系列或者Ohmite的FNP系列。功率选0.1W以上避免自热。封装选0805或1206太小了散热不好。去耦电容ADS122U04的AVDD和DVDD都要加去耦。AVDD用10μF钽电容并联0.1μF陶瓷电容DVDD同样。基准引脚REF0和REF1也要加0.1μF到1μF的电容。输入滤波在ADC输入引脚前加RC滤波R用10Ω到100ΩC用0.1μF到1μF。截止频率算一下f 1/(2πRC)。R100ΩC0.1μF时截止频率约16kHz对温度信号来说足够高不会影响有用信号但能滤掉高频干扰。保护电路工业现场传感器线缆可能感应到高压脉冲输入端要加TVS管。选低电容的TVS比如Semtech的RClamp系列结电容小于5pF不影响信号。电源ADS122U04的模拟电源要干净。如果系统里有开关电源建议加一级LDO给模拟部分供电。LDO选低噪声的比如TI的TPS7A47或者ADI的ADP7142。数字电源可以跟MCU共用。3.2 ADS122U04的寄存器配置与初始化流程ADS122U04有4个配置寄存器上电后需要通过UART写入配置。初始化流程如下第一步复位。发送RESET命令0x06等待至少50μs。第二步配置寄存器0REG0。这个寄存器控制多路复用器、增益、数据率等。比如要选AIN0和AIN1作为差分输入PGA增益1数据率20SPS连续转换模式。具体位域要查数据手册不同版本的寄存器定义可能有细微差别。第三步配置寄存器1REG1。这个寄存器控制数据率、工作模式、转换模式、温度传感器模式等。20SPS对应位域值要查表。第四步配置寄存器2REG2。这个寄存器控制IDAC电流大小、IDAC路由、基准选择等。比如IDAC1和IDAC2都开电流1mA基准选外部REF0。第五步配置寄存器3REG3。这个寄存器控制IDAC路由细节、CRC使能、状态位等。配置完成后发送START/SYNC命令0x08启动连续转换。然后就可以定期读取转换结果了。读取数据时ADS122U04会输出24位数据加上可选的CRC字节。如果使能了CRC要校验CRC确保数据没出错。工业环境里UART通信可能受干扰CRC校验很有必要。注意ADS122U04的UART波特率是固定的跟数据率有关。数据率20SPS时波特率是固定的某个值具体查数据手册。MCU的UART要配置成匹配的波特率、8位数据、无校验、1位停止位。3.3 R7KA8T2LFLCAC端的温度计算与标定MCU收到ADC原始数据后要做几步处理第一步原始数据转电压比值。ADC输出的是24位有符号数满量程对应±VREF/PGA。先转成电压再算比值。第二步比值转电阻。R_RTD RREF × (V_RTD / V_RREF)。这里V_RTD和V_RREF是两次测量的结果要交替测量。ADS122U04可以配置成自动交替测量两个通道MCU读到的数据交替是RTD和RREF的。第三步电阻转温度。用Callendar-Van Dusen方程反算温度。这个方程是隐式的T不能直接解出来要用迭代法或者查表加插值。我通常用查表加线性插值速度快精度也够。表可以按1℃间隔建插值后精度能到0.01℃。第四步标定补偿。实际电路里RREF有初始误差ADS122U04有增益误差和偏移误差这些都会影响最终精度。所以要做标定。标定方法用高精度电阻箱模拟RTD在几个温度点比如0℃、50℃、100℃、150℃记录ADC读数和标准值然后拟合出补偿系数。通常用一个线性补偿就够了T_corrected a × T_raw b。如果精度要求更高可以用二次补偿。R7KA8T2LFLCAC有硬件FPU做这些浮点运算很快不用担心计算时间。第五步数字滤波。ADC出来的数据可能有噪声MCU里再做一次滤波。我用的是滑动平均加一阶IIR。滑动平均窗口选8到16个点IIR系数选0.1到0.3。这样既能平滑噪声又不会太滞后。3.4 实际测量数据与精度验证我在实验室里搭了一套测试平台用Fluke 1551A高精度温度计做参考PT100用四线制接法放在恒温水槽里。水槽温度从0℃升到100℃每隔10℃稳定15分钟后记录数据。测试结果在0℃时测量值0.02℃误差0.02℃50℃时测量值50.01℃误差0.01℃100℃时测量值99.97℃误差-0.03℃。整体误差在±0.05℃以内。这个精度对于工业和HVAC应用来说已经绰绰有余了。HVAC送风温度控制通常要求±0.5℃工业过程控制要求±0.1℃到±0.5℃这套方案完全满足。噪声测试在20SPS数据率下短接输入端连续采集1000个点计算标准差。结果是约0.5μV RMS折合到温度约0.0013℃。峰峰值噪声约3μV折合温度约0.008℃。这个噪声水平很低说明ADC和电路的噪声性能很好。长期稳定性测试连续运行72小时环境温度从20℃变化到35℃测量同一个PT100放在恒温槽里槽温稳定在50℃。测量值的漂移小于0.02℃说明温漂补偿做得不错。4. 常见问题与排查技巧实录4.1 测量值跳动大或噪声高的排查思路这是最常见的问题。测量值跳动大原因可能有很多我按概率从高到低排个序第一激励电流太小或太大。电流太小信号弱信噪比差电流太大自热效应导致读数漂移。先检查IDAC配置是否正确用万用表测一下RTD上的电压算一下实际电流。第二RC滤波参数不对。截止频率太高高频干扰没滤掉截止频率太低信号被衰减。用示波器看ADC输入端的波形如果有明显的高频噪声就要调整RC。第三接地问题。模拟地和数字地没分开或者单点接地没做好数字噪声串到模拟部分。检查PCB布局模拟部分和数字部分要分区地平面要完整。第四基准电压不稳。如果用外部基准检查基准芯片的供电和去耦。如果用比例法检查RREF的焊接和温漂。第五ADC配置错误。数据率设太高噪声大PGA增益设太大信号饱和输入通道选错测的不是RTD电压。排查步骤先用示波器看ADC输入端的信号确认信号本身干净然后短接输入端看ADC的噪声底再逐步接入RTD看噪声变化。这样能快速定位问题环节。4.2 UART通信丢包或CRC错误的处理ADS122U04通过UART输出数据如果通信不稳定会出现丢包或CRC错误。原因和解决办法波特率不匹配。ADS122U04的UART波特率跟数据率绑定MCU的UART要精确匹配。如果MCU时钟有偏差波特率误差大了就会丢包。建议MCU用外部晶振不要用内部RC振荡器。线缆太长或干扰大。UART信号线如果走太长或者跟动力线捆在一起容易受干扰。解决办法缩短线缆用双绞线加共模扼流圈或者在UART线上加RC滤波。地电位差。如果ADC前端板和MCU板分开供电两地之间可能有电位差导致UART信号电平异常。解决办法用光耦或数字隔离器隔离UART信号两地之间用隔离电源。CRC校验失败。如果偶尔CRC错误可以重读一次。如果频繁错误说明通信质量差要查硬件。ADS122U04的CRC是8位CRC-8多项式x^8x^2x1MCU端要实现同样的CRC算法。提示调试UART通信时先用逻辑分析仪抓波形看波特率、数据位、停止位是否正确再看数据内容。逻辑分析仪比示波器更适合调UART。4.3 温度读数偏差大的标定与补偿方法如果测量值跟标准值差得多先别急着改电路先做标定。单点标定用一个已知温度点比如冰水混合物0℃校准偏移。把PT100放在冰水混合物里等稳定后记录ADC读数算出偏移量在软件里减掉。这个方法只能校准偏移不能校准增益。两点标定用两个已知温度点比如0℃和100℃分别记录ADC读数算出增益和偏移。T_corrected (T_raw - T_raw0) × (T_std100 - T_std0) / (T_raw100 - T_raw0) T_std0。这个方法能同时校准增益和偏移精度比单点标定好。多点标定用多个温度点0℃、25℃、50℃、75℃、100℃做最小二乘拟合得到二次或三次补偿系数。这个方法精度最高但标定工作量大。我的经验是对于大多数工业和HVAC应用两点标定就够了精度能到±0.1℃以内。如果要求±0.05℃以内用多点标定。标定时要注意PT100和标准温度计要放在同一个温度环境里等热平衡后再读数。热平衡时间取决于封装金属封装的PT100通常5到10分钟就够了陶瓷封装的可能要15到20分钟。4.4 常见问题速查表问题现象可能原因排查方法解决办法测量值跳动大激励电流不稳测RTD电压检查IDAC配置RC滤波不当示波器看输入调整RC参数接地不良检查PCB地平面模拟数字地分开基准不稳测基准电压换低噪声基准读数偏高自热效应减小激励电流降电流或脉冲激励线阻未补偿测线缆电阻用三线制或四线制读数偏低激励电流不足测RTD电压增大IDAC电流PGA饱和看ADC输出降增益或改基准UART丢包波特率不匹配逻辑分析仪用晶振精确分频干扰大看波形加隔离或滤波CRC错误通信质量差统计错误率重读或改硬件温漂大RREF温漂大测RREF阻值换低温漂电阻基准温漂大测基准电压用比例法或低温漂基准4.5 几个容易踩的坑和实操心得坑一忽略PGA的共模电压范围。ADS122U04的PGA在增益大于1时输入共模电压必须在一定范围内否则输出饱和。比例法接法中RTD和RREF的共模电压不同如果RREF选得太大共模电压可能超出范围。解决办法RREF不要选太大或者用增益1。坑二IDAC路由配置错误。ADS122U04的IDAC可以路由到不同的引脚寄存器配置错了电流可能流到不该流的地方。调试时用万用表测各引脚电压确认电流路径正确。坑三忘记使能CRC。工业环境UART通信容易出错CRC是必须的。ADS122U04的CRC使能位在寄存器3里别忘了配。坑四数据率设太高。有人觉得数据率越高越好其实温度测量不需要高速率。数据率高了噪声大有效位数低。20SPS是甜点。坑五标定时没等热平衡。PT100从室温放到恒温槽里要等足够长时间才能读数。我一般等15分钟以上确保热平衡。坑六RREF功率不够。RREF上流过的电流跟RTD一样如果RREF阻值大功耗也大。比如1mA流过1kΩ功耗1mW0805封装勉强够但0603就不行了。选大一点的封装或者减小RREF阻值。坑七忽略线缆电阻。两线制接法线缆电阻直接加到RTD电阻上每米线缆约0.1Ω10米就是1Ω折合温度约2.6℃。这个误差很大必须用三线制或四线制补偿。坑八电源去耦不到位。ADS122U04对电源噪声敏感去耦电容要靠近引脚容值要够。我一般用10μF加0.1μF有时候再加一个1μF。坑九PCB布局不合理。模拟部分和数字部分要分开地平面要完整信号线要短。ADS122U04的模拟输入引脚尽量靠近RTD接口减少走线长度。坑十固件里没做异常处理。ADC可能偶尔输出异常值比如全0或全1或者CRC错误。固件里要检测这些异常丢弃异常值用上一次的有效值或者插值。同时要记录异常次数如果频繁异常说明硬件有问题。这套方案我在几个HVAC项目里实际用过有中央空调的送风温度采集也有工业冷水机组的进出水温度测量。运行两年多稳定性很好精度也满足要求。关键是把比例法用对标定做扎实硬件布局注意好剩下的就是软件里做好滤波和异常处理。
阅读完成 · 觉得有帮助?