根据以上公式我们可以实现:
/*公式法计算NTC温度值*/
static float FormulaNTCTemperature(floatresistance)
{
floattemp;
floatresult=0.0;
result=resistance/NTC_NOMINAL_RESISTANCE;
result=(log(result)/NTC_NOMINAL_CONSTANT)+(1/(NTC_NOMINAL_TEMPERATURE+KELVIN_CONSTANT));
temp=1/result-KELVIN_CONSTANT;
returntemp;
}
(2)查表法
查表法顾名思义就是通过电阻分度表来获取温度区间,再做拟合。首先我们需要建立相应的表我们定义为数组。有了分度表实现也就简单了,但需要注意两端极限位置的处理。具体实现如下:
/*查表法计算NTC温度值*/
static float LookupNTCTemperature(float resistance)
{
floattemp;
uint16_tindex=NTC_TABLE_LENGTH+10;
index=FindTargetLocation(resistance);
if(index<=0)
{
temp=ntcValueTable[0][0];
}
elseif(index>=NTC_TABLE_LENGTH)
{
temp=ntcValueTable[0][NTC_TABLE_LENGTH-1];
}
else
{
floatlowT=ntcValueTable[0][index-1];
// floathighT=ntcValueTable[0][index];
floatlowR=ntcValueTable[1][index-1];
floathighR=ntcValueTable[1][index];
temp=((resistance-lowR)*0.5)/(highR-lowR)+lowT;
}
returntemp;
}
/*查找目标位置*/
static uint16_t FindTargetLocation(floatresistance)
{
uint16_tposition=0;
while(ntcValueTable[1][position]>resistance)
{
if(position
{
position++;
}
else
{
position++;
break;
}
}
returnposition;
}
欢迎关注:
`