畢業論文參考文檔(免費)—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 利用率。