资讯详情

资讯详情

ADS122U04+STM32F334的工业温度采集方案:从PT100到UART总线

做工业温度采集的老哥们应该都有这个体验控制器装在配电柜里传感器散在现场各个角落模拟信号线一拉就是三五米、十几米PT100 的两线制引线电阻、变频器共模干扰、风机启动时的电源跌落每一样都够让温度读数飘上零点几度甚至好几度。我在给一套 HVAC 机组控制器做多点温度采集时最后采用了 TI 的 ADS122U04IPWR 这颗 24 位 ΔΣ ADC搭配 STM32F334R8 来做数据解析和上层逻辑。这套组合的思路是把 ADC 尽量放到传感器跟前用 UART 数字总线把数据送回主控而不是把微弱的模拟信号千里迢迢拉回来。ADS122U04 的好处在于它把 4 通道多路复用、可编程增益放大器、两组匹配的激励电流源、内部基准、开路检测全做进了一颗 TSSOP-16 里对外只留 UART 接口STM32F334R8 作为主控负责跑 UART 协议、温度线性化和后续的 PID 控制。整篇文章我会从传感器前端选型、硬件拓扑、UART 协议、寄存器配置、STM32 驱动代码到冷端补偿、校准和实测数据一条线完整写下来。后面部分会包含可以直接抄走的 C 代码和我在实际调板过程中踩过的坑适合正在做工业采集、楼宇自控、风机盘管、换热站二次侧温度监测的工程师参考。1. 为什么把 24 位 ADC 放到传感器跟前而不是拉长模拟线1.1 模拟长线传输的误差账算下来真的不小先算一笔账。PT100 在 0°C 附近的变化率大约是 0.385Ω/°C如果用 1mA 激励电流温度每变化 1°C 只在线上产生 0.385mV 的电压变化。而普通屏蔽双绞线在工业现场的电容耦合噪声、电机启停时的共模浪涌轻轻松松就能让信号线上叠加毫伏级的干扰。更致命的是两线制接法下导线电阻直接串联进传感器回路1m 长的 0.5mm² 铜线来回阻抗大概在 0.15Ω 左右十米线就是 1.5Ω换算成温度误差接近 4°C。就算用四线制把引线误差消掉ADC 若放在几十米外的控制柜里模拟信号在传输过程中被衰减和污染的问题依然无法根治。把 24 位 ΔΣ ADC 放到传感器端子附近让模拟路径短到厘米级再用数字信号往回传这是把精度问题转换成通信问题的思路。ADS122U04 这颗芯片天生就是干这个的它把差分输入、PGA、激励电流、基准都集成在一起只通过 UART 与主控通信免去了 SPI 的四线连接也天然适合用光耦做电气隔离。1.2 两颗芯片的分工其实很清楚STM32F334R8 属于 F3 家族的Cortex-M4F 内核主频 72MHz64KB Flash、16KB SRAM。它在工业控温场景里的定位是控制为主、数据采集为辅片上的 HRTIM 高分辨率定时器、模拟比较器和 DAC 很适合做阀门、风机、加热器的闭环调节。但它的片上 ADC 只有 12 位用来读 PT100 的温度分辨率远远不够——12 位在 0~5V 量程下每个 LSB 就有 1.2mV对应 PT100 温度误差超过 3°C完全是不可用的水平。所以我让 F334R8 老老实实做协议解析、线性化、滤波、PID把精密的模拟前端全部交给 ADS122U04。ADS122U04 的 24 位输出配合 PGA 和比例测量理论上可以分辨到 0.001°C 量级实际工程中做到 0.01~0.05°C 的稳定性是完全可以期待的。系统架构就一句话传感器附近放高精度 ADC主控附近放控制逻辑中间用 UART 连接。1.3 24 位到底能换算成多少温度分辨率这里有个很直观的计算。假设采用比例测量基准电阻 R_ref 3.24kΩPGA 增益 8激励电流 500µA。ADS122U04 的满量程码值是 2^23 8388608对应输入电压 VREF/PGA (500µA × 3240Ω)/8 1.62V/8 0.2025V。那么每个 LSB 对应的输入电压是0.2025V / 8388608 ≈ 24.2nV再看电阻侧500µA 激励下24.2nV 对应 24.2nV / 500µA ≈ 48.4µΩ。PT100 的灵敏度按 0.385Ω/°C 算一个 LSB 就等于 48.4µΩ / 385mΩ ≈ 0.000126°C。这个分辨率远超热电阻本身的重复性所以真正的瓶颈不是 ADC 位数而是噪声、基准电阻精度和传感器自身的不确定度。这个计算也解释了为什么工业仪表里24 位并不是噱头——配合合理的 PGA 和基准电压量化的台阶确实可以小到对最终精度没有实质影响。2. 前级电路选择PT100、PT1000、NTC、热电偶各自怎么接2.1 比例测量用一个基准电阻搞定增益漂移ADS122U04 内部有一个 2.048V 的基准不接外部基准也能工作。但在 RTD 测量里我强烈建议使用**比例测量ratiometric**方案让同一股激励电流既流过热电阻又流过外部精密基准电阻基准电阻两端的电压直接作为 ADC 的 VREF。这样 ADC 输出码就完全由两个电阻的比值决定与激励电流的绝对值、基准电压的漂移统统无关。接法是这样的IDAC 激励电流从 IOUT 引脚流出经过 RTD 流入 GND 回路中间串入精密基准电阻 R_refR_ref 两端接到 ADC 的 REFP0/REFN0。主通道 AIN0/AIN1 差分测量 RTD 两端的电压。最后换算公式非常干净R_RTD code × R_ref / (FS × PGA)其中 FS 2^23PGA 是当前增益。换句话说最终温度精度只取决于 R_ref 的精度和稳定性。所以我选基准电阻时从不用普通贴片电阻而是用 0.05% 甚至 0.02% 精度、低 TCR温漂系数 ≤ 25ppm的精密电阻。这个电阻的温度系数会直接转变成测量误差25ppm 的 R_ref 在环境温度变化 20°C 时引入 0.05% 左右的增益误差对应 PT100 在 100°C 附近大约是 0.05°C 误差可以接受但前提是你不能把 R_ref 放在发热器件旁边。2.2 激励电流怎么选分辨率、自热和满量程三者折中ADS122U04 集成了两路匹配的 IDAC 电流源可选档位是 10/50/100/250/500/1000/1500µA。电流选大了传感器自热严重且基准电阻发热漂移电流选小了信号电压太低发挥不出 PGA 的作用。我实际使用的组合如下传感器激励电流PGA 增益R_ref覆盖量程PT100工业500µA83.24kΩ约 -50°C ~ 500°CPT1000HVAC250µA46.6kΩ约 -40°C ~ 150°CNTC 10k100µA4不用比例测量-40°C ~ 105°CK 型热电偶不用 IDAC64/128内部 2.048V 基准-200°C ~ 1370°C自热误差的公式是 P I² × R。500µA 流过 100Ω 的 PT100自热功率只有 25µW几乎可以忽略。但如果用 1mA 激励功率变成 100µW在静止空气中可能让探头升高 0.1°C 以上这就不可忽视了。经验原则在信号幅度够用的情况下激励电流尽量往小选。2.3 两线、三线、四线制什么时候用哪种这是 RTD 测量里最容易犯错的地方。两线制最省线但两个引线电阻直接叠加在传感器电阻上0.5Ω 引线就产生 1.3°C 左右的误差且误差随环境温度变化无法校准很干净。三线制用两根同规格导线对称地承载激励电流配合 ADC 内部的差动测量可以在很大程度上抵消引线电阻是工业现场性价比最高的方案。四线制则让激励电流走专用力线测量回路线完全没有电流引线电阻的影响理论上为零适合实验室和高端计量。对我这套系统来说工业侧的 PT100 我用四线制因为 BAS 系统的水管温度传感器电缆经常要走十几米HVAC 侧的风管/回风温度我用 PT1000 两线制因为传感器本体就在控制器附近 2~3 米内两线误差低于 0.1°C省一路线的安装成本更划算。设计接口时四个通道全部做成同一个端子排兼容两/三/四线软件里通过寄存器配置切换通道这个灵活性是 4 路 MUX 带来的直接好处。2.4 输入滤波和布局面对变频器和压缩机要做的功课HVAC 现场最烦的干扰源有两个变频器输出侧的共模噪声以及压缩机启停带来的电源跌落。我的做法是在每个差分输入对之间并联一个 1nF~10nF 的 C0G 电容在输入端串联 47Ω~100Ω 的电阻构成一阶低通滤波。这里要注意ΔΣ ADC 是开关电容采样串联电阻太大会导致内部采样电容在建立时间内充不满从而引入增益误差。所以串联电阻不要超过 1kΩ差分电容宁可变小也别放太大我实测 47Ω 1nF 的组合在 20SPS 下对精度没有可感知的影响。布线方面记住三条R_ref 和 REFP0/REFN0 走线尽量短且远离开关节点激励电流的走线不要和传感器信号线并排长距离整板模拟地和数字地在 ADC 下方单点汇合避免形成地环流。传感器的屏蔽层单端接地接在传感器侧不要两端都接否则屏蔽层上的共模电流反而会变成干扰。3. ADS122U04 的 UART 协议和寄存器配置照着调就行3.1 UART 帧格式8-E-1一个字都别配错ADS122U04 物理层就是一个 UART 从机主控发命令ADC 回数据。它的帧格式是固定的1 个起始位 8 个数据位 1 个偶校验位 1 个停止位也就是通常说的 8-E-1。这意味着 STM32 的 USART 配置必须是 9 位字长8 数据位 1 校验位校验方式选偶校验。波特率我用的 115200这颗芯片支持到更高速度但 HVAC 场景数据量小115200 完全够用而且在走线较长、隔离光耦延迟较大时更稳妥。初始化代码我用的是标准 HAL 库风格void MX_USART1_UART_Init(void) { huart1.Instance USART1; huart1.Init.BaudRate 115200; huart1.Init.WordLength USART_WORDLENGTH_9B; /* 8 数据位 1 校验位 */ huart1.Init.StopBits USART_STOPBITS_1; huart1.Init.Parity USART_PARITY_EVEN; /* 偶校验 */ huart1.Init.Mode USART_MODE_TX_RX; huart1.Init.HwFlowCtl USART_HWFLOWCONTROL_NONE; huart1.Init.OverSampling USART_OVERSAMPLING_16; HAL_UART_Init(huart1); }注意如果你把校验位当普通数据位来处理或者配成 8-N-1命令字和数据会整体错位ADC 解析出来全是乱码而且没有任何报错——因为它只是在每个字节内部做偶校验检查。这是刚开始踩得最多的坑没有之一。3.2 命令集和执行顺序ADS122U04 的命令体系沿用了 ADS1220 系列的命令风格全部由主控主动发起常用的有这些命令作用典型帧结构RESET复位芯片寄存器恢复默认值单命令字RREG / WREG读 / 写配置寄存器命令字 寄存器地址 数据字节START启动一次转换单次模式单命令字RDATA读取一次转换结果命令字 3 个数据字节RDATAC / SDATAC进入 / 退出连续读数模式单命令字RRDY查询转换是否完成命令字 状态字节单片机上电后我习惯走的初始化序列是先发 RESET等待大约 2ms然后连续写 Reg0~Reg6 的配置发 START接着轮询 RRDY准备好之后 RDATA 取 3 个字节MSB 在前24 位有符号补码。每次启动转换前最好重新 START因为寄存器一旦改动内部数字滤波器要重新建立前几次转换结果是无效的。如果你使用 RDATAC 连续模式那么芯片会每完成一次转换就向主控丢一帧数据主控侧省去了轮询命令但在裸机轮询代码里容易出现缓存竞争所以我的项目里坚持用单次启动 轮询 RRDY。3.3 七个寄存器我实际用的配置值ADS122U04 的配置寄存器和 ADS1220 系列一脉相承0x00 到 0x06 共七个。我不建议直接照抄一个整值而是理解每个位域后按自己的传感器来填。下面是我做 PT100 四线制通道时的实际配置寄存器配置项我用的值原因Reg0MUX/PGAAIN0/AIN1 差分增益 8500µA 激励下RTD 满量程电压约 0.195V8 倍增益后接近 VREF 量程Reg1数据率/滤波器20SPSsinc320SPS 的 sinc 滤波器对 50Hz 及其整数倍谐波有天然陷波点且噪声最低Reg2基准选择外部基准 REFP0/REFN0配合 R_ref 做比例测量Reg3IDAC 路由IDAC1 输出到 RTD 力线端保持激励电流路径短、对称Reg4IDAC 电流/开路检测500µA开路检测电流关闭500µA 对 PT100 自热最小开路检测后面单独开启Reg6内部温度传感器用于热电偶通道时开启RTD 通道不依赖它写寄存器时注意WREG 命令的地址和数据字节必须严格按顺序发送中间不要插其他命令。我的封装函数是这样的void ads_wreg(uint8_t reg, uint8_t val) { uint8_t cmd[3]; cmd[0] ADS_CMD_WREG; /* 写命令字宏定义取自数据手册 */ cmd[1] reg; cmd[2] val; HAL_UART_Transmit(huart1, cmd, sizeof(cmd), 50); }读寄存器同理只不过最后一个字节改为等待接收。功能上我建议加一个ads_check_config()上电时把七个数读回来和期望值比对一遍能快速发现 UART 通信偶发丢字节导致配置错位的问题。这个调试习惯帮我节省了大量排查时间。3.4 单次转换 vs 连续模式的取舍如果你做的是多通道轮询比如 HVAC 控制器要同时看供水温度、回水温度、风管温度和室外温度我建议每个通道在启动前先更新 Reg0 的 MUX 位然后跑完整的START → 等 RRDY → RDATA流程。这样每次读到的都是明确对应某一路通道的数据代码简单、逻辑清晰。等 RRDY 的时候一定要加超时保护。在 20SPS 下一次转换周期是 50ms轮询超时设为 500ms 已经非常宽裕。如果长时间 RRDY 一直无响应多半是 UART 帧错位了这时候应该主动发一个 RESET 重新同步而不是傻等。4. STM32F334R8 侧驱动从字节流到摄氏度4.1 读数据的底层函数注意符号扩展RDATA 返回的是一帧 3 字节有符号数最高位是符号位。接收端把三个字节拼成一个 32 位 int必须做符号扩展否则负温度会变成一个巨大的正数。下面这段是我项目里的标准写法int32_t ads_read_data(void) { uint8_t b[3]; uint32_t raw; uint8_t cmd ADS_CMD_RDATA; HAL_UART_Transmit(huart1, cmd, 1, 50); HAL_UART_Receive(huart1, b, 3, 50); raw ((uint32_t)b[0] 16) | ((uint32_t)b[1] 8) | b[2]; if (raw 0x800000u) { raw | 0xFF000000u; /* 24 位符号扩展为 32 位 */ } return (int32_t)raw; }多通道轮询的完整调用流程是ads_wreg(0x00, mux_gain)→ 发 START → 轮询 RRDY →ads_read_data()→ 把原始码传给温度换算函数。如果数据率改成更高档比如 1000SPSRRDY 的等待时间会短很多但有效分辨率会明显下降所以我默认固定 20SPS只有调试时才临时调高。4.2 把原始码换成电阻值比例测量的换算公式前面已经推导过代码实现非常短float ads_code_to_resistance(int32_t code, float r_ref, float pga) { const float fs 8388608.0f; /* 2^23 */ return r_ref * (float)code / (fs * pga); }我建议把 r_ref 和 pga 做成通道数组每个通道有自己的校准系数这样后续校准时不用改算法只改表项。校准出来的增益修正系数也放在同一张表里数据结构如下typedef struct { float r_ref; /* 基准电阻标称值 */ float pga; /* 通道增益 */ float k_gain; /* 校准增益修正初始 1.0 */ float b_off; /* 校准零偏初始 0.0 */ } channel_cal_t;4.3 PT100/PT1000 线性化CVD 方程的正解热电阻本身是非线性的0°C 附近是 0.385Ω/°C到 200°C 就变成 0.380Ω/°C到高温段偏离更明显。工业上普遍用 IEC 60751 的 Callendar-Van DusenCVD方程来描述R(t) R0 × [1 A×t B×t² C×(t-100)×t³]其中 t ≥ 0 时 C 0A 3.9083×10⁻³B -5.775×10⁻⁷C -4.183×10⁻¹²仅 t 0 时使用。反过来由电阻求温度时t ≥ 0 范围内这是个二次方程直接用求根公式float res_to_temp_pt(float R, float R0) { float A 3.9083e-3f; float B -5.775e-7f; float r R / R0; float c 1.0f - r; if (r 1.0f) { /* t 0 时 C0解二次方程B t² A t (1-r) 0 */ float disc A*A - 4.0f*B*c; return (-A sqrtf(disc)) / (2.0f*B); } else { /* t 0 时 C 项不可忽略用牛顿迭代收敛 */ float t -20.0f; for (int i 0; i 8; i) { float rt R0 * (1.0f A*t B*t*t C*(t-100.0f)*t*t*t); float dr R0 * (A 2.0f*B*t 4.0f*C*t*t*t - 300.0f*C*t*t); t - (rt - R) / dr; } return t; } }8 次迭代在 -50°C 以下精度已经优于 0.001°C对 72MHz 的 Cortex-M4F 来说耗时可以忽略。PT1000 就是把 R0 换成 1000Ω其他系数完全相同所以一个函数通吃。4.4 HVAC 里的快速做法1°C 分度表插值如果目标平台资源紧张或者你懒得调浮点库用 IEC 60751 的 1°C 分度表做线性插值也完全够用。把 -40°C 到 150°C 的 191 个电阻值做成 uint16 表格查找时二分法定位区间然后线性插值。STM32F334R8 的 Flash 足够放几张这样的表CPU 开销比浮点开方小得多。不过我的实际经验是用 CVD 方程直接算反而更省心。因为分度表只能覆盖标定范围一旦你要扩量程或者换传感器类型得重新生成表而 CVD 方程只需要改 R0 一个参数。工业上做产品少一个需要维护的表格少一个隐患。5. 热电偶的冷端补偿这块最容易测出离谱温度5.1 热电势本身就是温差函数不是绝对温度热电偶的输出电压正比于热端和冷端之间的温差。也就是说如果你直接把热电偶的毫伏信号接到 ADC算出来的温度实际上是热端相对冷端的温差电热势而不是实际温度。要得到真实温度必须先测出冷端即热电偶线连接到 PCB 端子处的温度再把冷端对应的热电势加到测量值上最后反算温度。K 型热电偶的灵敏度大约是 41µV/°C。这个值意味着冷端补偿温度偏差 1°C最终温度读数就会偏差约 1°C完全没有任何衰减。所以冷端补偿的精度直接决定了整个热电偶通道的精度上限。5.2 冷端传感器放错位置的几种死法ADS122U04 内置了温度传感器可以直接读芯片温度来做冷端补偿。但这颗芯片工作的时候自身有功耗结温通常比环境温度高 2~5°C而且它离外部接线端子还有不短的距离中间隔了铜箔和空气。把这颗内部温度当成冷端温度测出来的结果必然整体偏离好几度而且偏差还不是常数。正确做法是在接线端子旁边的铜箔上放一颗 PT1000 或 NTC与热电偶的冷端紧贴ADC 用独立通道去量它。PCB Layout 上要让冷端传感器和接线端子处于同一个等温区避开大电流走线和发热元件。我用的是 0603 封装的 PT1000放在端子排正下方正反面铺铜连接实测冷端温度误差可以控制在 ±0.3°C 以内。5.3 负温度怎么办给模拟前端一个负电源K 型热电偶在 0°C 以下输出负的毫伏电压而 ADS122U04 的 AVSS 如果直接接地负压信号会被钳在 0V 附近完全没法测。解决方案有两个一是把 AVSS 接成 -2.5V 左右的负电源让输入共模范围覆盖负信号二是给热电偶回路人为加一个正的偏置电压把信号抬升到 0V 以上再测量。我在板子上用一颗电荷泵负压芯片比如 TPS60403产生 -2.5V 给 AVSS同时 AVDD 用 3.3V 低噪声 LDO。这样 ADC 的输入差分范围达到 ±(AVDD-AVSS) ±5.8V远超 K 型热电偶的任何量程需求。要注意的是负压电源的纹波必须干净建议负压输出端并一个 10µF 钽电容和 0.1µF 陶瓷电容再串一个磁珠到 AVSS。5.4 开路检测别让断线变成环境温度热电偶线在工业现场容易被拉扯断裂断线之后 ADC 输入悬空读数会缓慢漂到某个随机值如果上位机不识别系统会按一个假温度去控制设备这是很危险的。ADS122U04 内部有开路检测电流源开启后会在输入端注入微小电流一旦传感器断开输入电压会被顶到某个固定电平很容易识别。我的经验是系统启动时先做一次开路自检读取各通道原始码如果码值接近正满量程或负满量程就判定为断线产生报警并且不参与控制。运行过程中再配合硬件上的下拉/上拉电阻比如 AIN 经 10MΩ 接到 AVDDAIN- 经 10MΩ 接到 AVSS让开路状态有一个确定的电压区间这样软件判断更可靠不容易在断线与正常低温之间误判。6. 校准、实测与现场踩坑后的几条硬经验6.1 两线校准零点和增益分别怎么标温度采集系统至少要做两步校准。第一步是零点校准把 RTD 输入端短路ADC 读到的码值理论上应该是 0但因为 PGA 的输入失调和 PCB 上的热电偶效应实际会有一个很小的偏移。把这个偏移记下来之后每一次读数都减去它。第二步是增益校准用精密电阻箱或 0.02% 级的精密电阻代替传感器给 ADC 一个已知的电阻值反推整体的增益误差。比如我用 100Ω 标准电阻做 PT100 通道的增益校准读到的电阻值是 100.032Ω那增益修正系数就是 100.000/100.032 0.99968。校准系数我存在 STM32 内部的 Flash 备份区设备出厂前跑一遍校准流程之后每次上电加载。R_ref 用的是低温漂精密电阻所以校准系数在正常使用温度范围内基本可以长期使用。要注意如果更换了传感器探头或延长线增益修正可能需要重校这和传感器自身的一致性有关。6.2 实测数据一组 20SPS 采样下的表现我在实验室用国产二等标准铂电阻温度计做参照对 PT100 通道做了一组对比实测。环境温度约 25°C模拟前端供电为 LDO 3.3V采样率 20SPS每次读数取 10 次平均标准电阻值Ω对应温度°C系统读数°C误差°C100.000.000.020.02138.51100.0099.97-0.03175.86200.00200.010.01212.05300.00300.050.05同一个测温点连续采样 100 次标准差大约在 0.012°C 左右。这个精度对 HVAC 应用绝对富余了对大多数工业过程控制也完全够用。如果你需要更好的稳定性可以在软件里先做中值滤波再做滑动平均能把随机噪声再压掉一半以上代价只是响应变慢几秒。6.3 压缩机启动瞬间采样跳码的问题现场调试时最典型的现象是压缩机一启动温度读数瞬间跳 0.5°C 甚至更多过几秒再恢复。排查了一圈根因往往不是传感器线而是电源地。压缩机启动电流会引起母线电压跌落如果 ADC 的模拟电源和三回路共地跌落波形会直接耦合进基准和 PGA。另外变频器的 PWM 开关还会通过分布电容耦合共模电流到 RS-485 和传感器屏蔽线上。我的对策有三条第一模拟电源用单独的低噪声 LDO比如 TPS7A4700输出纹波极低不和数字 3.3V 共用第二模拟地在 ADC 下方单点连接数字地其他地方全部用 0Ω 电阻隔开第三传感器屏蔽层只在传感器侧接地控制器侧预留一个可选 10nF 到机壳地的连接点测试时再决定要不要接地。这三条做完之后压缩机启动瞬间的温度跳变从 0.5°C 降到了 0.03°C 以内。6.4 调试 UART 通信的几个自查技巧如果上电后怎么都读不到合理温度先别急着怀疑 ADC 芯片。我的排查顺序是先用示波器看 ADC 的 TX 引脚有没有 3 字节数据帧返回再检查 STM32 的 USART 有没有配成 9 位偶校验然后检查发送命令之后有没有等到足够的转换时间最后用逻辑分析仪对比 ADC 返回帧的字节序是不是 MSB 在前。还有一个特别容易忽略的点ADS122U04 的 RESET 命令发出后内部需要一个稳定时间如果马上写寄存器写操作可能被丢弃。我在 RESET 之后固定延时 5ms再执行寄存器配置。再有就是如果你在调试时把 RRDY 轮询做得太快ADC 还没来得及完成转换会一直返回未就绪看起来像死机实际上只是你比它快。这些都是小问题但在现场没有逻辑分析仪的时候足够折腾人一整天。整套系统做下来我最大的体会是ADS122U04 和 STM32F334R8 的组合把高精度采集和实时控制这两件本来容易互相拖累的事情拆开了。ADC 放在传感器附近保证模拟信号不被污染MCU 只做数字活所以跑起来非常轻松。如果你也要做类似的多点温度采集我建议在一开始就把基准电阻的选型和地回路设计当成最重要的事来对待这是这套方案里最隐蔽也最值钱的经验。下一步我打算在这块板子上跑 Modbus RTU 从站协议让暖通上位机直接通过 RS-485 读取温度实现远程监控和报警。整个采集链路的稳定性已经验证过了后面更多是协议层面的工作。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →