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: Reading of RTD data

Part Number: ADS1248

Hi TI expert

If I connect RTD with ADS1248 reading of ADC is 0x7FFFFF and if I disconnect RTD, reading is 0x800000. no other reading I get. what should I do?

Best regards,

Thomas

  • Hi Thomas,

    Can you send a schematic of your system?

    Can you also let us know how you bias the RTD and what you use for a voltage reference?

    Please send the ADS1248 configuration settings as well.

    You can refer to this document for more information about how to take RTD measurements with TI's precision ADCs: https://www.ti.com/lit/an/sbaa275/sbaa275.pdf?ts=1613507388013&ref_url=https%253A%252F%252Fwww.google.com%252F

    -Bryan

  • Thanx Bryan,

    I have attached schematic in the case attachment. Here I am unable to attache schematic file.

    We bias RTD by excitation current output 1 and output 2. please refer schematic.

    We use internal reference voltage. and . REFP1 and REFN1 reference inputs selected.

    ADS1248 configuration settings.

    ADS1248 registers MAP
    Address Register Value
    00h MUX0 0x01
    01h VBIAS 0x00
    02h MUX1 0x28
    03h SYS0 0x02
    04h OFC0 Default
    05h OFC1 Default
    06h OFC2 Default
    07h FSC0 Default
    08h FSC1 Default
    09h FSC2 Default
    0Ah IDAC0 0x0E
    0Bh IDAC1 0xAB
    0Ch GPIOCFG Default
    0Dh GPIODIR Default
    0Eh GPIODAT Default

    Regards,

    Harshad

  • Hi Harshad,

    Thanks for the additional information and the schematic. It looks like your reference resistor (R4) is not grounded, so there is no path to ground for the IDAC. This would explain the values you are seeing, as the ADC does not have a valid reference voltage.

    Try grounding the bottom of R4 as shown below and see if it works.

    -Bryan

  • Thanks Bryan,

    I implement the solution suggested by you and it works and I got the ADC readings.

    with PGA=1

    and Rref = 2k

    AND I get OUTPUT CODE = 0x346E8 (214760 in decimal)

    as per equation of RRTD = Rref * OUTPUT CODE / 2^22 * Gain

    If I put the values and calculate RRTD = 102.405

    But with multimeter RRTD = 112.1

    How can I get the above result.? How should I calibrate ADC to get above result.

    Thanks & regards

    Harshad

  • Hi Harshad,

    What is the exact value of RREF? I assume it is not exactly 2kohm.

    What IDAC setting are you using for this measurement?

    And what is the value of VCC?

    -Bryan

  • Hi Bryan,

    Value of Rref (R4) = 2k +/- 1% (as per the datasheet)

    & by multimeter (not so precise) 

    IDAC = 1000uA

    Vcc = 3.3Vdc

    RTD connection =  Three wire RTD 

    RTD_Connection diagram.pdf

    -Harshad

  • Hi Harshad,

    The IDACs have a compliance voltage specification that determines the maximum voltage that can be seen at the IDAC output pin. This is shown in Figures 41 and 42 in the ADS1248 datasheet. Note that these figures use AVDD = 5V, so for your situation where AVDD = 3.3V the plot would be the same but the max voltage would be 3.3V. Therefore you would start getting current droop around 2.9V.

    If you are using two IDACs at 1mA each, that is 4V across the 2k reference resistor. This is already higher than AVDD, and can likely cause issues with the measurement reading. Please reduce the IDAC current magnitude and see if the results get better. You will also have to factor in the IDAC mismatch error into your calculations, since the two IDAC currents will not be exactly equal. This means the voltage across RREF is not exactly ratiometric to the voltage across the RTD. This is an inherent challenge to measuring 3-wire RTDs with 2x IDACs.

    -Bryan

  • Thanks Bryan,

    As per your instruction I did and it works fine. I get the result.

    I read the ADC in my programming loop. In each loop I get 16 different reading. And all the 16 readings are very similar and satisfactory.

    But surprise result comes when alternate loop readings are similar and consecutive loop readings have some differences. 

    loop reading 1

    adc_value[0] float 109.886765
    adc_value[1] float 109.886528
    adc_value[2] float 109.884949
    adc_value[3] float 109.884949
    adc_value[4] float 109.8834
    adc_value[5] float 109.886497
    adc_value[6] float 109.884857
    adc_value[7] float 109.886108
    adc_value[8] float 109.883789
    adc_value[9] float 109.884087
    adc_value[10] float 109.88501
    adc_value[11] float 109.886887
    adc_value[12] float 109.886642
    adc_value[13] float 109.886734
    adc_value[14] float 109.882744
    adc_value[15] float 109.88414

    loop reading 2

    adc_value[0] float 109.858749
    adc_value[1] float 109.858688
    adc_value[2] float 109.858871
    adc_value[3] float 109.85923
    adc_value[4] float 109.858391
    adc_value[5] float 109.858452
    adc_value[6] float 109.858574
    adc_value[7] float 109.858513
    adc_value[8] float 109.857262
    adc_value[9] float 109.858635
    adc_value[10] float 109.857796
    adc_value[11] float 109.859169
    adc_value[12] float 109.85881
    adc_value[13] float 109.857735
    adc_value[14] float 109.858902
    adc_value[15] float 109.858635

    loop reading 3

    adc_value[0] float 109.881279
    adc_value[1] float 109.882416
    adc_value[2] float 109.882057
    adc_value[3] float 109.88179
    adc_value[4] float 109.8834
    adc_value[5] float 109.882744
    adc_value[6] float 109.88295
    adc_value[7] float 109.884354
    adc_value[8] float 109.882263
    adc_value[9] float 109.883011
    adc_value[10] float 109.880508
    adc_value[11] float 109.881073
    adc_value[12] float 109.879616
    adc_value[13] float 109.877319
    adc_value[14] float 109.880119
    adc_value[15] float 109.879883

    loop reading 4

    adc_value[0] float 109.858452
    adc_value[1] float 109.858391
    adc_value[2] float 109.858391
    adc_value[3] float 109.859528
    adc_value[4] float 109.858994
    adc_value[5] float 109.85878
    adc_value[6] float 109.858543
    adc_value[7] float 109.858841
    adc_value[8] float 109.8592
    adc_value[9] float 109.857498
    adc_value[10] float 109.859406
    adc_value[11] float 109.8592
    adc_value[12] float 109.858963
    adc_value[13] float 109.858841
    adc_value[14] float 109.858391
    adc_value[15] float 109.85836

     

    Please give some idea on it. I am not chopping excitation current sources right now.

    Regards,

    Harshad

  • Hi Harshad,

    What occurs during the loops? Are you just reading 16 samples, then reading 16 more, and so on? Or are you sending any commands or changing the configuration settings between loops?

    -Bryan