NTC热敏电阻计算温度之C代码
代码已经验证 温度误差可以接受
下面展示部分 代码
。
///< ADC 单次采集 Ntc
uint32_t Adc_ReadNtcVal(void)
{
uint32_t u32AdcRestult;
///< ADC 采样通道配置
Adc_CfgSglChannel(AdcExInputCH21); //
///< 启动单次转换采样
Adc_SGL_Start();
while(TRUE != Adc_GetIrqStatus(AdcMskIrqSgl));
//ADC 中断/采样完成状态清除
Adc_ClrIrqStatus(AdcMskIrqSgl );
u32AdcRestult = Adc_GetSglResult(); ///< 获取采样值
return u32AdcRestult;
}
//电压换算成温度 热敏电阻在下
float Temp_data(void)
{
float temp=0;
float Rt=0;
float Rp=10000;
float T2=273.15+25;
float Bx=3950;
float Ka=273.15;
float vol=0;
vol=(float)(Adc_ReadNtcVal())*(3.3/4096);
Rt=(3.3-vol)*10000/vol;
temp=1/(1/T2+log(Rt/Rp)/Bx)-Ka+0.5;
return temp;
}
//电压换算成温度 热敏电阻在上
uint8_t Temp_data(void)
{
float temp=0;
float Rt=0;
float Rp=10000;
float T2=273.15+25;
float Bx=3950;
float Ka=273.15;
float vol=0;
vol=(float)(4096-NTC_Adc_Value)*(float)(3.3/4096);
Rt=(3.3-vol)*10000/vol;
temp=1/(1/T2+log(Rt/Rp)/Bx)-Ka+0.5;
return (uint8_t)temp;
}
验证
常温下电脑旁边测试
恒温箱测试