网站建设费用组成,wordpress打开要10秒,搜索引擎优化论文3000字,大数据营销的优缺点一、温湿度传感器#xff1a; 温湿度传感器是一种能够检测环境中的温度和湿度#xff0c;并将其转化为电信号输出的装置。它在智能家居、工业自动化、气象监测、农业等领域有着广泛的应用。
原理#xff1a;
温湿度传感器通常基于不同的物理原理#xff0c;以下是一些常见…一、温湿度传感器 温湿度传感器是一种能够检测环境中的温度和湿度并将其转化为电信号输出的装置。它在智能家居、工业自动化、气象监测、农业等领域有着广泛的应用。
原理
温湿度传感器通常基于不同的物理原理以下是一些常见的原理 热电偶原理热电偶传感器通过两种不同金属导线连接点的电压变化来感应温度。 热敏电阻原理热敏电阻的电阻值随温度变化而变化通过测量电阻值可以计算出温度。 湿敏电容原理湿敏电容的电容值会随着湿度的变化而变化通过测量电容值可以确定湿度。 露点温度原理通过测量空气冷却至露点时的温度来确定湿度。
作用
环境监测监测室内外环境的温湿度用于舒适度控制。工业控制在工业生产过程中控制环境的温湿度以保证产品质量。农业监测温室或农田的温湿度优化作物生长条件。医疗医院等场所需要精确控制温湿度以保证病人舒适及设备正常运作。
AHT10温湿度传感器 AHT10新一代温湿度传感器在尺寸与智能方面建立了新的标准它嵌入了适于回流焊的双列扁平无引脚SMD 封装底面 4 x 5mm 高度1.6mm。传感器输出经过标定的数字信号标准 I2C 格式。AHT10 配有一个全新设计的 ASIC专用芯片、一个经过改进的MEMS半导体电容式湿度传感元件和一个标准的片上温度传感元件其性能已经大大提升甚至超出了前一代传感器的可靠性水平新一代温湿度传感器经过改进使其在恶劣环境下的性能更稳定。每一个传感器都经过校准和测试在产品表面印有产品批号。由于对传感器做了改良和微型化改进因此它的性价比更高并且最终所有设备都将得益于尖端的节能运行模式。 应用范围主要在暖通空调 、除湿器、测试及检测设备、消费品、汽车 、自动控制、数据记录器、气象站、家电、湿度调节、医疗及其他相关温湿度检测控制。
电气特点
数字输出AHT10采用数字I2C接口与微控制器通信方便。精度高温度测量精度为±0.5°C湿度测量精度为±2%RH。响应速度快快速响应环境中的温湿度变化。低功耗适合电池供电的便携式设备。集成度高AHT10将传感器、模拟信号处理、数字接口等功能集成在一个小型封装内。
AHT10的工作流程大致如下
上电初始化AHT10在上电后需要初始化这通常通过发送特定的命令序列来完成。测量初始化后可以命令AHT10进行一次或周期性的温湿度测量。数据读取测量完成后通过I2C接口读取测量数据。数据处理将读取的原始数据转换为实际的温湿度值。 二、cubeMX配置
1、开启I2C 2、开启串口 具体串口配置如下
【STM32-HAL库】串口配置、printf函数重定向https://blog.csdn.net/qq_39150957/article/details/136638229?fromshareblogdetailsharetypeblogdetailsharerId136638229sharereferPCsharesourceqq_39150957sharefromfrom_link
三、编写代码 AHT10.h
#ifndef _AHT10_H_
#define _AHT10_H_#include i2c.h// 定义AHT10地址
#define AHT10_ADDRESS 0x70
#define AHT10_Write_ADDRESS 0x70
#define AHT10_Read_ADDRESS 0x71// 定义AHT10命令
#define AHT10_Init_com 0xE1 // 1110 0001
#define AHT10_SoftReset_com 0xBA // 1011 1010
#define AHT10_TrigeMea_com 0xAC // 1010 1100void AHT10_SoftReset(void);
void AHT10_TrigeMea(void);
void AHT10_Init(void);
uint8_t AHT10_Read_predata(float *humidity, float *temperature);#endifAHT10.c
#include AHT10.h/*** brief AHT10 初始化* param void* retval void*/
void AHT10_Init(void)
{uint8_t senddata;senddata AHT10_Init_com;HAL_I2C_Master_Transmit(hi2c1, AHT10_Write_ADDRESS, senddata, 1, 0xFFFF);
}/*** brief AHT10 软复位* param void* retval void*/
void AHT10_SoftReset(void)
{uint8_t senddata;senddata AHT10_SoftReset_com;HAL_I2C_Master_Transmit(hi2c1, AHT10_Write_ADDRESS, senddata, 1, 0xFFFF);HAL_Delay(20);
}/*** brief AHT10触发测量* param void* retval void*/
void AHT10_TrigeMea(void)
{uint8_t senddata[3];senddata[0] AHT10_TrigeMea_com;senddata[1] 0x33; // DATA0senddata[2] 0x00; // DATA1HAL_I2C_Master_Transmit(hi2c1, AHT10_Write_ADDRESS, senddata, 3, 0xFFFF);HAL_Delay(80);
}/*** brief AHT10 设备读取 相对湿度和温度* param float *humidity湿度信息* float *temperature温度信息。* retval uint8_t0-读取数据正常; 1-读取设备失败设备一直处于忙状态不能获取数据*/
uint8_t AHT10_Read_predata(float *humidity, float *temperature)
{AHT10_TrigeMea();HAL_Delay(75);static uint32_t humi, temp;uint8_t readdata[6];uint8_t BusyIndication, CalEnable;HAL_I2C_Master_Receive(hi2c1, AHT10_Read_ADDRESS, readdata, 6, 0xFFFF);BusyIndication (readdata[0] 7) 0x01; // 状态标志位CalEnable (readdata[0] 3) 0x01; // 校准标志位if (CalEnable 0){AHT10_SoftReset();}if (BusyIndication 0){humi (readdata[1] 12) | (readdata[2] 4) | (readdata[3] 4);temp ((readdata[3] 0x0F) 16) | (readdata[4] 8) | (readdata[5]);*humidity ((humi * 100.0) / 1048576);*temperature ((float)temp / 1048576) * 200 - 50;return 0;}return 1;
} main.c
引入头文件
/* USER CODE BEGIN Includes */#include AHT10.h/* USER CODE END Includes */
初始化函数 /* USER CODE BEGIN 2 */
HAL_Delay(20);
AHT10_Init();float humidity,temperature;/* USER CODE END 2 */
主循环内代码 /* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */AHT10_Read_predata(humidity,temperature);printf(湿度%.2f%%;温度%.2f\r\n,humidity,temperature);HAL_Delay(1000);}/* USER CODE END 3 */
四、接线示意
I2C接模块我们可以从cubeMX中配置看到引脚及引脚定义 STM32 AHT10温湿度传感器 PB6SCLPB7SDA3.3VVCCGND GND 串口接引脚我们也可以从下面引脚示意中看到 STM32串口模块PA9RXPA10TX3.3VVCCGNDGND 五、运行效果
我们打开串口助手即可查看到当前的效果
我哈了一口气所以看到温度在上升、湿度也在上升。 工程下载
通过百度网盘分享的文件AHT10.zip 链接https://pan.baidu.com/s/1hoSKvpqDYm9s_rrKE9KCEQ 提取码6666https://pan.baidu.com/s/1hoSKvpqDYm9s_rrKE9KCEQ