Post Go back to editing

Error on 3-wire measure with the EVAL-AD7124-8SDZ

Category: Software
Product Number: AD7124-8

I have an AD7128-8 conected to a 3-wire measure circuit to read from a PT1000. I am following the steps of the RTD Configurator and error budget calculator. 

My problem is that the measure i'm getting is:

Digital sample: 6919806.000000
RTD: 552.944214
Digital sample: 6919790.000000
RTD: 552.942932
Digital sample: 6919734.000000
RTD: 552.938477
Digital sample: 6919654.000000
RTD: 552.932068
Digital sample: 6919639.000000
RTD: 552.930908

When i should be getting around 1110 ohms

---------------------------------------------------------------------------------------------------------------------------------

The steps i'm following on the code to measure the RTD are: 

//1. Setting the 50uA [AIN0+ (IOUT0) / AIN1- (IOUT1)]

ad7124_regs[AD7124_IOCon1].value =0x910;

//2. Analog input [AIN2+ / AIN3-]

ad7124_regs[AD7124_Channel_0].value =0x8043;

 

//3. Configuring the PGA to 16, the unipolar mode, and the external references [REFIN1+ / REFIN1-]

ad7124_regs[AD7124_Config_0].value =0x1E4;

//4. Writing of the registers

ad7124_write_register(ad7124_handler, ad7124_regs[AD7124_IOCon1]);

ad7124_write_register(ad7124_handler, ad7124_regs[AD7124_Channel_0]);

ad7124_write_register(ad7124_handler, ad7124_regs[AD7124_Config_0]);

//5. Waiting for conversion

ad7124_wait_for_conv_ready(ad7124_handler, timeout);

//Rref= 21500ohms 1%, on the polimeter it reads 21460ohms

ad7124_read_data(ad7124_handler, &sample);

RTD =(sample * 21460)/(16*pow(2.0, 24)); //UNIPOLAR

printf("RTD: %f \n", RTD);

-------------------------------------------------------------------------------

This are the schematics:

I am working at the moment with the EVAL-AD7124-8SDZ, and these are the conexions on the plaque.

  • Hi  ,

    I am getting your expected value through the RTD Configurator and error budget calculator. You may refer to the image below:

    I reviewed your code and

    how the RTD resistance is calculated given your RTD configuration setup. 

    RTD =(sample * 21460)/(16*pow(2.0, 24)); //UNIPOLAR

    For "Alt_3wire" RTD configuration, wherein this configuration, the reference resistor is connected to the low side of the RTD which means both IOUT currents passes through the reference resistor. Moreover, taking into account that 2IOUT passes the reference resistor RREF, your calculation should now be:

    RTD =(sample * 21460*2)/(16*pow(2.0, 24))

    Thanks and regards,

    Rod

  • Hi, thank you for your answer.

    You are right, the calculations should be taking into account the two currents circulating through the Rref.

    I have changed the equation and the measurement is a lot closer than before. Although i am still getting an accuracy error.

    I have measured some simple resistors to make a test on how much it is deviating, and it seems like the error is exponential. 

    1002 ohms  ---- reading is  995.750916 

    502  ohms  ---- reading is  497.855164 

    199.7 ohms ---- reading is  196.463806

    99.4 ohms  ---- reading is  98.355583

    49.7  ohms ---- reading is  49.040466

    I am doing this internal calibrations to the ad7124: 

    //Reset offset register

    ad7124_regs[AD7124_Offset_0].value = 0x800000;

    ad7124_write_register(ad7124_handler, ad7124_regs[AD7124_Offset_0]);

    //Calibrations ADC Offset

    ad7124_regs[AD7124_ADC_Control].value = 0x14;

    ad7124_write_register(ad7124_handler, ad7124_regs[AD7124_ADC_Control]);

    ret = ad7124_wait_for_conv_ready(ad7124_handler, timeout);

    //Calibrations ADC Gain

    ad7124_regs[AD7124_ADC_Control].value =0x8;

    ad7124_write_register(ad7124_handler, ad7124_regs[AD7124_ADC_Control]);

    ret = ad7124_wait_for_conv_ready(ad7124_handler, timeout);

    //Calibrations ADC Continuous convert

    ad7124_regs[AD7124_ADC_Control].value =0x0;

    ad7124_write_register(ad7124_handler, ad7124_regs[AD7124_ADC_Control]);

    ret = ad7124_wait_for_conv_ready(ad7124_handler, timeout);

  • Hi,

    I resolved my problem by chopping the excitation currents, as described in the circuit note "Completely Integrated 2-Wire, 3-Wire, or 4-Wire RTD Measurement System Using a Low Power, Precision, 24-Bit Σ-Δ ADC."

    Due to the circuit I was using, the current source mismatch of the EVAL-AD7124-8SDZ significantly affected the measurements.