MF52和MF58型NTC热敏电阻测温原理及公式法C语言程序

什么是NTC电阻

NTC是负温度系数热敏电阻,其电阻值对温度变化敏感,在不同的温度下,可以呈现不同的电阻值。温度增加时,电阻值降低。NTC晶体可根据不同需求封装成不同结构的热敏电阻元件,常见的封装结构有:MF58玻封二极管热敏电阻、MF52塑封热敏电阻、MF55薄膜封装温度传感器和MELFF封装温度传感器等等。

MF52和MF58

最常用的是MF52和MF58两种类型,主要区别就是可测量的温度范围不同,MF58玻封的耐温更高。MF52 工作温度范围:-55℃~ + 125℃,MF58 工作温度范围:-45~ + 250C。

MF52 系列采用环氧树脂涂装而成,最常见的是用在电池组的过温保护。

MF58系列主要封装形式采用玻璃封装,常用于温度补偿。

NTC测温电路

NTC测温电路比较简单,R2为热敏电阻,只需串联一个高精度的电阻分压接到单片机的ADC即可。R1上拉的电源VCC应该和单片机ADC参考电源共用一个电源。

NTC原理图

温度计算公式

Rt = R * EXP( B * ( 1/T1 - 1/T2 ) )

其中,T1和T2指的是K度,即开尔文温度。

Rt 是热敏电阻在T1温度下的阻值。

R是热敏电阻在T2常温下的标称阻值。100K的热敏电阻25℃的值为100K(即R=100K)。T2=(273.15+25)

EXP是e的n次方

B值是热敏电阻的重要参数,厂家手册会写明。

通过转换可以得到温度T1与电阻Rt的关系

T1 = 1 /( ln(Rt/R)/ B + 1/T2 )

(所以对应只有一个Rt未知数即可求出T1实时温度,通过ADC计算出来)

最后实际的摄氏温度 t= T1-273.15,同时+0.5的误差矫正。在C语言中ln表示为log。

看上图,设VCC=5V,单片机为10位AD,通过AD的值可以测出热敏电阻R2输出的电压VOL =ADC*(5.0/1024),根据分压公式推导,U1/U2=R1/R2,U1*R2=U2*R1,R1=(U1*R2)/U2,R2=(U2*R1)/U1,那么热敏电阻的阻值R2=VOL*10000/(5-VOL),Rt=R2代入公式即可求出温度。

C语言代码

使用KEIL编译,要包含数学函数头文件#include<math.h>

float CalculationTemperature(void)
{
	  uint ad;
	  float Temperature=0.0;
	  float R2=0.0;
	  float R1=10000.0;
	  float T2=298.15;//273.15+25;
	  float B=3435.0;
	  float K=273.15;
	  float R2V=0.0;
//	
	  ad=GetADCResult(1);
	  Delay(10);
	  R2V=(ad*(5.0/1024));
	  R2=(R2V*R1)/(5-R2V);
	  Temperature=1.0/(1.0/T2+log(R2/R1)/B)-K+0.5;
	  
	  return Temperature;
}

使用STC12C5a60S2单片机的10位AD,用上面代码效果还行吧实测,与某牌额式体温计相差一两度。

上面是用公式通过各种运算出来的温度,速度慢的单片机可能需要百毫秒以上,还有一种方式是使用查表法,先计算好相应温度下的AD值放在数组里,直接查。具体请看下一篇:

MF52和MF58型NTC热敏电阻测温原理及查表法C语言程序

版权声明:
作者:wawooo
链接:http://www.wawooo.com/186.html
来源:挖窝网
文章版权归作者所有,未经允许请勿转载。

THE END
分享
手机浏览
文章目录
关闭