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.

Problem with offset error in ADS1247

Other Parts Discussed in Thread: ADS1247

Hello, i am using an ADS1247 to measure the temperature with a Pt100. The hardware configuration is shown in the next picture: 

As you can see, i have connected one Pt100 "in parallel" to the 2 entrances (AIN0 AIN1 and AIN2 AIN3) with the intention of control that the 2 chanels are measuring the same temperature. After doing this i could verify that actually this isn´t happening. With the Pt100 expossed to the environment temperature i have a reading of 22.69 °C in chanel 1 and 23.47 °C in chanel 2. My quiestion is how can i correct this error? If the solution is to calibrate the ADS1247, can you explain to me the procedure? I have my doubts in regard with when to use the OFFSET SYSTEM CALIBRATION and the SELF OFFSET CALIBRATION, how should i send the comands of this functions?

  • Hi Alfredo,

    As I don't know the specifics of your measurement (IDAC currents used, data rate, PGA, etc. with respect to the register settings) I can't easily tell what the differences are between the measurements in terms of voltage.  As the ADC measures voltage, this value is the primary consideration in determining the error between measurements.

    Another factor is the stability of the reference and any noise that may appear in the measurements.  Which reference are you using for your measurements?  Your theory with respect to the offset might be an issue.  You can issue a SELFOCAL command via SPI.  The reference must be stable for the calibration as a number of samples are taken an averaged for the offset.  If the reference is noisy, you can get different results that are quite different from calibration to calibration. Information regarding the calibration is found on page 32 of the datasheet:

    Best regards,

    Bob B

  • Hello Bob thank you so much for your help. The value of the registers for the first RTD are:

    MUX0= 0X01

    VBIAS=0X00

    MUX1=0X20

    SYSO=0X51

    IDAC0=0X03

    IDAC1=0X01

    And for the second one are:

    MUX0= 0X13

    VBIAS=0X00

    MUX1=0X20

    SYSO=0X51

    IDAC0=0X03

    IDAC1=0X21

    I obtain the Temperature's value of the Pt100 using the next formula for both pair of inputs (AIN0-AIN1 and AIN2-AIN3):

    pt100[0]=(((pt100[0])*0.000042)-100)/0.392

    pt100[1]=(((pt100[1])*0.000042)-100)/0.392

    and i allways see that pt100[1]-pt100[0]=0.7. That is the reason why i suppose that there are a offset problem in my system. Could you recommend me a method of offset calibration and shows me how can i do it? Thanks for your help

  • Hi Alfredo,

    I've noticed a couple of things with the register settings and IDAC routing.  You are not consistent in assigning the inputs or the currents.  The first measurement is ok, but the second one should have:

    MUX0 = 0x1A

    IDAC1 = 0x32

    To issue a SELFOCAL you write 0x62 to the ADS1247 after you have all your register selections written.  This sets an internal short and takes the result and places it in the OFC registers so that when the OFC value is subtracted from the conversion so that the result for shorted inputs is zero.

    Also note that your are rounding values in your calculation and this may present some additional error along the way.

    Best regards,

    Bob B

  • Hi Bob. I had a little confussion when i made the schematic, actually in board i connected ain0 with ain2 and ain1 with ain3 that the reasson of the registers MUX0 and IDA1 values. Regarding the calibration i must tell you that unfortunately i havent access to the datardy pin, so i write all the registers and later i write 0x68. I wait something like 40 mseg and then i read the value of ofc0,ofc1,ofc2 after that i write 0x12 and read the conversion. My actual problem is that i read ofc0=0, ofc1=0 and ofc2=0 and the conversion result zero too. Is the time that i am waiting enough or am i doing something wrong. Thanks for your answer

  • Hi Alfredo,

    The self offset command is 0x62 (not 0x68).  To best determine if you are waiting long enough is to use an oscilloscope.  If you probe DRDY and it has not gone low before you read the registers, then the calibration sequence has not completed.  If it is impossible to probe the DRDY pin with a scope probe, then the only thing you can do is wait longer.  The self calibration requires a valid reference.

    Best regards,

    Bob B

  • Hi Bob. Sorry abaout my mistake, i am writing 0x62 not 0x68. As you told me right now i am waiting more time, 800 ms, and i can read the offset calibration for each pair of inputs (the offset is allways in the low significant byte and is allways different between two consecutives readings). But even so i am having a huge difference between both pair of input. My qwestions are: Is Ok that the offset calibration needs too much time to work? Is right the offset value doesn´t be repetitive? and the last one why if i am doing the offset calibration i´m still having a huge error between two pair of inputs?. Thanks so much for all your help.

    Best Regards

  • Hi Alfredo,

    The actual calibration timing is based on the following information found in the datasheet:

    So it does take a little over 16 conversion cycle results averaged together for the calibration.  If you are sampling at 20sps, it will take over 800ms to complete.  It is not unusual to see code values in the OFC registers that change from calibration to calibration, but if you are seeing large variations then the noise is very high.  This could be supply noise, but most likely reference noise.  If you are using a reference that is generated from IDAC current, then you probably need to add some filtering at the reference input to help quiet the noise.

    Best regards,

    Bob B