69
社区成员




内容包括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下载。
-----------------------------------------------------------------------------------------------------