一、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文温度,即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;
N2 = 1/T25 - N1;
N3 = 1/N2;
N4 = N3-273.15;
return N4;
}
以上程序经过实测OK。如果你在实际使用时发现有问题,看一下使用的设备是否支持浮点运算。
五、验证 可以去嘉立创找一下相应的说明书,验证一下ADC采集之后计算得到的电阻值,经过计算出来得到的温度是否正确。本文中只截取一部分常用温度供读者验证。