STM32开发(15)----芯片内部温度传感器

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


前言

本章介绍STM32芯片温度传感器的使用方法和获取方法。

一、什么是内部温度传感器?

STM32 有一个内部的温度传感器,可以用来测量 CPU 及周围的温度( 内部温度传感器更适合于检测温度的变化,需要测量精确温度的情况下,应使用外置传感器 )。对于 STM32F103来说,该温度传感器在内部和 ADC1_IN16 输入通道相连接,此通道把传感器输出的电压转换
成数字值。温度传感器模拟输入推荐采样时间是 17.1us。STM32F103 内部温度传感器支持的温度范围为:-40~125 度。精度为±1.5℃左右。STM32 内部温度传感器的使用很简单,只要设置一下内部 ADC,并激活其内部温度传感器通道就差不多了。关于 ADC 的设置,我们在上一章已经进行了详细的介绍,这里就不再多说。接下来我们介绍一下和温度传感器设置相关的两个地方。第一个地方,我们要使STM32 的内部温度传感器,必须先激活 ADC 的内部通道,这里通过 ADC_CR2 的 AWDEN 位(bit23)设置。设置该位为 1 则启用内部温度传感器。第二个地方,STM32 的内部温度传感器固定的连接在 ADC1 的通道 16 上,所以,我们在设置好 ADC1 之后只要读取通道 16 的值,就是温度传感器返回来的电压值了。根据这个值,我们就可以计算出当前温度。计算公式如下:
𝑈(℃) ={ (V25-Vsense) / Avg_Slope}+25
式子中:
V25 = Vsense 在 25 度时的数值(典型值为:1.43)
Avg_Slope = 温度与 Vsense 曲线的平均斜率(单位:mv/℃或 uv/℃)(典型值:4.3mv/℃)。
利用以上公式,我们就可以方便的计算出当前温度传感器的温度了。

从下面ADC通道列表中可以看到,ADC1的16通道连接内部的温度传感器
STM32开发(15)----芯片内部温度传感器

二、实验过程

1.STM32CubeMX配置

选择芯片stm32f103c6t6,新建工程

STM32开发(15)----芯片内部温度传感器

设置时钟源,最小系统外部晶振8Mhz,作为外部高速HSE时钟源。由于没有外接外部低速晶振,这里低速时钟源选择旁路时钟源。

STM32开发(15)----芯片内部温度传感器

配置时钟树,这里使用官方推荐的配置

STM32开发(15)----芯片内部温度传感器
为了展示内部温度的变化,我们配置USART1,打印获取温度的结果
STM32开发(15)----芯片内部温度传感器
USART1的参数配置如下,波特率115200,传输数据长度为8 Bit,奇偶检验无,停止位1.其他参数默认
STM32开发(15)----芯片内部温度传感器
配置ADC,激活ADC1温度传感器通道,设置右对齐,关闭扫描、连续及间断模式,使能regular conversion,设置软件触发、设置采样时间239.5个周期(19.96us)
STM32开发(15)----芯片内部温度传感器
Code Generator中设置只拷贝使用到的库,分离.c和.h文件

STM32开发(15)----芯片内部温度传感器

设置好项目名称和路径,点击GENERATE CODE即可,生成后使用keil5 IDE打开。

STM32开发(15)----芯片内部温度传感器

2.代码实现

在usart.c文件后面添加如下代码,代码中添加了#ifdef宏定义进行条件编译,如果使用GUNC编译,则PUTCHAR_PROTOTYPE 定义为int __io_putchar(int ch)函数,否则定义为int fputc(int ch, FILE *f)函数。

/* USER CODE BEGIN 0 */
#include "stdio.h"
#ifdef __GNUC__
  /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf
     set to 'Yes') calls __io_putchar() */
  #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
  #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */
/**
  * @brief  Retargets the C library printf function to the USART.
  * @param  None
  * @retval None
  */
PUTCHAR_PROTOTYPE
{
  /* Place your implementation of fputc here */
  /* e.g. write a character to the EVAL_COM1 and Loop until the end of transmission */
  HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
 
  return ch;
}
/* USER CODE END 0 */

main函数如下:

int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_ADC1_Init();
  MX_USART1_UART_Init();
  /* USER CODE BEGIN 2 */
	HAL_ADC_Start(&hadc1);	
	HAL_ADC_PollForConversion(&hadc1,10);	
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */
    /* USER CODE BEGIN 3 */
	float AD_Value = HAL_ADC_GetValue(&hadc1);

	float Vol_Value = AD_Value*(3.3/4096);	
	
	float Temperature = (1.43 - Vol_Value)/0.0043 + 25;	
	printf("MCU Internal Temperature: %.2f¡æ\r\n",Temperature);
	printf("\r\n");
  
	HAL_Delay(1000);
  }
  /* USER CODE END 3 */
}

3.实验结果

可以看到打印的实验结果如下
STM32开发(15)----芯片内部温度传感器

总结

以上介绍了STM32芯片温度传感器的使用方法和获取方法,代码都在群里,大家一起学习。文章来源地址https://www.toymoban.com/news/detail-446535.html

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

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

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

相关文章

  • 【正点原子STM32连载】 第四十二章 DS18B20数字温度传感器实验 摘自【正点原子】STM32F103 战舰开发指南V1.2

    1)实验平台:正点原子stm32f103战舰开发板V4 2)平台购买地址:https://detail.tmall.com/item.htm?id=609294757420 3)全套实验源码+手册+视频下载地址: http://www.openedv.com/thread-340252-1-1.html# 本章,我们将介绍STM32F103如何读取外部温度传感器的温度,来得到较为准确的环境温度。我们将学习

    2024年02月04日
    浏览(48)
  • STM32读取HX711压力传感器芯片数据

    目录 一、HX711压力传感器芯片介绍 1.1 HX711芯片介绍 1.2 芯片管脚与描述 1.3 芯片特点 二、测量原理 2.1 芯片原理图 2.2 压力传感器输出电压值 2.3 芯片原理概述 2.4 数据输出,输入通道和增益选择时序图 2.5 程序计算原理 2.5.1 如何计算传感器供电电压?  2.5.2 如何将 AD 值反向转

    2024年04月16日
    浏览(37)
  • 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)
  • STM32开发——ADC(烟雾传感器)

    目录 1.ADC简介 2.项目简介 3.CubeMX设置 4.函数代码 作用:用于读取电压值,然后转换为数字量传给单片机,单片机再通过计算,可以得到电压值。  ADC的性能指标 量程:能测量的电压范围 分辨率:ADC能辨别的最小模拟量,通常以输出二进制数的位数表示,比如:8、10、12、1

    2024年02月09日
    浏览(35)
  • STM32F1开发实例-振动传感器(机械)

    振动(敲击)传感器 振动无处不在,有声音就有振动,哒哒的脚步是匆匆的过客,沙沙的夜雨是暗夜的忧伤。那你知道理科工程男是如何理解振动的吗?今天我们就来讲一讲本节的主角:最简单的机械式振动传感器。 下图即为振动传感器,外形有几种,原理都相同:1个弹簧电

    2024年02月02日
    浏览(44)
  • 【嵌入式 – GD32开发实战指南(ARM版本)】第2部分 外设篇 - 第3章 温度传感器DS18B20

    DS18B20 是 DALLAS 最新单线数字温度传感器,新的\\\"一线器件\\\"体积更小、适用电压更宽、更经济。Dallas 半导体公司的数字化温度传感器 DS1820 是世界上第一片支持 \\\"一线总线\\\"接口的温度传感器。 DS18B20采用的单总线协议,也就是只需占用主机一个I/O口,无需其他外围电路,直接将

    2024年02月21日
    浏览(39)
  • STM32设计实现智能温度计(OLED屏幕的使用,多级屏幕转换,扫描键盘法的搭建、DS180B20温度传感器的使用、实现上位机的可视化)

    智能温度计的设计 设计内容 1)一路温度检测,量程为-40℃~+125℃,误差≤±0.5℃; 2)温度3位数码显示(XX.X℃); 3) 开机自检; 4)配简单键盘,如温度上、下限临界报警值设置; 5)配置通信接口,上位机显示温度曲线。 单片机(32、51)、温度传感器()、键盘、LCD、 我

    2024年02月10日
    浏览(37)
  • ESP32设备驱动-BMP183温度传感器驱动

    BMP183 是 BMP085 的功能兼容后继产品,BMP085 是面向消费类应用的新一代高精度数字压力传感器。 BMP183 的超低功耗、低电压电子器件针对移动电话、PDA、GPS 导航设备和户外设备的使用进行了优化。 BMP183 在快速转换时的低海拔噪声仅为 0.25 米,可提供卓越的性能。 SPI 接口允许

    2024年02月06日
    浏览(51)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包