打印
[汽车MCU – KEA]

KEA08内部温度传感器问题?????

[复制链接]
3374|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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,然后再计算温度,这样更准确, 你可以参考我这个帖子:https://bbs.21ic.com/icview-715444-1-1.html
另外,由于我目前没有KEA的板子,所以我会把你的帖子转给我们汽车的FAE,让他们帮你验证,还请耐心等待。

使用特权

评论回复
5
FSL_FAE_STEVE| | 2014-7-29 17:50 | 只看该作者
楼主可以参考温度传感器的应用手册,楼主可否将工程打包上传,我们可以在开发板上进行测试。

AN3031.pdf

166.63 KB

使用特权

评论回复
6
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

使用特权

评论回复
7
caijun_2012|  楼主 | 2014-7-29 22:47 | 只看该作者
附件是温度传感器相关参数

QQ图片20140729224624.jpg (222.23 KB )

QQ图片20140729224624.jpg

使用特权

评论回复
8
caijun_2012|  楼主 | 2014-7-30 22:54 | 只看该作者
楼主,你测试了吗?等待中。

使用特权

评论回复
9
FSL_TICS_ZJJ| | 2014-7-31 09:21 | 只看该作者
你好,我现在手头没有KEA64的板子,只有KEA128的,待会测试下,然后给你回复。
楼主,你可以选择ADC测试芯片里的bandgap看看是不是1v这样子。

使用特权

评论回复
10
FSL_TICS_ZJJ| | 2014-7-31 09:27 | 只看该作者
另外我看到KEA的RM中关于温度传感器的测试要求:

我看你代码的时钟不对哦,还有你你要配置为long sample。
而且vdd应该是需要通过测试Vbg计算出来的,然后再去转换计算相应的温度值。

使用特权

评论回复
评论
深深生生 2018-7-9 10:36 回复TA
搂主,你好!我测出来温度40度,但室温差不多28,用万用表测出MCU实际温度29度,是否是因为内部比外部温度高,还是我测出来温度不对??? 
深深生生 2018-7-9 10:35 回复TA
搂主,你好!我测出来温度40度,但室温差不多28,用万用表测出MCU实际温度29度,是否是因为内部比外部温度高,还是我测出来温度不对??? 
11
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测试结果发出来给我看看吗????

使用特权

评论回复
12
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 也能看出来。
所以,如果感兴趣,你可以试试把电压降下来测试,看看温度情况。
这个曲线还是和温度传感器的特性有关系。

使用特权

评论回复
13
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)

使用特权

评论回复
评论
gfzhuxufei 2018-7-26 10:16 回复TA
@深深生生 我这边的测试情况跟你类似,你解决了吗? 
深深生生 2018-7-9 10:04 回复TA
搂主,你好!我测出来温度40度,但室温差不多28,用万用表测出MCU实际温度29度,是否是因为内部比外部温度高,还是我测出来温度不对??? 
14
深深生生| | 2018-7-6 14:09 | 只看该作者
搂主,具体怎么计算温度的呀

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

42

主题

226

帖子

2

粉丝