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 Problem

Other Parts Discussed in Thread: ADS1248

Hello,

I have some problem use for the ads1248 chip. I wiil use for Hardware-Compensated, Three-Wire RTD 100Ω Measurement.

So, I did same set the Hardware & Firmware of Datasheet P.57 at figure 85.

But i found gap of measure value that it`s not express in ADC result.

Measure Result)

1. ADC value: 6517875,  RTD Value: 110.1130Ω, Temperature: 25.975℃

2. ADC value: 6562351,  RTD Value: 110.1820Ω, Temperature: 26.153℃

→ ADC value is not express in figures at 26.0℃...Why?

I think it will be happen at random and gap volume is about 0.25℃.

For Example) up to the Temperature..

24.0→24.1→24.2→24.3→24.4→24.5→24.6→24.7→24.8→24.9→25.2

ADC value not express in figures at 25.0, 25.1℃

Setting)

1. IDAC: 1.5mA

2. Gain: 128

3. RBIAS at 833Ω

4. LSB = +Vref/PGA/(2^23-1)

5. RTD_Resistance = (ADC_Result * LSB)/IDAC_Current + Rcomp

Please check and let me know my mistake or fault.

Regards,

showeye 

  • Showeye,


    I've never seen this type of behavior in the ADS1248. Just to make sure I understand this correctly, you are saying that there are outputs that are not achieved even as you continuously move through the input range? Calculating this out, the "gap" would be about 104uV and 44000 codes. With the small variations in the RTD, the change is about 0.069 Ohms to get that result.

    Your reference comes from the sum of two 1.5mA excitation current sources going to an 833Ohm resistor making approximately 2.499V. In a gain of 128, this gives a full scale range of +/-19.523mV.

    To try to solve this problem lets go through your system. First, are you able to share a schematic? You've mentioned that you used the schematic of figure 85, but I'd like to know more detailed information. Do you have any input filtering or diode protection on your board?

    Instead of setting the input and taking a single data point, I would try taking data continuously as the temperature is increased. There may be some noise, but you should be able to see a moderately continuously rising data reading. If you can do this, post back the data and the recorded output value from the ADC in an excel file or something similar. If you use a large enough range, you can find out if there are other gaps in the measurement.

    What are you using to change temperature? Or how are you changing the resistance of the RTD? Can you replace the RTD with a resistor and a multiple turn potentiometer? It would be good to make sure the input itself is continuous and could go through the input range.

    What data rate are you using? Does the result change if you change the data rate or lower the PGA gain?

    I've mentioned this other posts, but we generally don't recommend hardware compensation. Using an Rcomp may be problematic. It may give you more resolution by using the full bipolar range, but it may be less accurate. You need to ensure that the currents are completely matched in the IDAC. The part has a typical mismatch of 0.15%, but is not guaranteed for a max. Also you need to consider the drift of any resistances in the analog input path. That would include Rcomp and any filter resistances in the inputs. Any filter resistances need to match exactly as their mismatch and drift will get gained up by the IDAC

    Regardless, get back to me with some of the results I've asked about. We should be able to find out what's wrong.


    Joseph Wu

  • Dear,

    Joseph Wu

    Very thank you for your reply. 

    I found out my mistake.  It`s SPI communication error. To the below.

    (unsigned long)SpiMsTRx(ADS1248_CMD_NOP) << 16

    (unsigned long)SpiMsTRx(ADS1248_CMD_NOP) << 8

    (unsigned long)SpiMsTRx(ADS1248_CMD_NOP) << 0

    I fault  be missing the unsigned long of red check.

    Now, ADC operating is very well of linearity.

    showeye.

  • Showeye,


    Thanks for posting back the answer. If you have any further questions, feel free to post back to the forum.


    Joseph Wu
  • Joseph Wu

    I have a another Question.

    I want a ouput code of Single input voltage used ADS1248 and connected op-amp output.
    Input voltage range (op-amp output) is 0.1V ~ 4.8V DC.
    Can i get a final output code of ADS1248?

    I expected Condition)

    AVDD = 5V, AVSS = 0V, VREF = 5V;
    PGAgain = 1
    VINP = 0.1 ~ 4.8V (op-amp output)
    VINN = Connected AVSS
    VINdifferential = 4.7V
    Full-scale input voltage = 5V

    But..Common-Mode Input Voltage Range is..
    AVSS + 0.1 + [(PGAGAIN)(|VINdifferential|)/2] < VCM < AVDD - 0.1 - [(PGAGAIN)(|VINdifferential|)/2]

    2.45V < VCM < 2.55V

    Range is vary narrow limits.

    Is that right?

    showeye
  • Showeye,


    I'll start with a few comments, explain the equation, and then make a suggestion.

    First, the reference voltage is limited to (AVDD-AVSS)-1V. With a 5V supply the reference would be limited to 4V and the maximum measurement voltage would also be 4V. Also, the input range extends from AVSS+0.1V to AVDD-0.1V. Therefore AINN cannot be connected to AVSS.

    For the common-mode input, your calculation is correct, but the result may not be as limiting as you think. Remember that the equation shows the range of the common-mode voltage, and not the range of the actual inputs. For reference, here's the equation.

    AVSS + 0.1 + [(VINMAX)(GAIN)/2] < VCM < AVDD - 0.1 - [(VINMAX)(GAIN)/2]

    Let's use the numbers that you used in the last post. With an input of 4.7V, your common-mode input (the midpoint of your input) must be within the 2.45 < VCM < 2.55. If you look at it carefully, when VCM=2.45V, then AINP=4.8V and AINN=0.1V. At the other limit, if VCM=2.55V, then AINP=4.9V and AINN=0.2V. Each case is used to keep the input and output of the PGA limited to AVSS+0.1V and AVDD-0.1V. When measuring a large signal, the common-mode voltage is limited.

    If you have a smaller input, the your common-mode input voltage has a larger range. Let's say that VINMAX is 1V with a Gain=1.

    Then VCM must be within this range: 0.6 < VCM < 4.4. The common-mode input has a larger range.

    So yes, the common-mode range is very narrow when the input is very large.

    Lastly, you describe measuring an input going from AINP=0.1 to 4.8V. Since you can't use AINN=AVSS (since this is already outside the input range). You can tie it someplace else. If you want to measure this range, you could use a 2.5V reference and connect AINN to the 2.5V reference, that way when AINP=0.1, the ADC would measure -2.4V if AINP=4.8V, then the ADC would measure +2.3V.

    Note that this may or may not be the best solution for you. You will have the reference voltage error and the op-amp output offset as major contributors for the error in the measurement. Regardless, it is a possible solution that you can analyze.


    Joseph Wu
  • Hi Joseph Wu,

    I have some problem..

    I using the ADS1248 chip and good work. But i setting the ref.0 at PT100 Sensor and ref.1 at Pressure Sensor. This is used just one ADS1248 chip.

    So, i change to setting resister used command _WREG and get a data used command __RDATA.  This is  change to setting resister as repetition. Because  PT100 Sensor and  Pressure Sensor is different resister. It`s good work.

    But.. PT100 sensor read to data and  Pressure Sensor read to data chaged continuously that data is error each other.

    example) 24.2℃ → 2.82 bar → 24.0℃→ 2.62 bar → 24.0℃

    just read to only PT100 Sensor 24.2℃ → 24.2℃ → 24.2℃ .. It`s good work.

    Why is that?

    I find solution and used command at Chip reset. PT100 sensor read to data and Chip reset and Pressure Sensor read to data and Chip reset.

    Is that right? Please confirm the this problem and help me.

    showeye.

        i think that critical error

  • Showeye,


    Just to make sure I understand your problem, I'll explain it back to you and then give a possible explanation. You have two measurements that you make. First you measure a PT100 sensor and then you have a pressure sensor. For the measurements, you use REF0 for the first measurement and REF1 for the second measurement.

    When you measure each one individually, you get a consistent reading. However when you alternate readings (read from the PT100, and then from the pressure sensor), you get errors that make the reading a little inconsistent. Is that correct?

    I'm not sure that the device reset is the best solution. The device should be able to make good measurements without the need for a reset. You should be able to set the correct configuration and make good measurements.

    To help debug this problem, first it would be helpful to see a schematic. I'm not sure what type of RTD you are using (2, 3, or 4-wire) and what type of pressure sensor you are using. It might help to find problems in the schematic when you change channels for the ADC.

    My guess is that you are changing channels, and not giving enough time to have the measurement settle. When you change channels, you could insert extra time to allow for that settling. As an example, there may be capacitance in the input (either filtering for the input measurement), capacitance across the reference resistor, or capacitance across VREFOUT to VREFCOM. All this capacitance may require extra settling time.

    Regardless, I'd need more information about your circuit schematic and how it works. After that, I'd need the sequence of commands that you send to the ADC. It may also help to have some timing information. Detailed information about all of these would certainly be helpful.


    Joseph Wu