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.

ADS124S06: Error in measurement

Part Number: ADS124S06


I’m trying to measure temperature with a PT1000 using ADS124S06 utiliting a 4-wire measurement.

However, I’m experiencing a little bit of error in the measurement. When I try to substitute the PT1000 with a 1kOhm precision resistor, I get a constant difference of ~19.5Ohm in reading.

How can I get rid of this error? Do I need to do any kinds of calibration prior to starting up the device?

This is my schematic:

My Registers settings are: 

IMAG = 250uA

PGA Gain = 1

Internal REF always on.

Thank you very much in advance

  • Hello Thai Trinh,

    Could you share the remainder of the register settings you are using?  Depending on the reference buffer settings you may be getting an error due to a voltage drop across the reference filter resistors.  I would recommend that you change the REFN- resistor (R21) to 0 Ohm and disable the REFN buffer for the ADC.  I would also recommend that the REFP buffer be enabled.

    Another simple option would be to issue the SFOCAL (self-offset calibration) to remove any device offset within the ADC.

    Best regards,

    Bob B

  • Hello Bob,

    Thank you very much for your reply.

    Edit: I replaced R21 with a 0R resistor, everything seems fine now. However, these are my settings and I still want to know how to calibrate the system to increase the precision :) 

    I'm using two channels to measure 2 PT1000 individually - REF1 and REF0, respectively.

    This is the register settings:

    0. Startup settings: (run once)

    • 02h: 00110010 #AINP=AIN3 AINN=AIN2 Refer to Pg no 75\
    • 03h: 00000000 #PGA gain = 1
    • 04h: 00010010 #Continuous conversion mode, low-latency filter, 20-SPS data rate
    • 05h: 00010110 #REFP enabled, REFN disabled, REF1+ and REF1- reference selected, internal reference always on
    • 06h: 00000101 #IMAG set to 250 uA
    • 07h: 01010100 #IDAC1 -> AIN5; IDAC2 -> AIN4

    Register settings before retrieving Output Code inside the loop: 

    1. For channel 0: 

    • 02h: 00010000 #AINP=AIN3 AINN=AIN2 Refer to Pg no 75
    • 03h: 00000000 #PGA gain = 1
    • 04h: 00010010 #Continuous conversion mode, low-latency filter, 20-SPS data rate
    • 05h: 00010010 #REFP enabled, REFN disabled, REF0+ and REF0- reference selected, internal reference always on

    2. For channel 1: 

    • 02h: 00110010 #AINP=AIN3 AINN=AIN2 Refer to Pg no 75
    • 03h: 00000000 #PGA gain = 1
    • 04h: 00010010 #Continuous conversion mode, low-latency filter, 20-SPS data rate
    • 05h: 00010110 #REFP enabled, REFN disabled, REF0+ and REF0- reference selected, internal reference always on

    About the SFOCAL: When should I modify the register for this calibration? Do I modify the registers when I try to retrieve the Output Code - before sending the RDATA (0x12) command or when I modify the register in the above sections?

    Thank you very much in advance.

  • Hello Thai Trinh,

    The configuration you show for register 4 would be incorrect for 20sps.  It should be 0001 0100 for low-latency filter and 20sps data output rate in continuous conversion mode.

    I would recommend that you set the PGA register so that the PGA is enabled (0000 1000).  When the PGA is enabled the input impedance will be much higher which will limit error of the bias current creating a voltage drop across the input filter resistors.

    SFOCAL removes the offset by internally shorting the inputs and taking multiple readings for a single reference input (the one selected at the time of the calibration).  Instead of using the SFOCAL command you could enable the Global Chop (set bit 7 to 1 in register 4) feature for the ADS124S06.  Global Chop takes two measurements by internally swapping the inputs and then averages the two readings.  The result in doing Global Chop is this removes the offset of the PGA/modulator for the reference being used.  

    The SFOCAL works best when using a single reference input. Here are your options:

    • Issue the SFOCAL before each measured input channel conversion.  This takes considerable time to complete the calibration and then measure the input channels.
    • Or, issue the SFOCAL following startup and channel configuration and then store (to microcontroller memory) the configured offset for each channel values to memory.  Then prior to each conversion restore the correct values to the OFCAL registers.
    • Or, issue the SFOCAL once for a selected channel and use the same calibration for both channels.  There may be some small error due to any small difference in the the reference resistors and IDAC outputs.
    • Or, just use Global Chop.

    The above will only calibrate out the offset error for the ADC.  It will not calibrate out any gain error or error related to the non-linearity of the RTD itself.  If you have not done so already, I would recommend reading A Basic Guide to RTD Measurements.

    I would like to highlight section 1 where there is a discussion on the various differences in RTD grades along with possible error in measurement from the RTD itself.  To calibrate the RTD, you would need a very accurate temperature source to place the RTD into and then create a lookup table for developing a piecewise linearization for the RTD.

    Another option is to use a couple (2 or more) very accurate resistors to determine a gain slope.  The measured slope would then be multiplied to the result to correct for any gain error.

    What you choose to do in the end may or may not be worth the effort.

    Best regards,

    Bob B