当前位置:首页 > 单片机 > 单片机
[导读] 温度传感器可以用来测量器件周围的温度(TA)。温度传感器在内部和ADCx_IN16输入通道相连接,此通道把传感器输出的电压转换成数字值。温度传感器模拟输入推荐采样时间是17.1μs。当没有被使用时,传感器可

 

温度传感器可以用来测量器件周围的温度(TA)。
温度传感器在内部和ADCx_IN16输入通道相连接,此通道把传感器输出的电压转换成数字值。
温度传感器模拟输入推荐采样时间是17.1μs。
当没有被使用时,传感器可以置于关电模式。
注意:必须设置TSVREFE位激活内部通道:ADCx_IN16(温度传感器)和ADCx_IN17(VREFINT)的转换。

主要特征
●支持的温度范围:-40到125度
●精确度:+/- 1.5° C

读温度
为使用传感器:
1.选择ADCx_IN16输入通道
2.选择采样时间大于2.2 μs
3.设置ADC控制寄存器2(ADC_CR2)的TSVREFE位,以唤醒关电模式下的温度传感器
4.通过设置ADON位启动ADC转换(或用外部触发)
5.读ADC数据寄存器上的VSENSE 数据结果
6.利用下列公式得出温度
温度(°C) = {(V25 - VSENSE) / Avg_Slope} + 25
这里:
V25 = VSENSE
在25°C时的数值
Avg_Slope = 温度与VSENSE曲线的平均斜率(单位为mV/° C 或 μV/ °C)
参考电气特性章节中V25 和Avg_Slope的实际值。
注意:传感器从关电模式唤醒后到可以输出正确水平的VSENSE前,有一个建立时间。ADC在上电后也
有一个建立时间,为了缩短延时,应该同时设置ADON和TSVREFE位。

以下部分来自wolaiye945的博客:

首先将数据进行比例转化,可以使用微软系统自带的计算器,根据参考电压3.3V在12位AD转换对应最大值0xFFF可知,1.42V对应0x6E2(1762D),而斜率每摄氏度4.35mV对应每摄氏度0x05,故此时公式可以修正为:温度(°C) = {(0x6E2- VSENSE) / 5} + 25

综上所述,芯片的温度已经可以通过计算存入变量,在经过相应的位处理就可以显示在LCD上。
本人使用的代码仅供参考,如下:
//变量声明部分略去
mytemp = (0x6E2- ADC_ConvertedValue_Bak) / 0x05 + 25;

for (v2=3;v2;v2--)
{
v1=mytemp;
mytemp/=10;
LCD_DrawChar(3,(v2-1)<<3,HexValueOffset[v1]);
}

最后,还需要提示一下,在使用的时候不要忘记唤醒温度传感器(默认处于休眠状态),也就是需要设置ADC控制寄存器2(ADC_CR2)的TSVREFE位为1,否则会得到一个几乎为零的极小AD值,通过公式得到一个远远超出范围的温度值,显然是错误的。
给控制寄存器置位可以使用直接置位的方法,但为了增强程序的模块化程度,我建议使用STM32预定义的函数ADC_TempSensorVrefintCmd(ENABLE);
在初始化ADC后和开始转换前的代码段中调用该函数,即可唤醒温度传感器的检测。

以下来自泡桐树

 

ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;//独立模式CR1
ADC_InitStructure.ADC_ScanConvMode = ENABLE;//扫描模式使能
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;//连续转换模式使能
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//启动转换的外部事件--无CR2
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//转换后的数据右对齐
ADC_InitStructure.ADC_NbrOfChannel = 2;//转换的通道数为2
ADC_Init(ADC1, &ADC_InitStructure);

//内部温度传感器添加这一句

ADC_TempSensorVrefintCmd(ENABLE);


ADC_RegularChannelConfig(ADC1,ADC_Channel_11, 1, ADC_SampleTime_55Cycles5);//通道11采样时间


//################ Channel 11(电位器)###### 内部温度传感器改为 Channel 16 ###################
ADC_RegularChannelConfig(ADC1,ADC_Channel_16, 2, ADC_SampleTime_239Cycles5);



ADC_Cmd(ADC1, ENABLE);

 

显示和转换公式如下

u16 GetVolt(u16 advalue)
{
return (u16)(advalue*330/4096);
}

u16 GetTemp(u16 advalue)
{
u32 Vtemp_sensor;
s32 Current_Temp;

Vtemp_sensor=advalue*330/4096;
Current_Temp=(s32)(143-Vtemp_sensor)*10000/43+2500;
return (s16)Current_Temp;
}

初始化ADC,DMA后,循环读取AD_Value[2]来获取计数值,进而进行转换。

 

 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

Pt100温度传感器和Pt1000温度传感器的铂基传感器是正温度系数 (PTC) 传感器,可提供高达 500°C 的准确温度测量。在0摄氏度时Pt100是100欧,Pt1000是1000欧。

关键字: ntc 热敏电阻 pt100 温度传感器

PT100是铂热电阻,它的阻值会随着温度的变化而改变。PT后的100即表示它在0℃时阻值为100欧姆,在100℃时它的阻值约为138.5欧姆。它的工作原理:当PT100在0摄氏度的时候它的阻值为100欧姆,它的阻值会随着...

关键字: PT100 铂热电阻 温度传感器

DS18B20是常用的数字温度传感器,其输出的是数字信号,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。

关键字: ds18b20 温度传感器 数字信号

为增进大家对电磁炉的认识,本文将对电磁炉的一些异常予以介绍,并介绍电磁炉的一些使注意事项。

关键字: 电磁炉 指数 温度传感器

温度传感器ad590测温电路是一种较常见的应用电路,关于这电路你了解多少呢?你知道它的原理吗?本文就来介绍关于温度传感器ad590测温电路的电路原理。

关键字: 温度传感器 ad590 电路原理

AD590温度传感器是一种功能强大、性能优良的温度传感器。其具有高精度、线性度好、稳定性强等多种优点,可以广泛应用于各种工业应用领域。

关键字: 温度传感器 ad590 电压放大器

MCP998x系列是单一供应商提供的最大车规级远程温度传感器产品组合之一

关键字: 温度传感器 后视镜控制 电动车窗

【2023年12月19日,德国慕尼黑讯】为提高结温传感的精度,英飞凌科技股份公司(FSE代码:IFX / OTCQX代码:IFNNY)推出带有集成温度传感器的全新CoolMOS™ S7T产品系列。通过在系统中集成该系列半...

关键字: 温度传感器 固态继电器 MOSFET

为增进大家对温度传感器的认识,本文将对温度传感器、温度传感器和温度变送器的区别予以介绍。

关键字: 传感器 指数 温度传感器

为增进大家对温度传感器的认识,本文将对温度传感器好坏测量方法以及温度传感器的用途予以介绍。

关键字: 传感器 指数 温度传感器
关闭
关闭