内部温度的计算?

[复制链接]
3807|12
 楼主| dkill 发表于 2008-5-13 17:56 | 显示全部楼层 |阅读模式
公式
 Temperature (in °C) = {(V25 - VSENSE) / Avg_Slope} + 25.
Where,
V25 = VSENSE value for 25° C and
Avg_Slope = Average Slope for curve between Temperature vs. VSENSE
 问题:
  Vsense怎么算出来   转化后的寄存器里存的值和Vsense有什么关系?
香水城 发表于 2008-5-13 18:27 | 显示全部楼层

STM32温度传感器的使用和计算

Vsense就是你在ADC_IN16读到的数值。

Avg_Slope就是温度与ADC数值转换的斜率。设想一个XY坐标,X轴为ADC的电压读数,Y轴为温度,两轴之间有一条直线代表了温度与转换电压的关系;在这条直线上如果X轴为V25时,Y轴即为25℃;当读出的电压是其它数值时,即读出的电压是Vsense时,使用那个公式就可以得到温度的数值。

在STM32F103xx的数据手册中分别给出了V25和Avg_Slope的值:

V25   最小=1.34V  典型=1.43V   最大=1.52V
Avg_Slope 最小=4.0  典型=4.3   最大=4.6    单位是 mV/℃


例如读到Vsense = 1.30V
分别取V25和Avg_Slope的典型值,计算得到:

(1.43 - 1.30)/0.0043 + 25 = 55.23

所以温度为大约55℃
 楼主| dkill 发表于 2008-5-13 18:37 | 显示全部楼层

读到的数值就是电压值?

可是转化后的读数很大呀  最大是fff  不是读出来的数直接就是电压吧
  还要转化把。  试想输入的电压是通过转换得到一个值 存入寄存器的 
  但我不知道这个是怎么转换的
香水城 发表于 2008-5-13 18:52 | 显示全部楼层

读到的数值当然不是电压值,是0V~VDDA间的某个电压

例如VDDA = 3.3V,那么如果读出0x0FFF,即表示3.3V;如果读出0x0100,即表示 (0x0100 * 3.3V) / 0x0FFF,大约为0.21V。
 楼主| dkill 发表于 2008-5-14 10:42 | 显示全部楼层

小数的运算 怎么定义变量呀

香水城 发表于 2008-5-14 11:47 | 显示全部楼层

为什么要使用小数运算?你完全可以通过比例变换使用整数

比如我在2楼的例子:(1.43 - 1.30)/0.0043 + 25 = 55.23

除数和被除数各乘10000,则变成整数运算:(14300 - 13000)/ 43 + 25,结果与使用小数运算一样。如果需要更为精确的数值,则放大比例因子即可。
 楼主| dkill 发表于 2008-5-14 12:01 | 显示全部楼层

内部温度 我测得是42--45 正常吗

他和外部温度传感器  测得环境不一样 ?
mcubug 发表于 2008-5-14 13:33 | 显示全部楼层

re

学习中
mcubug 发表于 2008-5-14 13:34 | 显示全部楼层

re

研究下
mcubug 发表于 2008-5-14 13:35 | 显示全部楼层

re

实在没办法呀,一直在潜水,现在有问题要问啦,那继续灌水吧,学习中
香水城 发表于 2008-5-14 14:59 | 显示全部楼层

芯片内外的温度当然是有差别的

fangui 发表于 2008-5-17 23:28 | 显示全部楼层

那就不能测试外部温度了?

这么说,这个功能就只能测试芯片内部的温度了,外部的环境温度就不可以测了或测得不准咯?
香水城 发表于 2008-5-17 23:46 | 显示全部楼层

如果散热做得好,内外温差会比较小

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

本版积分规则

62

主题

201

帖子

0

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