NTC温度检测程序
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的溫度對照表
?
總結
- 上一篇: 拼多多 CEO 陈磊:公司仍处“投入期”
- 下一篇: 人地人成语疯狂猜成语是什么(人的本质是什