NTC温度检测程序

NTC公式:RT = RN *EXP(B*(1/T-1/TN))

对上面的公式解释如下:

1.       RT 是热敏电阻的当前阻值

2.       R是热敏电阻在TN常温下的标称阻值

3.       B值是热敏电阻的温度系数

4.       EXP是e的n次方;

5.       这里T和TN指的是K度即开尔文温度,K度=273.15(绝对温度)+摄氏度;

6.       T为当前温度;TN为常温25℃;

比如 NTC热敏电阻 10K (型号:NTC_10k_3950) 5%精度 B值:3950 1%

10K就是25℃时的阻值,3950为温度系数;

 

下面是对单片机ADC采集到的数值的计算:

 

ADC采集到的值为NTC的电压值.

R16的值最好和RN一样,方便计算.

NTC温度检测程序_第1张图片

#include "math.h"

#define B 3950.0//温度系数

#define TN 298.15//额定温度(绝对温度加常温:273.15+25)

#define RN 10// 额定阻值(绝对温度时的电阻值10k)

#define BaseVol 5.04 //ADC基准电压
float Get_Tempture(u16 adc)
{
        float RV,RT,Tmp;
        RV=BaseVol/1024.0*(float)adc;//ADC为10位ADC,求出NTC电压:RV=ADCValu/1024*BaseVoltag
        RT=RV*10/(BaseVol-RV);//求出当前温度阻值 (BaseVoltage-RV)/R16=RV/RT;
        Tmp=1/(1/TN+(log(RT/RN)/B))-273.15;//%RT = RN exp*B(1/T-1/TN)%
         return Tmp;
}

RV=BaseVol/1024.0*(float)adc;这里用到的是1024是指ADC是10位的ADC,如果用的是12位的ADC就要用4096去计算了,如果是N位的,就要用2的N次方去算。

Arduino上面测结果

NTC温度检测程序_第2张图片

 实测电路板的NTC电阻为8.27

NTC温度检测程序_第3张图片

通过查表可知,

温度是29度时,NTC3950 @10K 的阻值在8.5078~8.3104之间

温度是30度时,NTC3950 @10K 的阻值在8.1556~8.0574之间

因此可以推测出,此时的温度应该在29~30之间,并偏向于30度,而程序计算出来的温度是29.66

下面是10K NTC3950的温度对照表

 

你可能感兴趣的:(NTC温度检测程序)