STM32——内部温度传感器实验

这篇具有很好参考价值的文章主要介绍了STM32——内部温度传感器实验。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

内部温度传感器框图

stm32温度传感器,STM32,stm32,单片机

具体介绍:

1、STM32F40X有一个内部的温度传感器,可以用来测量CPU及周围的温度(TA)。

2、该温度传感器在内部和ADCx_IN16(F40xx/F41xx)或者ADCx_IN18(F42xx/F43xx)输入通道相连接,此通道把传感器输出的电压转换成数字值。

3、温度传感器模拟输入推荐采样时间是17.1μs。

4、STM32的内部温度传感器支持的温度范围为:-40~125°C。精度比较差,为±1.5°C左右。

内部温度传感器更适合于检测温度的变化,而不是测量绝对温度。如果需要测量绝对温度,应该使用一个外部温度传感器。(主要是测量温度变化,而不是准确的温度值)

内部温度传感器使用注意事项:

第一个地方,我们要使用STM32F4的内部温度传感器,必须先激活ADC的内部通道,这里通过ADC_CCR的TSVREFE位(bit32)设置。设置该位为1,则启用内部温度传感器。

stm32温度传感器,STM32,stm32,单片机

第二个地方,STM32F407的内部温度传感器固定的连接在ADC通道16上,所以,我们在设置好ADC之后只要读取通道16的值,就是温度传感器返回来的电压值。根据这个值,我们可以计算当前的温度。计算公式如下:

stm32温度传感器,STM32,stm32,单片机

上式中:

V25=Vsense在25度时的数值(典型值为:0.76)。

Avg_Alope=温度与Vsense曲线的平均斜率(单位为mv/°C或uv/°C)(典型值为2.5Mv/°C)。

利用以上公式,我们就可以方便的计算出当前温度传感器的温度。

内部温度传感器温度和电压关系图

stm32温度传感器,STM32,stm32,单片机

开启内部温度传感器步骤

1、选择ADC_IN16或者ADC_IN16输入通道。

2、设置采样时间大于17.1μs。

3、设置ADC_CCR的TSVREFE位,打开内部温度传感器。

4、设置ADC_CR2的SWATART位启动转换。

5、读取ADC结果。

6、计算。

为巩固基础,再写一遍ADC初始化代码

void Adc_Init(void)
{
  GPIO_InitTypeDef GPIO_InitABC;
  //GPIO初始化
  GPIO_InitABC.GPIO_Pin=GPIO_Pin_5;
  GPIO_InitABC.GPIO_Mode=GPIO_Mode_AN;//模拟输入
  GPIO_InitABC.GPIO_PuPd=GPIO_PuPd_UP;//上拉
  GPIO_Init(GPIOA,&GPIO_InitABC);//初始化
  //时钟使能
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);//使能GPIOA时钟
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);//使能ADC1时钟
  ADC_CommonlnitTypeDef ADC_CommonlnitABC;
  ADC_InitTypeDef ADC_InitABC;
  RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC1,ENABLE);//ADC1复位
  RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC1,DISABLE);//复位结束
  ADC_TempSensorVrefintCmd(ENABLE);//使能内部温度传感器
  ADC_CommonlnitABC.ADC_Mode=ADC_Mode_Independent;//独立模式
  ADC_CommonlnitABC.ADC_TwoSamplingDelay=ADC_TwoSamplingDelay_5Cycles;//采样五个周期
  ADC_CommonlnitABC.ADC_DMAAccessMode=ADC_DMAAccessMode_Disable;//DMA失能
  ADC_CommonlnitABC.ADC_Prescaler=ADC_Prescaler_Div4;//分频系数为4,不要超过36M
  ADC_Commonlnit(&ADC_CommonlnitABC);
  ADC_InitABC.ADC_Resolution=ADC_Resolution_12b;//12位分辨率
  ADC_InitABC.ADC_ScanConvMode=DISABLE;//非扫描模式
  ADC_InitABC.ADC_ExternalTrigConvEdge=ADC_ExternalTrigConvEdge_None;//禁止触发检测,使用软件触发
  ADC_InitABC.ADC_DataAlign=ADC_DataAlign_Right;//右对齐
  ADC_InitABC.ADC_NbrOfConversion=1;//1个转换在规则序列中
  ADC_Init(ADC1,&ADC_InitABC);
  ADC_RegularChannelConfig(ADC1,ADC_Channel_5,1,ADC_SampleTime_480Cycles);//ADC5,ADC通道,4801个周期
  ADC_RegularChannelConfig(ADC1,ADC_Channel_16,1,ADC_SampleTime_480Cycles);//ADC16,ADC通道,480个周期
  ADC_Cmd(ADC1,ENABLE);//开启AD转换器
}
//获取ADC值的函数
u16 Get_Adc(u8 ch)
{
  //设置指定ADC的规则组通道,一个序列,采样时间
  ADC_RegualrChannelConfig(ADC1,ch,1,ADC_SampleTime_480Cycles);//ADC1,ADC通道,480个周期
  ADC_SoftwareStartConv(ADC1);//使能指定的ADC1的软件转换启动功能
  while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));//等待转换结束
  return ADC_GetConversionValue(ADC1);//返回最近一次ADC1规则组的转换结果
}

//多次获取ADC通道的值,并求平均值以提高精度
u16 Get_Adc_Average(u8 ch,u8 times)
{
  u32 temp_val=0;
  u8 t;
  for(t=0;t<times;t++)
  {
    temp_val+=Get_Adc(ch);//获取通道转换值
    delays_ms(5);
  }
  return temp_val/times;
}
//得到温度值,返回温度值
short Get_Temprate(void)
{
  u32 adcx;
  short result;
  double temperate;
  adcx=Get_Adc_Average(ADC_Channel_16,10);//读取通道16内部温度传感器通道,10次取平均值
  temperate=(float)adcx*(3.3/4096);//电压值
  temperate=(temperate-0.76)/0.0025+25;//转换为温度值
  result=temperate*=100;//扩大100倍
  return result;
}

 对于STM32F40X系列使用的温度传感器内部通道1~16文章来源地址https://www.toymoban.com/news/detail-535073.html

到了这里,关于STM32——内部温度传感器实验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32-光敏传感器实验

    光敏传感器的主要是光敏二极管,核心是PN结,利用了光电效应,对光强很敏感,有单向导电性,工作时需要加反向电压。光照越强,等效电阻越小。 实验要求通过ADC3通道6(PF8)采集光敏二极管的电压,然后转换为0~100的光纤强度值并显示在液晶屏上。 由下图可知对于的通

    2024年02月05日
    浏览(31)
  • STM32CubeMX 读取DS18B20温度传感器数据串口打印显示

    本文要做的所有工作标题基本都包括了,读取温度传感器的温度数值,再通过串口打印到串口助手; 好多博主大神的教程我按步骤做了之后总是出现程序不报错并且检测不到传感器的情况,后来找到原因并且修改后调试正常。 我用的是普中科技的实验板,主控芯片为STM3210

    2024年02月05日
    浏览(71)
  • STM32模拟I2C协议获取HDC1080温度和湿度传感器数据

    HDC1080是一款温湿度传感器,具有如下特点: 其中温度和湿度经过出厂校准。这里介绍STM32模拟I2C总线协议访问HDC1080的HAL库实现范例。 HDC1080的内部原理及电路连接如下: HDC1080具有低功耗特征,每次触发检测转换后进入睡眠状态,另外内部有一个加热电阻,在环境湿度高时,

    2024年02月11日
    浏览(94)
  • 通过STM32内部ADC将烟雾传感器发送的信号值显示在OLED上

    一.CubeMX配置 首先我们在CubeMX配置ADC1, 设置一个定时器TIM2定时1s采样一次以及刷新一次OLED, 打开IIC用于驱动OLED显示屏。 二.程序 在Keil5中添加好oled的显示库,以及用来显示的函数、初始化函数、清屏函数等。在主程序中初始化oled,并将其清屏。 在定时器中断回调函数中对A

    2024年02月15日
    浏览(37)
  • (STM32F103单片机)DHT11温湿度传感器

    目录   一,产品介绍 二,产品亮点 三,产品参数 四,引脚连接及通信说明  五,原理讲解 六,源码 1,DHR11.C 2.DHR11.H 3,main.c DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高

    2023年04月08日
    浏览(47)
  • 71、基于STM32单片机的颜色识别感应传感器检测系统设计

    毕设帮助、开题指导、技术解答(有偿)见文末。 目录 摘要 一、硬件方案 二、设计功能 三、实物图 四、原理图 五、PCB图 六、硬件框图 七、程序源码 八、资料包括 随着现代工业生产向高速化、自动化方向的发展,色彩识别广泛应用于各种工业检测和自动控制领域,而生

    2024年02月16日
    浏览(45)
  • 实训关于stm32单片机的多个传感器应用(附C++源码和解析)

    目录 1.实验的目的和要求 2.设计的软件环境 3.思路流程图 4.关键代码解析 4.1温湿度传感器(要监测当前环境的温度、湿度,通过温湿度传感器来实现的) 4.2.光敏电阻传感器(要监测当前环境的光照(黑天和白天),通过光敏电阻传感器来实现的,如果是黑夜,LED灯就亮蓝色

    2023年04月25日
    浏览(30)
  • 单片机设计:stm32远程水位检测灌溉系统(水泵+电机驱动+OLED显示屏+水位传感器+防水式ds18b20+光敏传感器+按键+WiFi+手机app)

    单片机设计:stm32远程水位检测灌溉系统(水泵+电机驱动+OLED显示屏+水位传感器+防水式ds18b20+光敏传感器+按键+WiFi+手机app) 一、主要功能:    1.水位传感器检测水的高度、光敏传感器检测周围光照强度、ds18b20检测水温 2.0LED、手机app显示当前数据以及阈值 3.手机app远程调节阈值,

    2024年02月05日
    浏览(38)
  • STM32单片机(五)第二节:EXTI外部中断练习(对射式红外传感器计次和旋转编码器计次)

    ❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋

    2024年02月09日
    浏览(39)
  • 【正点原子STM32连载】 第三十二章 光敏传感器实验 摘自【正点原子】STM32F103 战舰开发指南V1.2

    本章,我们将学习使用STM32开发板板载的一个光敏传感器。我们还是要使用到ADC采集,通过ADC采集电压,获取光敏传感器的电阻变化,从而得出环境光线的变化,并在TFTLCD上面显示出来。 本章分为如下几个小节: 32.1 光敏传感器简介 32.2 硬件设计 32.3 程序设计 32.4 下载验证

    2024年02月03日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包