常用温度传感器的采集和换算方法

本文深入探讨了DS18B20、PT100、CU50等常见温度传感器的工作原理,及其在不同场景下的优缺点。通过对比分析,为读者提供了选择合适温度传感器的依据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、前言

我觉得温度传感器应该是用量最大的传感器了,我也接触了好几种温度传感器,电阻型(50Ω,100Ω)、电流型(4~20mA)、RS485总线型、单总线型,各有各的特点。因为温度传感器使用很频繁,有必要总结一下几种最常用的温度传感器的采集方式和数据换算方法。

2、DS18B20

学习单片机的时候就很早就学过DS18B20温度传感器,测量范围为 -55 ℃ ~+ 125 ℃ ; 在 -10~+ 85°C范围内,精度为 ± 0.5°C 。DS18B20的的特点是使用单总线通信,单片机只需要使用一根IO口与其通信就能获取温度数据,而且单总线上可以并入多个传感器。但是单总线也是DS18B20的缺点之一,单总线的长度不能太长,否则容易导致信号不稳定,易受干扰,所以适合测量电路板的温度、机箱内温度等,如果测量点在2米以外这通信就不稳定了。另外主机端读取温度的时候时序要求比较严格,通信一次需要消耗ms级的运算时间(其实大部分是在循环等待),通信过程中不宜被打断,如果关闭全局中断,会影响其他重要事件的响应。

DS18B20的通讯时序就不介绍了,网上实在是太多资料了。

3、PT100/PT1000

PT100和PT1000传感器是一样的,都是电阻型的传感器,使用的材质为铂电阻(很贵的样子),温度的采集范围可以在-200℃~+850℃,比DS18B20温度传感器的测量范围宽很多。PT100传感器在0℃的时候为100欧姆,PT1000传感器在0℃的时候为1000欧姆,使用的比较多的是PT100,这里就介绍PT100传感器。

PT100的温度分度表百度上满满的。表面看来PT100的测量温度T和电阻R呈现线性关系,但是实际上不完全是线性的,偏差大的地方会有好几摄氏度的误差,如果想要得到比较高精度的温度测量结果就不能按照线性关系来计算。使用查表法可以计算比较精确的温度值,PT100的分度表是每5℃记录一次阻值,我们如果测量测到电阻为Ra,这时候从电阻分度表中使用二分法进行查找找到电阻Ra处于哪两个阻值Rb、Rc之间(假如没有正好落在阻值上面),然后在Rb和Rc之间近似按照线性计算Ra对应的温度值。实际使用的精度非常高,主要误差还是在测量传感器电阻上。

4、CU50/CU100

CU50和CU100的关系跟PT100和PT1000的关系是一样的,只介绍CU50传感器。CU50的CU表示的是铜(PT表示的是铂),也就是说CU50使用的是铜材质(很便宜的样子),但是CU50得温度测量范围为-50°C-150°C,在测量温度在-50°C-150°C范围之内的时候,传感器电阻和温度处于一定的函数关系,当低于-50℃或者高于150℃的时候就不符合那个函数式了,可能是由于铜的材质问题,所以CU50一般只能测量-50°C-150°C温度范围。

CU50热电阻分度表参考文章:https://wenku.baidu.com/view/9c5ee92e14791711cc791781.html

当测量温度在-50℃<t<150℃时,,其中A=4.280×10-3;B=-9.31×10-8;C=1.23×10-9,R(0℃)=50。 这是传感器电阻关于温度的函数式,但是我们真正使用的时候能测量出来传感器的电阻,需要求出来对应的温度,所以这个式子需要把X轴和Y轴掉个。但是发现这个式子是一个一元三次函数,我试着解了一次想得到温度T关于电阻r的函数式T=f(r),着实解不出来,那就耍点技巧--将次。

假设测量的温度t为150℃,这时候电阻R差不多为82欧姆,这时候:

1+At+Bt(t-100℃)+Ct2(t-100℃)

= 1 + A*150 + B*150*(150-100)+C*150^2*(150-100)

= 1 + 0.642 - 0.00069825 + 0.00138375。

可以看到上面的几项中后两项小到几乎可以忽略掉,其实不管t为多少,后面两项的值都远小于前两项的,也就是说可以去掉Bt(t-100℃)和Ct2(t-100℃)即可。这时候式子:

就可以转成:

R = R(0℃)[1+At]

R = 50 * [1+At]

这下式子被“降次打击”了,既可以求出t关于R的关系式了:

t = (R/50 - 1) / A

假如测量到的电阻为82.134Ω(150℃),代入上式计算得到 t = 150.159℃,假如测量到的电阻为39.242Ω(-50℃),计算得到的 t = -50.28,误差并不大,属于可以接受大范围之内。降次打击成功。

如果对上面计算的精度还是满意的话,需要解一元三次方程:
R = R(0℃)[1+At+Bt(t-100℃)+Ct^2(t-100℃)]  ..........................................①

R由采集系统测量测到,则有:

Y = R(0℃)[1+At+Bt(t-100℃)+Ct^2(t-100℃)] - R  ..........................................②

求解②式与X轴的交点即可,艺高人可以自行求解。

如果解不出来还有一个常规办法就是查表法,和PT100温度传感器一样。

 

 

 

 

 

 

### 常见传感器数据采集电路设计 对于气体MEMS传感器的数据采集,其核心在于如何有效地将物理量变化转化为可处理的电信号并加以优化。具体来说: #### 传感器接口电路 为了实现从电容信号到电压信号的有效转变,通常采用运算放大器构建的跨阻抗放大器结构[^1]。这种配置能够提供高输入阻抗特性,从而减少对原始信号源的影响。 ```circuitikz \begin{circuitikz}[american, scale=0.85] % Components placement and connections here... \end{circuitikz} ``` #### 信号放大电路 考虑到实际应用中的微弱信号可能被噪声淹没,在此之后会加入额外的一级或多级放大环节来增强有用成分。常见的做法是利用差分放大技术提高共模抑制比(CMRR),确保即使存在干扰也能获得较为纯净的目标信号。 #### 温度补偿机制 由于环境因素可能导致测量偏差,因此引入了温度反馈控制回路。这可以通过热敏电阻或其他形式感知元件监测当前工作条件下的温变情况,并据此调整偏置电流或参考电压水平,使得最终输出保持稳定可靠。 #### A/D 转换模块 当模拟信号准备好后,则需借助ADC完成数字化过程以便后续计算单元读取解析。这里推荐选用具备较高分辨率以及良好线性的器件型号,比如ADS1256系列,它支持多通道同步采样功能特别适合复杂场景下多种参数的同时获取。 #### 数据处理部分 最后一环涉及软件算法层面的设计思路,即怎样高效地对接收到的信息做预处理、特征提取乃至模式识别等工作流程安排。Python语言配合NumPy库可以很好地满足此类需求,下面给出一段简单的实例代码用于说明基本操作方法: ```python import numpy as np def preprocess_data(raw_signal): """ 对原始信号执行初步清理平滑 """ filtered = savgol_filter(raw_signal, window_length=9, polyorder=3) normalized = (filtered - min(filtered)) / (max(filtered) - min(filtered)) return normalized data_stream = read_from_adc() # 获取来自ADC的数据流 cleaned_data = preprocess_data(data_stream) print(cleaned_data[:10]) # 打印前十个样本点作为验证 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值