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
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.
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
-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