[汽车MCU – KEA] KEA08内部温度传感器问题?????

[复制链接]
 楼主| caijun_2012 发表于 2014-7-25 10:01 | 显示全部楼层 |阅读模式
1.Temp=25-((Vtemp-Vtemp25)/m) 其中,
Temp:当前温度,待计算
Vtemp:当前文档对应的电压,可以通过读取传感器的 ADC 值结合 VDD 计算出来。
Vtemp25:25度,VDD=5v时对应的电压,此值由datasheet 提供,如下图;
m:温度相对电压的变化率,这个也是由 datasheet 提供,如下图;

我现在空调室内,用8位A/D,VDD = 5V,测出A/D值=0x41,转换电压 Vtemp  =1.27V,计算TEMP大概等于60度,不解???????



论坛内部关于内部温度传感器A/D**已阅!
FSL_TICS_ZJJ 发表于 2014-7-25 10:15 | 显示全部楼层
如果是60度,测出来肯定是不准的,楼主你把你代码上传给我们看看。
我们检查下是不是配置有问题。
 楼主| caijun_2012 发表于 2014-7-25 13:43 | 显示全部楼层
int main(void)
{
        UINT32 counter = 0;
        UINT8 adc_value = 0;
       
        Clk_Init();                        /* Configure clocks to run at 20 Mhz */
        GPIO_Init();                        /* Configure button pins as inputs and LED pins as outputs */
        ADC_Init(22,EIGTH_BIT);        /* Configure ADC channel 22 in 8-bit resolution mode */
       
        for(;;) {          
                   counter++;
                  
            adc_value=ADC_Read(22); /* Read ADC value from channel 22 */
            
       
                   GPIOA_PSOR |=adc_value <<16;
          
        }
       
        return 0;
}

void ADC_Init(UINT8 channel, UINT8 mode)
{
        SIM_SCGC |= SIM_SCGC_ADC_MASK;
        ADC_SC1 = 0        ;
        ADC_SC1|= ADC_SC1_ADCO_MASK;                          /* Continuous mode operation */       
        ADC_SC3 |= ADC_SC3_MODE(mode);                        /* 8,10,12 bit mode operation */
        ADC_APCTL1 |= ADC_APCTL1_ADPC(1<<channel);   /* Channel selection */       

}

/***********************************************************************************************
*
* @brief    ADC_Read - Read the selected ADC channel
* @param    ch - channel to read
* @return   result
*
************************************************************************************************/
UINT16 ADC_Read(UINT8 channel)
{
       
        ADC_SC1 |= ADC_SC1_ADCH(channel);                /* Select channel to read */
        while(!(ADC_SC1 & ADC_SC1_COCO_MASK));        /* Wait conversion to complete */
        return ADC_R;                                                        /* Return adc value */

}

Temp sensor voltage 25 °C  VTEMP25 = 1.396 V
Temp sensor slope  -40 °C–25 °C  m = 3.266mV/°C
Temp sensor slope  25 °C–125 °C  m = 3.638 mV/°C
FSL_TICS_ZJJ 发表于 2014-7-25 14:03 | 显示全部楼层
caijun_2012 发表于 2014-7-25 13:43
int main(void)
{
        UINT32 counter = 0;

楼主,你好,建议你还是使用内部bandgap推出实际的VDD,然后再计算温度,这样更准确, 你可以参考我这个帖子:http://bbs.21ic.com/icview-715444-1-1.html
另外,由于我目前没有KEA的板子,所以我会把你的帖子转给我们汽车的FAE,让他们帮你验证,还请耐心等待。
FSL_FAE_STEVE 发表于 2014-7-29 17:50 | 显示全部楼层
楼主可以参考温度传感器的应用手册,楼主可否将工程打包上传,我们可以在开发板上进行测试。

AN3031.pdf

166.63 KB, 下载次数: 36

 楼主| caijun_2012 发表于 2014-7-29 22:37 | 显示全部楼层
版主,你好!
   用你们KEA64 DEMO板测试一下,用8位A/D,VDD = 5V,测出A/D值=67,转换电压 Vtemp  =1.48V,计算TEMP大概等于0度,不解???????肯定上面计算公式有问题?????
   按逻辑分析,Vtemp25 = 1.396v,Vtemp  =1.48V,我推测TEMP应该大于25度左右,符合当前环境温度。。就是不知道怎么计算来地。。。求解!!!!

TRK-KEA64_Lab3.rar

211.95 KB, 下载次数: 14

 楼主| caijun_2012 发表于 2014-7-29 22:47 | 显示全部楼层
附件是温度传感器相关参数
QQ图片20140729224624.jpg
 楼主| caijun_2012 发表于 2014-7-30 22:54 来自手机 | 显示全部楼层
楼主,你测试了吗?等待中。
FSL_TICS_ZJJ 发表于 2014-7-31 09:21 | 显示全部楼层
你好,我现在手头没有KEA64的板子,只有KEA128的,待会测试下,然后给你回复。
楼主,你可以选择ADC测试芯片里的bandgap看看是不是1v这样子。
FSL_TICS_ZJJ 发表于 2014-7-31 09:27 | 显示全部楼层
另外我看到KEA的RM中关于温度传感器的测试要求:
39.jpg
我看你代码的时钟不对哦,还有你你要配置为long sample。
而且vdd应该是需要通过测试Vbg计算出来的,然后再去转换计算相应的温度值。

评论

搂主,你好!我测出来温度40度,但室温差不多28,用万用表测出MCU实际温度29度,是否是因为内部比外部温度高,还是我测出来温度不对???  发表于 2018-7-9 10:36
搂主,你好!我测出来温度40度,但室温差不多28,用万用表测出MCU实际温度29度,是否是因为内部比外部温度高,还是我测出来温度不对???  发表于 2018-7-9 10:35
 楼主| caijun_2012 发表于 2014-7-31 16:07 | 显示全部楼层
版主,你好!
这是我电源设计
VREFH High reference voltage  5V
VREFL Low reference voltage   0V
VDDA Analog power supply      5V
VSSA Analog ground            0V
This device includes an on-chip bandgap reference (≈1.2 V) connected to the ADC
channel.
   Voltage Reference Selection
Selects the voltage reference source used for conversions.
00 Default voltage reference pin pair (VREFH/VREFL).
01 Analog supply pin pair (VDDA/VSSA).
10 Reserved.
11 Reserved - Selects default voltage reference (VREFH/VREFL) pin pair.

为什么VDD还需要测试,对于我选择的不就是5V吗????
而且VBG是个不确定值约等于1.2V.
代码我改了,还是一样效果。
void ADC_Init(UINT8 channel, UINT8 mode)
{
        SIM_SCGC |= SIM_SCGC_ADC_MASK;
        ADC_SC1|= ADC_SC1_ADCO_MASK;                          /* Continuous mode operation */       
        ADC_SC3 = 0xF1;
        ADC_SC3 |= ADC_SC3_MODE(mode);                        /* 8,10,12 bit mode operation */
        ADC_APCTL1 |= ADC_APCTL1_ADPC(channel);   /* Channel selection */       

}


版主,你能把你KEA128测试结果发出来给我看看吗????
FSL_TICS_A 发表于 2014-7-31 16:48 | 显示全部楼层
caijun_2012 发表于 2014-7-31 16:07
版主,你好!
这是我电源设计
VREFH High reference voltage  5V

我这边如果用8位的ADC,测出来ADC值为70,倒算回来温度大概32度。
不过我知道,温度传感器的值和模拟参考电压还是有一定的关系的,电压越高,同样环境下测的温度也会变高。
这点在5楼推荐的文档中的图1 也能看出来。
所以,如果感兴趣,你可以试试把电压降下来测试,看看温度情况。
这个曲线还是和温度传感器的特性有关系。

评论

搂主,你好!我测出来温度40度,但室温差不多28,用万用表测出MCU实际温度29度,是否是因为内部比外部温度高,还是我测出来温度不对???  发表于 2018-7-9 10:35
FSL_FAE_STEVE 发表于 2014-7-31 17:45 | 显示全部楼层
楼主你好,我们在KEA64 EVB板上进行测试,将ADC的采样时间配置为ADCSMP=1,即Long sample time. 测得结果如下:
ADC_TEMP_Sensor        TEMP
1099        39.97
1109        36.61
1171        15.81
1159        19.83
1175        14.47
后面的几个值是通过将对MCU进行降温得到,可以看到测量温度的一个变化趋势。
附上Project文件。
TRK-KEA64_ADC_UART_Temp_Sense.zip (393.84 KB, 下载次数: 37)

评论

[url=home.php?mod=space&uid=2703608]@深深生生[/url] 我这边的测试情况跟你类似,你解决了吗?  发表于 2018-7-26 10:16
搂主,你好!我测出来温度40度,但室温差不多28,用万用表测出MCU实际温度29度,是否是因为内部比外部温度高,还是我测出来温度不对???  发表于 2018-7-9 10:04
深深生生 发表于 2018-7-6 14:09 | 显示全部楼层
搂主,具体怎么计算温度的呀
您需要登录后才可以回帖 登录 | 注册

本版积分规则

42

主题

226

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部

42

主题

226

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部