背景:STGIB30M60TS-L是ST公司的一款IPM芯片,芯片有两个温度输出通道
1.TSO output
2.NTC thermistor
芯片的data sheet给出了这两个温度输出的曲线及相关的典型值,TSO output给出的曲线为线性关系,很好解算成代码但实际应用中发现TSO output的输出的浮动很大,因此决定采用NTC thermistor。
1.热敏电阻的计算公式
NTC是负温度系数的简写,热敏电阻的阻值随着温度的升高,呈现下降趋势。
其阻值计算公式: RT=R0*exp(B (1/T-1/T0))
RT为周围温度为T (K) 时的电阻值,R0是周围温度为T0 (K) 时的电阻值,注意这里的温度是开尔文温度(开氏度=摄氏度+273.15)。B为B常数. 请记住这个B常数,它也是材料常数,一般在25摄氏度下测得。B值和电阻的温度系数正相关,也就是B值越大,电阻的温度系数越高。而温度系数是指每增加1℃,电阻值的变化率。也就是说,B值越大,电阻值的变化随着温度的增加越多,灵敏度越高。
2.温度测量的电路
T2脚为STGIB30M60TS-L的NTC输出脚,我们用电阻串联分压,ADC采集的方式进行温度采集。芯片内部的VCC为15V,
ADC采样的电压值VR:vr=12000/(RT+12000)*15(注意,这里的12K没有把三个零给省略)
根据data sheet给出的几个典型值:
我们假设公式:RT=R0*exp(B (1/T-1/T0))中的R0为85kΩ,T0为25摄氏度(开氏度:298.15)
则温度T:T=B*T0/{T0*(LN RT-LN R0)+B} -273.15
B=4092,
T0=298.15
LN RO=11.35041
转换成代码:
if(data_f<=32767) //IPM热敏电阻值正负判断;data_f为DSP或单片机读到的ADC值
{
DSP_AD_NTC = (float)data_f/32767.0f*15.f;//解算成电压值VR
}
else
{
DSP_AD_NTC = -(float)(~data_f)/32767.0f*15.f;
}
NTC_TEMP=4092*298.15/(298.15*(log((12000*(15-DSP_AD_NTC)/DSP_AD_NTC))-
log(85000))+4092)-273.15;