#include <math.h>
float T_c=0.0; //溫度值
// 定義常量
#define R_FIXED 10000.0 // 固定電阻值10kΩ
#define B_CONST 3950.0 // NTC的B常數
#define T0 298.15 // 25℃轉換為開爾文
#define R0 10000.0 // NTC在25℃時的電阻值10kΩ
float calculate_temperature(float voltage) {
float R_ntc, T;
float V_supply = 3.3; // 電源電壓3.3V
// 計算NTC電阻值
R_ntc = R_FIXED * (V_supply / voltage - 1);
// 計算溫度(開爾文)
T = 1 / (1 / T0 + log(R_ntc / R0) / B_CONST);
// 轉換為攝氏度
T = T - 273.15;
return T;
}
T_c=calculate_temperature( filtered_voltage[1]); //電壓轉溫度計算 filtered_voltage[1]為ADC采樣轉換后電壓
要求不高可以使用上面程序,按硬件修改相應電阻值 |