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.

eZ430-RF2500_WSM sometime reports strange temperature

Hi, all.

 I'm working on eZ430-RF2500_WSM project (slac139f) compiled by CCS v5.4.

It looks working fine, but sometime It generates strange temperatures as follows.

Strange output:

$HUB0, 34.3C,3.6,000,N#
$HUB0, 28.1C,3.6,000,N#
$HUB0, 28.9C,3.5,000,N#
$HUB0, 27.7C,3.6,000,N#
$HUB0, 28.9C,3.6,000,N#
$HUB0, 27.7C,3.6,000,N#
$HUB0, 27.7C,3.6,000,N#
$HUB0, 35.1C,3.5,000,N#
$HUB0, 28.1C,3.5,000,N#
$HUB0, 30.6C,3.5,000,N#

----

Normal output:

$HUB0, 31.8C,3.6,000,N#
$HUB0, 31.8C,3.6,000,N#
$HUB0, 31.8C,3.6,000,N#
$HUB0, 32.2C,3.6,000,N#
$HUB0, 32.2C,3.6,000,N#
$HUB0, 32.2C,3.6,000,N#
$HUB0, 32.2C,3.6,000,N#
$HUB0, 32.2C,3.6,000,N#
$HUB0, 31.8C,3.6,000,N#
$HUB0, 32.7C,3.6,000,N#
$HUB0, 32.2C,3.6,000,N#

This strange state occurs few times per day, and its duration is 1 or 2 minutes.

I want to know how to avoid this strange situation.

Thanks in advance.

  • You need to find - is this temperature reading that's fluctuating due to temperature changes or just some noise in temperature measurement circuit or it's data corruption in the software or during RF transmission. I would immediately add to transmitted data more fields: raw ADC reading and just couple more copies of temperature data, see how all the values correlate.

  • Thank you for your reply.

    The room temperature is relatively stable, around 30C.  The temperature measurement interval is about 1 second.  So it may be impossible to change more than 10C in 1 second.

    The temperature sensor is the built-in sensor of MSP430, so it may not be affected by external noise.

    The software, eZ430-RF2500_WSM, is not modified.  Does the software have some defects???

    The temperature was measured by "Access Point".  There is no RF transmission.

    I modified the software in order to obey your advice.  The output includes ADC raw readings, temperature and voltage of Vcc respectively.  Also I added timestamps measured by PC clock.

    The following lines show the transition from normal to strange state.

    24.039739:$HUB0, 33.1C,3.6,000,N#,751,744
    25.133696:$HUB0, 33.1C,3.6,000,N#,751,743
    26.227666:$HUB0, 33.1C,3.6,000,N#,751,743
    27.321635:$HUB0, 33.1C,3.6,000,N#,751,743
    28.415598:$HUB0, 33.1C,3.6,000,N#,751,743
    29.509565:$HUB0, 33.1C,3.6,000,N#,751,744
    30.613531:$HUB0, 33.1C,3.6,000,N#,751,744
    31.695501:$HUB0, 33.1C,3.6,000,N#,751,744
    32.531473:$HUB0, 29.8C,3.5,000,N#,743,733
    33.377445:$HUB0, 34.3C,3.5,000,N#,754,733
    34.205412:$HUB0, 39.7C,3.6,000,N#,767,752
    35.067392:$HUB0, 31.8C,3.5,000,N#,748,731
    35.901371:$HUB0, 28.9C,3.5,000,N#,741,734
    36.749349:$HUB0, 38.0C,3.6,000,N#,763,738
    37.571317:$HUB0, 40.1C,3.6,000,N#,768,746
    38.427288:$HUB0, 37.6C,3.6,000,N#,762,738
    39.247263:$HUB0, 30.6C,3.6,000,N#,745,753
    40.099242:$HUB0, 31.8C,3.6,000,N#,748,746
    40.919217:$HUB0, 33.1C,3.6,000,N#,751,752
    41.769192:$HUB0, 30.2C,3.5,000,N#,744,735
    42.605162:$HUB0, 29.8C,3.5,000,N#,743,733
    43.467132:$HUB0, 36.0C,3.5,000,N#,758,731
    44.301095:$HUB0, 30.2C,3.5,000,N#,744,736
    45.163093:$HUB0, 40.5C,3.6,000,N#,769,741
    45.993050:$HUB0, 32.7C,3.6,000,N#,750,753

    ADC readings also indicated same fluctuation.  Timestamps showed that measurement interval changed from 1.1 sec to 0.8 sec.  This means VLO frequency also changed.

    I have several RF2500T boards, and all boards have same problem.   So it may not be hardware problem.  I can not find any problems in the source code of the software.

    I would like to fix this problem.

    Thanks in advance.

  • Taro Yamada said:
    The temperature sensor is the built-in sensor of MSP430, so it may not be affected by external noise.

    msp430 itself can create noise, especially on power bus, this can affect ADC precision/noise in result. VLO frequency changes shows that something is happening indeed. What else your application is doing? Changing some pin states or something? Do you disable ADC and reference during ~1 sec pause?

    Try to set both ADC10SHTx bits to 1, see if it changes anything.

    Taro Yamada said:
    I can not find any problems in the source code of the software.

    Maybe you don't see problems because source code that's needed for errorless operation is not there? Better show your code.

  • I only compiled the code provided by TI.

    Ilmars said:

    Better show your code.

    You can see the code here.

    eZ430-RF2500 Sensor Monitor Demo (Rev. F)

    http://www.ti.com/litv/zip/slac139f

    Thanks in advance

  • Do you use fresh and strong batteries? Seemingly application measure supply voltage - any inconsistencies here? Make sure power is stable, w/o any drift.Find reference settling timeout, quadruple it, check results.

  • Taro Yamada said:
    31.695501:$HUB0, 33.1C,3.6,000,N#,751,744
    32.531473:$HUB0, 29.8C,3.5,000,N#,743,733


    Apparently, when the 'strange' reading start appearing, I see a fluctuation in the measured supply voltage (3.6?) too. You say that the interval also changes.
    On what clock is the ADC running? ADC10OSC? Or VLO?
    There's a minimum clock rate for proper ADC operation.

    However, these fluctuations seem to indicate fluctuation in the supply voltage which affect VLO as well as the ADC.
    What is the reference you use for the conversion?
    Is the reference externally stabilized?

    Measured temperature is DIE temperature. There's junction/ambient temperature coefficient. If MSP power dissipation changes, junction temperature changes immediately, and only dissipates slowly to ambient. THis may cause fluctuations. (what about LEDs?)

    Also, temperature is an average parameter. Average kinetic energy of all atoms that are part of the measurement. Since the temperature sensor, for being low-power, is small, 'noise' may happen. A sufficiently long sample period is required for a proper conversion (see datasheet). maybe you're at the edge between sufficient and not, and when your timing changes...

  • Ilmars said:

    Do you use fresh and strong batteries? Seemingly application measure supply voltage - any inconsistencies here? Make sure power is stable, w/o any drift.Find reference settling timeout, quadruple it, check results.

    All operation is powered by AC power.  RF2500T is powered by USB bus power.  Operation on another PC produced same results.

    This is the source code provided by TI, and I modified it to increase the ADC timings (ifdefed by QUADRUPLE symbol).

    #define QUADRUPLE 1

                /* Get temperature */
    #ifdef QUADRUPLE
                ADC10CTL1 = INCH_10 + ADC10DIV_7;       // Temp Sensor ADC10CLK/8
    #else
                ADC10CTL1 = INCH_10 + ADC10DIV_4;       // Temp Sensor ADC10CLK/5
    #endif
                ADC10CTL0 = SREF_1 + ADC10SHT_3 + REFON + ADC10ON + ADC10IE + ADC10SR;
                /* Allow ref voltage to settle for at least 30us (30us * 8MHz = 240 cycles)
                 * See SLAS504D for settling time spec
                 */
    #ifdef QUADRUPLE
                __delay_cycles(240*4);
    #else
                __delay_cycles(240);
    #endif
                ADC10CTL0 |= ENC + ADC10SC;             // Sampling and conversion start
                __bis_SR_register(CPUOFF + GIE);        // LPM0 with interrupts enabled
                results[0] = ADC10MEM;                  // Retrieve result
                ADC10CTL0 &= ~ENC;

                /* Get voltage */
                ADC10CTL1 = INCH_11;                     // AVcc/2
    #ifdef QUADRUPLE
                ADC10CTL0 = SREF_1 + ADC10SHT_3 + REFON + ADC10ON + ADC10IE + REF2_5V;
                __delay_cycles(240*4);
    #else
                ADC10CTL0 = SREF_1 + ADC10SHT_2 + REFON + ADC10ON + ADC10IE + REF2_5V;
                __delay_cycles(240);
    #endif
                ADC10CTL0 |= ENC + ADC10SC;             // Sampling and conversion start
                __bis_SR_register(CPUOFF + GIE);        // LPM0 with interrupts enabled
                results[1] = ADC10MEM;                  // Retrieve result

                /* Stop and turn off ADC */
                ADC10CTL0 &= ~ENC;
                ADC10CTL0 &= ~(REFON + ADC10ON);


    But this modified code reproduced same fluctuations as follows.

    48.625756:$HUB0, 33.5C,3.6,000,N#,752,743
    49.717722:$HUB0, 33.5C,3.6,000,N#,752,744
    50.809685:$HUB0, 33.5C,3.6,000,N#,752,743
    51.901654:$HUB0, 33.5C,3.6,000,N#,752,743
    52.991621:$HUB0, 33.5C,3.6,000,N#,752,743
    53.811603:$HUB0, 40.1C,3.6,000,N#,768,743
    54.655580:$HUB0, 30.2C,3.5,000,N#,744,734
    55.475546:$HUB0, 32.2C,3.5,000,N#,749,734
    56.319528:$HUB0, 36.8C,3.6,000,N#,760,744
    57.139502:$HUB0, 37.6C,3.6,000,N#,762,748

    Jens-Michael Gross said:

    Apparently, when the 'strange' reading start appearing, I see a fluctuation in the measured supply voltage (3.6?) too. You say that the interval also changes.
    On what clock is the ADC running? ADC10OSC? Or VLO?

    Supply voltage may be still 3.6V.  ADC readings are not trusted in this strange state.  Above source code shows exact ADC settings.

    Jens-Michael Gross said:

    Measured temperature is DIE temperature. There's junction/ambient temperature coefficient. If MSP power dissipation changes, junction temperature changes immediately, and only dissipates slowly to ambient. THis may cause fluctuations. (what about LEDs?)

    You can see complete source code of eZ430-RF2500_WSM (slac139f) provided by TI. (URL is in my previous reply)

    The code executes same task every second.  Power consumption is almost same.  There is no cause of temperature fluctuations.  The code reports almost same temperatures.  This fluctuations is very rare (few times in a day).

    Thanks in advance.

  • Taro Yamada said:
                ADC10CTL1 = INCH_10 + ADC10DIV_7;       // Temp Sensor ADC10CLK/8

    The ADC requires a certain minimum clock speed. If a conversion takes too much time, the stored charge may get lost, resulting in low or even erratic (flipping bits) readings.
    However, this has nothing to do with your problem.

    The first delay is superfluous, as the reference is later changed to 2.5V, so anothe rreference settlign time is required anyway. However, once settled, further expanding the delay doesn't serve any purpose.

    Now the erratic readings may have an external problem. It's possible that a strong EMI transmitter goes active from time to time near your lab, causing the reference voltage to go wild. (is there a microwave oven near?)

    Do you have an external VRef stabilization? I always have a 10µF tantalum/100nF ceramic combo attached to the reference pin. and enabled the REFOUT. This slightly increases poer consumption (not much, if you don't actually draw from it), but significantly stabilizes the reference against external influences.

    Also, AVSS is routed separately from DVss to the supply GND point, and between DVcc and AVcc, there is a 10 Ohms resistor followed by a 10µF/100nF combo to keep the analog supply clear of any supply ripple.
    Vcc wouldn't influence your reading so much, but currents on AVss trace may shift the reference GND point temporarily, causing the readings to fluctuate. The reference will follow, maybe not instantly (due to required charge distribution).

    Well, non-deterministic behaviour usually has an external non-deterministic trigger. Especially if things initially (or most of the time) run as expected.

  • Jens-Michael Gross said:
    The first delay is superfluous

    No, it's not - because ADC and reference is just switched on.

  • Ilmars said:
    No, it's not - because ADC and reference is just switched on.

    Ah, I missed that he's doing a conversion with 1.5V reference between this point and switching the reference to 2.5V. Yes, of course, the delay is required then. But extending it makes no difference.

  • Jens-Michael Gross said:

    Now the erratic readings may have an external problem. It's possible that a strong EMI transmitter goes active from time to time near your lab, causing the reference voltage to go wild. (is there a microwave oven near?)

    We have several microwave oven.  I turned on a nearest (within 10m) microwave oven, but the fluctuation was not appeared.

    Jens-Michael Gross said:

    Do you have an external VRef stabilization? I always have a 10µF tantalum/100nF ceramic combo attached to the reference pin. and enabled the REFOUT. This slightly increases poer consumption (not much, if you don't actually draw from it), but significantly stabilizes the reference against external influences.

    It is interesting.  Although, internal VRef seems to have enough stability without those external capacitances.

    Jens-Michael Gross said:

    Well, non-deterministic behaviour usually has an external non-deterministic trigger. Especially if things initially (or most of the time) run as expected.

    I agree with you.

    Thanks in advance

  • Taro Yamada said:

    Well, non-deterministic behaviour usually has an external non-deterministic trigger. Especially if things initially (or most of the time) run as expected.

    I agree with you.

    [/quote]

    Then you shall run test on all the boards at the same time. In case of "external trigger" misbehavior shall be more or less synchronized.

**Attention** This is a public forum