打印

内部温度的计算?

[复制链接]
2239|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。

使用特权

评论回复
5
dkill|  楼主 | 2008-5-14 10:42 | 只看该作者

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

使用特权

评论回复
6
香水城| | 2008-5-14 11:47 | 只看该作者

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

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

除数和被除数各乘10000,则变成整数运算:(14300 - 13000)/ 43 + 25,结果与使用小数运算一样。如果需要更为精确的数值,则放大比例因子即可。

使用特权

评论回复
7
dkill|  楼主 | 2008-5-14 12:01 | 只看该作者

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

他和外部温度传感器  测得环境不一样 ?

使用特权

评论回复
8
mcubug| | 2008-5-14 13:33 | 只看该作者

re

学习中

使用特权

评论回复
9
mcubug| | 2008-5-14 13:34 | 只看该作者

re

研究下

使用特权

评论回复
10
mcubug| | 2008-5-14 13:35 | 只看该作者

re

实在没办法呀,一直在潜水,现在有问题要问啦,那继续灌水吧,学习中

使用特权

评论回复
11
香水城| | 2008-5-14 14:59 | 只看该作者

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

使用特权

评论回复
12
fangui| | 2008-5-17 23:28 | 只看该作者

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

这么说,这个功能就只能测试芯片内部的温度了,外部的环境温度就不可以测了或测得不准咯?

使用特权

评论回复
13
香水城| | 2008-5-17 23:46 | 只看该作者

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

使用特权

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

本版积分规则

62

主题

201

帖子

0

粉丝