This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

ADS1247使用三线制PT100,测温精度以及AD校准问题

Other Parts Discussed in Thread: ADS1247, MSP430G2553, ADS1232

最近使用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