引脚带绝缘的ptc热敏电阻(PTC-KTY84系列热敏电阻查表算法)
引脚带绝缘的ptc热敏电阻(PTC-KTY84系列热敏电阻查表算法)
KTY84系列广泛的应用于电机的过温保护 属于正温度系数热敏电阻。采样电路也和NTC差不多非常简单,直接采用电阻分压,然后直接用单片机读取。当然实际电路你可能会加入滤波电容,再加个电压跟随器,以得到更好的效果。
温度范围在:-40 ~ 180度,同样我们每10度取一个点 根据器件说明书里温度-电阻表对照表。 我使用12位ADC,所以满度值为:4096。(参考电压为3.3V时, ADC值=4096)
电阻分压公式: Rt/(R1 Rt)*4096
//根据上面的EXCEL表,在代码里建个表.
#define INVALID_TEMP (int)32767
#define MAX_PTC_TABLE_CT 23
const int Table_PTC[MAX_PTC_TABLE_CT]={
0x26F 0x29E 0x2CC 0x2FE 0x331
0x364 0x39A 0x3D0 0x406 0x43E
0x476 0x4AD 0x4E6 0x51E 0x555
0x58D 0x5C4 0x5FB 0x631 0x667
0x69C 0x6CF 0x703
};
/*正温度系数和负温度系数的查表顺序是相反了,这里可以和前面我发的NTC的查表法做一个对照*/
int Temp_Convert_PTC_By_Table(uint16 adc_raw_value)
{
int i tmp=INVALID_TEMP;
for(i=0;i<MAX_PTC_TABLE_CT;i )
{
if (adc_raw_value <= Table_PTC[i])
{
tmp=(i-1)*10-40;
//calculate decimal part
if ((i>=0)&&(i<MAX_PTC_TABLE_CT-1))
{
tmp=tmp (int)(((float)(adc_raw_value-Table_PTC[i-1])/(float)(Table_PTC[i]-Table_PTC[i-1]))*10.0 0.5);
}
break;
}
}
return tmp;
}