
表1
Excel画折线图
例如:MF5A-103F-3380型热敏电阻 MF5A ------> 环氧包装型号 103 --------->常温25度的标称阻值为10K F -----------> 允许偏差为±1% 3380 ------> 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)。
-----------------------------------------------------------------------------------------------------
}
使用经验公式法在整个温度区间内误差很大,多采用分段曲线拟合法(多项式拟合泰勒展开式)、Steinhart和Hart方程、查表法,以及根据Rt = R*exp(B(1/T1-1/T2))公式计算等。
------------------------------------------------------
分段曲线拟合的介绍移步: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)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
输入阻值即可得到较准确的温度,对应关系见表1所示,以下截取表1部分,温度相当准确。
图2.3.6
C-Free代码:
图2.3.7 45168欧姆对应-10℃
图2.3.8 930欧姆对应104℃
------------------------------------------------------
查表法介绍:https://download.csdn.net/download/liht_1634/85130879
------------------------------------------------------
1)硬件设计
这里使用的是MF52-103/100K热敏电阻,其中B为3950,它与10K电阻串联,由于热敏电阻随着温度的升高,电阻值降低,所以10K电阻两端的电压将上升。
图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;
}
-----------------------------------------------------------------------------------------------------
STM32单片机可用于嵌入实际工程的程序移步:STM32F103_AM2320,51单片机可联系本人提供。
------------------------------------------------------
Proteus仿真多机通讯_仓库测温移步:DS18B20多机通讯_仓库测温(Proteus)-单片机文档类资源-CSDN下载
-----------------------------------------------------------------------------------------------------