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: Problem when get RTD value different with Tested value

Part Number: ADS1248
Other Parts Discussed in Thread: ADS124S08,

Hi Everyone.

I have designed application PCBA using ADS12480.

I use "Two series Two-Wire RTD, Low side reference measurement circuit " as Attached image.

RTD value I tested 50Ohm. VDD=3.3V, AVDD=4.5V.

I have sent some SPI command to test, but this seem incorrect when I get Output_Code = DA5244(Hex) = 14,307,908(Dec).

Formula: Output_Code = (2^23)*Gain*RTD/Rref = 8388608*16*50/2000 = 3,355,443.

I don't know, why they have a big difference like that?

Beside that, I don't know What value should I config into OSC and SFC register. whether they influence to the result? 

Thanks.

Application Schematic

SPI command Test

  • Hi Anh,

    The ADS124S08 has a bipolar coding scheme, which means it has both positive and negative ADC codes. The code you received (0xDA5244) is a negative value corresponding to approximately -40mV. Can you send a schematic for your system?

    -Bryan

  • Hi Bryan.

    Thanks for your respond.

    As I know, if my code is negative 0xDA5244 then code = 0xDA5244 - 0x800000 = 0x5A5244 = 5919300(Dec).

    Formula: Code = (2^23 * Gain * Vrtd)/Vref => Vrtd = (Vref * Code)/(2^23*16) = (2*5919300) / (2^23 *16) = 88mV.

    How do you calculate: -40mV ?

    Beside that, I don't know What value should I config into OSC and SFC register. Could you give me a simple example for this.

    This is my schematic, and the way connect RTD.

    Thanks and best regards.

    ADS1248_Schematic.pdf

  • Hi Anh,

    The ADS1248 uses a binary 2's complement coding scheme. If you convert 0xDA5244 to binary, invert each bit, and add one, you get a decimal value of 2,469,308. This is -36.8mV if VREF = 2 V and gain = 16.

    The OSC and FSC registers are for offset and gain calibration, respectively. You can either perform the calibration manually and then write the correct values to the corresponding registers, or use the commands to perform these functions. Note that the system offset command (SYSOCAL) requires you to make sure the system inputs are shorted. Also, the system gain calibration command (SYSGCAL) requires that you apply a full-scale signal to the system inputs. This is described in section 9.4.5 in the ADS1248 datasheet.

    -Bryan

  • Hi Bryan.

    I'm connect 2 Resistor 50Ohm to RTDX and RTD3 in my schematic.

    ------------------------------------------------------------------------------------------

    I sent some SPI CMD to measure RTD3 as bellow:

    0x06, 0x16 -> reset and discontinuously reading data.

    0x40, 0x03, 0x1A 0x00, 0x28, 0x02 -> Config AIN3 Positive, AIN2 Negative,  REFP1 and REFN1 select reference input ,and Gain=1, DR=20.

    0x4A, 0x01, 0x06, 0x08, IADC1 =10mA, output IEXC1.

    0x04-> Start convert ADC

    0x12, 0xFF, 0xFF, 0xFF -> Read value: 25AD9 = 154329 - > Rrtd = 36.8

    ------------------------------------------------------------------------------------------

    I sent some SPI CMD to measure RTDX as bellow:

    0x06, 0x16 -> reset and discontinuously reading data.

    0x40, 0x03, 0x08 0x00, 0x28, 0x02 -> Config AIN1 Positive, AIN0 Negative,  REFP1 and REFN1 select reference input ,and Gain=1, DR=20.

    0x4A, 0x01, 0x06, 0x08, IADC1 =10mA, output IEXC1.

    0x04-> Start convert ADC

    0x12, 0xFF, 0xFF, 0xFF -> Read value: B2 65 39, invert and add one = 4D 9AC6 = 5085894, -> Rrtd = 1212.6

    You can see Rrtd, which I have connected (50Ohm) is different with measurement Rrtd (36.8 and 1212.6). I don't know what happen?

    Beside that, value on RTDX is negative value, could you explain why?

    I have read FSC register it always give me a value: 0x80 0x16 0x40, although before that I never setting this register.

    I have checked OFC value, and it is : 0x00, 0x00, 0x00.

    Can you give me a advice to solve my problem?

    Thanks and best regards.

  • Hi Anh,

    Have you checked to make sure that the commands you are sending are actually being received and processed by the ADC?

    How do you determine when new data is ready, are you watching for DRDY to transition high to low?

    Have you measured the voltage across RREF and the RTDs with a multimeter to see if the values are correct? If they are then at least this means the circuit is likely setup correctly.

    -Bryan

  • Hi Bryan.

    I have read register after I sent them. They are OK.

    Send: 0x40, 0x03, 0x08 0x00, 0xA8, 0x02

    Send: 20, 03, FF, FF, FF, FF

    Received: 0x08 0x00, 0xA8, 0x02

    Send: 4A, 01, 06, 08.

    Send: 4A, 01,FF, FF

    Received: 96, 08.

    Because DRDY I see it on oscilloscope. I sent CMD 04 and waiting until DRDY Low, after that I sent 12 FF FF FF to read Value.

    I have change 50Ohm by 150Ohm but problem still happen.

    About measure voltage across VREFF = 2.687V, VRX = 2.837, VR3 = 2.987

    I saw that All voltage, which I measure have problem, because IADC =1mA, and Rref =2KOhm, so why VREF = 2.867V?

    Beside that, VR3=VRx= 0.15V, VRX - VREFF =0.15V, that mean Resistor I connected and IACD is correct.

    I have tested with RTD1 (AIN7, AIN6), and RTD2(AIN5, AIN4) with 165Ohm and they are OK.

    So I don't know Why on RTDX(AIN0, AIN1) and RTD3 (AIN2, AIN3) they are NG.

    Can you give me more advices for us.

    Thanks and best regards.

  • Hi Anh,

    In your last post, you wrote the following:

    Send: 4A, 01, 06, 08.

    Send: 4A, 01,FF, FF

    Received: 96, 08.

    I am guessing the second command should be 2A 01 FF FF, as this would be an RREG command, where the result of that command is 96 08 (the contents of registers IDAC0 and IDAC1). Please correct me if I am wrong.

    If this is valid, then your WREG command is writing two registers starting at 0x0Ah (IDAC0):

    1. You are writing 0000 0110 to IDAC0. This sets DRDY mode to Data Out only, and sets the IDAC magnitude to 1 mA
    2. You are writing 0000 1000 to IDAC1 This sets IDAC1 to AIN0 and IDAC2 to IEXC1

    The WREG in #2 seems to be the source of the issue. In your case you should only turn on IEXC1 to bias channel X and channel 3. Having the IDAC current sourced from AIN0 as well will cause all kinds of problems in the system (you are forcing 1mA through R32 and then through R35, causing VREF to be higher than expected).

    Please correct this issue and let me know if the situation improves. You should set I2DIR[3:0] = 0x1111b (or 0xFh).

    -Bryan

  • Hi Bryan.

    About 

    Send: 4A, 01,FF, FF it is my mistake, correct (2A, 01,FF, FF).

    1. You are writing 0000 0110 to IDAC0. This sets DRDY mode to Data Out only, and sets the IDAC magnitude to 1 mA
    2. You are writing 0000 1000 to IDAC1 This sets IDAC1 to AIN0 and IDAC2 to IEXC1

    Thanks you for you suggest. That right, it is root cause.. now they are running OK.

    //------------------------------------------------------------------------------------------------------

    But I have some confuse about calibration so could you clarify them to me.

    1.SYSOCAL ( 0110 0000). If I used AVDD = 5V and I want to calibrate input connect with AIN0 and AIN1, I must connect the input (AIN0 and AIN1) to external voltage (Ex: =2.5V) before send SPI_CMD to ADS1248, That's right?

    If I using IADC = 1mA across RTD connected on AIN0 and AIN1, I can use SYSOCAL ( 0110 0000)?

    2.SYSGCAL (0110 0001): We must send 0x42, 0x00 0xB2 ->to config Mux 1 First:

            1: using External clock,

            01:Internal reference is always On

            10: Internal reference selected.

             010: gain calibration.

    Finally We send 0x61 and wait until calibration finish (DRDY Pin go to LOW)

    3.SELFOCAL (0110 0010). 

    We must send 0x42, 0x00 0xB2 ->to config Mux 1 First:

            1: using External clock,

            01:Internal reference is always On

            11: Internal reference selected and internally connected to REFP0 and REFN0 input pins

             001: Offset calibration.

    Finally We send 0x61 and wait until calibration finish (DRDY pin go to LOW)

    Thanks and best regards.

  • Hi Anh,

    You do not need to perform a SELFOCAL if you perform a SYSOCAL. You also cannot perform an offset calibration if you are also measuring the RTD - you would need to short the system inputs together to perform the offset calibration.

    To calibrate an RTD system, typically you would take high accuracy, precision resistors that represent the range of your system measurements. So if you are trying to calibrate a Pt100 from -200C to +850C, that is 18ohm to 390ohm. Therefore you might use 30ohm and 360ohm precision resistors (the choice is up to you). You would then measure the resistors at these endpoints to try to determine the slope of the transfer function of your system. The resistors need to be high precision so that they don't contribute any more error to your system.

    -Bryan

  • Hi Bryan.

    Thanks for your support during I'm facing with the problem.

  • You are welcome, Anh!