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.

ADS112U04: K-Type Thermocouple Measurement

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

I'm using K-type thermocouple to measure temperature which connected between AIN0 and AIN1 of ADS112. Section 9.2.1.2 Detailed Design Procedure in datasheet describes algorithm that should
be implemented on the microcontroller to compensate for the cold-junction temperature. So according to 1st step, I need to measure the thermocouple voltage between AIN0 and AIN1 (I have configured registers accordingly). Whatever 2 bytes of data I read manualy/automatically, is it in Volt or milivolt? I want to make sure that translation (using NIST table) of summation of Vtc(thermocouple voltage) and Vcj(translation of temperature measured in device internal temperature sensor mode) gives an actual temperature.

  • Hi Heli,

    The output code relates to the reference voltage you are using and the amount of gain applied.  The value of 1 code is +/- VREF/(GAIN * (2^16 - 1)).  If using a gain of 1 and the internal reference, then the value of 1 code is +/- 2.048 / (2^16 - 1) = 0.00003125 V or 31.25 uV.  If you had a conversion result of 1000 decimal, then your measured voltage would be 1000 * 0.00003125 V or 0.03125 V which is equivalent to 31.25 mV.

    You need to determine the CJ temperature and convert to a voltage, then add the TC measured voltage to the CJ voltage to get the final voltage to be looked up in the table for temperature.

    You may find the information in A Basic Guide to Thermocouple Measurements useful:

    http://www.ti.com/lit/an/sbaa274/sbaa274.pdf

    We also have code for temperature sensing that you can follow to see how to make the calculations.  These code examples are currently aimed at the ADS124S08, but can be adapted to other ADC devices as well.

    http://www.ti.com/tool/ADC-TEMP-SENSOR-FW

    Best regards,

    Bob B

  • Thanks Bob, It helped me a lot. However, the value of 1 code is +/- 2.048 / (2^15) and not +/- 2.048 / (2^16 - 1) if gain is 1.

  • Hi Bob,

    I want to convert digital code(data coming out from ADS112) to temperature. I have gone through section 8.3.10 Temperature Sensor in datasheet, but it's little confusing.

    So for example, I receive 55 AA (LSB first)data from chip then actual data would be AA55.  As only 14 MSBs are relevant, relevant data would be 2A95 (right shifted AA55 by 2 places).

    2A95 = 0010 1010 1001 0101 (MSB is 0, so +ve temperature)

    Converting it to temperature gives (2A95h = 10901 * 0.03125) 340.65625 °C, which looks like invalid (out of range) temperature.

    So is data coming out form chip invalid or I'm doing any mistake in conversion? If so can you please explain conversion with same example?

  • Hi Heli,

    The internal temperature sensor result is based on a value that is a binary two's complement result.  So if the msb of the the 14-bit value is a 1, then the temperature would be negative.  This would equate to the second part of the example shown in section 8.3.10.2 in the ADS112U04 datasheet.  So for 0x2A95, the most significant bit for the 14-bit value is a '1'.  You would subtract 1 from the result and complement the 14-bit result. For 10101010010101b (0x2A95) you subtract 1 and get 10101010010100b and then complement to get 01010101101011b which is now 0x156B or decimal 5483 and this would be multiplied by a now negative coefficient value of -0.03125.  This also returns a ridiculous value so I can only conclude that either the internal temperature is not truly selected or you are incorrectly reading the data result or you just used a hypothetical number not actually retrieved.

    If you are at room temperature you should see something similar to 0x0320 after the right shift of 2 as shown in Table 13 on page 29 of the datasheet.  Have you verified that the register was written correctly to convert the internal temperature sensor?

    Which method is being used for reading the result?  I would suggest using the RDATA command by sending 0x55, 0x10 and then verify the value returned with an analyzer to make sure your code is interpreting the result correctly.

    Best regards,

    Bob B