毕业论文参考文档(免费)—DHT11 温湿度传感器的硬件与软件系统设计
毕业论文参考文档(免费)—DHT11 温湿度传感器的硬件与软件系统设计
第一章 硬件系统设计
1.1 硬件组成与接口设计
DHT11 采用 4 引脚封装(SOP-4),如图 1-1 所示。核心硬件由三部分构成:电阻式湿度检测元件、NTC 温度传感器及 8 位内置微控制器。电阻式湿度检测元件基于高分子材料的吸湿特性,通过电阻值变化反映环境湿度;NTC 热敏电阻则利用温度系数实现温度测量;内置微控制器负责信号调理、A/D 转换及数据校验,将模拟信号转换为数字量并通过单总线输出。
图 1-1 DHT11 传感器实物图
传感器引脚定义如下:
-
VCC:供电端,支持 3.3-5.5V 直流电压,典型工作电压 5V;
-
GND:接地端,需与主机共地以确保信号稳定;
-
DATA:单总线数据引脚,兼具输入 / 输出功能,用于传输控制信号与数据;
-
NC:空脚,无实际电气连接。
硬件外围电路设计需注意:DATA 引脚必须外接 4.7kΩ 上拉电阻,确保总线空闲时维持高电平;传感器内部集成校准系数存储于 OTP(一次性可编程)内存,出厂前已完成标定,用户可直接使用无需二次校准。DHT11 模块如图 1-2 所示,DHT11 模块原理图如图 1-3 所示。
图 1-2 DHT11 模块实物图
图 1-3 DHT11 模块电路原理图
接口设计中,考虑到兼容性与易用性,常采用单排排母 3 引脚规格,引脚间距为 2.54mm 标准间距。该设计的核心优势在于:其一,2.54mm 间距与 STM32 开发板的 GPIO 引脚间距一致,可直接通过杜邦线或面包板连接,无需额外转接;其二,排母仅引出 VCC、GND、DATA 三个有效引脚(NC 引脚空置),减少冗余接线,降低误接风险;其三,排母采用黄铜镀锡材质,具备良好导电性与耐腐蚀性,工作温度范围 - 40℃~105℃,适配多数环境场景。本项目中,排母采用直插式安装,便于焊接在 PCB 板,安装位置靠近 PCB 板框边沿,便于模块的装卸。DHT11 模块接口原理图如图 1-4 所示。
图 1-4 DHT11 模块接口电路原理图
在 DHT11 温湿度传感器的系统设计验证阶段,Proteus 仿真软件能够以低成本、高效率的方式模拟硬件电路与软件代码的协同工作。首先需在 Proteus 中搭建 DHT11 传感器的仿真电路,将传感器的 VCC 引脚连接到 5V 电源,GND 引脚接地,DATA 引脚与主控芯片 STM32 的 GPIO 端口相连,同时添加必要的上拉电阻(典型值 4.7K)以确保数据传输的稳定性。DHT11 模块仿真原理图如图 1-5 所示。
图 1-5 DHT11 模块 Proteus 仿真原理图
1.2 工作原理与信号处理
DHT11 的测量过程由内置微控制器协调控制:湿度检测元件将环境湿度转换为电阻变化,经信号调理电路转换为电压信号;NTC 热敏电阻的阻值随温度变化,产生对应的电压信号;两路模拟信号经微控制器内置 A/D 转换器量化后,按照固定格式封装为数字数据帧,等待主机读取。
温度测量基于 NTC 热敏电阻的负温度系数特性,其阻值与温度的关系满足:
RT=R25×eB(1/T−1/298)R_T = R_{25} \times e^{B(1/T - 1/298)}RT=R25×eB(1/T−1/298)
其中,RTR_TRT为温度 T 时的电阻值,R25R_{25}R25为 25℃时的标称电阻,B 为材料常数(典型值 3000-4000K),T 为绝对温度(单位 K)。微控制器通过测量 NTC 两端电压计算电阻值,再反演得到温度数据。
湿度测量采用电阻式原理,吸湿材料吸附空气中水分子后电阻降低,通过惠斯通电桥转换为电压信号,经 A/D 转换得到湿度量化值。
1.3 技术参数与性能特性
DHT11 的核心技术参数如下:
-
测量范围:温度 0-50℃,湿度 20-90% RH;
-
测量精度:温度 ±2℃(25℃时),湿度 ±5% RH(25℃时);
-
分辨率:温度 1℃,湿度 1% RH;
-
供电电压:3.3-5.5V DC;
-
工作电流:测量时≤1mA,待机时≤0.06mA;
-
响应时间:温度≤30s(63% 响应),湿度≤5s(63% 响应);
-
采样周期:≥2s。
第二章 软件系统设计
2.1 单总线通信协议
DHT11 采用自定义单总线协议实现与主机的通信,数据传输由主机主动发起,通信流程包括初始化、响应、数据传输三个阶段:
-
初始化阶段:主机将 DATA 引脚拉低至少 18ms,随后释放总线(切换为输入模式),等待传感器响应。
-
响应阶段:传感器检测到起始信号后,拉低 DATA 引脚 80μs,再拉高 80μs,完成响应握手。
-
数据传输阶段:传感器发送 40 位数据帧,格式为:8 位湿度整数 + 8 位湿度小数 + 8 位温度整数 + 8 位温度小数 + 8 位校验和。校验和为前四字节数据之和的低 8 位,用于验证数据完整性。
数据位编码采用脉冲宽度调制:逻辑 0 对应 26-28μs 高电平,逻辑 1 对应 70μs 高电平。主机通过测量高电平持续时间解析二进制数据。
2.2 STM32 软件实现流程
STM32 控制 DHT11 的软件流程分为 GPIO 初始化和数据读取两部分,核心逻辑通过时序控制实现与传感器的通信,具体流程如图 2-1:
图 2-1 STM32 软件实现流程图
(1)GPIO 初始化流程
-
定义 GPIO 初始化结构体(GPIO_InitTypeDef)
-
使能对应端口时钟(RCC_APB2PeriphClockCmd 使能 DHT11_GPIO_CLK)
-
配置引脚参数:
-
GPIO_Pin 设为 DHT11_GPIO_PIN(如 PG11)
-
模式设为推挽输出(GPIO_Mode_Out_PP)
-
速度设为 50MHz(GPIO_Speed_50MHz)
-
初始化 IO 口(GPIO_Init 函数配置 DHT11_GPIO_PORT)
-
置位 DATA 引脚为高电平(GPIO_SetBits)
-
调用 DHT11_Rst () 复位传感器
-
返回 DHT11_Check () 的检查结果(0 为成功,1 为失败)
(2)数据读取流程
-
定义 5 字节缓冲区(buf [5])和循环变量 i
-
调用 DHT11_Rst () 发送复位信号
-
检查传感器响应(DHT11_Check () == 0 为正常):
-
响应正常:循环读取 5 字节数据(buf [i] = DHT11_Read_Byte ())
-
校验和验证:若 buf [0]+buf [1]+buf [2]+buf [3] == buf [4],则提取:
-
湿度整数(humi1 = buf [0])、湿度小数(humi2 = buf [1])
-
温度整数(temp1 = buf [2])、温度小数(temp2 = buf [3])
-
-
延时 100ms 后返回 0(成功)
- 响应异常:直接返回 1(失败)
2.3 软件设计关键要点
-
时序精度控制:专用计时函数(delay_us)确保微秒级延时精度,避免因时序偏差导致数据错误。
-
错误处理机制:校验和验证:拒绝校验失败的数据;
第三章 性能优化策略
针对 DHT11 的局限性,可通过以下方法优化:
3.1 硬件优化
-
电源滤波:在 VCC 与 GND 间并联 100nF 陶瓷电容和 10μF 电解电容,抑制电源纹波;
-
信号增强:长距离传输(>5m)时,DATA 线采用屏蔽线并在末端并联 100pF 电容。
3.2 软件优化
-
温度漂移补偿:通过与高精度传感器(如 SHT30)对比,建立误差修正表;
-
湿度滞后补偿:根据环境变化速率动态调整测量间隔。
-
超时检测:设置响应超时阈值(如 100ms),避免程序阻塞;
-
重试机制:连续 3 次读取失败则触发硬件检查。
-
对连续测量值采用滑动平均滤波(如取 5 次有效值平均),降低环境干扰影响。
-
在嵌入式系统中,通过状态机设计避免阻塞式延时,提高 CPU 利用率。