1. 为什么选这对组合从项目需求倒推方案选型做工业温度采集和 HVAC 系统设计的人应该都有这种感觉选一个温度传感器不难难的是把传感器输出的微弱信号稳定、准确地变成 MCU 能读懂的数字。这次项目用的是 TI 的 ADS122U04IPWR 与 ST 的 STM32F215RE这个组合不是随手抓的而是从实际需求一步步倒推出来的。先说应用场景。工业侧和 HVAC 侧的测温点虽然都在“测温度”脾气却完全不同。厂房里可能要同时接 PT100 铂电阻测管道温度又要接热电偶测锅炉或压缩机排气温度暖通项目里还经常用 NTC 热敏电阻测风管和回水温度。如果用传统方案每种传感器配一种调理电路再各自接 ADC 或单片机自带的 ADC板子会变得很臃肿校准也麻烦。ADS122U04 四通道输入、内置可编程增益放大器支持热电偶、RTD、热敏电阻多种传感器正好把前端信号调理的工作统一掉了。硬件架构上最值得注意的一点是这颗芯片不走 SPI 或 I2C而是走 UART。刚开始我也觉得奇怪温度采集为什么要用串口后来琢磨明白了——UART 抗干扰能力强通信线可以延长到几米甚至十几米很多时候只要两根线就够了。在工业现场SPI 那种高速同步时钟线特别容易受电机启停、变频器干扰的影响UART 异步通信反而更皮实。STM32F215RE 这边Cortex-M3 内核跑到 120MHz处理 24 位 ADC 数据绰绰有余。关键是这芯片串口多USART1/2/3 和 UART4/5/6 加起来有六个留一个给 ADS122U04其他还能接触摸屏、上位机或者组网。F2 系列自带硬件 CRC 模块后续要做 Modbus RTU 或者自定义协议的校验帧直接交给硬件处理主循环占用极小。选这颗料不光是性能更多是看在工业级供货稳定、后续升级空间充足这一点上。这套系统最终实现的效果是一路 PT100、一路 K 型热电偶、两路 NTC 热敏电阻同时采集量程覆盖 -40℃ 到 250℃整机误差控制在 ±0.3℃ 以内不含传感器自身误差。下面我就把整个方案从头到尾拆开讲包括硬件设计、寄存器配置、UART 协议对接、温度换算公式和现场踩坑记录给同样在做工业采集或 HVAC 控制的朋友一份可以直接抄作业的参考。1.1 工业/HVAC 温度测量的底层需求先列一下这两类场景对测温的真实要求。工业侧比如空压机排气温度、注塑机料筒温度、烘箱风道温度特点是温度高、变化快、干扰大。这些场合常用热电偶K 型、J 型或者 PT100/PT1000 铂电阻。热电偶输出的热电势只有微伏级几十微伏的变化就可能对应 1℃ 的温度差这就要求 ADC 的分辨率和噪声性能都过硬。PT100 则是阻值随温度缓变0℃ 时 100Ω100℃ 时约 138.5Ω变化量很小如果激励电流不稳或者 ADC 自身的差分非线性不好误差会非常难看。HVAC 侧常见的测温件是风管内的 NTC 10K 热敏电阻、回水温度传感器、盘管进出口温度传感器。温度范围通常窄-10℃ 到 80℃但数量多、线缆长很多装在吊顶里或者空调机房角落维护很不方便。最大的痛点是长线传输带来的衰减和共模干扰——风机变频器一启动传感器线上感应出来的噪声可能有几百毫伏直接把真实信号淹没掉。把两类需求放到同一张需求清单上看对前端采集芯片的要求就非常清晰了要有多个输入通道要内置可编程增益放大器和基准源要能直连热电偶和 RTD同时通信接口还必须有比较强的抗干扰能力。ADS122U04 几乎就是按着这份需求清单设计的。1.2 ADS122U04IPWR 的前端采集优势ADS122U04 是 24 位 Δ-Σ ADC四通道输入支持单端和差分两种方式最特别的是带 UART 接口。芯片内部集成了 PGA增益从 1 倍到 128 倍可调微伏级的热电偶信号可以直接送进去放大不用额外搭仪表放大电路。内部还有一个低温漂基准电压源做 RTD 比例测量时直接用它做参考省掉一颗昂贵的精密基准芯片。采样率方面ADS122U04 最高能跑到 20kSPS但温度应用一般用 20SPS 到 1000SPS 就够了。低采样率下内部数字滤波器能抽得更深对 50Hz 工频干扰的抑制效果更好。芯片内部自带温度传感器这对热电偶冷端补偿非常有价值——直接读片内温度省掉一个外部 NTC 和一路额外的采样通道。值得一提的还有它的 UART 地址功能。多个 ADS122U04 可以挂在同一条 UART 总线上每个芯片设置不同的地址主控发命令时带上目标地址就能点名访问。这对多区域温度采集非常有意义比如一个制冷站里十来个温度点用两条线串成一串比传统并行接法省线缆、好维护。1.3 为什么处理器选了 STM32F215RE 而不是更低成本的芯片有朋友会问测个温度用得着 F2 吗搞个 F1 或者 C8T6 不行吗说实话如果只是单个测点低成本的片子确实够。但这次项目不是单点测温而是一台设备里同时要处理好几个功能ADS122U04 的数据解析、PID 控温算法、RS485 和上位机通信、LCD 显示、几个继电器输出。把这些功能叠起来小容量芯片的 Flash 往往会吃紧。STM32F215RE 的配置是 512KB Flash 128KB SRAM主频 120MHz。这个余量意味着我可以放心地用浮点库做温度换算公式用状态机处理串口协议还能在此基础上跑 RTOS 做任务调度。F2 系列有硬件 CRC 模块算 Modbus 的 CRC16 时几乎不占 CPU这对中大型 HVAC 控制器来说很实用。还有一个我在意的地方是引脚兼容性。F2 和 F4 系列有不少封装引脚兼容万一以后算法复杂度上来了要换更强的芯片PCB 可以基本不动。选型的时候把“未来两年的升级空间”考虑进去能省掉很多返工时间。2. 硬件设计要点从传感器到 MCU 的完整链路这块是我踩坑最多的部分。硬件设计如果马虎后面固件再怎么写也救不回来。下面按信号流向把每个环节拆开讲清楚。2.1 传感器接口怎么接PT100、热电偶、NTC 三种接法做混合采集时首先要规划好四路输入怎么分配。我这次的分配是AIN0-AIN1 接 PT100 做差分测量四线制AIN2-AIN3 接 K 型热电偶差分其中 AIN2 接热电偶正极、AIN3 接负极NTC 则通过板载分压电路接在剩下的通道上。ADS122U04 只有四路模拟输入如果同时接三类传感器需要合理规划通道必要时加模拟开关做通道扩展。PT100 建议用四线制或三线制特别是线缆比较长的时候。四线制的原理是两根线给传感器提供恒定激励电流另外两根线专门用于采样电压因为采样回路几乎没有电流线上压降不会带来误差。我用的激励电流是 500μAPT100 在 0℃ 时产生约 50mV 信号250℃ 时约 86mV配合 PGA 增益 16 倍满量程分辨率足够。注意激励电流尽量别超过 1mA否则 PT100 自身发热会产生可观的测量误差尤其是流体静止的场合自热效应会让读数持续偏高。热电偶这边关键不是放大而是冷端补偿。热电偶测的是热端和冷端之间的温差冷端温度一变读数就跟着偏。我的做法是直接把热电偶的冷端接在 ADS122U04 芯片附近的 PCB 铜箔上让冷端温度和芯片封装温度尽量一致再用片内温度传感器读出冷端温度在软件里做补偿。这个方法比自己外挂 NTC 贴到端子排上要靠谱得多因为外部 NTC 贴装位置稍有偏差冷端温度测量就不准了。NTC 的接法相对简单10K NTC 加一个 10K 精密电阻做分压激励电压从内部基准引出ADC 采集分压点电压。这里要注意分压电阻的温度系数一定要选好的25ppm 或更优否则 NTC 自身精度再高也会被分压电阻的温漂拖累。2.2 供电、基准和地的设计细节ADS122U04 的供电范围是 2.3V 到 5.5V我选了 3.3V 供电和 STM32F215RE 共用电源域。但要注意模拟供电和数字供电必须做隔离处理——至少用磁珠或 10Ω 电阻隔开然后分别加 10μF 和 0.1μF 去耦电容。ADC 的内部基准虽然温漂低但对外部噪声仍然敏感基准引脚附近要铺铜并远离开关电源和继电器驱动区域。地线设计的经验是“单点汇地”。传感器信号地、ADC 模拟地、STM32 数字地最终在板子的电源入口处汇合到一个点避免数字回流电流流过模拟地平面。特别是同时驱动继电器或电磁阀的项目里如果地线到处乱走ADC 采集值的最后几位会一直跳动——这不是算法问题是地弹噪声。还有一个很容易忽略的地方UART 的 TX/RX 线。ADS122U04 的逻辑电平是 3.3V可以直接连 STM32F215RE 的 USART 引脚。但如果板子和主控板之间距离较长最好加一级 RS485 转接利用差分信号传输。UART 本身是单端信号超过 30cm 的普通导线就可能受到变频器或马达启停的干扰出现乱码或 CRC 错误。实测下来500mm 以内的板内连线问题不大超过这个长度就必须考虑隔离或差分方案。2.3 原理图与 PCB 布局的关键原则原理图设计时我遵循了几个原则。供电进线处先放一个 LC 滤波器电感选 1μH 到 10μH配合 10μF 电容能有效滤掉开关电源的开关纹波。ADS122U04 的 DVDD 引脚单独接 10Ω 隔离电阻模拟电源 AVDD 直接来自滤波后的电源。每个模拟输入引脚前都加了 RC 低通滤波器电阻 1kΩ、电容 0.1μF截止频率约 1.6kHz。这个滤波有两个作用一是滤掉传感器长线上感应的高频噪声二是为 ADC 内部的采样开关提供一个稳定的电荷来源。要注意 RC 的电阻不能太大否则会与传感器源阻抗构成分压带来增益误差。1kΩ 是我实测下来比较稳妥的取值。PCB 布局上ADS122U04 放在整块板子的中央偏传感器接口侧尽量缩短高阻抗信号线的走线长度。模拟信号和数字信号分区走不要平行。电源和地尽量用整块铺铜不要有过细的地线——地线太细回流阻抗大噪声就大。晶振远离模拟输入引脚继电器、开关电源等高干扰器件放在板边。3. 固件实测UART 协议解析与 STM32F215RE 驱动实现硬件只是骨架真正让系统动起来的是固件。这一节把从寄存器配置、UART 命令交互到最终拿到 24 位二进制补码并换算成温度的完整流程讲一遍。3.1 ADS122U04 的寄存器配置与转换流程ADS122U04 的寄存器主要有四个配置寄存器 0Config0、配置寄存器 1Config1、配置寄存器 2Config2、配置寄存器 3Config3。Config0 控制输入多路选择、PGA 增益和转换模式。比如选择哪两个引脚作为差分输入对、增益设成多少倍、是单次转换还是连续转换都在这里面。我在 PT100 通道用 16 倍增益热电偶通道用 128 倍增益。优先选连续转换模式这样主控随时可以读最新结果逻辑最简单。Config1 用于数据速率设置。温度应用我配的是 20SPS这个速率下对 50Hz 工频干扰的抑制效果比较好数据也足够平滑。如果系统要求更快的响应速度可以提到 640SPS 或者更高但高采样率下噪声会明显增大需要靠外部滤波补回来。Config2 是基准源选择和内部温度传感器使能。我直接选择内部基准热电偶冷端补偿需要读取片内温度所以温度传感器必须打开。Config3 是 UART 接口的地址和 CRC 设置。单芯片用默认地址就行多芯片挂在同一条总线时才需要单独分配地址。CRC 建议调试阶段关闭量产阶段再开启。写寄存器的 UART 命令格式很统一基本都是“命令字节 数据字节”。例如写配置寄存器时发 0x42、0x43、0x44、0x45 分别对应写 Config0 到 Config3后面跟寄存器数据读寄存器则发 0x22、0x23、0x24、0x25。启动转换发 0x08读转换结果发 0x12会返回三个字节。整体协议不复杂但每条命令的时序必须严格按数据手册来尤其是读数据之前要确保转换已经完成。下面是我在 STM32 上初始化的关键代码骨架// 初始化 USART1波特率 96008N1 // ADS122U04 的 UART 波特率不是随便设的实测 9600 很稳定 // 温度应用不需要高波特率9600 足够 void ADS122U04_Init(void) { // 1. 写 Config0选择输入通道、PGA 增益、连续转换模式 // 寄存器位编码以手头数据手册为准不同批次可能有修正 uint8_t c0 0x00; // 连续转换模式 AIN0-AIN1 差分 PGA16 // 具体位值建议边看手册边填我这里只给框架和注释 ads_write_reg(0x42, c0); // 2. 写 Config1数据速率设为 20SPS ads_write_reg(0x43, 0x05); // 3. 写 Config2使能内部基准和片内温度传感器 ads_write_reg(0x44, 0x01); // 4. 写 Config3设置 UART 地址为 1关闭 CRC调试阶段 ads_write_reg(0x45, 0x01); // 5. 启动连续转换 ads_send_cmd(0x08); }代码里我只给了框架具体位值没有硬编码原因很简单有些数据手册版本对位域的定义做过调整直接抄网上的代码反而容易出错。正确做法是把寄存器位的定义表打印出来对着自己的配置需求逐位填然后回读寄存器验证一遍。这个回读验证的动作能帮你省下一晚上的调试时间。3.2 STM32F215RE 端 UART 驱动与数据校验STM32 侧的 USART 配置比较常规但有几个细节直接影响稳定性。首先是波特率。我最初按数据手册试过 19200发现某些板子偶尔出现帧错误后来降到 9600 就非常稳定了。温度采集的实时性要求没那么苛刻9600 波特率下读三个字节大约 3ms完全够用。如果项目需要更高的采样率可以试 38400但布线质量和终端电阻都要跟上。其次是接收超时处理。ADS122U04 每发一帧数据是三个字节24 位转换结果接收时必须一次性收完。我推荐用 STM32 的 IDLE 中断空闲中断来判断一帧结束——总线上空闲超过一个字节时间就认为一帧完成这样比固定字节数超时更灵活。当然如果固件里用的是 DMA 加固定长度接收也可以但要特别注意和发送命令的节奏配合避免把命令的响应字节和下一帧数据粘在一起。数据校验方面ADS122U04 支持 CRC但开启后每帧会多一个字节处理复杂度上升。调试阶段我强烈建议先关闭 CRC把通信链路调通、确认数据稳定之后再开 CRC 做量产保护。判断数据是否有效除了看 CRC还有一个更简单的方法是看符号扩展位24 位数据在 32 位变量里存储时如果电压超量程最高位会异常软件可以根据这个特征快速过滤坏数据。读回来的是 24 位二进制补码高字节在前、低字节在后。要转成有符号数先拼成一个 uint32_t再判断最高位第 23 位是否为 1如果为 1 则做符号扩展。参考代码int32_t ads_read_result(void) { uint8_t buf[3]; uint32_t raw 0; ads_send_cmd(0x12); // 发送 RDATA 命令 ads_uart_receive(buf, 3); // 接收 3 字节 raw ((uint32_t)buf[0] 16) | ((uint32_t)buf[1] 8) | ((uint32_t)buf[2]); // 24 位有符号扩展 if (raw 0x800000) raw | 0xFF000000; return (int32_t)raw; }如果你发现读回来的数据偶尔是 0xFFFFFF 那种满量程极端值先别急着怀疑传感器很大概率是通信错位或者命令时序没对齐。这是最常见的坑后面我会专门讲排查方法。4. 实测数据从原始码到真实温度的换算与调优拿到 ADC 原始值之后真正的工程问题才刚刚开始。这一节讲温度换算公式、实测过程中的校准操作以及几个影响精度的典型坑。4.1 三种传感器的温度换算公式先说 PT100。PT100 的电阻-温度关系可以用 Callendar-Van Dusen 方程描述在 0℃ 以上Rt R0 × (1 A×t B×t²)其中 R0 100ΩA 3.9083×10⁻³B -5.775×10⁻⁷。工程上如果不想在线做二次方程求解最稳妥的办法是建一张 0.1℃ 步进的查找表再用线性插值求温度。STM32F215RE 有 128KB SRAM放一张几百项的表格完全没压力。实际用 ADC 读数算电阻时要注意比例测量的特性。如果激励电流源和基准电压都来自同一个内部源数字输出 code 满足关系code (gain × Vrtd) / Vref × 2^23。代入 Vrtd I_激励 × R_pt100Vref I_激励 × R_ref整理后得到R_pt100 (code / 2^23) × (R_ref / gain)这里的 R_ref 是激励电流采样电阻我用的是精密 1kΩ精度 0.1%。注意这个公式里的 gain 是 PGA 的实际增益倍数要和配置寄存器里写的值一致。热电偶的换算相对复杂先由 ADC 原始码算出热电势然后根据热电偶分度表查表得到“热端相对冷端的温度”再加上冷端绝对温度才是真实温度。冷端温度用 ADS122U04 内置温度传感器读数查表或线性拟合得到 Tz最终 T_real T_tc Tz。K 型热电偶在 0-200℃ 范围灵敏度约为 41μV/℃所以高精度测量对 ADC 的噪声性能要求很高。NTC 的换算用 Steinhart-Hart 方程1/T A B×ln(R) C×(ln(R))³其中 A、B、C 是热敏电阻厂家提供的系数。以 25℃ 时阻值 10kΩ 的常用 NTC 为例典型值是 A1.129241e-3B2.341077e-4C8.767411e-8。直接用浮点算即可STM32F215RE 的 FPU 处理这个计算毫无压力。我建议把所有换算法则封装成独立函数接口统一为“传感器通道号加原始码”返回 float 温度值。以后增加新传感器类型或新通道只需要加一个分支函数不影响主流程。4.2 两点校准与软件滤波实测校准是温度采集精度最容易忽视的一环。出厂校准我做的是“冰水浴加沸水浴”两点校准。把 PT100 探头分别放入 0℃ 冰水混合物和 100℃ 沸水中注意当地海拔对应的沸点要修正比如高原地区沸水实际不到 100℃记录 ADC 读数然后做线性映射。实际操作中沸水浴那点和 NTC 的高温段会有一定非线性所以我额外加了一个 60℃ 的中间点做二次插值效果很好。热电偶的校准必须包含冷端补偿校准。我的做法是用一个精密温度源贴在 ADS122U04 芯片表面记录内置温度传感器读数。如果发现它和真实温度偏差超过 ±0.5℃就对内置温度传感器的偏移和增益做两点修正。工业项目里这一步不做热电偶通道在冬夏温差大的现场读数会漂。软件滤波我测试过三种方案滑动平均、中值滤波、一阶低通。最终采用的是“中值 滑动平均”两级处理——先取 5 个点做中值滤波去掉偶发的毛刺再做一次 4 点滑动平均抑制周期性噪声。实测下来在电机频繁启停的车间里滤波前温度跳变 ±0.8℃滤波后稳定在 ±0.15℃ 以内效果非常明显。滤波代码可以简化成下面这样#define FILTER_N 5 float temp_filter(float new_val, float *buf, uint8_t *idx) { buf[*idx] new_val; *idx (*idx 1) % FILTER_N; // 取排序后中间三个值的平均 float sorted[FILTER_N]; memcpy(sorted, buf, sizeof(sorted)); // 排序部分省略工程上可以直接用 qsort float sum 0; for (uint8_t i 1; i FILTER_N - 1; i) sum sorted[i]; return sum / (FILTER_N - 2); }滤波的代价是响应变慢。如果你做的是 PID 控温滤波深度和响应速度之间要做取舍。控温项目里我一般只用中值滤波或者一阶低通滑动平均窗口太大会让控制环路的相位滞后变大温度容易振荡。4.3 干扰与误差排查几个现场案例分析案例一某天热电偶通道数据突然跳到满量程。检查发现热电偶延长线和动力电缆走在同一个线槽里大功率接触器动作时感应出尖峰。解决方案热电偶改用屏蔽双绞线屏蔽层单端接地把采样率降到 20SPS问题消失。案例二PT100 通道读数比实际偏低 0.2℃。排查了激励电流、基准电阻、PGA 增益都没问题。最后发现传感器延长线过长约 15 米线阻接近 3Ω在 500μA 激励下产生 1.5mV 压降换算出来相当于好几度的偏差。当时为了省一根线用了三线制线阻补偿又没做好最终改回四线制解决。案例三UART 偶发乱码。最初以为是波特率或干扰问题反复测试后发现是 STM32 的 UART 引脚和 ADS122U04 的 TX/RX 直接连接时引脚悬空期间电平不稳导致误码。解决办法是给 TX/RX 线各加一个 10kΩ 上拉电阻MCU 侧开启引脚复用功能内部上拉问题消失。5. 工程化落地中的常见问题与排查技巧5.1 UART 通信异常速查通信问题是我在这类项目中遇到最多的。整理一个排查速查表现象读不到数据串口接收超时。检查顺序ADS122U04 供电是否正常 → 复位引脚是否拉高 → UART TX/RX 是否接反TX 接 RX、RX 接 TX→ 波特率是否匹配 → 是否在连续转换模式下忘了发 RDATA 命令。现象数据偶发乱码。优先排查线路是否过长、是否靠近电机驱动或继电器线缆、是否加了上拉电阻。现象数据有规律地每隔几个点出现一次跳变。大概率是读取节奏和转换过程不同步读到了半更新的数据。解决读数据前查询转换完成状态或者采用单次转换模式每次转换完成后立刻读取。这张表我打印出来贴在工位上现场调试时对着查效率很高。5.2 测量精度上不去的排查方向如果精度测试始终达不到预期建议按这个顺序排查第一步查传感器本体精度别一上来就怀疑 ADC。很多时候误差来自探头本身比如劣质 PT100 的精度可能就有 ±0.3℃。第二步查激励电流和基准电阻用万用表量实测值替换理论值。第三步查 PGA 增益误差和失调。ADS122U04 在低增益时失调性能好高增益时失调会明显一些可以通过短接输入端测零码然后在软件里减掉失调。第四步才是软件滤波和公式误差。还有一个细节如果所有通道的测量值都整体偏高或偏低 0.5℃ 左右往往是基准源电压或激励电流的精度问题而不是 ADC 本身的问题。这种情况做一次全量程两点校准能解决大部分偏差。5.3 只有现场才会发现的细节经验最后分享几个只有实际跑过才会注意到的细节。第一ADS122U04 内部温度传感器的读数在 85℃ 以上可能会有漂移迹象但这通常不影响冷端补偿——冷端温度一般不会到那么高。如果现场环境温度确实很高建议在软件里对温度传感器读数做查表修正或者改用外部贴装 NTC 做冷端补偿。第二连续转换模式下ADS122U04 的数据就绪后会自动保持直到下一次 RDATA 命令。如果你用中断方式读数据不要在中断里把“发命令 接收”一气呵成最好在中断里只置标志位在主线循环中完成命令发送和接收。这样能避免在中断里耗时过长把其他任务饿死。第三STM32F215RE 的 DMA 非常适合这套方案把 USART 的 RX 配置成 DMA 循环接收每收到 3 字节就产生传输完成中断主循环解析数据。这样 CPU 占用几乎可以忽略并且能确保每帧不丢字节。这个用法我在多个项目里验证过强烈推荐。第四关于温漂。ADC 的输入偏置电流会随温度变化如果传感器源阻抗很大比如 NTC 在低温段阻抗能到几百 kΩ偏置电流在源阻抗上产生的电压会让读数漂移。解决办法是降低源阻抗——NTC 分压电阻别选太大或者用电压跟随器驱动 ADC 输入端。工程上我一般控制在 10kΩ 以下。6. 后续扩展与最后一组建议方案跑通之后有一些方向可以继续扩展。如果想把采集点继续加密可以挂多片 ADS122U04 在同一 UART 总线上通过 Config3 配置不同地址主控逐个点名读取。多片并联时注意UART 是点对点协议同一条总线最好用 RS485 转差分方式否则距离和节点数都受限。工程上比较实际的架构是 4 片做成一个小采集单元再用 RS485 组网而不是把所有芯片直接挂一条总线上。通信协议层面建议把采集数据打包成自定义帧结构加上 CRC16 校验。用 STM32 的硬件 CRC 模块计算 Modbus CRC速度快且省代码。量产固件里建议开启 ADS122U04 自带的 CRC但调试固件关闭两者不要混在同一个宏控制里——这个细节能避免很多“量产出问题、调试没问题”的怪现象。软件层面如果把系统升级成带 RTOS 的架构温度采集任务可以设为最高优先级但一定要给 UART 通信加上超时和重试机制防止某次干扰导致读数据命令卡死。我在实际项目里给每个读取循环加了 5 次重试和 100ms 总超时超过就上报通信异常这样即使现场电磁环境再恶劣系统也不会死等某个外设。最后说一点体会工业温度采集和 HVAC 设备的调试最大的成本其实不在芯片或算法而在现场环境。同一套硬件在不同现场的表现可能完全不同——有的车间有大型变频器有的机房有高频开关电源这些都会影响最终数据质量。所以硬件设计时预留好滤波位置软件里预留校准参数这套方案才能在各种现场长期稳定运行。我也算是在多次现场“救火”之后才真正明白把余量留足比把指标算到极限更实用。如果你也在做类似项目建议第一步别急着画板子先把传感器、ADS122U04 和最小系统板按本文的接线方式搭起来用 9600 波特率跑通一帧数据再决定要不要为了性能做优化。我在多个项目里验证下来这个“先跑通、再优化”的节奏比一上来就精细设计要高效得多。