最近使用ADS1247做PT100温度检测,设计测温范围为-20~220左右
电流源选取250uA,Rbias=3K,则参考电压为1.5V,Rcomp=140Ω
做好程序以后,读取的温度误差很大,比正常温度高5度,每次上电对AD进行校准,下面是图纸以及程序,请问不准的原因是什么
void ADS_Init(void)
{ 
 WriteReg_S((Reg_MUX0 | 0x40) , 0x00 , 0x01); //MUX0初始化 BSC_OFF,AIN0,AIN1默认
 WriteReg_S(Reg_VBias | 0x40 , 0x00 , 0x00); //BIAS_OFF 
 WriteReg_S(Reg_MUX1 | 0x40 , 0x00 , 0x20); //0x30 //
 WriteReg_S(Reg_SYS0 | 0x40 , 0x00 ,0x70); //0x77
 WriteReg_S(Reg_IDAC0 | 0x40 , 0x00 , 0x0B); 
 WriteReg_S(Reg_IDAC1 | 0x40 , 0x00 , 0x01); 
}
void ADS1247_Calibrate(unsigned char Gain) 
{ 
 WriteReg_S(Reg_SYS0 | 0x40 , 0x00 ,0x70); //设置校准增益 G=128 
 
 WriteReg_S(Reg_MUX1 | 0x40 , 0x00 , 0x20); //正常模式 
 ADS_WriteByte(SELFOCAL); //系统偏移自校准 
 WaiteRDY(); //等待校准完成
 
 WriteReg_S(Reg_MUX1 | 0x40 , 0x00 , 0x21); //设置AINP+AINN=(AVDD+AVSS)/2 
 ADS_WriteByte(SYSOCAL); //系统偏移自校准 
 WaiteRDY();
 
 WriteReg_S(Reg_MUX1 | 0x40 , 0x00 , 0x22); //设置AINP=VREF+,AINN=VREF-; for gain calibration 
 ADS_WriteByte(SYSGCAL); //系统增益校准 
 WaiteRDY();
}
float Get_Tempture(signed long AD_Value) //计算温度值
{
 float Temp = 0;
 float AD_Temp = AD_Value;
 float AD_Vl = 0;
 float IN_Vl = 0;
 float RRTD = 0;
 
 if(AD_Temp > 0x7FFFFF)
 {
 AD_Temp -= 0xFFFFFF;
 }
AD_Temp *= 1.5;
 AD_Vl = AD_Temp / 0x7FFFFF;
 IN_Vl = AD_Vl / 128;
 RRTD =140 + IN_Vl * 4000;
 
 Temp = (RRTD -100)/0.396847;
 
 return(Temp); 
}
温度计指示室温30度 但是我测出来的 37度,请问技术 啥原因啊 我是怎么也想不明白了,求真相
万用表实测PT100的1.2端电压27.5mV,R10电压34mV,R15两端电压1.4775V
随机看了一下校准值:OFC = FFFC9D FSC = 3FFE40
				

