概要[Abstract]DHT11數字溫濕度傳感器是一款含有已校準數字信號輸出的溫濕度復合傳感器。它應用專用的數字模塊采集技術和溫濕度傳感技術,確保產品具有極高的可靠性與卓越的長期穩定性。
實現功能:
此模塊實現基于dht11傳感器的溫濕度數據讀取。
實現原理:
DHT11模塊一共三個引腳:電源、地、雙向數據線DATA。DHT11有主從之分,這里我們用FPGA作為主機,DHT11模塊作為從機。下面是DHT11模塊的啟動時序:第一步,模塊上電后至少等待1S的時間,目的是越過不穩定期;第二步,發送起始信號,起始信號是一個不低于18ms的低電平信號,發送完這個開始信號以后,總線控制權交給DHT11;第三步,DHT發出響應信號,DHT11會先拉低總線80us,然后再拉高80us,FPGA主機直接檢測上升沿和下降沿即可;第四步,在DHT響應過后開始傳輸數據。
DHT11數據傳輸相較于一般串行傳輸有點特殊:某一時刻其向主機發送的串行數據是1還是0取決于高電平維持的時間長短。具體是DHT11先拉低總線50us,然后拉高總線,如果拉高的時間在26us-28us之間,則表示這個bit位為0;如果拉高的時間在70us,則表示這個bit位為1。
我們可以檢測每一次DHT總線的上升沿,在這個上升沿后接著開始計時,計到30us停止,這時去檢測總線上的值是0還是1,如果是0則表明總線已經被拉低,這個bit位為0,而如果是1則這個bit位為1。
下圖截取自模塊源碼的一部分,us\_cnt正是用于檢測總線高電平持續時間的計數器,使用時,參數值不一定是60,根據不同的輸入時鐘頻率決定if語句里面參數的值,使之計數時間為30us左右即可。