當(dāng)前位置: 首頁 > 傳感測量產(chǎn)品 > 工業(yè)傳感器 > 溫濕度傳感器
發(fā)布日期:2022-10-09 點(diǎn)擊率:99
溫濕度傳感器 第1張" title="濕度傳感器dht11:DHT11溫濕度傳感器 第1張-傳感器知識(shí)網(wǎng)"/>
一、器材?
arduino UNO、面包板、DHT11溫濕度傳感器、連接線?
這里說一下DHT11的基本情況:?
(1)引腳說明:?
1、VDD 供電 3.5V-5.5V DC?
2、DATA 串行數(shù)據(jù),單總線?
3、GND 接地,電源負(fù)極。?
(2)DHT11data數(shù)據(jù)格式:?
一次傳輸40位數(shù)據(jù)=8bit濕度整數(shù)數(shù)據(jù) + 8bit濕度小數(shù)數(shù)據(jù) + 8bint溫度整數(shù)數(shù)據(jù) + 8bit溫度小數(shù)數(shù)據(jù) + 8bit校驗(yàn)位?
3、時(shí)序圖?
二、連接圖?
?
如圖所示,將DHT11的正極與5V電源接口相連,負(fù)極與GND相連,中間的數(shù)據(jù)接口與2號(hào)引腳相連。?
三、代碼
四、注意事項(xiàng)?
1、代碼中引用了,這個(gè)是操作DHT11的庫文件,有了它,就可以輕松操作我們這個(gè)溫濕度傳感器了。但是引用這個(gè)庫文件的操作步驟是:?
(1)在網(wǎng)上找到并下載該庫文件,包括一個(gè)頭文件和一個(gè).cpp文件。?
(2)在arduinoIDE中點(diǎn)擊菜單:程序–導(dǎo)入庫–add library,然后選擇你存放庫文件的那個(gè)文件夾。?
(3)在代碼中引用,這樣就可以使用了。?
2、#define DHT11PIN 2,表示定義引腳2的名字為DHT11PIN ,注意這個(gè)定義語句后面沒有分號(hào)。?
五、原理分析?
在硬件編程過程中,當(dāng)你拿到一個(gè)器件,首先要了解他的引腳定義,這會(huì)告訴你這個(gè)東西應(yīng)該怎么連接,在一個(gè)就是要看他的時(shí)序圖,看了時(shí)序圖你就知道主從設(shè)備之間進(jìn)行數(shù)據(jù)采集過程中的代碼應(yīng)該怎么寫,比如怎么啟動(dòng),如何握手,怎么采集真正的數(shù)據(jù)等等。?
在我們這個(gè)試驗(yàn)中,DHT11的時(shí)序圖是這樣的:?
下面對(duì)照dht11.cpp源代碼說說我們采集溫濕度信息的原理(在代碼中加了注釋,說明相關(guān)內(nèi)容。):
六、運(yùn)行結(jié)果?
通電之后,在電腦上打開串口就可以看到采集到的溫濕度信息。?
DHT11概述
DHT11數(shù)字溫濕度傳感器是一款含有已校準(zhǔn)數(shù)字信號(hào)輸出的溫濕度復(fù)合傳感器。它應(yīng)用專用的數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù),確保產(chǎn)品具有極高的可靠性與卓越的長期穩(wěn)定性。傳感器包括一個(gè)電阻式感濕元件和一個(gè)NTC測溫元件,并與一個(gè)高性能8位單片機(jī)相連接。因此該產(chǎn)品具有品質(zhì)卓越、超快響應(yīng)、抗干擾能力強(qiáng)、性價(jià)比極高等優(yōu)點(diǎn)。每個(gè)DHT11傳感器都在極為精確的濕度校驗(yàn)室中進(jìn)行校準(zhǔn)。校準(zhǔn)系數(shù)以程序的形式儲(chǔ)存在OTP內(nèi)存中,傳感器內(nèi)部在檢測信號(hào)的處理過程中要調(diào)用這些校準(zhǔn)系數(shù)。單線制串行接口,使系統(tǒng)集成變得簡易快捷。超小的體積、極低的功耗,信號(hào)傳輸距離可達(dá)20米以上,使其成為各類應(yīng)用甚至最為苛刻的應(yīng)用場合的最佳選則。產(chǎn)品為4針單排引腳封裝。連接方便,特殊封裝形式可根據(jù)用戶需求而提供。
DHT11引腳說明
1、傳感器性能說明
2、接口說明
建議連接線長度短于20米時(shí)用5K上拉電阻,大于20米時(shí)根據(jù)實(shí)際情況使用合適的上拉電阻。
3、電源引腳
DHT11的供電電壓為3-5.5V。傳感器上電后,要等待1s以越過不穩(wěn)定狀態(tài)在此期間無需發(fā)送任何指令。電源引腳(VDD,GND)之間可增加一個(gè)100nF的電容,用以去耦濾波。
4、串行接口(單線雙向)
DATA用于微處理器與DHT11之間的通訊和同步,采用單總線數(shù)據(jù)格式,一次通訊時(shí)間4ms左右,數(shù)據(jù)分小數(shù)部分和整數(shù)部分,具體格式在下面說明,當(dāng)前小數(shù)部分用于以后擴(kuò)展,現(xiàn)讀出為零。操作流程如下:
一次完整的數(shù)據(jù)傳輸為40bit,高位先出。
數(shù)據(jù)格式:8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)+8bi溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)+8bit校驗(yàn)和
數(shù)據(jù)傳送正確時(shí)校驗(yàn)和數(shù)據(jù)等于“8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)+8bi溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)”所得結(jié)果的末8位。
用戶MCU發(fā)送一次開始信號(hào)后,DHT11從低功耗模式轉(zhuǎn)換到高速模式,等待主機(jī)開始信號(hào)結(jié)束后,DHT11發(fā)送響應(yīng)信號(hào),送出40bit的數(shù)據(jù),并觸發(fā)一次信號(hào)采集,用戶可選擇讀取部分?jǐn)?shù)據(jù)。從模式下,DHT11接收到開始信號(hào)觸發(fā)一次溫濕度采集,如果沒有接收到主機(jī)發(fā)送開始信號(hào),DHT11不會(huì)主動(dòng)進(jìn)行溫濕度采集。采集數(shù)據(jù)后轉(zhuǎn)換到低速模式。
總線空閑狀態(tài)為高電平,主機(jī)把總線拉低等待DHT11響應(yīng),主機(jī)把總線拉低必須大于18毫秒,保證DHT11能檢測到起始信號(hào)。DHT11接收到主機(jī)的開始信號(hào)后,等待主機(jī)開始信號(hào)結(jié)束,然后發(fā)送80us低電平響應(yīng)信號(hào)。主機(jī)發(fā)送開始信號(hào)結(jié)束后,延時(shí)等待20-40us后,讀取DHT11的響應(yīng)信號(hào),主機(jī)發(fā)送開始信號(hào)后,可以切換到輸入模式,或者輸出高電平均可,總線由上拉電阻拉高。
基于單片機(jī)的DHT11溫濕度 傳感器設(shè)計(jì)
:史延林 指導(dǎo)老師:黃智偉 學(xué)院:電氣工程學(xué)院 學(xué)號(hào):
摘要:
溫濕度是生活生產(chǎn)中的重要的參數(shù)。本設(shè)計(jì)為基于單片機(jī)的溫濕度檢測與控制 系統(tǒng),采用模塊化、層次化設(shè)計(jì)。用新型的智能溫濕度傳感器DHT11主要實(shí)現(xiàn)對(duì)溫度、 濕度的檢測,將溫度濕度信號(hào)通過傳感器進(jìn)行信號(hào)的采集并轉(zhuǎn)換成數(shù)字信號(hào),再運(yùn) 用單片機(jī)STC89C52進(jìn)行數(shù)據(jù)的分析和處理,為顯示和報(bào)警電路提供信號(hào),實(shí)現(xiàn)對(duì)溫
濕度的控制報(bào)警。報(bào)警系統(tǒng)根據(jù)設(shè)定報(bào)警的上下限值實(shí)現(xiàn)報(bào)警功能,顯示部分采用 LCD1602液晶顯示所測溫濕度值。系統(tǒng)電路簡單、集成度高、工作穩(wěn)定、調(diào)試方便、 檢測精度高,具有一定的實(shí)用價(jià)值。
關(guān)鍵詞:單片機(jī);DHT11溫濕度傳感器; LCD1602顯示
第一章:課程構(gòu)思
1.1課題背景
溫濕度的檢測與控制是工業(yè)生產(chǎn)過程中比較典型的應(yīng)用之一,隨著傳感器在生 產(chǎn)和生活中的更加廣泛的應(yīng)用。在生產(chǎn)中,溫濕度的高低對(duì)產(chǎn)品的質(zhì)量影響很大。 由于溫濕度的檢測控制不當(dāng),可能使我們導(dǎo)致無法估計(jì)的經(jīng)濟(jì)損失。為保證日常工 作的順利進(jìn)行,首要問題是加強(qiáng)生產(chǎn)車間溫度與濕度的監(jiān)測工作,但傳統(tǒng)的方法過 于粗糙,通過人工進(jìn)行檢測,對(duì)不符合溫度和濕度要求的庫房進(jìn)行通風(fēng)、去濕和降 溫等工作。這種人工測試方法費(fèi)時(shí)費(fèi)力、效率低,且測試的溫度及濕度誤差大,隨 機(jī)性大。目前,在低溫條件下(通常指100℃以下),溫濕度的測量已經(jīng)相對(duì)成熟。利 用新型單總線式數(shù)字溫度傳感器實(shí)現(xiàn)對(duì)溫度的測試與控制得到更快的開發(fā)。但人們 對(duì)它的要求越來越高,要為現(xiàn)代人工作、科研、學(xué)習(xí)、生活提供更好的更方便的設(shè) 施就需要從數(shù)字單片機(jī)技術(shù)入手,一切向著數(shù)字化,智能化控制方向發(fā)展。
對(duì)于國外對(duì)溫濕度檢測的研究,從復(fù)雜模擬量檢測到現(xiàn)在的數(shù)字智能化檢測越 發(fā)的成熟,隨著科技的進(jìn)步,現(xiàn)在的對(duì)于溫濕度研究,檢測系統(tǒng)向著智能化、小型 化、低功耗的方向發(fā)展。在發(fā)展過程中,以單片機(jī)為核心的溫濕度控制系統(tǒng)發(fā)展為 體積小、操作簡單、量程寬、性能穩(wěn)定、測量精度高,等諸多優(yōu)點(diǎn)在生產(chǎn)生活的各 個(gè)方面實(shí)現(xiàn)著至關(guān)重要的作用。
溫濕度傳感器除電阻式、電容式濕敏元件之外,還有電解質(zhì)離子型濕敏元件、 重量型濕敏元件(利用感濕膜重量的變化來改變振蕩頻率)、光強(qiáng)型濕敏元件、聲 表面波濕敏元件等。濕敏元件的線性度及抗污染性差,在檢測環(huán)境濕度時(shí),濕敏元
在我們剛開始進(jìn)入單片機(jī)的學(xué)習(xí)中,練習(xí)寫傳感器的時(shí)序是必不可少的,其實(shí)我比較推薦大家剛開始練習(xí)的時(shí)候使用DHT11來練習(xí)。
推薦的原因:
因?yàn)镈HT11的時(shí)序簡單。DHT11是國產(chǎn)的,全中文的參考手冊,不用擔(dān)心英文看不懂。功能少,就只有一個(gè)測量溫濕度的功能。
綜上,因此DHT11我認(rèn)為是非常適合剛開始入門單片機(jī)的朋友學(xué)習(xí)的。
?
那么在使用傳感器前,我們必須要先看數(shù)據(jù)手冊,并不需要全部瀏覽,我們只需要看他重要的點(diǎn),就OK了。
這就是DHT11溫濕度傳感器的外觀,我們了解一下就好。
?
接下來我們看一起DHT11的參數(shù)特性
用紅框圈出來的,就是重點(diǎn),我們必須知道,這個(gè)DHT11溫濕度傳感器的測量范圍,以及精度、分辨率。如果超出了這個(gè)范圍,那么DHT11就不能夠使用了。
接下來看一下引腳說明。 ? ? ? ? ? ?我們要注意的是:這個(gè)器件使用的是單總線協(xié)議是總所周知的了,但是他的供電范圍我們也需要了解一下,范圍是3.5-5.5v。如果超出這個(gè)范圍,傳感器可能會(huì)燒、假如低于這個(gè)范圍,可能傳感器會(huì)讀出錯(cuò)誤的溫濕度數(shù)據(jù)或者壓根就罷工了。 ? 因此,我們在使用那些3.3v單片機(jī)做編程的時(shí)候,就要注意這一點(diǎn)了。
這個(gè)是數(shù)據(jù)手冊上顯示的DHT11典型的電路連接方法,我們再數(shù)據(jù)口上要接上一個(gè)上拉電阻。供電所使用的為7805的穩(wěn)壓電源,也就是5V。實(shí)際上,只要我們滿足他的供電電壓范圍,都是能夠工作的。
接下來我們看一下它的數(shù)據(jù)格式(重點(diǎn))
? ? ? ? DHT11用的是單總線協(xié)議,一次傳送40位的數(shù)據(jù)。 ? ? 注意了,看到這一句話,也就是說我們每次讀取DHT11的數(shù)據(jù)時(shí),都要一次性讀取40次,也就是讀取40位。并且數(shù)據(jù)前16位是與濕度相關(guān)的,中間16位是與溫度相關(guān)的,最后八位是用來校驗(yàn)的,當(dāng)我們校驗(yàn)成功后,證明這一次的溫濕度結(jié)果正確的,我們單片機(jī)就可以使用這個(gè)溫濕度值;如果校驗(yàn)不通過,那么就代表我們這次讀取出來的溫濕度值,是錯(cuò)誤的(也許是我們的時(shí)序錯(cuò)誤了,也許是傳感器的問題),我們不進(jìn)行采樣。
? ? ? ? 同時(shí)呢,商家的數(shù)據(jù)手冊還給出了一個(gè)校驗(yàn)數(shù)據(jù)的示例圖,而且還是全中文的,所以說我說的沒錯(cuò)吧,這個(gè)器件是真的簡單到不能再簡單了,非常適合新手入門練習(xí)如何寫時(shí)序。
? ? ? ? DHT11的總體通信流程。第一步:主機(jī)先發(fā)送開始信號(hào),從機(jī)會(huì)返回一個(gè)相應(yīng)信號(hào)進(jìn)行應(yīng)答。 ? ?第二步:主機(jī)信號(hào)線拉高準(zhǔn)備接收數(shù)據(jù)。 ? ?第三部:開始接收數(shù)據(jù)(一次接收40位)。
那么這個(gè)就是一個(gè)人數(shù)據(jù)讀取的一個(gè)流程,那么我們每一個(gè)流程又應(yīng)該怎么做呢?
?
步驟一:DHT11 上電后(DHT11 上電后要等待 1S 以越過不穩(wěn)定狀態(tài)在此期間不能發(fā)送任何指令),測試環(huán)境
溫濕度數(shù)據(jù),幵記錄數(shù)據(jù),同時(shí) DHT11 的 DATA 數(shù)據(jù)線由上拉電阻拉高一直保持高電平;此時(shí) DHT11 的
DATA 引腳處于輸入狀態(tài),時(shí)刻檢測外部信號(hào)。
步驟二:微處理器的 I/O 設(shè)置為輸出同時(shí)輸出低電平,且低電平保持時(shí)間不能小于 18ms,然后微處理器的 I/O
設(shè)置為輸入狀態(tài),由于上拉電阻,微處理器的 I/O 即 DHT11 的 DATA 數(shù)據(jù)線也隨之變高,等待 DHT11 作
出回答信號(hào),發(fā)送信號(hào)如圖所示:
步驟三:DHT11 的 DATA 引腳檢測到外部信號(hào)有低電平時(shí),等待外部信號(hào)低電平結(jié)束,延遲后 DHT11 的 DATA
引腳處于輸出狀態(tài),輸出 80 微秒的低電平作為應(yīng)答信號(hào),緊接著輸出 80 微秒的高電平通知外設(shè)準(zhǔn)備接
收數(shù)據(jù),微處理器的 I/O 此時(shí)處于輸入狀態(tài),檢測到 I/O 有低電平(DHT11 回應(yīng)信號(hào))后,等待 80 微秒
的高電平后的數(shù)據(jù)接收,發(fā)送信號(hào)如圖所示:
?
步驟四:由 DHT11 的 DATA 引腳輸出 40 位數(shù)據(jù),微處理器根據(jù) I/O 電平的變化接收 40 位數(shù)據(jù),位數(shù)據(jù)“0”
的格式為: 50 微秒的低電平和 26-28 微秒的高電平,位數(shù)據(jù)“1”的格式為: 50 微秒的低電平加 70
微秒的高電平。位數(shù)據(jù)“0”、“1”格式信號(hào)如圖所示:
(我們可以把這一段的時(shí)序理解為,我們主機(jī)先把數(shù)據(jù)線拉低50us,然后延時(shí)等待40us,然后再去讀取信號(hào)線的電平,如果為低電平,則為位“0”;如果為高電平,則為位“1”)。
結(jié)束信號(hào):DHT11 的 DATA 引腳輸出 40 位數(shù)據(jù)后,繼續(xù)輸出低電平 50 微秒后轉(zhuǎn)為輸入狀態(tài),由于上拉電阻隨
之變?yōu)楦唠娖?。?DHT11 內(nèi)部重測環(huán)境溫濕度數(shù)據(jù),幵記錄數(shù)據(jù),等待外部信號(hào)的到來。
我們在數(shù)據(jù)手冊上了解的就這么多就可以了。
?
同時(shí),我自己也對(duì)DHT11的時(shí)序做了一個(gè)總結(jié)
一. 單片機(jī)上點(diǎn)后1s內(nèi)不讀取(不重要)
二. 主機(jī)(單片機(jī))發(fā)送起始信號(hào):1.主機(jī)先拉高data。2.拉低data延遲18ms。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3.拉高data(單片機(jī)引腳設(shè)置為輸入)。
? ? ? ? ? ? ? ?
三. 從機(jī)(DHT11)收到起始信號(hào)后進(jìn)行應(yīng)答:
? ?從機(jī)拉低data,主機(jī)讀取到data線被拉低持續(xù)80us后從機(jī)拉高data線,
? ?持續(xù)80us,直到高電平結(jié)束,意味著主機(jī)可以開始接受數(shù)據(jù)。
?
四. 主機(jī)開始接收數(shù)據(jù):
? ?1.主機(jī)先把data線拉高(io設(shè)置為輸入)。
? ?2.從機(jī)把data線拉低,主機(jī)讀取data線電平,直到低電平結(jié)束(大約50us)
? ?從機(jī)拉高data線后,延遲40us左右(28~70us之間)主機(jī)再次讀取data線
? ?電平,如果為低電平,則為“0”,如果為高電平,則為“1”。
? ?3.繼續(xù)重復(fù)上述1,2步驟累計(jì)40次。
五. data線拉低50us代表讀取結(jié)束
六. 校驗(yàn)數(shù)據(jù)
?
那么我們在程序上應(yīng)該如何設(shè)計(jì)呢?(這里我的程序是基于stm32微處理器來講解的,其他單片機(jī)也一樣的操作,時(shí)序都是相同的)
?
準(zhǔn)備階段我們先要有3個(gè)函數(shù),數(shù)據(jù)引腳初始化函數(shù),還有數(shù)據(jù)引腳切換輸入輸出方向的函數(shù)。
接下來我們就再寫一個(gè)函數(shù),來讀取dht11數(shù)據(jù)即可
只要按照上述的時(shí)序步驟來操作,就能夠讀取出DHT11的溫濕度值啦。
同時(shí)我們要注意,只有讀出來的數(shù)據(jù)校驗(yàn)通過了,我們才使用這一次的溫濕度數(shù)據(jù)。
還有他讀取出來40位數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu): 8位濕度整數(shù)數(shù)據(jù)+8位濕度小數(shù)數(shù)據(jù)+8位溫度整數(shù)數(shù)據(jù)+8位溫度小數(shù)數(shù)據(jù)+8位校驗(yàn)位
下一篇: PLC、DCS、FCS三大控
上一篇: 電氣控制線路圖控制原