ptc热敏电阻原理及曲线:PTC-KTY84系列热敏电阻查表算法

KTY84系列广泛的应用于电机的过温保护,属于正温度系数热敏电阻。采样电路也和NTC差不多非常简单,直接采用电阻分压,然后直接用单片机读取。当然实际电路你可能会加入滤波电容,再加个电压跟随器,以得到更好的效果。

ptc热敏电阻原理及曲线:PTC-KTY84系列热敏电阻查表算法(1)

ptc热敏电阻原理及曲线:PTC-KTY84系列热敏电阻查表算法(2)

温度范围在:-40 ~ 180度,同样我们每10度取一个点,根据器件说明书里温度-电阻表对照表。 我使用12位ADC,所以满度值为:4096。(参考电压为3.3V时, ADC值=4096)

电阻分压公式: Rt/(R1 Rt)*4096

ptc热敏电阻原理及曲线:PTC-KTY84系列热敏电阻查表算法(3)

//根据上面的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; }

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页