|
朋友送的DHT11傳感器,用于濕度和溫度測(cè)量,網(wǎng)上找了資料看,相對(duì)的控制較為簡(jiǎn)單,花了點(diǎn)時(shí)間把程序?qū)懥顺鰜?lái),用1602做顯示,單總線控制的器件,基本上沒(méi)什么指令,只有一個(gè)啟動(dòng)信號(hào),然后是連續(xù)讀出40bit的數(shù)據(jù),程序沒(méi)難度,一次成功,隨后加上了防死循環(huán)的檢測(cè),元器件的精度是溫度正負(fù)2度,濕度正負(fù)5%,相對(duì)來(lái)說(shuō)精度不怎么高,但是應(yīng)用于日常生活還是足夠的,元件測(cè)出溫度值與18B20相比大約差1度,考慮到18B20的誤差,基本上精度在其所標(biāo)示的正負(fù)2度內(nèi)。濕度與家里用的電子濕度計(jì)比較,基本上一致,還是不錯(cuò)的器件。
優(yōu)點(diǎn):接口簡(jiǎn)單,單總線,占用1個(gè)IO口,控制指令簡(jiǎn)單,精度可以接受,一次數(shù)據(jù)讀取僅需要22ms。價(jià)格低,淘寶售價(jià)約6元。是業(yè)余制作民用級(jí)產(chǎn)品的優(yōu)選對(duì)象。
缺點(diǎn):體積略大,控制指令過(guò)于簡(jiǎn)單,在某些場(chǎng)合不利于分時(shí)控制。
程序思路:與紅外解碼基本相似,需要主機(jī)發(fā)送一個(gè)啟動(dòng)信號(hào),然后等待器件響應(yīng)后,連續(xù)讀出40位數(shù)據(jù),每位數(shù)據(jù)以低電平50us開(kāi)頭,然后維持高電平26-28us或70us以區(qū)分?jǐn)?shù)據(jù)0或1,以讀取高電平發(fā)生后第38us電平高低來(lái)判斷。數(shù)據(jù)以高位在前低位在后分別讀取,最后一個(gè)為校驗(yàn)數(shù)據(jù)。做相應(yīng)的校驗(yàn)后顯示數(shù)值。


使用感受:元器件整個(gè)讀取操作需要一次完成,時(shí)間約需要4ms,加上啟動(dòng)指令最少18ms,則一次操作需要約22ms,雖然不長(zhǎng),但在一些場(chǎng)合應(yīng)用中,需要分時(shí)分步執(zhí)行一些固定程序時(shí),比如數(shù)碼管動(dòng)態(tài)掃描顯示,則在讀取過(guò)程中要么造成數(shù)據(jù)丟失,要么顯示屏閃動(dòng),據(jù)資料顯示該元器件內(nèi)部集成8位MCU處理數(shù)據(jù),如果增加指令,除啟動(dòng)指令外還增加一個(gè)讀數(shù)據(jù)指令,并調(diào)整指令長(zhǎng)度,比如以主機(jī)拉低500us則視為啟動(dòng)指令,以300us視為讀數(shù)據(jù)指令,這樣在發(fā)起啟動(dòng)指令后,元件內(nèi)部完成數(shù)據(jù)轉(zhuǎn)換,然后等待外部讀數(shù)據(jù)指令,每一個(gè)讀指令則輸出一個(gè)8位數(shù)據(jù),這樣處理后,有利于在程序中分步讀取數(shù)據(jù),每次讀取1字節(jié)數(shù)據(jù)最多不超過(guò)500us。則在動(dòng)態(tài)顯示中采用分步讀取,不會(huì)影響動(dòng)態(tài)掃描。
|
|