0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32 驱动 SHT40 温湿度测量

jf_88434166 来源:jf_88434166 作者:jf_88434166 2026-04-15 10:14 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、SHT40 简介

SHT40 是由 Sensirion 推出的一款高精度数字温湿度传感器,采用紧凑型封装和低功耗设计,能够同时测量环境温度与相对湿度,并通过I²C接口输出校准后的数字信号;其具有响应速度快、长期稳定性好、抗污染能力强等特点,广泛应用于智能家居物联网设备以及工业环境监测等场景。

在这里插入图片描述

二、引脚功能

引脚功能
GND电源
VIN电源正
SCLIIC时钟线
SDAIIC数据线

三、指令介绍

在这里插入图片描述

测量指令

命令精度特点
0xFD高精度最准确,耗时最长
0xF6中精度平衡性能
0xE0低精度最快、最低功耗

加热器指令

功率1 s0.1 s
200 mW0x390x32
110 mW0x2F0x24
20 mW0x1E0x15

SHT40 的指令体系非常简洁:通过单字节指令选择测量精度、读取信息、执行复位或启用加热功能,正常环境下加热功能不用启动,当环境湿度较大、传感器有水雾时合理启用。

四、IIC时序与数据说明

时序说明

在这里插入图片描述
起始信号-->写地址-->接收应答-->发送指令-->接收应答-->停止信号

起始信号-->读地址-->接收应答-->接收温度数据高位-->发送应答-->接收温度数据低位-->发送应答-->接收CRC-->发送应答-->接收湿度数据高位-->发送应答-->接收湿度数据低位-->发送应答-->接收CRC-->发送非应答-->停止信号

SHT40不像大部分IIC设备需要读写寄存器,直接发送测量指令,然后读取数据既可。

数据说明

I²C 通信以 8 位(1字节)为单位,每 2 个数据字节后跟 1 个 CRC 校验字节,传感器每次测量返回 6 字节数据,顺序是固定的,即:
温度 MSB ,温度 LSB,温度 CRC,湿度 MSB,湿度 LSB,湿度 CRC

转换公式
在这里插入图片描述
SHT40输出的温度 (2字节) 与湿度 (2字节) 数据,可通过上图公式转化

CRC 校验机制

在这里插入图片描述
每 2 字节数据(16-bit)对应 1 个 CRC,主机收到数据后,可以对前两个字节根据公式计算 CRC,与传感器返回的 CRC 对比校验,用于判断数据是否正确

五、程序

SHT40.C

#include "stm32f10x.h"
#include "MyI2C.h"
#include "Delay.h"
#define SHT40_W 0x88
#define SHT40_R 0x89
uint16_t  temp=0;
uint16_t  humi=0;
//Command:0xFD(高精度测量)    0xF6(中精度测量)   0xE0(低精度测量)
void SHT40_Read(uint8_t Command)
{
	MyI2C_Start();																		//起始信号
	MyI2C_SendByte(SHT40_W);													//发送写地址
	MyI2C_ReceiveAck();																//接收应答 未作处理
	MyI2C_SendByte(Command);													//发送命令
	MyI2C_ReceiveAck();																//接收应答 未作处理
	MyI2C_Stop();																		  //停止信号
	
	Delay_ms(100);
	
	MyI2C_Start();																		//起始信号
	MyI2C_SendByte(SHT40_R);													//发送读地址
	MyI2C_ReceiveAck();																//接收应答 未作处理
	
	temp = MyI2C_ReceiveByte();												//接收温度数据
	MyI2C_SendAck(0);																	//发送应答
	temp = (temp < < 8) | (MyI2C_ReceiveByte());			  //接收温度数据
	MyI2C_SendAck(0);																	//发送应答
	MyI2C_ReceiveByte();															//接收CRC  未作处理
	MyI2C_SendAck(0);																	//发送应答
	
	humi = MyI2C_ReceiveByte();												//接收湿度数据
	MyI2C_SendAck(0);																	//发送应答
	humi = (humi < < 8) | (MyI2C_ReceiveByte());			  //接收温度数据
	MyI2C_SendAck(0);																	//发送应答
	MyI2C_ReceiveByte();															//接收CRC  未作处理
	MyI2C_SendAck(1);																	//发送非应答
	MyI2C_Stop();																		  //停止信号
}
float SHT40_Convert_Temp(void)
{
	return (-45 + 175 * ((float)temp / 65535.0));
}
float SHT40_Convert_Humi(void)
{
	return (-6 + 125 * ((float)humi / 65535.0));
}

main.C

#include "stm32f10x.h"
#include "Delay.h"
#include "OLED.h"
#include "SHT40.h"
#include "MyI2C.h"
float  Temp=0;
float  Humi=0;

int main(void)
{
	Delay_ms(1000);//上电延时
	MyI2C_Init();
	OLED_Init();
	while(1)
	{
		SHT40_Read(0xFD);//0xFD(高精度测量)    0xF6(中精度测量)   0xE0(低精度测量)
		Temp = SHT40_Convert_Temp();
		Humi = SHT40_Convert_Humi();
		OLED_ShowSignedNum(1,2,Temp,2);OLED_ShowChar(1,5,'.');OLED_ShowNum(1,6,(Temp-(int)Temp)*100,2);OLED_ShowChar(1,8,0x43);
		OLED_ShowSignedNum(2,2,Humi,2);OLED_ShowChar(2,5,'.');OLED_ShowNum(2,6,(Humi-(int)Humi)*100,2);OLED_ShowChar(2,8,0x25);
		Delay_ms(700);
	}
}

六、实验现象

----------------------------------------------------OLED接线------------------------------------------------------
SCL-----PB8
SDA-----PB9
----------------------------------------------------SHT40接线--------------------------------------------------
SCL-----PB10
SDA-----PB11

室内温湿度数据
在这里插入图片描述

手捂住传感器温湿度

在这里插入图片描述
模块湿度变化速度较快,温度变化速度较慢,需等待一定的缓冲时间

以上内容个人理解,如有不正欢迎指正,需要资料及工程可留言邮箱

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2312

    文章

    11189

    浏览量

    374520
  • 温湿度测量
    +关注

    关注

    0

    文章

    6

    浏览量

    7453
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    昉·星光开发板温湿度传感器使用

    本次课程为昉·星光开发板IoT开发系列课程的第三讲,将带领同学们在昉·星光开发板上,使用SHT3X温湿度传感器。 一、学习目标 学习昉·星光开发板上使用SHT3X温湿度传感器,并根
    发表于 03-26 07:48

    LES20-SHT40-S2-RS485 温湿度变送器 花卉温室智能管控系统应用方案

    、高适配性的技术解决方案。【关键词】LES20-SHT40-S2-RS485;温湿度变送器;花卉温室;智能温湿度管控;SHT40 传感器;Modbus RTU 协议;RS485 通信;
    的头像 发表于 02-28 14:00 204次阅读
    LES20-<b class='flag-5'>SHT40</b>-S2-RS485 <b class='flag-5'>温湿度</b>变送器 花卉温室智能管控系统应用方案

    冷库温湿度监控系统物联网解决方案

    冷库作为生鲜食品、医药试剂、化工原料等物资的核心存储载体,温湿度的稳定性直接决定物资品质与安全。传统冷库温湿度管理存在诸多痛点:人工巡检效率低、误差大,难以实现 24 小时全覆盖监测;温湿度异常后
    的头像 发表于 01-19 16:57 682次阅读

    基于芯源CW32F030 MCU低功耗温湿度监测系统设计

    的项目。 系统概述 功能描述:实时监测环境温湿度,并通过串口输出结果。采用SHT30传感器进行数据采集。系统闲置时进入低功耗模式,延长电池寿命。 硬件组成: MCU:CW32F030 温湿度传感器
    发表于 12-03 06:20

    温湿度传感器HTU31D在温湿度控器中的应用优势

    温湿度控制器是一种用于监测和调节环境温度与湿度的设备,广泛应用于农业、仓储、工业生产、家庭等多个领域。其主要功能是维持特定环境条件,以确保产品质量和舒适的居住环境。 温湿度控制器的工作过程是传感器
    的头像 发表于 11-06 14:38 435次阅读
    <b class='flag-5'>温湿度</b>传感器HTU31D在<b class='flag-5'>温湿度</b>控器中的应用优势

    如何对电能质量在线监测装置进行温湿度环境适应性测试?

    对电能质量在线监测装置进行温湿度环境适应性测试,核心是通过 高低温湿热箱模拟目标场景的极端温湿度条件 ,验证装置在 “低温启动、高温运行、湿热耐受” 下的 运行稳定性、测量精度、硬件可
    的头像 发表于 10-22 17:50 1516次阅读

    工业烘干机中使用SHT30温湿度传感器的注意事项

    工业烘干机内部是一个极端恶劣的环境,使用SHT30-DIS这样的传感器监测温湿度,需要注意以下方面:挑战具体描述对SHT30-DIS的影响高温工业烘干机的工作温度通常在60°C至120°C+之间
    的头像 发表于 10-09 12:07 960次阅读
    工业烘干机中使用<b class='flag-5'>SHT</b>30<b class='flag-5'>温湿度</b>传感器的注意事项

    基于LORA无线通讯的祥控多点式烟叶温湿度监测系统

    XKCON祥控多点式烟叶温湿度监测系统基于LORA无线通讯技术,无需复杂的布线工作,缩短了工期,节省了成本;系统可以根据烟厂的实际布局和需求进行灵活配置,实现对各单点无线温湿度检测杆测量信号的采集接收,大大提升了系统监测和调控能
    的头像 发表于 09-23 17:02 893次阅读
    基于LORA无线通讯的祥控多点式烟叶<b class='flag-5'>温湿度</b>监测系统

    零知开源——STM32F407VET6驱动SHT41温湿度传感器完整教程

    目基于STM32F407VET6零知增强板,实现SHT41高精度温湿度传感器的驱动和数据采集。SHT41是Sensirion推出的新一代数字
    发表于 07-10 12:01

    零知开源——STM32F407VET6驱动SHT41温湿度传感器完整教程

    摘要:本项目基于STM32F407VET6零知增强板驱动SHT41高精度温湿度传感器,实现±0.2℃温度精度和±1.8%RH湿度精度的数据采
    的头像 发表于 07-09 18:53 1850次阅读
    零知开源——<b class='flag-5'>STM32</b>F407VET6<b class='flag-5'>驱动</b><b class='flag-5'>SHT</b>41<b class='flag-5'>温湿度</b>传感器完整教程

    Sensirion 推出带保护盖的新型数字温湿度传感器

    Sensirion 新推出 SHT40-AD1P-R2和SHT41-AD1P-R2 两款数字温湿度传感器,现已通过其全球代理网络销售。这两款传感器专为要求苛刻的应用环境设计,具有高精度和高可靠性,并
    发表于 06-26 17:56 1647次阅读
    Sensirion 推出带保护盖的新型数字<b class='flag-5'>温湿度</b>传感器

    常见的温湿度传感器类型?

    温湿度传感器是一种用于测量环境温度和湿度的设备,广泛应用于工业、农业、气象等领域。以下是几种常见的温湿度传感器类型及其优缺点: 电容式湿度
    发表于 06-24 09:24

    Fluke 972温湿度测量仪的使用体验

    作为药厂的设备工艺工程师,我的主要职责是维护制药设备的稳定运行和监测生产区域、连接走廊的温湿度,要严格符合企业规范(温度20-25℃,湿度40%~60%RH)。在日常的巡检工作中,我需要每日三次定点检查并详细记录数据,同时还要应
    的头像 发表于 06-11 17:32 1286次阅读

    温湿度变送器功能有哪些?一文详细解析

    对于很多行业来说,精确的测量以及控制温度和湿度至关重要。想要达到这个目的,往往需要用到温湿度变送器。那么,温湿度变送器究竟有哪些功能呢?下面为大家详细介绍。 一、精确
    发表于 06-03 10:56

    智能仓储:温湿度监控方案应用

    随着仓储环境要求提高,温湿度监控对保障货物品质至关重要。本文介绍一个工厂仓库温湿度监控方案,利用温湿度变送器、LoRa技术和智能监测平台,为仓库业主提供高效、可靠的监测解决方案。仓库温湿度
    的头像 发表于 05-29 11:35 901次阅读
    智能仓储:<b class='flag-5'>温湿度</b>监控方案应用