|

【進階學習】探析 DHT11 溫度感測器

   

作者:陸向陽

 

在筆者過往的經驗中,微控制器(MCU)的課程,無論是在以前念書時的學校聽課(學校學名叫積體電路應用),或是出社會後的一些課程,似乎對基礎的說明相當少,幾乎都是快速進入實作,反正線路對了,載入範例程式後能動,老師就叫您做下一週的新實習。

筆者就這樣在學校學了 8255 I/O 擴充、8253/8254 計時器的喇叭發聲、ADC0804 類比數位轉換、DAC0800 數位類比轉換等,但其實畢業後依舊不知道 8253 的其他模式操作與提供各種模式的用意(有些用意還需要了解時空背景),若畢業專題沒有用到,也就不會深入,甚至為了趕快有成效,只要能動就好,不太需要追究箇中原理,專題一旦過關,就更放諸一邊了,這也是最近有一篇 Arduino / NXT 有害論會出現的原因。

DHT11 感測器的腳位

所以,筆者決定多談一點感測元件的技術細節,而 Arduino 實作中,多會有溫濕度的感測,並以 DHT11 感測器為多,因此想對此多一點說明。DHT11

首先各位會看到 DHT11 有 4 根接腳(大陸叫引腳),但其實只有 1、2、4 有用,第 3 支腳沒有任何用處,一般在 Datasheet 上會寫 NC(No Connection 的意思)。

1 號接腳接 Vdd(最低 3V,最高 5V,所以從 Arduino 這邊供電的話,給予 3.3V 或 5V 均可),4 號接腳接地,簡單說就是供應 DHT11 基本可運作的電力。

DHT11 是用電阻方式感應濕度,並用 NTC 方式感應溫度,DHT 內本來就有一顆 8 位元MCU,MCU 的工作就是把感測到的溫度、濕度,以數位信號方式,透過 2 號腳位傳遞出去,所以其實那顆 MCU 也內建類比轉數位功效(ADC),而溫濕度感測後的相關校準與係數,其實就燒錄在 MCU 的程式內,不過也無法更改了,因為是 OTP(One Time Program),燒寫一次就不能再更動程式內容。

由於輸出已經是數位型式,所以 2 號接腳與 Arduino 本體,即便相隔一段距離仍可正常傳遞,傳遞過程中仍有一定程度的抗雜訊能力,一般而言能有 20 公尺以上長度。DHT11-Circuit

在各種細節的處理上也要非常細膩

值得注意的是,DHT11 的 Datasheet 提到,若傳輸距離太短,最好在 2 號的信號輸出線路上,加上一個 5k 歐姆的外部提升電阻,由於實務上不易找到剛好 5k 歐姆的,也可以找電阻值稍大或稍小的,例如 4.7k 歐姆。

如果長度超過 20 公尺,也建議找一個合適的提升電阻,但阻值需要再行量測,依據不同的長度,以及到達 Arduino 時的邏輯電壓準位,從而選擇合適的阻值。

另外,Datasheet 也建議在 Vdd 與接地線路間接一個 100nF 的電容,讓電源可以潔淨一點,避免雜訊影響。而剛接上電源時,要等待約 1 秒,讓 DHT11 完成各項初始、校準,才能開始使用。

當然,DHT11 也涉及它的時序(Timing)、信號準位與速度要求、協定格式等,但通常要到更細膩的開發與除錯時才會更深入探究。

進一步的,其他有些東西也會影響 DHT11,例如長時間的強烈陽光或紫外線、化學材料產生的蒸汽等,會影響 DHT11 的運作效率,而且筆者也建議傳遞信號的導線(特別指 2 號線路)最好能有良好的包覆,以確保信號品質,在野外使用也要避開露水。

如果要拿 DHT11 來正式製作產品,則需要進行焊接(不再是麵包板的實習),建議焊槍溫度不要高過攝氏 260 度,也不用接觸超過 10 秒鐘,以免焊槍的高溫把 DHT11 燒壞。

最後,其實 DHT11 是一個比較初階、平價的感測器,其實在同公司的產品中,還有更好的 DHT22 可選,若期望解析度、精準度高一點,或者是溫、濕度偵測範圍能大一點,可以考慮 DHT22。

陸向陽
陸向陽

Author: 陸向陽

從電子科系畢業後,即以媒體人的角色繼續這段與「電子科技」的不解之緣。歷任電子技術專書作者、電子媒體記者、分析師等角色,並持續寫作不殆。近來投入Arduino、Raspberry Pi等開放硬體的研究與教程介紹。

Share This Post On

2 Comments

    • owenou

      歡迎到MakerPRO社群提問:https://www.facebook.com/groups/makerpro.cc/

      Post a Reply

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *