ntc温度传感器阻值公式(NTC负温度系数热敏电阻查表法)

文中我以MF58 玻壳测温型 NTC 热敏电阻器为例,测量范围为:-50度~250度; 因为项目原因,我的测温范围只需要从-20度~180度就可以了。

NTC 5K B值:3950

如果直接用拟合二次方程计算,就会有小数,乘法,除法,指数运算,对于单片机的话,就要花很多的时间去处理。 查表法则可以很好地提高处理效率。

电路非常简单,如果要实现多路温度检测,则单片机只需要增加多路模拟开关就好了。

ntc温度传感器阻值公式(NTC负温度系数热敏电阻查表法)(1)

根据对应型号的NTC的温度-阻表对照表(见本底)。 而我们只需要按每10度,取几个点。 我在程序中从-20度~180度,取了21个点。

再EXCEL里,拉个表,计算一下。 我使用的是MSP430F249,adc为12位,满度为:4096

计算公式为:=ROUND(B2*1000/(B2*1000 10000)*4096,0)

然后转为16进制,不转也成,16进制看着舒服。

转换公式为:="0x"&DEC2HEX(C2)&","

ntc温度传感器阻值公式(NTC负温度系数热敏电阻查表法)(2)

实际取值为:-20度至180度。

然后我们在程序里建一个表。我不需要小数,所以直接将最终结果转换成了整数。如果你需要小数位,就把程序适当地改一下。

查表算法非常简单,根据当前ADC读到的值对表里查找接近值,取得整数部分, 然后再把相差的值,去和 前后范围做比例计算。 这样就得到了后面的小数部分。

如果你采用PTC,也是基本同样的思路。比如电机测量常用的KTY84-130。 有时间下次再也出个PTC的。

//----------------------------------------------------------------------------// //-20 ~ 180,adc raw vaule R2/(R1 R2)*4096 | R1=10000(ohm) on board //MF58_B3950 1% #define INVALID_TEMP (int)32767 #define MAX_NTC_TABLE_CT 21 const int Table_NTC[MAX_NTC_TABLE_CT]={//0xF21,0xE6D, 0xD52,0xBCF,0x9F7, 0x800,0x629,0x496,0x35A,0x26F, 0x1C5,0x14B,0x0F3,0x0B5,0x088, 0x068,0x050,0x03F,0x031,0x028, 0x020,0x01A,0x016, }; //----------------------------------------------------------------------------// // MF58 B3950 1% Table_NTC //----------------------------------------------------------------------------// int Temp_Convert_NTC_By_Table(uint16 adc_raw_value) { int i,tmp=INVALID_TEMP; for(i=MAX_NTC_TABLE_CT-1;i>=0;i--) { if (adc_raw_value <= Table_NTC[i]) { tmp=i*10-20; //calculate decimal part if ((i>=0)&&(i<MAX_NTC_TABLE_CT-1)) { tmp=tmp (int)(((float)(Table_NTC[i]-adc_raw_value)/(float)(Table_NTC[i]-Table_NTC[i 1]))*10.0 0.5); } break; } } return tmp; }

ntc温度传感器阻值公式(NTC负温度系数热敏电阻查表法)(3)

ntc温度传感器阻值公式(NTC负温度系数热敏电阻查表法)(4)

ntc温度传感器阻值公式(NTC负温度系数热敏电阻查表法)(5)

ntc温度传感器阻值公式(NTC负温度系数热敏电阻查表法)(6)

ntc温度传感器阻值公式(NTC负温度系数热敏电阻查表法)(7)

,

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

    分享
    投诉
    首页