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.

AMC7823: Using the internal temperature sensor

Part Number: AMC7823

I am unable to get a valid temperature reading from the internal temperature sensor. I can read all the other ADC channels just fine, and use the DAC channels and digital I/O without any problems. But the temperature sensor, no joy.

I set the ADC control register to a value of 0x8080:  Internal trigger, auto-mode, convert all 9 channels. The Configuration register is set to 0x0040: 2.5V reference.

When I read channel 8, the value jumps all over the place.  The ADC counts are converted to degrees C using the formula on page 28 of the data sheet:  C = 2.6 * Vbe - 273.  And Vbe is calculated as: Vbe = counts * 0.00122.

I must be missing something.

  • Hi Steve,

    Can you give me an example of successive measurement values?  Do you mean the digital code changes dramatically? or the temperature is changing quickly? The resolution is fairly low, so it could vary by a few LSB.

  • Here are the raw successive ADC counts with the device sitting at room temperature. Actually, the counts don't look too bad. I guess it's the calculated temperature that jumps around.  But the temperature is always in -270'ish range. To use the first count:  0x0062 = 98 decimal.

    98 * 0.00122 = 0.11956mV (Vbe).

    2.6 * 0.11956 - 273 = -272C

    0x0062
    0x0066
    0x0065
    0x0064
    0x0064
    0x0061
    0x0060
    0x0063
    0x0060
    0x0063
    0x0062
    0x0066
    0x005d
    0x0064
    0x0065
    0x005c
    0x0066
    0x0064
    0x005c
    0x0061
    0x0064
    0x0061
    0x0067
    0x0069
    0x005f
    0x0061
    0x0062
    0x0063
    0x005d
    0x0062
    0x005d
    0x0063
    0x0062
    0x005f
    0x0061
    0x0068
    0x0062
    0x005f
    0x0063
    0x005e
    0x0061
    0x0061
    0x0067
    0x0068
    0x0062
    0x0064
    0x005f
    0x0063
    0x0063
    0x0061
    0x0062
    0x0061
    0x0060
    0x0065
    0x005d
    0x0061
    0x0067
    0x0062
    0x0061
    0x0068
    0x005f
    0x0064
    0x0062
    0x005f
    0x0064

  • Hi Steve,

    The equation is a bit confusing as it is keeping the units in mV, not V.

    Do you have a capacitor on EXT_REF_IN for noise filtering? I recommend 10µF.

    For example, 

    VBE = 98×1.22mV = 119.56mV

    Temp ( °C) = (2.6(K/mV) × 119.56mV) - 273K = 37.856°C

  • The data sheet not showing the units for the 2.6 term is a huge error.

    In any case, i changed the calculation accordingly and now I get better values, but they jump all over the place.

    However, i you take the first two ADC counts in my previous post (0x0062, 0x0066) they calculate to 37C and 50C.  That's not usable.

  • Hi Steve,

    The temperature sensor accuracy is specified at ±4°C, which is about ±1LSB. 

    You are still seeing higher than that, so let's see if we can bring it in a bit. Do you have a capacitor on EXT_REF_IN for noise filtering? I recommend 10µF.

    How are you powering the device? Are you using an unfiltered SMPS DC/DC converter?

    Thanks,

    Paul