|
我也做過類項目,通過電壓、電流關(guān)系、計算出電阻值,然后再用公式計算得到溫度:
限流電阻100K
//***********************************************
//設(shè)計人:洋洋
//日期:2017.05.22
//版本:V1.1
//函數(shù)功能:求電阻值函數(shù)
//入口參數(shù):無
//出口參數(shù):電阻值,單位為KΩ
//備 注:
//************************************************
float ResCalculate(void)
{
float Value_Res = 0.0;//電阻值,單位為KΩ
float Average_Code = 0;
Average_Code = (float)Get_Adc(5); //獲取AD值
Value_Res = 100000 * Average_Code / (4095.0-Average_Code); //換算電阻值,限流電阻100000歐姆
return Value_Res;
}
//設(shè)計人:洋洋
//日期:2017.05.22
//版本:V1.1
//函數(shù)功能:求NTC熱敏電阻的溫度值
//入口參數(shù):電阻值,單位為KΩ
//出口參數(shù):攝氏度
//備 注:
//NTC熱敏電阻溫度計算公式:
//Rt = R *EXP(B*(1/T1-1/T2))
//這里T1和T2指的是K度即開爾文溫度,K度=273.15(絕對溫度)+攝氏度;其中T2=(273.15+25)
//Rt:是熱敏電阻在T1溫度下的阻值;
//R:是熱敏電阻在T2常溫下的標(biāo)稱阻值;
//B:值是熱敏電阻的重要參數(shù);
//EXP是e的n次方;
//求:T1 =1/(ln(Rt/R)/B+1/T2)
//程序:
//
const float Rp =10000.0; //10K
const float T2 = (273.15+25.0); //T2
const float Bx = 3950.0; //B
const float Ka = 273.15;
float Get_Temp(float Value_Res) //溫度計算公式
{
float Rt;
float temp;
Rt = Value_Res;
//like this R=5000, T2=273.15+25,B=3470, RT=5000*EXP(3470*(1/T1-1/(273.15+25)),
temp = Rt/Rp;
temp = log(temp); //ln(Rt/Rp)
temp /= Bx; //ln(Rt/Rp)/B
temp += (1/T2);
temp = 1/(temp); //開爾文溫度
temp -= Ka; //攝氏度
return temp;
}
//END
|
|