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一样,方便计算.
#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电阻为8.27欧
通过查表可知,
温度是29度时,NTC3950 @10K 的阻值在8.5078~8.3104之间
温度是30度时,NTC3950 @10K 的阻值在8.1556~8.0574之间
因此可以推测出,此时的温度应该在29~30之间,并偏向于30度,而程序计算出来的温度是29.66
下面是10K NTC3950的温度对照表