DHT11溫濕度感測器學習筆記

2021-10-10 21:17:32 字數 3222 閱讀 7577

一、認識dht11感測器

1.概念

dht11 是廣州奧松****生產的一款溼溫度一體化的數字感測器。該感測器包括乙個電阻式測溼元件和乙個 ntc 測溫元件,並與乙個高效能 8 位微控制器相連線。通過微控制器等微處理器簡單的電路連線就能夠實時的採集本地濕度和溫度。dht11 與微控制器之間能採用簡單的單匯流排進行通訊,僅僅需要乙個i/o 口。感測器內部濕度和溫度資料 40bit 的資料一次性傳給微控制器,資料採用校驗和方式進行校驗,有效的保證資料傳輸的準確性。dht11 功耗很低,5v 電源電壓下,工作平均最大電流 0.5ma。

效能指標和特性如下:

工作電壓範圍:3.5v-5.5v

工作電流 :平均 0.5ma

濕度測量範圍:20-90%rh

溫度測量範圍:0-50℃

濕度解析度 :1%rh 8 位

溫度解析度 :1℃ 8 位

取樣週期 :1s

單匯流排結構

與 ttl 相容(5v)

2.電路圖

3.實物圖

s:signal 訊號線

—:表示gnd

二、微控制器讀取資料

1.資料結構

dht11數字溼溫度感測器採用單匯流排資料格式。即,單個資料引腳埠完成輸入輸出雙向傳輸。其資料報由5byte(40bit)組成。資料分小數部分和整數部分,具體格式在下面說明。

一次完整的資料傳輸為40bit,高位先出。

校驗和資料為前四個位元組相加。

感測器資料輸出的是未編碼的二進位制資料。資料(濕度、溫度、整數、小數)之間應該分開處理。如果,某次從感測器中讀取如下5byte資料:

由以上資料就可得到濕度和溫度的值,計算方法:

humi (濕度)= byte4 . byte3=45.0 (%rh)

temp (溫度)= byte2 . byte1=28.0 ( ℃)

jiaoyan(校驗)= byte4+ byte3+ byte2+ byte1=73(=humi+temp)(校驗正確)

注意:dht11一次通訊時間最大3ms,主機連續取樣間隔建議不小於100ms。

2.時序圖

時序圖真的很重要,也有助於理解**。

1、主機把匯流排拉低必須大於18毫秒,保證dht11能檢測到起始訊號;

2、主機傳送開始訊號結束後,延時等待20-40us後,讀取dht11的響應訊號;

3、dht11接收到主機的開始訊號後,等待主機開始訊號結束,然後傳送80us低電平響應訊號;

4、dht11傳送響應訊號後,再把匯流排拉高8ous,準備傳送資料;

5、每一bit資料都以50us低電平時隙開始,高電平的長短定了資料位是0還是1;

6、主機傳送開始訊號後,可以切換到輸入模式,或者輸出高電平均可;

7、如果讀取響應訊號為高電平,則dht11沒有響應,請檢查線路是否連線正常。

當最後一bit資料傳送完畢後,dht11拉低匯流排50us,隨後匯流排由上拉電阻拉高進入空閒狀態。

三、**

#include

"dht11.h"

#include

"delay.h"

#define dt gpio_pin_11

//復位dht11

void

dht11_rst

(void

)//等待dht11的回應

//返回1:未檢測到dht11的存在

//返回0:存在

u8 dht11_check

(void);

if(retry>=

100)

return1;

else retry=0;

while

(!dht11_dq_in&&retry<

100)

//dht11拉低後會再次拉高40~80us;if

(retry>=

100)

return1;

return0;

}//從dht11讀取乙個位

//返回值:1/0

u8 dht11_read_bit

(void

) retry=0;

while

(!dht11_dq_in&&retry<

100)

//等待變高電平

delay_us(40

);//等待40us

if(dht11_dq_in)

return1;

else

return0;

}//從dht11讀取乙個位元組

//返回值:讀到的資料

u8 dht11_read_byte

(void

)return dat;

}//從dht11讀取一次資料

//temp:溫度值(範圍:0~50°)

//humi:濕度值(範圍:20%~90%)

//返回值:0,正常;1,讀取失敗

u8 dht11_read_data

(u8 *temp,u8 *humi)if(

(buf[0]

+buf[1]

+buf[2]

+buf[3]

)==buf[4]

)}else

return1;

return0;

}//初始化dht11的io口 dq 同時檢測dht11的存在

//返回1:不存在

//返回0:存在

u8 dht11_init

(void

)

DHT11溫濕度感測器

原理圖 資料傳輸 使用序列介面 單線雙向 data 用於微處理器與 dht11之間的通訊和同步,採用單匯流排資料格式,一次 通訊時間4ms左右,資料分小數部分和整數部分,具體格式在下面說明,當前小數 部分用於以後擴充套件,現讀出為零.操作流程如下 一次完整的資料傳輸為40bit,高位先出。資料格式 ...

DHT11溫濕度感測器

dht11數字溫濕度感測器是一款含有已校準數碼訊號輸出的溫濕度復合感測器。它應用專用的數字模組採集技術和溫濕度感測技術,確保產品具有極高的可靠性與長期的穩定性。感測器包括乙個電阻式感溼元件和乙個ntc測溫元件,並與乙個8位微控制器相連線。因此該產品具有抗干擾能力強 價效比高等優點。dht11使用1 ...

DHT11溫濕度感測器

硬體連線 mcu通過一條資料線與dh11連線,mcu通過這條線發命令給dh11,dh11再通過這條線把資料傳送給mcu。溫濕度模組的核心就是 mcu發給dh11的命令格式和dh11返回的資料格式。首先mcu傳送乙個開始訊號s,這個開始訊號是乙個低脈衝,然後再拉高。等待dht11應答。然後,dh11拉...