當(dāng)前位置:首頁 > 嵌入式 > 嵌入式硬件
[導(dǎo)讀]DHT11是一款有已校準(zhǔn)數(shù)字信號輸出的溫濕度傳感器。 其精度濕度+-5%RH, 溫度+-2℃,量程濕度20-90%RH, 溫度0~50℃。DHT11數(shù)字溫濕度傳感器是一款含有已校準(zhǔn)數(shù)字信號輸出的

DHT11是一款有已校準(zhǔn)數(shù)字信號輸出的溫濕度傳感器。 其精度濕度+-5%RH, 溫度+-2℃,量程濕度20-90%RH, 溫度0~50℃。

DHT11數(shù)字溫濕度傳感器是一款含有已校準(zhǔn)數(shù)字信號輸出的溫濕度復(fù)合傳感器,它應(yīng)用專用的數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù),確保產(chǎn)品具有極高的可靠性和卓越的長期穩(wěn)定性。傳感器包括一個電阻式感濕元件和一個NTC測溫元件,并與一個高性能8位單片機相連接。因此該產(chǎn)品具有品質(zhì)卓越、超快響應(yīng)、抗干擾能力強、性價比極高等優(yōu)點。每個DHT11傳感器都在極為精確的濕度校驗室中進行校準(zhǔn)。校準(zhǔn)系數(shù)以程序的形式存在OTP內(nèi)存中,傳感器內(nèi)部在檢測信號的處理過程中要調(diào)用這些校準(zhǔn)系數(shù)。單線制串行接口,使系統(tǒng)集成變得簡易快捷。超小的體積、極低的功耗,使其成為該類應(yīng)用中,在苛刻應(yīng)用場合的最佳選擇。產(chǎn)品為4針單排引腳封裝,連接方便。

DHT11溫濕度傳感器電氣特性

 

溫濕度傳感器DHT11封裝形式及接口說明

建議連接線長度短于20米時用5K上拉電阻,大于20米時根據(jù)實際情況使用合適的上拉電阻(若購買的是已集成的模塊,模塊上已加上拉電阻,以下請忽略),當(dāng)然,如果你想要精簡電路的話, STC增強型單片機自帶的推挽輸出功能不失為一個選擇,其相當(dāng)于外接了一個2k的上拉電阻,但在設(shè)計電路時需注意:整個單片機的電流推薦不超過55mA,即從MCU-VCC流入的電流不超過55mA,從MCU-GND流出的電流不超過55mA,整體流入、流出電流均不超過55mA,封裝尺寸及典型應(yīng)用電路圖如下圖所示。

 

DHT11溫濕度傳感器典型應(yīng)用電路

 

DHT11溫濕度傳感器時序圖

 

DHT11溫濕度傳感器連接圖

 

如圖所示,將DHT11的正極與5V電源接口相連,負(fù)極與GND相連,中間的數(shù)據(jù)接口與2號引腳相連。

代碼

#include 《dht11.h》

dht11 DHT11;

#define DHT11PIN 2

void setup(){

Serial.begin(9600);

}

void loop(){

Serial.println(“/n”);

int chk = DHT11.read(DHT11PIN);

Serial.print(“Read sensor: ”);

switch (chk)

{

case DHTLIB_OK:

Serial.println(“OK”);

break;

case DHTLIB_ERROR_CHECKSUM:

Serial.println(“Checksum error”);

break;

case DHTLIB_ERROR_TIMEOUT:

Serial.println(“TIme out error”);

break;

default:

Serial.println(“Unknown error”);

break;

}

Serial.print(“Humidity (%): ”);

Serial.println((float)DHT11.humidity, 2);

Serial.print(“Temperature (oC): ”);

Serial.println((float)DHT11.temperature, 2);

delay(2000);

注意事項

1、代碼中引用了#include 《dht11.h》,這個是操作DHT11的庫文件,有了它,就可以輕松操作我們這個溫濕度傳感器了。但是引用這個庫文件的操作步驟是:

(1)在網(wǎng)上找到并下載該庫文件,包括一個頭文件和一個.cpp文件。

(2)在arduinoIDE中點擊菜單:程序–導(dǎo)入庫–add library,然后選擇你存放庫文件的那個文件夾。

(3)在代碼中引用#include 《dht11.h》,這樣就可以使用了。

2、#define DHT11PIN 2,表示定義引腳2的名字為DHT11PIN ,注意這個定義語句后面沒有分號。

原理分析

在硬件編程過程中,當(dāng)你拿到一個器件,首先要了解他的引腳定義,這會告訴你這個東西應(yīng)該怎么連接,在一個就是要看他的時序圖,看了時序圖你就知道主從設(shè)備之間進行數(shù)據(jù)采集過程中的代碼應(yīng)該怎么寫,比如怎么啟動,如何握手,怎么采集真正的數(shù)據(jù)等等。

在我們這個試驗中,DHT11的時序圖是這樣的:

 

DHT11溫濕度傳感器使用注意事項

DHT11的供電電壓為3-5.5V。傳感器上電后,要等待1s以越過不穩(wěn)定狀態(tài)在此期間無需發(fā)送任何指令。電源引腳(VDD,GND)之間可增加一個100nF的電容,用以去耦濾波。

微處理器與DHT11之間的通訊和同步,采用單總線數(shù)據(jù)格式,一次通訊時間4ms左右,數(shù)據(jù)分小數(shù)部分和整數(shù)部分,具體格式在下面說明,當(dāng)前小數(shù)部分用于以后擴展,現(xiàn)讀出為零。

操作流程如下:

一次完整的數(shù)據(jù)傳輸為40bit,高位先出。

數(shù)據(jù)格式:8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)

+8bi溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)+8bit校驗和

數(shù)據(jù)傳送正確時校驗和數(shù)據(jù)等于8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)+8bi溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)所得結(jié)果的末8位。

用戶MCU發(fā)送一次開始信號后,DHT11從低功耗模式轉(zhuǎn)換到高速模式,等待主機開始信號結(jié)束后,DHT11發(fā)送響應(yīng)信號,送出40bit的數(shù)據(jù),并觸發(fā)一次信號采集,用戶可選擇讀取部分?jǐn)?shù)據(jù)。

從模式下,DHT11接收到開始信號觸發(fā)一次溫濕度采集,如果沒有接收到主機發(fā)送開始信號,DHT11不會主動進行溫濕度采集。采集數(shù)據(jù)后轉(zhuǎn)換到低速模式。[!--empirenews.page--]

通訊過程

 

總線空閑狀態(tài)為高電平,主機把總線拉低等待DHT11響應(yīng),主機把總線拉低必須大于18毫秒,保證DHT11能檢測到起始信號。DHT11接收到主機的開始信號后,等待主機開始信號結(jié)束,然后發(fā)送80us低電平響應(yīng)信號。主機發(fā)送開始信號結(jié)束后,延時等待20-40us后,讀取DHT11的響應(yīng)信號,主機發(fā)送開始信號后,可以切換到輸入模式,或者輸出高電平均可,總線由上拉電阻拉高。

 

總線為低電平,說明DHT11發(fā)送響應(yīng)信號,DHT11發(fā)送響應(yīng)信號后,再把總線拉高80us,準(zhǔn)備發(fā)送數(shù)據(jù),每一bit數(shù)據(jù)都以50us低電平時隙開始,高電平的長短定了數(shù)據(jù)位是0還是1.格式見下面圖示。如果讀取響應(yīng)信號為高電平,則DHT11沒有響應(yīng),請檢查線路是否連接正常。當(dāng)最后一bit數(shù)據(jù)傳送完畢后,DHT11拉低總線50us,隨后總線由上拉電阻拉高進入空閑狀態(tài)。

數(shù)字0信號表示方法

 

數(shù)字1信號表示方法

 

程序:

//DHT11temperature

//chriz_w@163.com

//arduinonano

//arduinolite

#include“arduino_lit.h”

#defineDHT11Pin2

//TesttheDHT11--chriz_w@163.com

bytedat[5];//存放濕度2byte,溫度2byte,checksum1byte

bytereadData(){//每次讀取8bits(onebyte)

bytedata;

for(inTI=0;i《8;i++){

if(digitalRead(DHT11Pin)==LOW)

{

//一開始要LOW才表示要傳過來

while(digitalRead(DHT11Pin)==LOW);//等待50us;

//現(xiàn)在已經(jīng)變成HIGH了

_delay_us(30);//判斷高電平持續(xù)時間,以判定資料是‘0’還是‘1’;

if(digitalRead(DHT11Pin)==HIGH)//根據(jù)時序持續(xù)了30us以上就是1

data|=(1《《(7-i));//高位在前,低位元在后;

//如果這時已經(jīng)是LOW,表示這bit是0,不必塞入data

//。。而且以下的while也會立即結(jié)束(因為LOW),準(zhǔn)備接收下一個bit

while(digitalRead(DHT11Pin)==HIGH);//等待下一bit的接收;

//這時一定已經(jīng)變成LOW了

}

}

returndata;//收完8bit=onebyte=onechar

}

voidstart_dht11(){//每次要與DHT11溝通

DIGITAL_WRITE(DHT11Pin,LOW);//拉低到LOW,發(fā)表示要開始溝通的信號;

_delay_ms(30);//延時要大于18ms,以便DHT11能檢測到開始信號;這里用30ms

DIGITAL_WRITE(DHT11Pin,HIGH);//拉高HIGH,讓DHT11拉低到LOW告訴我們要傳送

_delay_us(40);//給40us等待DHT11響應(yīng);

PIN_MODE(DHT11Pin,INPUT);//改為輸入mode準(zhǔn)備digitalRead()

while(DIGITAL_READ(DHT11Pin)==HIGH);//必須等到LOW

_delay_us(80);//DHT11發(fā)出響應(yīng),會拉低80us;所以至少等80us

while(DIGITAL_READ(DHT11Pin)==LOW);//繼續(xù)等到變HIGH

_delay_us(80);//DHT11會拉高到HIGH80us后開始發(fā)送資料;

///以下連續(xù)讀入5bytes(40bits),最后的byte是checksum校驗值

for(inTI=0;i《5;i++)

dat[i]=readData();//接收溫濕度資料,校驗;

PIN_MODE(DHT11Pin,OUTPUT);//改為Outputmode,準(zhǔn)備拉高HIGH

DIGITAL_WRITE(DHT11Pin,HIGH);//發(fā)送完一次資料后釋放bus,等待下一次開始信號;

}

voidsetup(){

SERIAL_BEGIN();

PIN_MODE(DHT11Pin,OUTPUT);

}

voidloop(){

start_dht11();//讀取濕度溫度和檢核位到dat[];其中dat[4]是checkSum

//根據(jù)datasheet規(guī)定,dat[4]要==(dat[0]+dat[1]+dat[2]+dat[3])%256

//否則表示溝通有錯誤!!

PRINT(“currenthumidity=”);

println(dat[0]&0xff,10,serial_puts);

PRINT(“currenttemperature=”);

println(dat[2]&0xff,10,serial_puts);//顯示溫度的整數(shù)部分;

_delay_ms(2000);

}

intmain()

{

setup();

while(1)

loop();

}

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉