ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

基于STM32的PT100温度采集系统:电桥、仪表放大器与C语言实现全解析

基于STM32的PT100温度采集系统:电桥、仪表放大器与C语言实现全解析 手头一个设备需要测电机轴承温度量程0~300℃精度要求±1℃。第一反应就是用PT100毕竟这是工业里最常见的铂电阻温度传感器。真正动手之后才发现PT100本身不难测难的是把微小的电阻变化变成单片机能够稳定读到的数字信号。网上教程大多只讲电桥原理或者只贴一段代码中间关键的放大电路、线性化处理、误差来源往往一笔带过。这篇文章把我从电桥参数计算、仪表放大器选型到STM32上C语言代码实现的全过程完整记录下来包括我踩过的坑和最后校准的数值给正在做温度采集项目的朋友一个可以直接参考的完整方案。整个项目做下来最深的感受是PT100测温这件事硬件上无非是“把电阻变电压”和“把电压变大”两步但这两步里的每一个电阻取值、每一条走线都直接影响最终精度。软件上反而是把测量值变成温度值这一步需要多想几种方案查表、线性拟合、公式反解各有各的适用场景。下面按我实际开发的顺序来拆解。1. 项目整体设计与方案选型1.1 PT100传感器的电气特性PT100是一种铂热电阻核心特征是0℃时阻值恰好是100Ω温度升高时阻值近似线性增大。工业上普遍采用的PT100分度表里标准系数A3.9083e-3B-5.775e-7在0~300℃范围内阻值从100Ω增长到212.05Ω平均每升高1℃约增加0.385Ω。很多人第一次测PT100时觉得很简单“不就是测电阻吗用万用表量一下不就行了。”但实际嵌入到系统里会发现两个麻烦。第一0.385Ω/℃的变化率非常小如果用普通的电阻分压法1℃对应的电压变化可能只有几毫伏直接进单片机ADC几乎被噪声淹没。第二传感器到电路板之间总有一段导线铜导线本身也有电阻普通0.5平方的铜线每米大约0.02Ω看上去不起眼但对应到PT100就是约0.05℃/米的误差如果导线长到几十米误差累积下来完全不可接受。正是因为这两点PT100测量电路才需要精心设计前端信号调理而不是简单地把传感器接上ADC就完事。1.2 为什么坚持用电桥方案PT100的前端调理电路有两种主流做法一种是电桥差分放大另一种是恒流源激励电压测量。恒流源方案原理上更直接——给PT100通一个恒定电流测它两端的电压电压除以电流就是电阻。但恒流源要做得温漂低、噪声小成本并不低许多入门级的运放恒流源在高低温冲击下电流值会漂移反而给系统引入额外误差。电桥方案的优势在于精度和抗干扰的平衡很好。惠斯登电桥的输出是差分信号两只相邻桥臂上的电阻同时受电源波动影响电源升高时两个分压点同步变化差分输出电压基本不变。这种天然的共模抑制特性使得电桥对电源的稳定性要求不像恒流源那么苛刻。另外电桥配合三线制接法可以很好地抵消导线电阻误差这个后面会详细讲。当然电桥也有自己的麻烦输出信号依然很小必须加一级差分放大桥臂电阻的精度和温漂直接决定系统精度。但从工程实现角度看电桥方案的技术资料多、调试手段成熟、成本可控作为DIY项目和产品原型都是更稳妥的起点。1.3 信号的完整链路整个测温系统的信号链路是PT100接入电桥一臂电桥把电阻变化转换为毫伏级差分电压仪表放大器把这个差分信号放大到0~3V范围单片机ADC采样得到数字量最后通过公式或查表换算成温度值。这里有一个设计顺序问题。很多人习惯先把硬件搭好再写代码但我的经验是先在脑子里把整个链路从后往前过一遍ADC量程是多少满量程对应多少度中间放大量要多少这样定出来的放大倍数才不会出现“温度才测到一半ADC已经满量程”的尴尬。本项目选用STM32F103的12位ADC参考电压直接采用3.3V电源。规划量程0~300℃希望300℃时ADC输入电压不超过2.8V左右留出10%的余量同时保证1℃对应的电压变化足够大至少达到10mV量级。这样12位ADC的理论分辨率能到0.1℃以内满足项目需求。这个倒推过程直接决定了后面电桥激励电压、仪表放大器增益的取值。2. 电桥电路搭建参数计算与元件选型2.1 电桥的工作原理惠斯登电桥由四个电阻组成两个分压支路。两个支路并联在激励电压VEXC上每条支路有上下两个电阻两个支路中点之间的电压差就是电桥输出。当四个电阻满足比例关系时两支路中点电压相等电桥平衡差分输出电压为0。任何一臂的电阻发生变化平衡被打破输出一个与变化量相关的差分电压。PT100电桥常用接法是把PT100放在上桥臂与一个固定电阻R_FIX串联另一条支路用同样的R_FIX与一个参考电阻R_REF串联。当PT100阻值等于R_REF时两支路完全对称输出为0。这意味着测量零点由R_REF决定R_REF取100Ω那么系统在0℃时输出为0V。支路电流问题必须注意。如果把R_FIX也取100Ω在0℃时每条支路串联总阻值只有200Ω以3.3V激励计算电流达到16.5mAPT100上的功耗是I²R即0.0165²×100≈27mW。PT100在空气中的耗散系数约1~2mW/℃具体视封装和介质而定这会导致自发热升温十几摄氏度测量值完全失真。所以R_FIX不能取得太小。常见做法是把R_FIX取1kΩ这样0℃时支路总阻值约1.1kΩ电流约3mAPT100功耗约0.9mW自热误差可以控制在1℃以内。如果需要更高精度还可以采用脉冲供电让PT100只在采样瞬间通电这是后话。2.2 桥臂参数设计以0~300℃量程为例本项目的桥臂参数如下参数取值说明VEXC3.3V单片机电源经LC滤波后供电桥激励R_FIX1kΩ两只精度0.1%温漂25ppmR_REF100Ω精度0.1%低温漂参考电阻GAIN10倍仪表放大器增益计算一下关键节点的电压值。第二条支路的参考电压V_REF VEXC × R_REF / (R_FIX R_REF) 3.3 × 100 / 1100 0.3000VPT100所在支路的分压为V_PT VEXC × R_PT / (R_FIX R_PT)当温度为0℃时R_PT100ΩV_PT0.3000V与V_REF相等电桥输出差分电压0V。当温度为100℃时查分度表可得R_PT138.51ΩV_PT 3.3 × 138.51 / (1000 138.51) 0.4015V此时差分电压是0.4015 - 0.3000 0.1015V约101.5mV。当温度为300℃时R_PT212.05ΩV_PT 3.3 × 212.05 / 1212.05 0.5774V差分电压约277.4mV。从0℃到300℃变化277.4mV平均灵敏度约0.925mV/℃考虑到阻值曲线略呈上凸实际在低温端灵敏度略高、高温端略低但这个量级已经足够。增益取10倍后300℃时ADC输入约2.77V满足前面设定的2.8V以内且1℃对应电压变化约9.25mV对于3.3V/4096的12位ADC来说每个LSB约0.81mV核算下来1℃约能分辨11个LSB理论分辨率约0.09℃远超项目需求。这里补充一个容易忽视的点R_FIX的取值不是越大越好。R_FIX增大后支路电流减小PT100自热降低但差分输出电压也会同比减小为了达到同样的输出范围就必须提高仪表放大器增益。增益过高会放大失调电压和噪声反而不利。所以R_FIX的选择是电流、灵敏度、增益三者折中的结果1kΩ是一个很常用的平衡点。2.3 仪表放大器的增益设置电桥输出的差分信号必须用仪表放大器来放大而不是普通运放搭差分电路。仪表放大器的输入阻抗极高不会给电桥带来额外负载同时它的共模抑制比通常在90dB以上能很好地抑制激励电源上的共模噪声。普通运放差分电路要匹配多个精密电阻才能达到相当的共模抑制比DIY条件下很难保证。我用的是INA128经典仪表放大器增益公式是G 1 50kΩ / R_G需要约10倍增益反推R_G 50k / (G - 1) 50k / 9 ≈ 5.56kΩ取标称值5.6kΩ实际增益约9.93倍。在电路里R_G两端引脚直接用两个座子引出方便后期换不同阻值调整增益。这里有个必须处理的细节INA128的REF端接地时输出电压等于输入差分电压乘以增益后加上一个以地为中心的双极性输出。假如输入差分电压为正输出为正假如PT100温度低于0℃差分电压变负单电源供电的ADC就采不到负电压了。我的做法是把这个系统定位为0℃以上测量不给REF加偏置让0℃时输出正好接近0V。如果项目需要测负温就需要在REF端引入一个偏置电压比如1.65V把零点抬升到量程中点但这时ADC的有效量程会被压缩一半是典型的取舍问题。2.4 供电与基准的处理电桥激励电压VEXC我直接用3.3V系统电源这一点在调试时够用但要做到高精度测温必须重视基准问题。ADC采样电压和电桥激励电压同时来自3.3V电源。如果3.3V因为负载变化从3.3V漂到3.28V电桥输出的毫伏级差分电压和ADC参考电压会同时变化。在比例测量方式下这两个变化会互相抵消一部分这是3.3V直供方案能用的根本原因。但3.3V电源的高频纹波依然会窜进电桥输出。实际电路里我在3.3V到电桥之间加了一节LC滤波一个10Ω电阻加一个100μF钽电容截止频率约160Hz对高频噪声抑制效果明显。建议大家至少加一个RC滤波到电桥激励端不要直接把开关电源的3.3V拉到电桥上。如果项目要求0.2℃以上的高精度建议把VEXC改为专用基准源比如REF3233或者TL431加扩流配合精密参考电阻稳定性会有数量级提升。这部分成本增加不大但对长期运行的系统来说收益非常明显。3. 单片机软件设计从ADC到温度值3.1 ADC采样与软件滤波硬件链路都调试通之后进入软件部分。单片机的任务是初始化ADC周期性采样增益放大后的信号把ADC原始值换算成PT100电阻值再换算成温度。ADC采样本身有讲究。12位ADC在3.3V参考下每LSB约0.81mV放大后对应约0.09℃理论分辨率够用但噪声可能远大于这个值。仪表放大器的噪声、电源纹波、干拢信号都会叠加到ADC输入上单次采样的跳动往往能到10个LSB以上。我用了“先连续采样多次再中值平均”的复合滤波策略。具体做法是每次采样连续读16个ADC值先去掉最大的4个和最小的4个用中间8个求平均值。这样既能抑制随机脉冲干扰又能平滑高频噪声计算开销也不大在STM32F103上耗时不足1ms。中值平均滤波有一个细节值得注意采样之间要加入短延时。如果连续不停地读取ADC最后一次转换完成前启动新转换软件里可能拿到上一次的旧结果导致数据错位。我在这里踩过坑后来严格遵循先启动转换、等待EOC标志位置位、再读数据的流程。3.2 从ADC值反推PT100电阻放大后的电压为V_ADC V_DIFF × GAIN其中V_DIFF是电桥输出的原始差分电压。已知放大器增益GAIN、ADC满量程值ADC_FULL和参考电压ADC_VREF可以从ADC读数反推V_DIFFV_DIFF ADC_value / ADC_FULL × ADC_VREF / GAIN接着由电桥关系恢复PT100支路电压V_PT V_DIFF V_REF其中V_REF是参考支路的理论分压值由程序按照V_REF VEXC × R_REF / (R_FIX R_REF)计算得出。注意这里必须用与硬件一致的R_REF和R_FIX参数最好用万用表实测的电阻值而不是标称值。最后用分压公式反解R_PTV_PT VEXC × R_PT / (R_FIX R_PT)推导可得R_PT R_FIX × V_PT / (VEXC - V_PT)这一步是整个软件换算的核心基于的是欧姆定律和串联分压关系没有任何近似前提是VEXC、R_FIX参数准确。这也是为什么硬件上要选低温漂精密电阻的原因软件算得再准参数本身有漂移结果同样会偏。3.3 温度换算的三种做法得到R_PT之后还剩最后一步把电阻值换算成温度值。这里有三种方案按精度从低到高排列。第一种是线性近似T (R_PT - 100) / 0.385。这个公式只适合粗略估算在0~100℃范围内误差约0.5℃超过100℃后误差快速增大到300℃时误差可能超过3℃。它的价值在于计算开销极低适合51单片机等浮点运算能力弱的平台做快速看板显示。第二种是查表加线性插值。把PT100分度表按每10℃一行存入常量数组先用二分查找定位当前电阻落在表格中哪两个温度点之间再按电阻比例线性插值。实测精度可以做到0.05℃以内计算量也不大是单片机上最推荐的方案。第三种是Callendar-Van Dusen公式反解。0~300℃范围内PT100的阻值与温度关系可以写成R(T) 100 × (1 A×T B×T²)其中A3.9083e-3B-5.775e-7。想从R反解T一般用牛顿迭代法迭代五六次就能收敛到0.01℃以内。这个方案精度最高不需要占存储空间的表格但需要浮点运算适合带FPU或者主频较高的MCU。3.4 可直接带走的C语言代码下面给出完整代码基于STM32标准外设库和HAL库的底层都可以直接移植。核心是把采样、信号换算、温度解算拆成独立函数方便替换平台。// pt100_config.h #ifndef __PT100_CONFIG_H #define __PT100_CONFIG_H #define VEXC 3.3f // 电桥激励电压 #define R_FIX 1000.0f // 桥臂固定电阻 #define R_REF 100.0f // 参考电阻 #define GAIN 9.93f // 仪表放大器实际增益 #define ADC_FULL 4095.0f // 12位ADC满量程 #define ADC_VREF 3.3f // ADC参考电压 float PT100_GetTemperature(uint16_t adc_value); float PT100_RptToTempCVD(float rpt); #endif// pt100.c #include pt100_config.h // 参考支路上100欧电阻的理论分压 static float PT100_GetVref(void) { return VEXC * R_REF / (R_FIX R_REF); } // 由ADC值反推PT100电阻 static float PT100_AdcToRpt(uint16_t adc_value) { float vdiff, vpt, rpt; // ADC值换算为放大后的电压 vdiff (float)adc_value / ADC_FULL * ADC_VREF; // 除以增益还原为电桥差分电压 vdiff / GAIN; // PT100支路电压 差分电压 参考支路分压 vpt vdiff PT100_GetVref(); // 异常保护vpt接近激励电压时说明探头短路或断线 if (vpt VEXC - 0.05f) { return 0.0f; } // 串联分压公式反推电阻 rpt R_FIX * vpt / (VEXC - vpt); return rpt; } // 查表区间定义每10℃一个点0~300℃ static const float rpt_table[] { 100.00f, 103.90f, 107.79f, 111.67f, 115.54f, 119.40f, 123.24f, 127.08f, 130.90f, 134.71f, 138.51f, 142.29f, 146.07f, 149.83f, 153.58f, 157.33f, 161.05f, 164.77f, 168.48f, 172.17f, 175.86f, 179.53f, 183.19f, 186.84f, 190.47f, 194.10f, 197.71f, 201.31f, 204.90f, 208.45f, 212.05f }; // 查表 线性插值 static float PT100_RptToTempLut(float rpt) { int i 0; float temp; if (rpt rpt_table[0]) { return 0.0f; } if (rpt rpt_table[30]) { return 300.0f; } while (rpt rpt_table[i 1]) { i; } // 每格10℃线性插值 temp i * 10.0f (rpt - rpt_table[i]) / (rpt_table[i 1] - rpt_table[i]) * 10.0f; return temp; } // CVD公式牛顿迭代反解 float PT100_RptToTempCVD(float rpt) { const float A 3.9083e-3f; const float B -5.775e-7f; float t, f, df; int i; if (rpt 100.0f) { return 0.0f; } if (rpt 212.05f) { return 300.0f; } // 初值线性近似 t (rpt / 100.0f - 1.0f) / A; // 牛顿迭代 for (i 0; i 8; i) { f 100.0f * (1.0f A * t B * t * t) - rpt; df 100.0f * (A 2.0f * B * t); t t - f / df; } return t; } // 对外接口传入ADC采样值返回温度 float PT100_GetTemperature(uint16_t adc_value) { float rpt PT100_AdcToRpt(adc_value); // 项目要求0~300℃这里用CVD公式若需要更高速度可改用查表 return PT100_RptToTempCVD(rpt); }ADC采样的示例代码以STM32 HAL库为例// 假设已经初始化ADC1通道1采样周期设为较慢档位 uint16_t ADC_ReadFiltered(void) { uint16_t buf[16]; uint16_t tmp; int i, j; uint32_t sum 0; for (i 0; i 16; i) { HAL_ADC_Start(hadc1); HAL_ADC_PollForConversion(hadc1, 10); buf[i] HAL_ADC_GetValue(hadc1); HAL_ADC_Stop(hadc1); delay_us(50); } // 冒泡排序简单可靠 for (i 0; i 15; i) { for (j i 1; j 16; j) { if (buf[i] buf[j]) { tmp buf[i]; buf[i] buf[j]; buf[j] tmp; } } } // 去掉最大4个和最小4个取中间8个平均 for (i 4; i 12; i) { sum buf[i]; } return (uint16_t)(sum / 8); }使用时在主循环里周期性调用while (1) { uint16_t adc_val ADC_ReadFiltered(); float temperature PT100_GetTemperature(adc_val); // 送给OLED显示或串口上传 printf(ADC%d, T%.2f℃\r\n, adc_val, temperature); HAL_Delay(500); }这段代码在STM32F103上实测编译运行正常float运算大约耗时几十微秒完全不影响实时性。3.5 移植到51单片机的注意事项很多读者手里是51单片机比如STC15系列。这套代码移植过去有几个问题需要提前解决。51单片机的ADC通常是10位分辨率约3.2mV/LSB折合温度约0.35℃比12位方案粗了不少。如果对精度要求不高可以接受如果要求高建议外接16位或24位ADC芯片这是后话。51单片机的浮点运算比Cortex-M3慢很多CVD公式反解里的多次迭代可能吃掉几十毫秒。移植时建议把温度换算改成查表加线性插值只保留整数运算速度会快很多。另外STC系列ADC的参考电压通常就是VCCVCC会随负载波动这时必须用比例测量思想同一时刻采样电桥信号和一个已知的基准电压用两者的比值去除VCC波动影响而不是直接按3.3V计算。实际项目中我用STC15W408AS跑过同样算法把采样次数降到8次查表法代替CVD公式整个转换周期在5ms以内能满足0.5℃精度的显示类应用。4. 调试验收中的实际问题4.1 电桥零点漂移处理上电后第一件事不是测温度而是检查0℃输出。把PT100放进冰水混合物注意要用纯净水制冰保证0℃标准万用表测放大器输出。如果输出不是0V而是几十毫伏说明电桥本身不平衡。零点漂移三个常见来源桥臂电阻精度不足、仪表放大器输入失调电压、PCB走线或焊接带来不对称电阻。前两个最典型。我的处理方式是软件校准在0℃条件下记录ADC读数AD0后续测量时把每个AD值先减去AD0再进入换算。这个偏移量实际上把一个固定零点误差整体扣掉了效果好且实现简单。如果零点漂移超过100mV就不建议只靠软件校准了要检查桥臂电阻是否焊错、参考电阻是否损坏。大的漂移一般说明硬件有硬伤。4.2 读数跳变与滤波策略调试中最常见的现象是温度读数在某个值附近上下跳动跳动幅度可能达到1℃甚至更多。很多人第一反应是电源噪声但实际上仪表放大器的噪声和ADC采样的波动往往是主因。我建议按顺序排查先用万用表测量INA128输出端看电压是否稳定如果输出稳定就说明是ADC采样环节的问题加大滤波深度即可如果输出本身在跳动问题在模拟前端重点检查电桥激励滤波和放大器输出端到ADC之间的走线。放大器输出端到ADC引脚之间串一个1kΩ电阻并在ADC引脚对地加一个100nF电容组成低通滤波可以明显改善采样跳变。这是几乎所有精确ADC采样电路的标准做法STM32的ADC输入端口建议阻抗不高于10kΩ这个RC组合完全满足要求。4.3 导线电阻误差和三线制接线如果PT100距离主板较远比如超过1米两线制接法的误差就不能忽视了。0.75平方的铜线一米电阻约0.024Ω两端导线合计阻值随温度和线长变化换算成温度误差在0.1~0.5℃之间。真正工程化必须用三线制。三线制接法的核心思想是让两条导线分别处在电桥的对称桥臂中当导线电阻相等时它们引起的电压降在差分输出中被抵消。PT100有三根引线其中两根接在传感器同一端第三根接在另外一端。接线时把一根引线接到R_FIX和PT100的连接点作为激励线另一根引线接到仪放负输入端第三根接到仪放正输入端配合合适的电桥拓扑导线电阻的影响就基本消除了。四线制则是给PT100两端各接一对线一对用于激励一对用于测量测量线上几乎不流过电流导线电阻的影响可以忽略。四线制精度最高但线材成本翻倍适合实验室级应用。我在项目里用的是三线制布线时把三根引线尽量捆扎在一起保证温度一致实测在3米线长下与四线制结果相差不到0.1℃。4.4 自热效应与温升误差自热是所有电阻式温度传感器的固有问题。电流流过PT100时产生焦耳热使传感器自身温度高于被测介质温度。前面计算过本项目在0℃时的PT100功耗约0.9mW在空气环境中可能带来约0.5~1℃的温升。这个误差在要求不高的场合可以接受但要做到高精度测量就必须处理。两个处理方向。一是降低激励电流比如把R_FIX加大到2kΩ功耗降到0.45mW代价是灵敏度减半需要相应提高放大器增益。二是采用脉冲激励只在ADC采样前几十毫秒才给电桥通电采样完成后断电。这样PT100平均功耗极低自热温升可以压到0.1℃以下。脉冲激励的代码实现也不复杂用单片机一个GPIO控制电桥电源端即可但要注意采样时刻必须安排在激励电压稳定之后否则采样的是电容充电过程的过渡状态。4.5 不同温度点的校准方法软件写好后需要标定。我建议至少标三个点冰水混合物的0℃、沸水区的100℃、以及食用油或硅油加热到200℃用标准温度计监测。标定流程是用恒温槽或现场条件获得稳定温度读取系统显示值记录每个点的偏差。常见偏差呈线性比如0℃显示0.3℃100℃显示100.8℃200℃显示201.2℃这往往可以通过补偿一个斜率和截距修正。代码里在最后输出温度时加入线性校正// 标定补偿假设标准温度 a * 测量温度 b float temperature_calibrated temperature * 1.0048f - 0.31f;如果偏差不是线性的说明温度换算公式或电阻参数有问题要先查硬件再做软件补偿。不要试图用一个三阶多项式去捂一个硬件错误。5. 进阶方向与集成方案5.1 从电桥走向恒流源电桥方案用得很顺之后我尝试过把前端换成恒流源激励。做法是用LM334或精密运放搭建恒流源输出1mA恒定电流直接流过PT100再用仪表放大器测量PT100两端电压。恒流源方案的好处是电压与电阻严格成正比软件换算少一步电桥关系推导而且方便支持三线制补偿。但恒流源需要一个高质量基准和稳定的采样电阻来设定电流值否则电流温漂会直接变成测量误差。实测下来用好的运放和0.1%低温漂电阻搭建的恒流源效果和电桥方案在同一水平。电桥的优势是元件更省恒流源的优势是信号链路更直观两者都可以作为PT100前端方案。5.2 更省心的ADS1220方案如果不想搭模拟前端现在有集成度更高的方案TI的ADS1220一个24位ΔΣ ADC内部集成了可编程增益放大器、两个恒流源、温度传感器校准、以及支持三线制PT100的完整测量逻辑。用ADS1220做PT100测温外设只需要一个MCU和几颗电容连线方式按数据手册把PT100接到IDAC输出和AIN输入即可代码配置寄存器后直接读温度值精度反而比分立方案更高。这个芯片在热词榜单里和PT100同时出现不是偶然它是目前低功耗高精度PT100测温的主流选择。如果项目对成本和尺寸有要求又想省掉模拟设计的调试时间建议直接评估ADS1220。它的缺点是芯片相对难买、价格高于分立方案且24位数据通过SPI通信代码要会一点寄存器配置。5.3 可扩展的记录与报警功能测温电路打通后扩展应用是水到渠成的事。我在现有系统上加了一个12864 OLED显示屏实时显示当前温度和最高最低温度记录又用串口把温度数据发到上位机存成CSV做温升曲线分析。如果做恒温控制可以加一个继电器或者PID控制输出把温度闭环控制在一个设定点附近。PT100测量的延时特性本身决定了它不太适合做快速温度响应控制但配合合理的PID参数在加热水箱、恒温箱这类惯性较大的对象上效果很好。还有一个容易被忽略的小功能断线检测。程序里已经判断了R_PT返回值异常的情况当PT100断线时VPT会趋于VEXC计算出来的R_PT接近无穷大当PT100短路时R_PT接近0。这两种状态在软件里都可以识别并设置独立报警标志。加了这个判断后现场维护人员排查传感器故障就方便多了。这个电路做下来除了硬件搭建那几天后面大部分时间其实都在和误差较劲。零点漂移、导线电阻、自热效应、基准漂移每一个问题单独看都不大但叠加在一起就可能把误差推到好几摄氏度。给还在做类似项目的朋友一个建议第一步先别急着上代码花点时间把电桥参数和放大倍数在纸上算清楚第二步无论做多简单的样品都要留出校准位置那对你在调试时快速定位问题帮助很大。后面如果打算做量产认真关注一下ADS1220这类集成方案省下的时间和精力远超多花的那几十块钱元器件成本。
返回列表