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.

CC2530片内温度传感器的温度值

Other Parts Discussed in Thread: CC2530

请问如何将CC2530片内温度传感器的测量值转换为实际值?手册上说温度系数是4.5,25摄氏度时测量值是1480;而TI的例程中却没用1480这个值,温度系数用的是4。为什么呢?

一般情况下,在室内,CC2530片内温度传感器测量的温度在什么范围才是正常的呢?

唉,网上各种说法,怎么就没有一个权威的呢?TI公司也没说清楚,难道这个片内温度传感器是个摆设?

  • 有这样一种计算

    (value-1367.5)/4.5-4;         //根据 AD 值,计算出实际的温度,芯片、//手册有错,温度系数应该是4.5 /℃

                                                 //进行温度校正,这里减去4℃(不同芯片根据具体情况校正)


    1、这里说手册有错,对么?   4℃的调整是怎么得来的?

  • demosensor.c中

     /* Assume ADC = 1480 at 25C and ADC = 4/C */

     #define VOLTAGE_AT_TEMP_25        1480

     #define TEMP_COEFFICIENT          4

     // Calibrate for 22C the first time the temp sensor is read.

     // This will assume that the demo is started up in temperature of 22C

     if(bCalibrate) {

       voltageAtTemp22=value;

       bCalibrate=FALSE;

     }

     temp = 22 + ( (value - voltageAtTemp22) / TEMP_COEFFICIENT );

    这个假设的22是室温么?如果是片内温度,难道说片内温度通常都是22左右?


  • 您好,我近期也在做关于CC2530片内温度传感器的校正,我觉得 Value=(AD读数-(1480-4.5*25)) / 4.5是测得的值,后面的“-4”应该是根据实际情况的校正。但我用这种方法测得的温度值偏差很大,觉得不怎么靠谱。我还在学习中,有什么好的方法可以交流。

  • 同问,这个包括例程用起来偏差很大。TI的例程也不能说明问题。

    换句话问:烧写在Flash中的Information page如何使用,数据手册中说其中包含了温度系数矫正参数,但没有给出其位置和用法,MSP430的文档中就有相关内容,2530的没有这部分。

    如果说这片内温度传感器不希望被用户使用应当正式表达一下。

  • 根据注释和temp的计算可知,计算是以22C为基础零点,每增加1C数字量增4

    而程序

     if(bCalibrate) {

       voltageAtTemp22=value;

       bCalibrate=FALSE;

     }

    则是以第一次测量的数字量为22C的数字量。我就觉得这有问题呀,怎么保证第一次测量的温度就一定是22C,而且既然是作为计算基础,那也应该是用手册给的值呀,即这段程序不要,初始设置voltageAtTemp22=VOLTAGE_AT_TEMP_25-(25-22)*TEMP_COEFFICIENT,这样bCalibrate也就不需要了

    不过,从这里来看,我本来还以为这个温度temp必须大于22C,所以才以22C为基础零点计算,但是后面又有段程序,你没有贴出来

      if( temp >= 100) 

      {

        return 100;

      }

      else if (temp <= 0) {

        return 0;

      }

    这里又说明temp是可以有22C以下的呀,也就是说value - voltageAtTemp22可以是负数,那么就没有基础零点这一说法了呀,完全可以用手册给的25C来计算呀,也就是说不用设voltageAtTemp22,直接求temp = 25 + ( (value - VOLTAGE_AT_TEMP_25) / TEMP_COEFFICIENT )

    不明白为什么程序要专门用22C

  • 這個程序只是一個用22C去做基準校正的範例,如果你要用25C也行,只要自己去做校正就行