NTC温度计算(附程序)

首先第一部分需要先弄明白它的名字中的各个部分都是什么意思,觉得不需要的可以直接跳过。

一、NTC命名

在淘宝上随便搜了一个NTC电阻,命名如下:
在这里插入图片描述
1、MF代表含义:**

电阻命名 含义
MF51 单端玻璃封装NTC热敏电阻器
MF52 小黑头测温型NTC热敏电阻
MF58 玻壳测温型NTC热敏电阻器
MF72 功率型NTC热敏电阻器
MF73 大功率NTC热敏电阻器

2、10K、5K ··· 代表含义:
这里的10K代表的是在25℃下的标准阻值。同理5K代表在25℃下的标准阻值为5K。
3、B值:
B值单位是开尔文温度(K)。半导体陶瓷经过高温烧结后通过一系列的加工工序形成具有一定电阻率的NTC热敏芯片,每种配方和烧结温度下只有一个B值。NTC热敏电阻的B值与产品电阻温度系数正相关,也就是说B值越大,其电阻温度系数也就越大。(百度百科答案,其实这里只需要知道这是一个系数就可以了,因为下面计算会用到)

三、硬件连接

在这里插入图片描述
ADC采集NTC电阻两端电压。通过电压计算得出NTC此刻阻值Rntc(下面会用到)。

三、根据阻值计算得出温度

B:B值(3435、3950···)
R25:指NTC在25℃下的阻值(10K、5K、100K···)
Rntc:二中计算得到的实时NTC阻值
T25:25℃下的开尔文温度,也就是298.15
Tn:此时计算得到的实际开尔文温度(要得到摄氏度 C=Tn-273.15

根据二计算得到的电阻值,根据开尔文公式,可以直接得到当前的开尔文温度Tn公式如下:B=(lnR25 - lnRntc)/(1/T25 - 1/Tn)
得到当前的开尔文温度值:Tn
根据C=Tn-273.15计算得到摄氏度。

四、程序

由于需要用到ln,需要用到math.h。需要占用较大资源,所以粘贴一个实现了ln的算法:

double myln(double a)
{
   int N = 15;//我们取了前15+1项来估算
   int k,nk;
   double x,xx,y;
   x = (a-1)/(a+1);
   xx = x*x;
   nk = 2*N+1;
   y = 1.0/nk;
   for(k=N;k>0;k--)
   {
     nk = nk - 2;
     y = 1.0/nk+xx*y;
     
   }
   return 2.0*x*y;
}

开尔文温度算法:

#define T25 298.15
#define R25 10
#define B	3435

float Get_Kelvin_Temperature(float Rntc)
{
	float N1,N2,N3,N4;
	N1 = (myln(R25)-myln(Rntc))/B;T
	N2 = 1/T25 - N1;
	N3 = 1/N2;
	N4 = N3-273.15;
	
	return N4;
}

以上程序经过实测OK。如果你在实际使用时发现有问题,看一下使用的设备是否支持浮点运算。

五、验证

可以去嘉立创找一下相应的说明书,验证一下ADC采集之后计算得到的电阻值,经过计算出来得到的温度是否正确。本文中只截取一部分常用温度供读者验证。
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43448742/article/details/107150152
今日推荐