所谓NTC热敏电阻器就是负温度系数热敏电阻器,即就是电阻值随着温度上升而迅速下降,因此可以利用这个特性来测量温度。

其中,T1和T2指的是K度,即开尔文温度,开氏度 = 摄氏度+273.15; Rntc是热敏电阻在T1温度下的阻值; R是热敏电阻在T2常温下的标称阻值,50K的热敏电阻在25℃的值为50K(即R=50K),即T2=273.15+25 ; B是热敏电阻的固有参数,这里B等于3950K。 转换后T1等于如下:

如上计算出的是开尔文温度,再减去273.15,就是摄氏度。
在math.h库中,有如下log和log10的函数,都是用于求对数的,log函数其实就是数学中的ln函数。


可以看出热敏电阻和R80是分压的,A点的电压就是热敏电阻的分压值,单片机通过采集A点的电压,即可计算出热敏电阻的阻值。

列出核心代码:
float K=273.15;
float T1,T2=K+25;
float B=3950.0;
float R=50.0; //50k热敏电阻
float Temp;
T1=1/((log(Rntc/R))/B+1/T2);
printf("T1=%f\r\n",T1);
Temp=T1-K;
printf("Temp=%f\r\n",Temp);
下图列出了部分温度与阻值关系对应表:

——————END——————
相关推荐:
STM32f407程序移植到GD32F407
一文彻底了解SSD1306驱动0.96寸OLED
排查矩阵按键丢键问题
用GD32E10x替代STM32F10x程序移植记录