SHT30 温湿度传感器:原理与读取方法详解
演示视频:
【开源】STM32+SHT30温湿度传感器
在物联网、智能家居、工业控制等领域,精准的温湿度监测是保障设备稳定运行、环境舒适可控的关键环节。SHT30 作为瑞士 Sensirion 公司推出的一款高精度数字温湿度传感器,凭借其卓越的性能、小巧的封装和简便的接口,成为众多场景下的优选方案。本文将从传感器的基本特性出发,深入解析其工作原理,并详细介绍两种主流的读取方法,为工程实践提供参考。
一、SHT30 传感器的基本特性与优势
在深入技术细节前,先明确 SHT30 的核心参数与优势,这是理解其原理和应用的基础:
-
高精度测量:温度测量范围为 - 40℃~125℃,精度在 0℃~65℃区间内可达 ±0.2℃;湿度测量范围为 0% RH~100% RH,精度在 20% RH~80% RH 区间内可达 ±2% RH,能满足绝大多数场景的精准监测需求。
-
数字输出接口:采用 I²C(Inter-Integrated Circuit)总线接口,支持标准模式(100kHz)和快速模式(400kHz),无需额外的模拟信号转换电路,直接与微控制器(如 STM32、Arduino、ESP32 等)通信,简化硬件设计。
-
低功耗设计:传感器支持单次测量模式和周期性测量模式,单次测量后可自动进入休眠模式,休眠电流仅 0.1μA,周期性测量时平均电流最低可至 0.5μA,适合电池供电的低功耗设备。
-
稳定性与可靠性:采用 CMOSens® 技术(CMOS 传感器技术),集成了温度补偿功能,有效降低环境温度对湿度测量的影响;同时具备抗干扰能力,能在复杂电磁环境下稳定工作,使用寿命可达 10 年以上。
-
小巧封装:提供 DFN(双扁平无引脚)封装(2.5mm×2.5mm×0.9mm)和 TO-92 封装,适合空间受限的场景,如穿戴设备、小型传感器节点等。
二、SHT30 的工作原理
SHT30 的核心是 “湿度感应元件 + 温度感应元件 + 信号处理电路” 的集成设计,其测量原理基于物理特性的变化,结合 CMOSens 技术实现精准的数字信号输出,具体可分为湿度测量和温度测量两部分。
1. 湿度测量原理:电容式湿度感应
SHT30 的湿度感应元件采用高分子聚合物电容结构,核心是 “两个电极夹着一层高分子聚合物薄膜” 的电容器。这层聚合物薄膜具有 “吸湿膨胀、失湿收缩” 的特性,而电容的容量与电极间介质的介电常数直接相关 —— 当环境湿度变化时,聚合物薄膜吸收或释放水分子,导致其介电常数发生改变,进而使电容器的容量产生对应变化。
具体过程如下:
-
当环境湿度升高时,聚合物薄膜吸收水分子,介电常数增大,电容容量随之增大;
-
当环境湿度降低时,聚合物薄膜释放水分子,介电常数减小,电容容量随之减小;
-
传感器内部的信号处理电路会对电容容量的变化进行检测,并将其转换为微弱的模拟电压信号;
-
模拟电压信号经过放大、滤波后,送入 ADC(模数转换器)转换为数字信号;
-
最后,通过内部的校准电路(基于出厂前的校准数据)对数字信号进行补偿修正,得到精准的湿度值。
需要注意的是,湿度感应元件的电容变化受温度影响较大(温度会改变聚合物薄膜的分子活性,进而影响吸湿能力),因此必须结合温度测量结果进行 “温度补偿”,才能确保湿度测量的精度 —— 这也是 SHT30 将温度感应与湿度感应集成在一起的核心原因之一。
2. 温度测量原理:电阻式温度感应
SHT30 的温度感应元件采用高精度铂电阻或NTC 热敏电阻(不同型号略有差异,主流为铂电阻),其原理基于 “导体电阻随温度变化” 的物理特性 —— 铂电阻的电阻值与温度呈良好的线性关系,且稳定性极高,适合高精度温度测量。
具体过程如下:
-
传感器内部会向铂电阻施加一个恒定的微小电流(避免电流过大导致电阻发热,影响测量精度);
-
随着环境温度变化,铂电阻的电阻值发生线性变化,根据欧姆定律(U=IR),电阻两端的电压也会随之变化;
-
电压信号经过放大、滤波后,送入 ADC 转换为数字信号;
-
结合内部的温度校准曲线,对数字信号进行修正,得到精准的温度值 —— 该温度值一方面作为最终输出,另一方面用于湿度测量的温度补偿。
3. 信号处理与输出:CMOSens 技术的核心作用
SHT30 之所以能实现高精度、低功耗和数字输出,关键在于集成了 Sensirion 的 CMOSens 技术。该技术将 “感应元件、信号放大、ADC 转换、校准存储、I²C 通信接口” 全部集成在一块 CMOS 芯片上,形成 “一体化解决方案”:
-
校准数据存储:出厂前,每颗 SHT30 都会在标准温湿度环境下进行校准,校准数据(如温度补偿系数、湿度修正参数)被存储在传感器内部的 EEPROM 中,每次测量时都会调用这些数据进行修正,确保一致性和精度;
-
数字信号直接输出:无需外部 ADC 电路,传感器直接输出经过校准的温湿度数字信号,通过 I²C 接口传输给微控制器,减少了外部电路的干扰和误差;
-
低功耗控制:CMOSens 技术的电路设计采用低功耗架构,支持休眠模式与测量模式的快速切换,在保证性能的同时降低功耗。
三、SHT30 的读取方法
SHT30 通过 I²C 接口与微控制器通信,读取温湿度数据的核心是 “按照 I²C 协议发送指令→传感器执行测量→接收传感器返回的数字数据→数据解析与转换”,具体可分为 “单次测量模式” 和 “周期性测量模式” 两种,适用于不同的应用场景。
1. 前提:I²C 通信的基础配置
在读取数据前,需先完成 I²C 接口的基础配置,确保微控制器与 SHT30 的通信参数一致:
-
I²C 从机地址:SHT30 的 I²C 从机地址由硬件引脚(ADDR 引脚)决定,默认有两种地址:ADDR 引脚接 GND 时,地址为 0x44;ADDR 引脚接 VDD 时,地址为 0x45(部分型号可能略有差异,需参考 datasheet);
-
通信速率:支持 100kHz(标准模式)和 400kHz(快速模式),需根据微控制器的 I²C 配置选择匹配的速率,建议优先使用快速模式以提高数据读取效率;
-
电源电压:SHT30 的工作电压范围为 2.4V~5.5V,需确保供电电压稳定,避免电压波动导致测量误差或通信失败。
2. 方法一:单次测量模式(适合低频率监测)
单次测量模式是指 “微控制器发送一次测量指令→SHT30 执行一次温湿度测量→返回数据后自动进入休眠模式”,适用于对监测频率要求不高的场景(如每小时监测一次),可最大限度降低功耗。
具体步骤如下:
-
启动 I²C 通信:微控制器向 SHT30 的 I²C 从机地址发送 “起始信号(S)”,并等待传感器的 “应答信号(ACK)”;
-
发送测量指令:确认通信建立后,微控制器发送 “单次测量指令”—— 指令分为 “高精度模式”“中精度模式”“低精度模式”(对应不同的测量时间和精度,默认推荐高精度模式),高精度模式的指令为 0x2C06(指令分为两个字节:高字节 0x2C,低字节 0x06,需按顺序发送);发送指令后,等待传感器的 ACK 信号;
-
等待测量完成:SHT30 接收到指令后,开始执行温湿度测量,测量过程需要一定时间(高精度模式约 15ms),微控制器需等待足够的时间(建议等待 20ms,避免数据未准备好导致读取失败);
-
接收数据:测量完成后,SHT30 会通过 I²C 总线返回 6 个字节的数据,数据格式为:
温度高字节(T_H)→温度低字节(T_L)→温度校验字节(T_CRC)→湿度高字节(RH_H)→湿度低字节(RH_L)→湿度校验字节(RH_CRC);微控制器需依次接收这 6 个字节,并对每个数据(温度、湿度)进行 CRC 校验(确保数据传输无错误); -
数据解析与转换:
-
温度数据转换:将温度高字节和低字节组合为一个 16 位的二进制数(T = T_H << 8 | T_L),再通过公式转换为实际温度值:
温度(℃)= -45 + (175 × T) / (2^16 - 1); -
湿度数据转换:将湿度高字节和低字节组合为一个 16 位的二进制数(RH = RH_H << 8 | RH_L),通过公式转换为实际湿度值:
湿度(%RH)= (100 × RH) / (2^16 - 1);
- 结束通信:数据读取完成后,微控制器发送 “停止信号(P)”,SHT30 自动进入休眠模式,等待下一次指令。
3. 方法二:周期性测量模式(适合高频率监测)
周期性测量模式是指 “微控制器发送一次周期性测量指令→SHT30 按照设定的频率(如每 100ms、200ms、1s 等)持续测量温湿度→微控制器可随时读取最新的测量数据”,适用于对监测频率要求高的场景(如实时环境监控)。
具体步骤如下:
-
启动 I²C 通信与发送周期性指令:与单次测量模式类似,微控制器先发送起始信号和从机地址,确认 ACK 后,发送 “周期性测量指令”—— 指令需指定 “测量频率” 和 “精度模式”,例如 “高精度 + 1s 测量周期” 的指令为 0x2236(不同频率对应不同指令,需参考 datasheet);发送指令后,等待 ACK;
-
传感器进入周期性测量状态:SHT30 接收到指令后,进入周期性测量状态,按照设定的频率持续测量温湿度,并将最新的测量数据存储在内部寄存器中;此时传感器不会自动休眠,除非接收到 “停止周期性测量指令”;
-
读取数据(按需读取):微控制器可在需要时(如每隔 500ms)发送 “读取数据指令”(指令为 0xE000),发送后等待 ACK,随后接收 6 个字节的数据(格式与单次测量模式一致);
-
数据解析与转换:与单次测量模式的步骤 5 完全相同,通过公式将 16 位数据转换为实际的温湿度值;
-
停止周期性测量(可选):当不需要继续周期性测量时,微控制器发送 “停止周期性测量指令”(指令为 0x3093),SHT30 接收到指令后停止测量,进入休眠模式,降低功耗。
4. 关键注意事项:CRC 校验
无论是单次测量还是周期性测量,SHT30 返回的数据都包含 CRC 校验字节(温度和湿度各 1 个),其作用是验证数据在传输过程中是否出现错误(如干扰导致的字节位翻转)。微控制器必须进行 CRC 校验,才能确保读取的数据可靠。
CRC 校验的规则(基于 SHT30 datasheet):
-
多项式:CRC-8,多项式为 0x31(即 X⁸ + X⁵ + X⁴ + 1);
-
初始值:0xFF;
-
计算范围:对温度的两个字节(T_H、T_L)或湿度的两个字节(RH_H、RH_L)进行 CRC 计算;
-
校验结果:计算得到的 CRC 值应与传感器返回的 CRC 字节(T_CRC 或 RH_CRC)完全一致,若不一致,则说明数据传输错误,需重新读取。
四、总结
SHT30 凭借 CMOSens 技术的集成优势,实现了高精度、低功耗、数字输出的温湿度测量,其工作原理基于电容式湿度感应和电阻式温度感应,结合温度补偿确保测量精度。在读取方法上,单次测量模式适合低频率、低功耗场景,周期性测量模式适合高频率、实时监测场景,两种模式均需遵循 I²C 协议,并通过 CRC 校验保证数据可靠性。
在实际应用中,需根据具体的场景需求(如监测频率、功耗限制、空间大小)选择合适的测量模式和封装,并严格按照 datasheet 的指令格式和时序要求进行硬件设计与软件开发,才能充分发挥 SHT30 的性能优势,实现稳定、精准的温湿度监测。
3092

被折叠的 条评论
为什么被折叠?



