float Resistance_To_Temperature(float Res,float Res_Base)
{
/*NTC热敏电阻的温度计算涉及到特定的公式和一些关键参数。首先,需要了解NTC热敏电阻的阻值与其所处温度之间的关系。
这种关系通常可以通过以下公式表示:
Rt = R * EXP(B * (1/T1 - 1/T2))
其中:
Rt是热敏电阻在T1温度下的阻值。
R是热敏电阻在T2常温(通常为25℃)下的标称阻值。
T1和T2指的是K度,即开尔文温度,其中K度 = 摄氏度 + 273.15。
B是热敏电阻的B值,这是一个重要的固有参数。
EXP是e的n次方。
通过测量热敏电阻在某一温度下的阻值Rt,并已知其在常温下的阻值R和B值,可以使用上述公式反推出T1的值。计算T1的公式为:
T1 = 1 / (ln(Rt/R)/B + 1/T2)
其中ln表示自然对数。*/
float R = 100;//保温杯使用的是100k的NTC R是热敏电阻在T2常温(通常为25℃)下的标称阻值
float T2 = 273.15 + 25;//K度,即开尔文温度,其中K度 = 摄氏度 + 273.15
float B = 3950;//B是热敏电阻的B值,这是一个重要的固有参数
float Ka = 273.15;//0℃=273.15K
float Temperature;
R = Res_Base;
if (Res <= 0.3) //电阻值小于0.3,认为是出现了NTC对地短路现象,理论上这个阻值对应温度值达到了250℃以上
{
//实测NTC短路,阻值计算出来小于 0.01
Temperature = NTC_Temp_Max;
}
else if (Res >= 4200)//电阻值大于4200,认为是出现了NTC开路现象,理论上这个阻值对应温度值低于-40℃
{
//实测NTC开路(不接NTC),阻值计算出来大于 4500
Temperature = NTC_Temp_Min;
}
else
{
Temperature = 1 / (1 / T2 + log(Res / R) / B) - Ka;//根据阻值计算温度值
if (Temperature >= 93)//在100℃时,公式法比查表法温度高2.23℃,此处减去偏差
{
Temperature -= 2.23f;
}
else if (Temperature >= 80)//在85℃时,公式法比查表法温度高1.15℃,此处减去偏差
{
Temperature -= 1.15f;
}
}
return Temperature;
}
下图右边为用C#运行此函数计算出来的阻值与温度对应关系