智能传感器SHT11在单片机嵌入式系统中的应用
1
拍明芯城
智能传感器SHT11在单片机嵌入式系统中的应用
一、引言
在物联网、智能家居、工业自动化等现代科技领域,嵌入式系统凭借其高度集成化、智能化和实时性优势,成为推动技术革新的核心力量。其中,温湿度监测作为环境感知的基础环节,广泛应用于气象观测、农业大棚、医疗设备、仓储管理等场景。传统模拟式温湿度传感器需外接信号调理电路,且存在校准复杂、精度低、抗干扰能力弱等问题,难以满足高精度、低功耗的嵌入式系统需求。

瑞士Sensirion公司推出的SHT11数字式温湿度传感器,基于CMOSens™技术,将温湿度传感、信号放大、A/D转换、校准数据存储及I²C总线接口集成于单芯片,实现了“即插即用”的数字化输出。其高精度、低功耗、全互换性等特点,使其成为单片机嵌入式系统中温湿度监测的理想选择。本文将深入探讨SHT11的技术特性、硬件设计、软件编程及典型应用案例,为工程师提供从选型到落地的全流程技术参考。
二、SHT11传感器技术特性与选型依据
2.1 核心技术与性能参数
SHT11采用CMOSens™技术,将电容式湿度传感器与带隙式温度传感器集成于同一芯片,通过14位A/D转换器实现高精度数字化输出。其关键性能参数如下:
温湿度测量范围与精度:
温度:-40℃至123.8℃,典型精度±0.4℃(25℃时);
湿度:0%RH至100%RH,典型精度±3%RH(25℃时),分辨率14位(湿度)、12位(温度),可编程降至8位以降低功耗。
校准与长期稳定性:
传感器在精密湿度室中逐点校准,校准系数存储于OTP内存,确保100%互换性,长期稳定性优于±1%RH/年。
接口与通信协议:
采用二线制I²C类似协议(非标准I²C,需专用时序驱动),数据输出包含CRC校验,抗干扰能力强。
电源与功耗:
工作电压2.4V至5.5V,测量时电流550μA,平均电流28μA,休眠电流3μA,适合电池供电设备。
2.2 选型依据:为何选择SHT11?
在众多温湿度传感器中,SHT11的竞争优势体现在以下方面:
高集成度:
传统方案需外接信号调理电路、A/D转换器及校准模块,而SHT11将全部功能集成于7.65mm×5.08mm×23.5mm的LCC封装中,显著简化硬件设计,降低BOM成本。数字化输出与易用性:
直接输出校准后的数字信号,无需复杂算法处理,兼容各类微控制器(如51系列、STM32、Arduino),缩短开发周期。抗干扰与长期稳定性:
电容式湿度传感器采用聚合物覆盖层,抵御灰尘、腐蚀性气体干扰;CMOSens™技术降低信号噪声敏感度,适应工业环境长期运行。低功耗设计:
平均功耗仅28μA,休眠模式电流3μA,满足电池供电设备(如无线传感器节点)的节能需求。
2.3 替代方案对比
若项目对成本或性能有特殊需求,可参考以下替代型号:
SHT10:基础版,精度较低(湿度±4.5%RH),适合对成本敏感的消费电子;
SHT15:高精度版(湿度±2%RH),适用于实验室、医疗设备等严苛场景;
SHT3x系列(如SHT30/SHT31):兼容标准I²C协议,响应速度更快(<1秒),精度±1.5%RH,但价格较高;
DHT22:低成本方案,湿度精度±2%RH,但需外接上拉电阻,抗干扰能力弱于SHT11。
三、硬件系统设计:SHT11与单片机的接口电路
3.1 核心元器件选型
主控芯片:
STC89C52RC:8位8051内核,8KB Flash、512B RAM,支持串口通信,性价比高,适合基础温湿度监测;
STM32F103C8T6:32位ARM Cortex-M3内核,20KB RAM、64KB Flash,支持多任务调度,适合复杂场景;
ESP8266/ESP32:集成Wi-Fi模块,支持云端数据上传,适用于物联网应用。
显示模块:
LCD1602:2行16字符液晶屏,驱动简单,成本低,适合显示实时温湿度值;
OLED显示屏:高对比度、自发光,支持图形化界面,提升用户体验。
报警模块:
有源蜂鸣器:5V驱动,直接连接单片机I/O口,实现声光报警;
LED指示灯:红色(超限报警)、绿色(正常状态),串联1kΩ限流电阻。
按键模块:
轻触按键:3个按键分别连接P3.2-P3.4引脚,实现阈值调整、确认等功能。
3.2 SHT11接口电路设计
SHT11采用4引脚LCC封装,引脚功能如下:
GND:接地端;
VDD:电源端(2.4V-5.5V);
DATA:双向串行数据线,需外接10kΩ上拉电阻至VDD;
SCK:串行时钟输入,用于同步数据传输。
典型连接方式(以STC89C52RC为例):
DATA引脚连接P2.0,SCK引脚连接P2.1;
VDD接5V电源,GND接地;
DATA线上拉电阻确保信号稳定性,避免悬空干扰。
3.3 电源与抗干扰设计
电源滤波:
在VDD与GND之间并联0.1μF陶瓷电容和10μF钽电容,滤除高频噪声,稳定供电电压。布局优化:
SHT11应远离发热元件(如电源模块),避免温度梯度引起的测量误差;
DATA与SCK线尽量短且平行走线,减少串扰;
模拟地与数字地单点接地,降低地线噪声。
四、软件编程:SHT11数据采集与处理
4.1 通信协议与时序
SHT11采用非标准I²C协议,需严格遵循以下时序:
启动传输:
SCK高电平时,DATA由高变低;
下一SCK高电平时,DATA由低变高。
发送命令:
包含3位地址(固定为000)和5位命令(如0x03测温度、0x05测湿度);
每个命令后需等待DATA线拉低(ACK信号),表示传感器接收成功。
读取数据:
测量完成后,DATA线拉低表示数据就绪;
依次读取高8位、低8位数据及8位CRC校验码;
每读取1字节后,主机需拉低DATA线(ACK)确认。
停止传输:
SCK高电平时,DATA由低变高。
4.2 关键代码实现(基于Keil C51)
#include <reg52.h>
#include <intrins.h>
sbit DATA = P2^0; // SHT11数据线
sbit SCK = P2^1; // SHT11时钟线
// 启动传输函数
void SHT_Start(void) {
DATA = 1; SCK = 0;
_nop_(); SCK = 1;
_nop_(); DATA = 0;
_nop_(); SCK = 0;
_nop_(); _nop_(); _nop_();
DATA = 1; _nop_();
}
// 发送命令函数
void SHT_WriteByte(unsigned char cmd) {
unsigned char i;
for (i = 0; i < 8; i++) {
DATA = (cmd & 0x80) ? 1 : 0;
cmd <<= 1;
SCK = 1; _nop_(); _nop_();
SCK = 0; _nop_(); _nop_();
}
DATA = 1; // 释放数据线
SCK = 1; _nop_(); _nop_();
if (!DATA) { // 检查ACK
SCK = 0;
} else {
// 错误处理
}
}
// 读取数据函数
unsigned int SHT_ReadData(void) {
unsigned int val = 0;
unsigned char i;
DATA = 1; // 释放数据线
for (i = 0; i < 16; i++) {
SCK = 1; _nop_(); _nop_();
val <<= 1;
if (DATA) val |= 0x01;
SCK = 0; _nop_(); _nop_();
}
return val; // 返回16位原始数据
}
// 温度转换公式(14位分辨率)
float Temp_Convert(unsigned int SO_T) {
return -40.0 + 0.01 * SO_T;
}
// 湿度转换公式(14位分辨率)
float Humi_Convert(unsigned int SO_RH) {
float c1 = -4.0, c2 = 0.0405, c3 = -2.8e-6;
return c1 + c2 * SO_RH + c3 * SO_RH * SO_RH;
}
void main() {
unsigned int temp_raw, humi_raw;
float temp, humi;
while (1) {
SHT_Start();
SHT_WriteByte(0x03); // 发送测温命令
// 等待测量完成(可通过延时或轮询DATA线)
Delay_ms(200); // 假设测量时间200ms
temp_raw = SHT_ReadData();
temp = Temp_Convert(temp_raw);
SHT_Start();
SHT_WriteByte(0x05); // 发送测湿命令
Delay_ms(200);
humi_raw = SHT_ReadData();
humi = Humi_Convert(humi_raw);
// 显示或传输数据...
}
}
4.3 数据校准与补偿
SHT11输出为非线性值,需通过公式修正:
湿度补偿:
mathRH_{linear} = c1 + c2 cdot SO_{RH} + c3 cdot SO_{RH}^2其中,12位分辨率时:
c1=-4, c2=0.0405, c3=-2.8e-6。温度补偿:
mathT = -40.0 + 0.01 cdot SO_T露点计算:
LogE_W = 0.66077 + 7.5 cdot T / (237.3 + T) + log_{10}(RH) - 2
D_p = frac{(0.66077 - LogE_W) cdot 237.3}{LogE_W - 8.16077}
五、典型应用案例:温湿度监测与报警系统
5.1 系统功能需求
实时采集环境温湿度值;
LCD1602显示当前数据及阈值;
按键设置温湿度上下限;
超限时触发蜂鸣器报警及LED指示;
数据通过串口上传至PC(可选)。
5.2 硬件扩展设计
LCD1602连接:
RS接P2.0,RW接P2.1,E接P2.2;
D0-D7接P0口,需外接10kΩ排阻上拉。
报警模块:
蜂鸣器接P2.3,串联1kΩ电阻;
LED接P2.4,串联1kΩ电阻。
按键模块:
3个按键分别接P3.2(阈值加)、P3.3(阈值减)、P3.4(确认)。
5.3 软件流程优化
主程序初始化:
初始化LCD1602、I/O口、定时器;
加载默认阈值(如温度上限30℃、下限10℃,湿度上限70%RH、下限30%RH)。
数据采集循环:
每2秒采集一次温湿度数据;
连续3次超限触发报警(避免瞬时干扰)。
报警逻辑:
单参数超限:蜂鸣器间歇发声(0.5秒响/停),LED闪烁;
多参数超限:蜂鸣器持续发声,LED常亮;
按下确认键停止报警。
5.4 调试与优化
硬件调试:
检查SHT11上拉电阻是否焊接正确;
用示波器观察DATA与SCK信号时序;
确保LCD1602对比度电位器调节至清晰显示。
软件调试:
通过串口助手验证原始数据与转换值;
调整延时函数参数以匹配传感器响应时间;
测试按键消抖逻辑(10ms延时)。
六、元器件采购与技术支持
SHT11及相关元器件可通过拍明芯城(www.iczoom.com)一站式采购,平台提供以下服务:
型号查询:支持SHT11、STC89C52RC、LCD1602等型号搜索;
品牌与价格对比:汇聚Digi-Key、Mouser、Arrow等渠道报价;
国产替代方案:推荐国产温湿度传感器(如SHTW1、AHT20);
数据手册下载:提供英文原版及中文翻译版PDF资料;
封装与引脚图:详细标注LCC、DIP等封装尺寸及功能说明。
七、总结与展望
SHT11凭借其高集成度、高精度、低功耗及易用性,成为单片机嵌入式系统中温湿度监测的核心元件。通过合理选型、硬件优化与软件编程,可快速构建稳定可靠的监测系统。未来,随着物联网与人工智能技术的发展,SHT11可进一步集成无线模块(如LoRa、NB-IoT),实现云端数据管理与智能分析,为智慧农业、智慧城市等领域提供更强大的环境感知能力。
参考文献
Sensirion. "SHT11 Datasheet." 2024.
电子发烧友网. "基于单片机SHT11温湿度采集报警系统设计." 2025.
CSDN博客. "SHT11温湿度传感器在51单片机中的应用." 2020.
拍明芯城官网. "元器件采购与技术支持." 2025.
责任编辑:David
【免责声明】
1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。
2、本文的引用仅供读者交流学习使用,不涉及商业目的。
3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。
4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。
拍明芯城拥有对此声明的最终解释权。

产品分类

2012- 2022 拍明芯城ICZOOM.com 版权所有 客服热线:400-693-8369 (9:00-18:00)