热敏电阻温度检测-分段曲线拟合、Steinhart-Hart与查表

智能硬件
嵌入式领域优质创作者
2023-06-26 20:50:48

内容包括3380热敏电阻温度阻值表,分段曲线拟合(含系数计算),Steinhart-Hart方程(含系数计算),VF变换查表法,根据Rt=R*exp(B(1/T1-1/T2))计算,专用模块检测温度的介绍。紫色文字是超链接,点击自动跳转至相关博文。持续更新,原创不易!   

目录:

一、3380热敏电阻温度阻值表

二、温度检测方法

1、经验公式法

2、分段曲线拟合法

3、Steinhart-Hart方程

1)概述   2)Steinhart-Hart方程   3)C代码

4、VF变换查表法

1)硬件电路   2)VF变换查表法介绍   3)关于查表的程序移步

5、根据Rt = R*exp(B(1/T1-1/T2))计算

1)硬件设计   2)NTC热敏电阻的计算   3)C程序设计

附录1、专用模块检测温度

1、国产奥松AM2320

2、DS18B20

-----------------------------------------------------------------------------------------------------

一、3380热敏电阻温度阻值表

表1

此表格的值可以使用Excel进行计算,曲线的生成见:Excel画折线图

例如:MF5A-103F-3380型号的热敏电阻 

           MF5A ------> 型号环氧封装 

           103 ---------> 常温25度的标称阻值为10K 

           F -----------> 允许偏差为±1% 

           3380 ------> B值(电子元件-电阻四、热敏电阻与压敏电阻1、热敏电阻的B值)为3380K的NTC热敏电阻

那它的Rp=10000, T2=273.15+25,B=3380, RT=10000*EXP(3380*(1/T1-1/(273.15+25)),这时候代入T1温度就可以求出相应温度下热敏电阻的阻值,注意温度单位的转换。例如我们要求零上10摄氏度的阻值,那么T1就为(273.15+10)。

较详细的热敏电阻-温度阻值表(5K、10K、15K、50K、100K)

-----------------------------------------------------------------------------------------------------

二、温度检测方法

1、经验公式法

公式:T1 =ln(Rt/Rp)/B+1/T2

​#include "math.h"
const float Rp=10000.0; //10K常温下的标称阻值
const float RT2 = (273.15+25.0);//T2=25度对应的开氏温度
const float Bx = 3380.0;//B值
const float Ka = 273.15;//开氏温度

float Get_Temp(void)
{
  float Rt;
  float temp;
  Rt = Get_TempResistor();
//like this Rp=10000, T2=273.15+25,B=3380, Rt=10000*EXP(3380*(1/T1-1/(273.15+25))
//T1 = 1/((ln(Rt/Rp))/B+1/T2);B=LN(Rt/R)*(T1*T2)/(T2-T1)
  temp = Rt/Rp;
  temp = log(temp);//ln(Rt/Rp)
  temp/=Bx;//ln(Rt/Rp)/B
  temp+=(1/RT2);
  temp = 1/(temp);
  temp-=Ka;
  return temp;
}

使用经验公式法在整个温度区间内误差很大,一般采用分段曲线拟合法(多项式拟合泰勒展开式)、Steinhart和Hart方程、VF变换查表法,以及根据Rt = R*exp(B(1/T1-1/T2))公式计算。

-----------------------------------------------------

2、分段曲线拟合

分段曲线拟合的介绍移步:https://download.csdn.net/download/liht_1634/85130856。 分段曲线拟合系数计算收录在百度云盘“建模系数计算”,或移步:NTC热敏阻值_分段曲线拟合_系数计算,其计算用到“行列式与克莱姆法则”。

图2.2.1 温湿度传感器与STC12C5608AD的连接

​​#define R2t(Rt)  (Rt)*(Rt)
unsigned int  vin0[2];      //每个通道最近一次采样的电压值

图2.2.2 分段曲线拟合C代码

------------------------------------------------------

3、Steinhart-Hart方程

1)概述

Steinhart-Hart方程可以很好地近似将NTC的电阻值转换为温度。它不像热敏电阻表那么精确(毕竟是近似值),但3系数时已相当精确,如图2.3.5所示。

相关介绍移步:NTC热敏电阻Steinhart-Hart方程的应用(高精度4系数)-单片机文档类资源-CSDN下载

-----------------------------

2)Steinhart-Hart方程

它是已被确定为对于NTC热敏电阻和NTC探针组件中的电阻温度关系最好数学表达式的经验公式。最常见的等式是:

图2.3.1 Steinhart-Hart等式1

其中:“T”以开尔文为单位,A,B和C是如下导出的系数:

首先,在三个不同的温度下测量热敏电阻。温度应均匀分布,间隔至少10度。使用这三个温度使用以下步骤求解三个联立方程:

图2.3.2 Steinhart-Hart方程

图2.3.3 求解系数

了解热敏电阻的A、B和C,它们以两种方式使用Steinhart-Hart方程。

1)如果已知电阻且需要温度,则使用上面的等式1。

2)如果已知温度并且需要预期阻值,请使用下面的公式5:

图2.3.4 Steinhart-Hart方程式5

-----------------------------

3)C代码

C语言里面只有两个函数log和log10,其中函数 log(x) 表示是以e为底的自然对数,即 ln(x)函数。 log10(x) 以10为底的对数,即 lg(x)。以其它数为底的对数用换底公式来表示:loga(b)=ln(b)/ln(a),C语言表示成log(b)/log(a)。
Tsteinhart=1/(A+B*log(Rth)+C*pow(log(Rth),3))-273.15;
Tbeta=1/(1/(273.15+25)+1/Beta*log(Rth/R25))-273.15;

系数A、B与C的求解移步:Steinhart-Hart温度系数计算

图2.3.5 计算截图

输入阻值即可得到较准确的计算温度值,45168Ω计算值为-9.9926901℃。以下截取了表1的部分内容,45168Ω对应-10℃。可见温度已经相当准确。

图2.3.6 温度阻值表部分截图

C-Free代码(使用教程):

图2.3.7  45168欧姆对应-9.96℃

图2.3.8  930欧姆对应104.07℃

------------------------------------------------------

4、VF变换查表法

1)硬件电路

图2.4.1  电路原理图

NE556是将两个NE555集成在一起。

NE556左侧、C11、R35、VT5、R37、C14等组成硬件看门狗电路;NE556右侧、热敏电阻、R28、C12组成VF变换电路,将热敏电阻阻值的变化转换为脉冲频率的变化。此电路批量生产验证过,可放心使用在实际工程中。

-----------------------------

2)VF变换查表法介绍

https://download.csdn.net/download/liht_1634/85130879

-----------------------------

3)关于查表的程序移步

单片机常用C代码汇总二、二分值查表

------------------------------------------------------

5、根据Rt = R*exp(B(1/T1-1/T2))计算

1)硬件设计

这里使用的是MF52-103/100K热敏电阻,其中B为3950,它与R6电阻串联,由于热敏电阻随着温度的升高,电阻值降低,所以R6电阻两端的电压将上升。R7、C1组成RC滤波,其原理详见:RC电路相关计算

图2.5.1 硬件电路

-----------------------------

2)NTC热敏电阻的计算

NTC 热敏电阻温度计算公式:Rt = R*exp(B(1/T1-1/T2))

其中,T1和T2指的是K度,即开尔文温度。

Rt 是热敏电阻在T1温度下的阻值。

R是热敏电阻在T2常温下的标称阻值。100K的热敏电阻25℃的值为10K(即R=10K)。T2=(273.15+25)

exp是e的n次方

B值是热敏电阻的重要参数

通过转换可以得到温度T1与电阻Rt的关系T1=1/(ln(Rt/R)/B+1/T2),这里可以将ln换算成log,即T1=1/(log(Rt/R)/B+1/T2)。

对应的摄氏温度t=T1-273.15,同时+0.5的误差矫正。

-----------------------------

3)C程序设计

首先,我们只需要知道当前温度下热敏电阻的阻值就可以算出温度。

该硬件电路是一个简单的串联分压电路,所以通过欧姆定律就可以很容易求得当前温度下的热敏电阻的阻值。

下面是C实现的代码。

//电压换算成温度
void temp_data(void)
{
  float Rt=0;
  float Rp=10000;
  float T2=273.15+25;
  float Bx=3950;
  float Ka=273.15;
  float vol=0;
  
  vol=(float)((Get_Adc_Average(ADC_Channel_5,10))*(3.3/4096));
  Rt=(3.3-vol)*10000/vol;
  temp=1/(1/T2+log(Rt/Rp)/Bx)-Ka+0.5;
}

-----------------------------------------------------------------------------------------------------

附录1、专用模块检测温度

1、国产奥松AM2320

STM32单片机可用于嵌入实际工程的程序移步:STM32F103_AM2320,51单片机可联系本人提供。

------------------------------------------------------

2、DB18B20
Proteus仿真多机通讯_仓库测温移步:DS18B20多机通讯_仓库测温(Proteus)-单片机文档类资源-CSDN下载

-----------------------------------------------------------------------------------------------------

...全文
2010 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

69

社区成员

发帖
与我相关
我的任务
社区描述
专注于硬件设计已逾二十年
硬件工程arm开发pcb工艺 个人社区 浙江省·温州市
社区管理员
  • 爱上电路设计
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧