NTC热敏电阻
一、NTC热敏电阻简介
NTC,全程Negative Temperature Coefficient,即负温度系数。NTC热敏电阻随着温度的升高电阻值呈现下降趋势。常用作温度传感器。
RT=R0*exp(B*(1/T-1/T0))
RT:周围温度为T时的电阻值。R0:周围温度为T0时的电阻值。B:材料常数,一般在25℃测得,与电阻的温度系数成正相关。
二、NTC热敏电阻测温原理
ADC用来采集电压。
R1与R2串联。R=R1+R2
U1=U(R1/(R1+R2)) U2=U(R2/(R1+R2))
由ADC采集到的电压U2可推算:U2=ADC/2^(n)*3.3
再由公式可得出热敏电阻的温度。
三、测温实操代码
#define B 3950.0
#define TN 298.15
#define RN 10
#define BaseVol 3.3float Get_Tempture(float adax)
{float RV, RT, Tmp;RV=adax;RT = RV * 10 / (BaseVol - RV);Tmp = 1 / (1 / TN + (log(RT / RN) / B)) - 273.15;return Tmp;
}
int main(void)
{/*模块初始化*/OLED_Init(); //OLED初始化AD_Init(); //AD初始化/*显示静态字符串*/OLED_ShowString(1, 1, "ADValue:");OLED_ShowString(2, 1, "Voltage:0.00V");OLED_ShowString(3, 1, "Temp:");while (1){ADValue = AD_GetValue(); //获取AD转换的值Voltage = (float)ADValue / 4095 * 3.3; //将AD值线性变换到0~3.3的范围,表示电压Temp=Get_Tempture(Voltage);OLED_ShowNum(1, 9, ADValue, 4); //显示AD值OLED_ShowNum(2, 9, Voltage, 1); //显示电压值的整数部分OLED_ShowNum(2, 11, (uint16_t)(Voltage * 100) % 100, 2); //显示电压值的小数部分OLED_ShowNum(3, 6, Temp,3); //显示温度Delay_ms(100); //延时100ms,手动增加一些转换的间隔时间}
}