请选择 进入手机版 | 继续访问电脑版
查看: 8178|回复: 25

[分享] 【经验分享】FRDM-KL02改变VDD使用内部温度传感器测温例程

[复制链接]

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-4-15 13:20:30 | 显示全部楼层 |阅读模式
 
FRDM-KL02改变VDD使用内部温度传感器测温例程

Author:FSL_TICS_ZJJ

1,例程功能描述
本例程旨在使用官方的FRDM_KL02开发板,测试改变芯片VDD电压的时候,利用内部测试传感器测试温度,查看是否能够测准。分享该例程的原因是因为发现还是有部分客户在调试这个功能的时候遇到了一些问题,所以我们飞思卡尔论坛支持小组利用Codewarror的PE生成了一个例程,并编写了这个文档供大家参考。
例程主要是通过ADC读取bandgap的值,计算出当前VDD的值,然后再结合datasheet提供的温度相关参数计算出这些参数在当前VDD值下对应的ADC值,然后最终带入公式计算出实际的温度。
 
2,温度计算算法讲解
2.1 温度计算公式雏形
Temp=25-((Vtemp-Vtemp25)/m)
其中,
Temp:当前温度,待计算
Vtemp:当前文档对应的电压,可以通过读取传感器的ADC值结合VDD计算出来。
Vtemp25:25度,VDD=3v时对应的电压,此值由datasheet提供
m:温度相对电压的变化率,这个也是由datasheet提供。
具体的原理,可以参看参考文献[1],第2章。
 
2.2 变VDD的温度计算公式
如果改变VDD值,那么就不能用以上公式直接计算,需要找到对应当前VDD值的Vtemp25以及m的ADC值去替换掉原来的Vtemp25以及m。下面直接给出计算公式:
(1)   计算当前VDD
VDD=(ADCRvdd*Vbg)/ADCRgb
大家知道,内部的bandgap是固定的,通过datasheet可以知道,这个值的范围为0.97到1.03,典型值为1V。
所以我们利用内部的bandgap值,读取在当前VDD下的ADC值,结合ADC满量程(比如12位为4095),计算出当前VDD的电压值。
公式中,
ADCRvdd:VDD对应的ADC满量程值,由你所选定的ADC位数决定,比如12位,就是2的12次方-1。
Vbg:bandgap值,1V
ADCRgb:ADC读取bandgap的值,实测。
实际计算,会将VDD放大10倍计算,即公式变为:
VDD*10=(ADCRvdd*Vbg)*10/ADCRgb
VDD*10=VDDconv
 
(2)   计算temp25对应的ADC值ADCtemp25
ADCtemp25=(ADCRvdd*Vtemp25*10)/VDDconv
公式中,
ADCRvdd:VDD对应的ADC满量程值,由你所选定的ADC位数决定,比如12位,就是2的12次方-1。
       Vtemp25:25度,VDD=3v时对应的电压,此值由datasheet提供
 
 
(3)   计算温度电压变化率m对应的ADC值ADCR100m
ADCR100m=(ADCRvdd*m*1000)/ VDDconv
      其中,
       m:温度相对电压的变化率,这个也是由datasheet提供。
 
(4)   最终温度公式
Temp=25-((ADCRt- ADCtemp25)/ ADCR100m)*100
      其中,
ADCRt:为实际测试的ADC值。
      将1-3计算的结果带入到4中就可以计算出当前的温度了。
      更加详细细节,请查看参考文献[1],第5章。
3,例程硬件配置
 主要是断开J4,然后再J4的2脚接上可以改变的VDD,怎么改变VDD呢?
可以使用一个电位器,将3.3V电压分压,然后接到J4的2脚实现。接线如下:
1.jpg
图1

 
4,例程软件配置
软件配置,是用CW的PE生成,具体配置由于项目较多,可以直接参看附件中的例程。
主要分为四个部分,1:CPU配置,2:串口CSIO1模块配置,3:TPM1用于乒乓触发ADC配置,4:ADC模块配置,选择ADC输入通道为温度传感器以及bandgap。
串口配置是用于打印实时的温度值,以及bandgap对应的ADC值,bandgap对应的ADC值可以结合ADC满量程以及bandgap电压计算出vdd的值vdd_cal。更加详细的配置内容讲解,可以参看参考文献[2],[3].
注意,bandgap选择之后,并没有在PMC寄存器中打开bandgap,所以需要在主程序中加上如下代码: 
 PMC_REGSC |= 0X01; // enable bandgap
 
2.2节对应的计算C代码如下:
float ADC_Calculate(uint16 result_A,uint16 result_B)
{
 float Vdd_Cal,ADCR_Temp25,ADCR_100m;
 float i;
 float Temp;
 Vdd_Cal=40950/result_A;
 ADCR_Temp25=29320/Vdd_Cal;
 ADCR_100m=6633/Vdd_Cal;
 Temp=(float)((result_B-ADCR_Temp25)*100/ADCR_100m);
 i=(float)(25-Temp);
 return (uint16)i;

5,测试结果
这里测试主要在datasheet规定的VDD的范围内,挑几个电压然后测试当前的温度,以及VDD的值。
test_result.jpg
图2
 
由以上测试结果可以发现,随着VDD的改变,温度基本还是实际温度。
6,参考文献
[1] Donnie Carcia, Rafael Peralez. Temperature sensor for the HCS08 Microcontroller Family. AN3031
http://cache.freescale.com/files/microcontrollers/doc/app_note/AN3031.pdf?fromsite=zh-Hans
[2] FSL_TICS_ZP. KL25使用乒乓模式采集ADC上篇
具体链接,请查看kinetis的资料大本营,官方例程分享
[3] FSL_TICS_ZP. KL25使用乒乓模式采集ADC下篇
具体链接,请查看kinetis的资料大本营,官方例程分享
 
回复

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
 楼主| 发表于 2014-4-15 13:23:33 | 显示全部楼层

回复:【经验分享】FRDM-KL02改变VDD使用内部温度传感器测温例程

下面的附件是配套的文档以及例程:
  FRDM-KL02改变VDD使用内部温度传感器测试温度.pdf (375.43 KB, 下载次数: 418)
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2017-1-24 09:50
  • 签到天数: 2 天

    [LV.1]初来乍到

    654

    主题

    3262

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    10759
    最后登录
    2019-1-27
    发表于 2014-4-15 13:52:00 | 显示全部楼层

    RE:【经验分享】FRDM-KL02改变VDD使用内部温度传感器测温例程

    好东西
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    20

    帖子

    0

    注册会员

    Rank: 2

    积分
    81
    最后登录
    1970-1-1
    发表于 2014-4-15 14:18:54 | 显示全部楼层

    RE:【经验分享】FRDM-KL02改变VDD使用内部温度传感器测温例程

    感謝分享. 用力拜讀.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    124

    主题

    3600

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5781
    最后登录
    1970-1-1
    发表于 2014-4-15 16:03:15 | 显示全部楼层

    RE:【经验分享】FRDM-KL02改变VDD使用内部温度传感器测温例程

    给力的分享,绝对赞一个。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    63

    主题

    263

    帖子

    0

    高级会员

    Rank: 4

    积分
    921
    最后登录
    2021-2-23
    发表于 2014-4-15 17:03:26 | 显示全部楼层

    回复:【经验分享】FRDM-KL02改变VDD使用内部温度传感器测温例程

    感謝分享. 用力拜讀
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    19

    帖子

    0

    注册会员

    Rank: 2

    积分
    51
    最后登录
    1970-1-1
    发表于 2014-4-16 13:58:03 | 显示全部楼层

    回复:【经验分享】FRDM-KL02改变VDD使用内部温度传感器测温例程

     kankankankan.......................
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    2

    帖子

    0

    新手上路

    Rank: 1

    积分
    30
    最后登录
    1970-1-1
    发表于 2014-4-16 15:54:17 | 显示全部楼层

    RE:【经验分享】FRDM-KL02改变VDD使用内部温度传感器测温例程

    谢谢楼主分享,很给力!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    1

    帖子

    0

    新手上路

    Rank: 1

    积分
    1
    最后登录
    1970-1-1
    发表于 2014-4-21 19:13:18 | 显示全部楼层

    RE:【经验分享】FRDM-KL02改变VDD使用内部温度传感器测温例程

    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    143

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    443
    最后登录
    2020-10-29
    发表于 2014-4-29 01:58:00 | 显示全部楼层

    回复:【经验分享】FRDM-KL02改变VDD使用内部温度传感器测温例程

     哈哈刚刚在看内部温感
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-3-29 17:18 , Processed in 0.140940 second(s), 28 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表