1. 工业测温项目的整体方案设计思路工业现场和HVAC系统里的温度测量看起来是个特别基础的需求但真正做过的人都知道这里面的坑一点都不少。我接过的几个项目里客户一开始都说“就测个温度嘛随便搞个NTC或者DS18B20不就行了”结果一到现场就出问题线缆拉了几十米读数飘得没法看变频器一启动温度值直接跳变冬天室外机零下二十度精度要求还要±0.5℃。这些场景逼着你不得不认真对待信号链的每一个环节。这个项目选用的核心器件是ADS122U04IPWR加STM32L496ZG的组合。ADS122U04是TI的一款24位ΔΣ型ADC内置PGA、双匹配电流源和UART接口专门为RTD、热电偶、热敏电阻这类小信号传感器设计。STM32L496ZG则是ST的L4系列高性能低功耗MCUCortex-M4内核带FPU80MHz主频1MB Flash320KB RAM关键是它的低功耗特性和丰富的外设非常适合工业场景。为什么这么选先说说RTD测温的基本矛盾。PT100在0℃时阻值100Ω温度系数大约0.385Ω/℃。如果要做到0.1℃分辨率意味着要能分辨0.0385Ω的阻值变化。用最简单的分压电路加MCU内部12位ADC参考电压3.3V的情况下LSB就是0.8mV对应到PT100上的阻值变化大概0.2Ω左右分辨率根本不够。就算用STM32L496的12位ADC加上外部运放噪声和漂移也很难控制。所以必须上高精度ΔΣ ADC这是方案选型的第一个逻辑。第二个逻辑是接口。ADS122U04带UART接口这个选择很有意思。SPI接口的ADC型号更多比如ADS1220就是SPI的。但UART有个好处可以用隔离器做电气隔离而且走线少。工业现场RTD的线缆可能拉到几十米甚至上百米如果ADC放在传感器端远端MCU在主控柜里中间用UART通信加隔离抗干扰能力比SPI强不少。当然也可以把ADC放在主控板端RTD用四线制接过来这就是另一种布局了。这个项目我倾向于把ADS122U04放在主控板端用四线制RTD连接因为HVAC场景下传感器分布不会太远而且集中采样便于管理。第三个逻辑是STM32L496ZG的选择。L4系列的低功耗模式在工业电池供电或者能量收集场景下很有优势但更关键的是它的数学加速器和FPU。24位ADC采回来的原始数据需要做滤波、线性化、冷端补偿如果用热电偶的话这些运算量不小。有FPU的话浮点运算效率高很多。另外L496的UART外设支持自动波特率检测和Modbus协议需要的超时特性跟ADS122U04通信很顺手。整个信号链是这样的PT100 RTD → 四线制连接 → ADS122U04的模拟输入 → 内部PGA放大 → 24位ΔΣ调制 → 数字滤波 → UART输出 → STM32L496ZG接收 → 温度计算 → 显示/上传。激励电流用ADS122U04内部的双匹配电流源IDAC设置成500μA或1mA取决于RTD的功耗限制和引线电阻。注意RTD的自热效应是个容易被忽略的问题。激励电流越大信噪比越好但RTD自身发热会导致读数偏高。1mA激励下PT100的功耗约0.1mW自热误差在0.01℃量级一般可以接受。但如果用1mA以上就要仔细核算了。2. ADS122U04IPWR的核心细节与配置要点2.1 内部结构拆解与关键参数ADS122U04的模拟前端结构值得仔细说说。它有两个差分输入通道内部是一个多路复用器后面接PGA再进ΔΣ调制器。PGA的增益可以设1到128对于PT100来说通常用增益8到32就够了。为什么PT100在0℃时100Ω1mA激励下满量程电压才100mV如果PGA增益设32输出就是3.2V接近参考电压能充分利用ADC的动态范围。ΔΣ调制器的采样率是256kHz典型值经过数字滤波器后输出20位有效精度。这里的数字滤波器有几种模式可选sinc1、sinc2、sinc3、sinc4还有50Hz/60Hz陷波滤波器。工业场景下工频干扰是最大的噪声源所以通常选sinc3加50Hz/60Hz同时抑制的模式。这个模式下输出数据率会降到20SPS但噪声抑制效果最好。内部双匹配电流源是ADS122U04的一个亮点。两个电流源可以分别配置匹配度很高温漂典型值50ppm/℃。对于三线制RTD可以用两个电流源分别给RTD和补偿线供电自动抵消引线电阻。四线制的话一个电流源就够了另一个可以关掉省电。参考电压的选择也很关键。ADS122U04可以用外部参考也可以用内部2.048V参考。内部参考的初始精度±0.05%温漂10ppm/℃。对于0.1℃精度的测温这个参考的温漂贡献大概0.0025℃/℃可以接受。但如果环境温度变化大比如从-20℃到60℃参考漂移就有0.2℃了这时候最好用外部精密参考比如REF5025或者ADR4525。2.2 UART通信配置与数据格式ADS122U04的UART接口配置有几个要点。波特率最高支持到115200但实际用的时候建议用9600或19200因为工业现场长线通信时高波特率误码率会上升。数据格式是8位数据、无校验、1位停止位但ADS122U04支持奇偶校验如果线缆环境恶劣建议开偶校验。命令集方面常用的有RESET0x06、START/SYNC0x08、POWERDOWN0x02、RDATA0x10、RREG0x20、WREG0x40。读数据的时候RDATA命令发出后ADC会返回3个字节的转换结果MSB在前。注意ADS122U04的输出是24位二进制补码正满量程是0x7FFFFF负满量程是0x800000。配置寄存器有4个分别控制多路复用器、增益、数据率、滤波器模式、电流源、参考选择等。我一般会写一个配置函数把常用的配置组合封装起来。比如// ADS122U04配置示例通道0增益3220SPSsinc350/60Hz抑制IDAC 1mA uint8_t config_regs[4] { 0x01, // 寄存器0MUXAIN0/AIN1增益32 0x04, // 寄存器1数据率20SPS连续转换模式 0x30, // 寄存器2sinc3滤波器50/60Hz同时抑制 0x0A // 寄存器3IDAC 1mA内部参考 };写寄存器的时候要注意WREG命令后面跟的是起始寄存器地址和要写的字节数。比如写全部4个寄存器0x40 | 0x03然后跟4个字节数据。读寄存器用RREG命令格式类似。实操心得ADS122U04上电后需要至少100ms的稳定时间等内部参考和电流源稳定后再发START命令。我遇到过上电就发START导致前几次读数不准的情况后来加了延时就好了。2.3 四线制RTD连接与滤波设计四线制RTD的连接是消除引线电阻的标准做法。两根线通激励电流另外两根线做电压检测。因为电压检测线的输入阻抗极高ADS122U04的输入阻抗在PGA增益32时大概几十MΩ引线电阻上的压降可以忽略不计。具体接法IDAC1从AIN0输出经过RTD后回到AIN1或者接REFNRTD两端分别接AIN2和AIN3做差分电压检测。但ADS122U04的输入多路复用器配置要对应上。我一般用AIN0/AIN1做电流输出AIN2/AIN3做电压检测。配置寄存器里MUX设成对应通道。滤波方面硬件上在RTD输入端加RC低通滤波截止频率大概1kHz到10kHz。电阻用10Ω到100Ω电容用0.1μF到1μF。注意电阻不能太大否则会影响PGA的输入偏置电流路径。ADS122U04的输入偏置电流典型值1nA100Ω电阻上的压降才0.1μV可以忽略。软件滤波的话我一般用滑动平均加中值滤波的组合。滑动平均窗口取8到16个点中值滤波取5个点。这样既能平滑随机噪声又能抑制脉冲干扰。如果对实时性要求高可以用IIR滤波器截止频率设1Hz左右。// 滑动平均中值滤波示例 #define AVG_WINDOW 16 #define MED_WINDOW 5 float filter_temperature(float new_val) { static float avg_buf[AVG_WINDOW] {0}; static float med_buf[MED_WINDOW] {0}; static uint8_t avg_idx 0, med_idx 0; avg_buf[avg_idx] new_val; avg_idx (avg_idx 1) % AVG_WINDOW; float sum 0; for (int i 0; i AVG_WINDOW; i) sum avg_buf[i]; float avg sum / AVG_WINDOW; med_buf[med_idx] avg; med_idx (med_idx 1) % MED_WINDOW; // 简单排序取中值 float temp[MED_WINDOW]; memcpy(temp, med_buf, sizeof(temp)); for (int i 0; i MED_WINDOW - 1; i) for (int j i 1; j MED_WINDOW; j) if (temp[i] temp[j]) { float t temp[i]; temp[i] temp[j]; temp[j] t; } return temp[MED_WINDOW / 2]; }3. STM32L496ZG端的软件实现与温度计算3.1 UART驱动与ADS122U04通信协议STM32L496ZG的UART外设配置成9600波特率、8N1用中断或者DMA接收。因为ADS122U04的数据是24位加上命令响应每次读取大概需要几十个字节的缓冲。我一般用DMA循环接收模式配合空闲中断来判断一帧数据结束。通信流程是这样的STM32先发WREG命令配置ADS122U04然后发START命令启动连续转换。ADS122U04在连续转换模式下每次转换完成会通过DRDY引脚或者UART主动输出数据。如果用UART主动输出模式STM32只需要接收就行不用反复发RDATA命令。但要注意连续转换模式下数据率是固定的STM32的接收缓冲要够大否则会丢数据。我一般用DRDY引脚加RDATA命令的方式这样STM32可以控制读取节奏避免数据堆积。DRDY接STM32的EXTI中断下降沿触发在中断里发RDATA命令然后等UART接收3个字节。// DRDY中断处理 void EXTI_IRQHandler(void) { if (EXTI_GetITStatus(DRDY_PIN)) { EXTI_ClearITPendingBit(DRDY_PIN); uint8_t cmd 0x10; // RDATA HAL_UART_Transmit(huart2, cmd, 1, 10); HAL_UART_Receive_IT(huart2, adc_rx_buf, 3); } } // UART接收完成回调 void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { if (huart huart2) { int32_t raw (adc_rx_buf[0] 16) | (adc_rx_buf[1] 8) | adc_rx_buf[2]; if (raw 0x800000) raw | 0xFF000000; // 符号扩展 adc_value (float)raw; adc_ready 1; } }3.2 RTD温度换算与线性化ADS122U04输出的原始码值需要换算成RTD阻值再换算成温度。换算公式取决于电路配置。以四线制、IDAC 1mA、PGA增益32、内部2.048V参考为例RTD阻值 (ADC码值 / 2^23) × (Vref / (PGA × Iidac))代入数值Vref2.048VPGA32Iidac1mA2^238388608。RTD阻值 (码值 / 8388608) × (2.048 / (32 × 0.001)) (码值 / 8388608) × 64如果码值是0x4000004194304RTD阻值 0.5 × 64 32Ω这不对因为PT100在0℃时是100Ω。让我重新算一下。实际上ADS122U04的输入电压范围是±Vref/PGA。当PGA32时输入范围是±2.048/32 ±64mV。1mA激励下100Ω RTD产生100mV超过了64mV。所以PGA增益32太大了应该用16或者8。用PGA16输入范围±128mV100Ω RTD的100mV在范围内。RTD阻值 (码值 / 8388608) × (2.048 / (16 × 0.001)) (码值 / 8388608) × 128。码值0x400000对应RTD阻值 0.5 × 128 64Ω还是不对。等等0x400000是2^22不是2^23的一半。2^238388608一半是41943040x400000。所以码值0x400000对应满量程的一半即64mVPGA16时满量程128mV。64mV / 1mA 64Ω。嗯这个计算是对的但PT100在0℃时是100Ω对应100mV码值应该是100mV/128mV × 8388608 6553600 0x640000。所以换算公式没错只是我举的码值例子不对。实际应用中PT100在0℃时码值约0x640000在100℃时阻值138.5Ω码值约0x8A8000。这些都在24位范围内没问题。温度换算用Callendar-Van Dusen方程对于T≥0℃R(T) R0 × (1 A×T B×T²) 对于T0℃R(T) R0 × (1 A×T B×T² C×(T-100)×T³)其中R0100ΩA3.9083e-3B-5.775e-7C-4.183e-12。反解温度的话T≥0℃时可以用二次方程求根公式T (-A sqrt(A² - 4B(1 - R/R0))) / (2B)T0℃时没有解析解一般用迭代法或者查表法。我一般用牛顿迭代3到4次就能收敛到0.001℃。float rtd_to_temperature(float resistance) { const float R0 100.0f; const float A 3.9083e-3f; const float B -5.775e-7f; const float C -4.183e-12f; float ratio resistance / R0; if (ratio 1.0f) { // T 0℃ float disc A*A - 4*B*(1 - ratio); return (-A sqrtf(disc)) / (2*B); } else { // T 0℃牛顿迭代 float T (ratio - 1.0f) / A; // 初始猜测 for (int i 0; i 5; i) { float f R0*(1 A*T B*T*T C*(T-100)*T*T*T) - resistance; float df R0*(A 2*B*T C*(4*T*T*T - 300*T*T)); T - f / df; } return T; } }3.3 低功耗管理与状态机设计STM32L496ZG的低功耗模式有Sleep、Stop0/1/2、Standby、Shutdown。对于工业测温如果是有线供电一般用Sleep模式就够了CPU空闲时进SleepUART中断唤醒。如果是电池供电可以用Stop2模式RTC定时唤醒每隔几秒采一次温度。状态机设计上我一般分几个状态IDLE等待启动、CONFIG配置ADS122U04、MEASURE连续转换、PROCESS数据处理、SLEEP低功耗等待。状态转换由定时器或者外部事件触发。typedef enum { STATE_IDLE, STATE_CONFIG, STATE_MEASURE, STATE_PROCESS, STATE_SLEEP } system_state_t; void system_state_machine(void) { static system_state_t state STATE_IDLE; static uint32_t last_tick 0; switch (state) { case STATE_IDLE: if (start_measure) { state STATE_CONFIG; } break; case STATE_CONFIG: ads122u04_config(); state STATE_MEASURE; break; case STATE_MEASURE: if (adc_ready) { adc_ready 0; state STATE_PROCESS; } break; case STATE_PROCESS: temperature calculate_temperature(adc_value); temperature filter_temperature(temperature); state STATE_SLEEP; break; case STATE_SLEEP: if (HAL_GetTick() - last_tick 1000) { last_tick HAL_GetTick(); state STATE_MEASURE; } break; } }注意进Stop模式前要把UART和ADS122U04都关掉否则漏电流会很大。ADS122U04的POWERDOWN命令可以把它降到0.1μASTM32L496ZG的Stop2模式典型电流1.1μA。整体待机功耗可以做到几微安级别。4. 工业与HVAC场景的实操问题与排查技巧4.1 常见干扰问题与硬件对策工业现场的干扰源太多了变频器、接触器、电机、继电器每一个都能在你的ADC读数上留下痕迹。我遇到过最离谱的一次客户现场有一台大功率变频器每次启动时温度读数直接跳变10℃。后来查了半天发现是RTD线缆和变频器输出线走同一个线槽耦合进来的共模干扰。解决办法有几个层次。第一层是布线RTD线缆必须用屏蔽双绞线屏蔽层单端接地接在控制柜的PE上而且要和动力线分开走间距至少20cm。如果实在避不开交叉走线要垂直交叉不能平行。第二层是硬件滤波。RTD输入端加共模扼流圈比如10mH的共模电感对工频干扰抑制效果很好。差模滤波用RC截止频率设1kHz左右。ADS122U04的参考输入端也要加滤波否则参考上的噪声会直接调制到输出。第三层是隔离。如果干扰特别严重可以在UART通信上加数字隔离器比如ADuM1201或者ISO7721。这样STM32和ADS122U04之间完全电气隔离地环路干扰就没了。但注意隔离后的电源也要用隔离DC-DC比如B0505S否则隔离不彻底。第四层是软件滤波。前面说的滑动平均加中值滤波是一方面还可以用自适应滤波。如果检测到读数跳变超过阈值就加大滤波窗口或者暂时丢弃异常值。但要注意不能把真实的温度变化也滤掉了。一般温度变化率不会超过1℃/s所以可以设一个变化率限制。干扰类型现象硬件对策软件对策工频干扰读数周期性波动共模扼流圈RC滤波50/60Hz陷波脉冲干扰偶发跳变TVS管磁珠中值滤波变化率限制地环路读数随负载变化隔离器隔离电源差分输入共模抑制射频干扰高频噪声屏蔽铁氧体磁环低通滤波平均4.2 精度校准与温漂补偿ADS122U04和PT100的精度受很多因素影响ADC的增益误差和偏移误差、参考电压的初始精度和温漂、RTD本身的公差、PGA的增益误差、电流源的匹配度。要達到0.1℃的系统精度必须做校准。校准分两步零点校准和满量程校准。零点校准用精密电阻模拟0℃时的PT100阻值100Ω记录ADC读数。满量程校准用100℃时的阻值138.5Ω记录读数。然后计算增益和偏移修正系数。但精密电阻的温漂也要考虑。我一般用Vishay的PTF系列或者VPG的箔电阻温漂0.05ppm/℃价格不便宜但值得。如果预算有限至少用25ppm/℃的金属膜电阻校准时的环境温度要稳定。温漂补偿的话如果用了外部参考参考的温漂是主要贡献。比如REF5025的温漂3ppm/℃在-40℃到85℃范围内参考电压变化约0.01%对应温度误差0.025℃。可以接受。如果要求更高用ADR4525温漂2ppm/℃。ADS122U04内部的PGA和电流源也有温漂。PGA的增益温漂典型值1ppm/℃电流源的匹配温漂50ppm/℃。这些在芯片内部没法外部补偿只能选型时注意。如果实在要求高可以用外部运放做PGA用外部精密电流源但成本就上去了。实操心得校准的时候一定要等系统热稳定。我一般让设备通电运行至少30分钟等内部温度稳定后再校准。有一次急着出货通电5分钟就校准结果客户现场运行2小时后读数偏了0.3℃。后来重新校准等1小时问题就没了。4.3 常见问题速查与排查流程问题一ADC读数一直是0或者满量程排查步骤先检查ADS122U04的电源和参考电压是否正常。用万用表量AVDD和DVDD应该是3.3V或者5V。然后量VREF如果是内部参考应该是2.048V。如果都正常检查UART通信用示波器看STM32的TX和RX有没有波形。如果通信正常但读数不对检查多路复用器配置和PGA增益设置。问题二读数噪声大波动超过1℃先看硬件滤波有没有做好。RTD输入端有没有RC参考端有没有滤波然后看布线RTD线缆是不是和动力线在一起屏蔽层接地了吗如果硬件没问题看软件滤波参数滑动平均窗口是不是太小数据率是不是设太高了20SPS下噪声应该很小如果设到1000SPS噪声肯定大。问题三温度读数随环境温度变化但RTD温度没变这是温漂问题。先检查参考电压的温漂如果用的是内部参考换外部精密参考试试。然后检查RTD的引线四线制的话引线电阻应该没影响但如果接成了三线制或者两线制引线电阻的温漂就会影响读数。铜的温漂是0.4%/℃10米长的0.5mm²线缆电阻约0.35Ω温漂0.0014Ω/℃对应温度误差0.0036℃/℃不大但也不能忽略。问题四UART通信偶尔丢数据先看波特率是不是太高9600下应该很稳。如果用了115200试试降到19200。然后看UART中断优先级是不是被其他中断打断了DMA接收的话检查DMA缓冲是不是够大。还有ADS122U04的UART输出是3.3V电平如果STM32也是3.3V直接连就行。如果STM32是5V要加电平转换。问题现象可能原因排查方法解决方案读数恒为0电源/参考故障万用表量电压检查供电和参考读数满量程输入过载量输入电压降低PGA增益或激励电流噪声大滤波不足示波器看波形加硬件滤波软件滤波温漂大参考或RTD问题变温测试换精密参考四线制通信丢包波特率/中断问题逻辑分析仪抓包降波特率优化中断4.4 标定工装与批量生产效率如果这个项目要批量生产标定工装的设计就很重要了。我一般用多路精密电阻模拟PT100在不同温度下的阻值通过继电器切换一次性标定多台设备。工装里用高精度DMM做参考比如Keysight 34465A6位半精度足够校准24位ADC了。标定流程先让设备预热30分钟然后依次切换0℃、25℃、50℃、75℃、100℃的模拟电阻记录每台的ADC读数计算增益和偏移。标定系数存在STM32的Flash里每次上电读取。生产效率方面如果一台一台标定太慢可以做多路并行标定。比如8路同时标定用8个独立的精密电阻网络STM32通过UART或者CAN上报数据上位机统一计算系数。这样产能能提高8倍。注意标定工装本身的温漂也要控制。精密电阻要放在恒温箱里或者至少远离发热源。继电器切换会有接触电阻要用低接触电阻的信号继电器比如欧姆龙的G6K系列接触电阻典型值50mΩ对100Ω的PT100来说就是0.05%的误差标定的时候要把这个考虑进去。5. 从原型到产品的工程化考量5.1 PCB布局与接地设计ADS122U04的PCB布局直接决定最终性能。模拟部分和数字部分要分开AGND和DGND单点连接。ADS122U04的AGND和DGND引脚在芯片下方布局的时候要把这两个地平面在芯片下方分开然后用一个0Ω电阻或者磁珠在一点连接。RTD输入走线要尽量短而且差分对要等长、靠近。如果走线长要用保护环Guard Ring包围输入走线保护环接AGND减少漏电流。ADS122U04的输入偏置电流很小但PCB表面的漏电流可能比偏置电流还大尤其是潮湿环境下。保护环能有效降低表面漏电流。参考电压的走线也要注意。内部参考的话VREF引脚要加0.1μF和1μF的退耦电容尽量靠近引脚。外部参考的话参考芯片的输出要走粗线而且远离数字信号。电源方面AVDD和DVDD要分别退耦。AVDD用10μF钽电容加0.1μF陶瓷电容DVDD用1μF加0.1μF。如果对噪声要求高AVDD可以用LDO单独供电比如TPS7A4700噪声只有4μVrms。5.2 电磁兼容与安规设计工业产品要过EMC测试辐射发射和传导发射是必测项。ADS122U04的ΔΣ调制器本身会产生高频噪声虽然芯片内部有滤波但PCB上还是要加磁珠或者共模扼流圈。UART通信线也要加共模扼流圈比如Murata的DLW21HN系列。ESD防护方面RTD输入端要加TVS管比如SM712或者PESD系列。UART线也要加ESD保护比如TPD4E001。注意TVS管的结电容不能太大否则会影响信号完整性。RTD是直流信号结电容大点没关系但UART是数字信号结电容要小于10pF。安规方面如果设备要接市电隔离是必须的。RTD和市电之间要有加强绝缘爬电距离和电气间隙要满足IEC 61010的要求。一般250V工作电压下爬电距离至少3.2mm电气间隙至少2.0mm。PCB布局的时候要注意这些间距。5.3 固件升级与远程维护工业设备装到现场后固件升级是个麻烦事。如果设备有通信接口比如RS485或者以太网可以做远程升级。STM32L496ZG支持双Bank Flash可以在运行的时候写另一个Bank然后切换。这样升级过程中不会停机。升级协议我一般用YMODEM或者自定义的简单协议。数据包加CRC校验出错重传。升级前先擦除目标Bank然后逐包写入最后校验整个Bank的CRC。如果校验通过设置启动标志重启后从新Bank启动。远程维护方面可以加一些诊断功能。比如记录ADC的原始数据、温度值、通信错误计数、电源电压等。这些数据可以通过Modbus寄存器读取方便现场排查问题。我一般会留一个调试串口输出详细的日志现场工程师用USB转串口就能看。实操心得固件升级最怕的是升级过程中断电。如果写Flash的时候断电设备就变砖了。所以一定要用双Bank方案而且升级前要把旧固件备份到另一个Bank。STM32L496ZG的Flash是2MB分成两个1MB的Bank足够放两个固件了。5.4 成本优化与器件替代如果项目对成本敏感有几个地方可以优化。ADS122U04的价格大概3到5美元如果精度要求没那么高可以用ADS1220SPI接口便宜1美元左右或者ADS112C0416位更便宜。但16位ADC的分辨率对于0.1℃的PT100测温可能不够要仔细核算。STM32L496ZG的价格大概8到10美元如果不需要那么多外设和那么大的Flash可以用STM32L432KC或者STM32G031价格便宜一半以上。但要注意L4系列的低功耗特性在G0系列上没那么好如果电池供电的话要重新评估。RTD的话PT100的价格从几块钱到几十块钱不等。工业级PT100用薄膜或者绕线元件精度Class A或者Class AA。Class A在0℃时公差±0.15℃Class AA是±0.1℃。如果系统精度要求0.5℃用Class B±0.3℃就够了能省不少钱。参考电压的话内部参考免费但温漂10ppm/℃。外部REF5025大概2美元温漂3ppm/℃。如果环境温度变化不大比如室内HVAC内部参考够用。如果室外或者宽温场景外部参考更稳妥。整个BOM算下来ADS122U04STM32L496ZGPT100外围大概15到20美元。如果优化到ADS112C04STM32G031Class B PT100可以做到8到10美元。具体选哪个看项目需求和预算。我在实际项目中遇到过一个问题客户要求0.1℃精度但预算只够用16位ADC。后来我算了一下16位ADC在PGA增益16时有效分辨率大概14位对应到PT100上是0.01Ω温度分辨率0.026℃。理论上够但噪声和温漂一叠加实际精度只能做到0.3℃左右。最后客户加了预算换回24位ADC。所以选型的时候一定要把噪声和温漂算进去不能只看分辨率。
企业数字化 ERP 产品动态
相关推荐
UART接口24位ADC与低功耗MCU的工业温度采集设计 /* 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 1:05:28
工业级高精度测温方案:ADS122U04与STM32F407四线制PT100设计 /* 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 1:05:28
UART接口24位ADC与Cortex-M33组合的高精度温度采集方案实战 /* 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 1:04:27
16卡GPU首秀,国鑫荣膺Intel 2026年度渠道DCAI核心合作伙伴 近日,以“同芯智远”为主题的2026英特尔技术创新与产业生态大会(Intel Connection 2026)在苏州热力开场!作为英特尔面向全行业的年度旗舰活动,本届大会聚焦智能体AI、AIPC、数据中心、边缘计算、物理AI及产业创新等关键… · 2026/11/5 1:46:39
高项:知识域+绩效域(仅笔记) 一、整合管理
1.制定项目章程( 开展一次 或仅在预定义点开展 ) 输入: 建.研.评.事.组 输出: 章.假
输入: 立项管理文件( 项目建议书 , 可行性研究报告 , 项目评估报告 )事业环境因素 , 组… · 2026/11/5 1:46:39
Vorssaint:把逐应用音量、系统监控和窗口吸附装进 macOS 菜单栏 Vorssaint:把逐应用音量、系统监控和窗口吸附装进 macOS 菜单栏 【免费下载链接】vorssaint-utils Free and open-source macOS menu bar toolkit. 项目地址: https://gitcode.com/GitHub_Trending/vo/vorssaint-utils
Vorssaint 是一款免费、GPL-3.0 开源的… · 2026/11/5 1:46:39
10个你可能不知道的KernelSU隐藏功能:.ksurc、ADB Root与内核umount实用技巧 【免费下载链接】KernelSU Personal fork of KernelSU Project 项目地址: https://gitcode.com/gh_mirrors/kern/KernelSU 点击查看 免费下载 KernelSU 是一款运行在内核层的 Android Root 框架,除了常见的提权和模块管理,它还藏着不少实用功… · 2026/11/5 1:46:39
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38
多智能体协作系统架构设计与实践优化 1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中… · 2026/11/5 0:00:39
大模型系统性入门实战指南:从原理到部署微调的全链路路线 提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#… · 2026/11/5 0:00:39
鸿蒙文件系统沙箱机制解析与开发实践 1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的… · 2026/11/5 0:00:39
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38