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.

ADS1248 ADC drift

Other Parts Discussed in Thread: ADS1248

Hi 

I have and ADS1248 connected to two 4 wire PT100 interfaces, Se attached schematic

i am successfully switching between the two PT100 resistors when both resistors are connected but as soon as one of the resistors is removed the other ADC value starts to drift. I do have a lot of capacitance on my lines due to transorbs and ESD protection so it may be that but i am unsure

My setup is as follows:

Temp_Data[0] = 0x4A; //[01][00 1][010] Burnout current 0.5uA, Positive input channel AIN1, Negative input channel AIN2
Temp_Data[1] = 0x00; //[xxxx][0000] Bias voltage register: No bias voltages
Temp_Data[2] = 0x20; //[0][01][0 0][000] Internal oscillator ON, Internal reference ON, Ref0 selected, Normal operation
Temp_Data[3] = 0x33; //[0][011] [0011] Always 0, Gain of the PGA, Output data rate 40(SPS)

Temp_Data[4] = 0x00;//SYSOCAL - OFFSET calculator
Temp_Data[5] = 0x00;
Temp_Data[6] = 0x00;


Temp_Data[7] = 0x00;//SYSGCAL - GAIN calculator
Temp_Data[8] = 0x00;
Temp_Data[9] = 0x40;

Temp_Data[10] = 0x07; //[0000] [0][111] Dout only, current = 1.5mA
Temp_Data[11] = 0x03; //[0000] [0011] Output pin for 1st IDAC: AIN0, output pin for 2nd IDAC AIN3

Temp_Data[12] = 0x00; //GPIO
Temp_Data[13] = 0x00;
Temp_Data[14] = 0x00;
START = 1;//Set start pin and keep it on

my servicing of the ADS1248 looks like this:

if(TEMP_READY == 0)
      {
        if(ADS.Which == 0)
        {
          Temp_Data[0]  = 0x65;       //[01][10 0][101]         Burnout current 0.5uA, Positive input channel AIN4, Negative input channel AIN5, No bias
          Temp_Data[11] = 0xC3;       //[0011] [1100]           Output pin for 1st IDAC: AIN0, output pin for 2nd IDAC AIN3
        }
        else
        {
          Temp_Data[0]  = 0x4A;       //[01][00 1][010]         Burnout current 0.5uA, Positive input channel AIN1, Negative input channel AIN2, No bias
          Temp_Data[11] = 0xC0;       //[0011] [0000]           Output pin for 1st IDAC: AIN0, output pin for 2nd IDAC AIN0
        }

        ADC_Reading = ADS1248_Write_Command(0, 12, (char *)&Temp_Data);//Write the data and return the ADC reading
}

The basics around the operation are as follows:

  1. initialize ADS1248
  2. wait for DRDY to go low
  3. if low, save reading for active channel
  4. Switch IDAC and analogue inputs to "other" channel
  5. go to step 2

With this operation i have stable results when both PT100 resistors are connected but as soon as i remove one of the resistors the other starts to drift

I have managed to overcome this by adding a 100mS delay between step 5 and step 2 but i do not understand why this helps the situation

My understanding is that once the DRDY line goes low the data sampled should be stable

Any and all help is appreciated

Richard

 

1665.EM6 temperature circuit.pdf

  • Richard,


    If you are switching the IDAC from channel to channel, you might need a little time for settling if there is capacitance that needs to charge to get to a final value.
    However, 100ms seems a bit excessive. I don't see anything that would take that long to settle out, so I would try to simplify the problem a bit. First, I'd disable the burnout current sources. They shouldn't always be set on because they may affect the precision of a measurement, and you won't need them because you'll always have the IDAC sourcing current during your measurement.

    I'm a little concerned that you have so many TVS diodes on each input. The capacitance might be high, but I'm also concerned that the leakage current may cause errors in the measurement. For a ratiometric measurement as you have for the RTD, the measurement holds as long as the same current goes through the RTD and the reference resistor. However, if you're only using a 0.1% resistor, the leakage current might not be as big of a factor. Just to be sure, what TVS diodes are you using on the input (make and model)? If you're testing to see if these are a factor, I'd remove these devices to see if it helps in settling.

    Also, you have have some sort of inductive filtering at each front or each input and in the path of the IDAC currents. What device are you using for this. I've seen designs that use these filters, but generally I avoid inductive elements near the ADC. Since there are digital circuits and even the analog inputs are sampled periodically, the L(di/dt) can cause large voltage changes. If you can, I'd remove these filters and replace them with simple shorts.

    I noticed that you don't have any differential input filtering, with any capacitance between the inputs. There is only common-mode filtering where there is capacitance from input to ground. Generally, I've seen combinations of both. If you look at the ADS1248EVM schematic, you can see that the inputs are paired up with both common-mode and differential filtering.

    When you take data have you taken multiple data at each setting to see how long it takes for the measurement to settle? It might be worth a look.

    One last thing I wanted to mention is I'm not sure how you have the current routed for your measurement. I would have thought the first setting would be IDAC1 = AIN0, and IDAC2 = disconnected, and the second setting would be IDAC1 = AIN3 and IDAC2 = disconnected. This would route the same current for each measurement. Instead you have it set up a bit differently. Can you verify the current is routed the way you expect? If it is correct you may need you clarify that for me.


    Joseph Wu
  • Hi Joseph
    Thank you for the input
    I think you are correct with the IDAC switching time vs. capacitor charging time
    I have now made a change to switch the IDAC and then take 3 sequential samples. At 5SPS I see all three samples taken look similar, at 20SPS the first of the three sample is always a slightly higher value than the other two and at 40SPS the first two samples out of the three are slightly higher values than the last.
    It seems the actual settling time is around 25mS so if i discard the first reading at 40SPS is seem to have fairly reliable data

    If i read the section on page 25 "Settling Time for Channel Multiplexing" it says "The time required to settle is roughly equal to the inverse of the data rate" Does this mean that every time i change the MUX0 register i must wait for 1/40SPS = ±25mS for to pass before i can start making valid measurements?

    Regarding the TVS diodes, they actually have quite low capacitance (Typical Capacitance 10pF @ 1 MHz and 0.5Vrms), the part is an AVX USB004. I will remove them and see what the influence is.
    The inductive filter is called ELKE103FA from Panasonic and has 10000pF typically which is quite high
    I would attach the datasheets but i cant see how to when replying to your message

    On a previous version we did have we did have differential input filtering as per the ADS1248EVM but this also caused erratic readings. Looking back this may have been due to incorrect capacitor selection

    Regarding the IDAC setup, apologies... The code is correct but he comments are wrong
    I use IDAC2 and switch between AIN0 & AIN3

    Regards
    Richard
  • Richard,


    If the 25ms delay is still too long, you can always go back and start removing some of the capacitors on the inputs to see if you can reduce the delay further. At the very least, it will help you identify which element is really is the primary source of the delay.

    When you change the multiplexer, you must allow the 1/40SPS time to pass before getting a valid measurement. By changing the multiplexer, you restart the conversion process by resetting the digital filter. The ADC uses the entire time to complete the conversion and then outputs the data.

    I wasn't able to find information about the USB004 from AVX, there wasn't a datasheet that I could find and the Infineon version of the USB004 is EOL with a recommended replacement of USB005. As I'd mentioned in the previous post, I'd be worried about the leakage current. Imagine that you have a 1mA current going through your RTD, and a 1uA leakage occurs between the RTD and the reference resistor. This represents a 0.1% error. If the leakage is larger, or if the leakage varies with temperature, it will affect the accuracy of your entire system.

    I looked at the ELKE103FA and I'm still worried that the inductive part of the filter might affect measurements even if is for EMI filtering. Again, you could include it now and choose to short it out later. I'd also go back to including differential input filtering. It's common practice, and should be easy to implement.


    Joseph Wu