SKU:RB-02S014A DHT11溫濕度傳感器

來自ALSROBOT WiKi
2016年12月14日 (三) 17:08Arduino77討論 | 貢獻的版本

跳轉(zhuǎn)至: 導航、 搜索
02S014A01.jpg

目錄

產(chǎn)品概述

此款新推出的DHT11溫濕度傳感器數(shù)據(jù)接口采用防插反插頭,接口兩側(cè)分別有字母“D”代表信號類型為數(shù)字信號,和 “溫度”標識代表傳感器類型,傳感器特設4顆M3固定安裝孔,調(diào)節(jié)方向與固定方便易用,美觀大方。此款傳感器是一款含有已校準數(shù)字信號輸出的溫濕度復合傳感器。它應用專用的數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù),確保產(chǎn)品具有極高的可靠性與卓越的長期穩(wěn)定性。傳感器包括一個電阻式感濕元件和一個NTC測溫元件,并與一個高性能8位單片機相連接。因此該產(chǎn)品具有品質(zhì)卓越、超快響應、抗干擾能力強、性價比極高等優(yōu)點。每個DHT11傳感器都在極為精確的濕度校驗室中進行校準。校準系數(shù)以程序的形式儲存在OTP內(nèi)存中,傳感器內(nèi)部在檢測信號的處理過程中要調(diào)用這些校準系數(shù)。單線制串行接口,使系統(tǒng)集成變得簡易快捷。超小的體積、極低的功耗,信號傳輸距離可達20米以上,使其成為各類應用甚至最為苛刻的應用場合的最佳選則。DHT11數(shù)字溫濕度傳感器模塊為3針PH2.0封裝,連接方便。

規(guī)格參數(shù)

  1. 工作電壓 :3.3v - 5v
  2. 尺寸大?。?8mm x 25mm
  3. 重量大小:3g
  4. 信號類型:數(shù)字信號
  5. 供電電流:最大2.5mA
  6. 溫度范圍:0-50℃,誤差±2℃
  7. 濕度范圍:當環(huán)境溫度在 0 ℃時為30 - 90%RH;當環(huán)境溫度在25℃時為20 - 90%RH?;當環(huán)境溫度在50℃時為20 - 80%RH
  8. 響應時間:1/e(63%) 6-30s
  9. 測量分辨率分別為:溫度(8bit)濕度(8bit)
  10. 采樣周期間隔:<1s

模塊參數(shù)

DHT11 New.png

接口定義

  • S:輸出信號
  • +:電源(VCC)
  • -:地(GND)
引腳的定義

使用方法

工作原理

DHT11 數(shù)字溫濕度傳感器是一種集溫度、濕度一體的復合傳感器,它能把溫度和濕度物理測量通過溫、濕度敏感元件和相應電路轉(zhuǎn)換成方便計算機或者數(shù)據(jù)采集設備直接讀取的數(shù)字量,DHT11由電阻式感濕器件和NTC系數(shù)感溫器件構(gòu)成,具有校準數(shù)字信號輸出功能,采用單總線串行接口,輸出數(shù)據(jù)一共5個字節(jié),分別表示:濕度整數(shù)位、濕度小數(shù)位、溫度整數(shù)位、溫度小數(shù)位及校驗和,其中校驗和為濕度與溫度之和的最低8位數(shù)據(jù)。

編程原理

DHT11數(shù)字溫度傳感器模塊共引出3個引腳,從上到下分別是地線GND、電源Vcc和數(shù)據(jù)線S。實際應用時,將S端接在Arduino UNO的一個數(shù)字輸入接口,接線方法如接線圖所示。DHT11數(shù)字溫濕度傳感器使用一根信號線傳輸數(shù)據(jù),讀取步驟如下:

  • 將引腳 D8 設置為輸出模式,同時將引腳置為低電平(LOW),持續(xù)時間超過18ms以上;
  • 再將引腳 D8 設置為高電平(HIGH),持續(xù)時間40us;
  • 再將引腳 D8 設置為輸入(讀?。┠J?,判定讀到低電平(LOW)后,延時80us,再判定讀到高電平(HIGH)后,延時 80us,以上工作完成后開始接受數(shù)據(jù);
  • 數(shù)據(jù)總共有5個字節(jié),忽略校驗位,有四位是有效數(shù)據(jù)。第0字節(jié)是濕度的整數(shù)位,第1字節(jié)是濕度的小數(shù)位,第2字節(jié)是溫度的整數(shù)位,第3字節(jié)是溫度的小數(shù)位。

連接示意圖

02S014A02.png

例子程序

int dht11 = 8;//定義DHT11連接到數(shù)字引腳8
byte dat [5];//設置5個字節(jié)的數(shù)組
byte read_data()
{
  byte data;
  for (int i=0;i<8;i++)
  {
    if(digitalRead(dht11) == LOW)
    {
      while(digitalRead(dht11) == LOW);//等待50us
      delayMicroseconds(30);//判斷高電平的持續(xù)時間,以判斷數(shù)據(jù)是0還是1
      if(digitalRead(dht11) == HIGH)  
      data |=(1<<(7-i));//高位在前,低位在后
      while(digitalRead(dht11) == HIGH);//如果數(shù)據(jù)是1,等待下一位的接收
      }
    }
    return data;
  }
void start_test()
{
  digitalWrite(dht11,LOW);//拉低總線,發(fā)開始信號
  delay(30);//延時需要大于18ms
  digitalWrite(dht11,HIGH);//開始信號
  delayMicroseconds(40);//等待DHT11響應
  pinMode(dht11,INPUT);//改為輸入模式
  while(digitalRead(dht11) == HIGH);
  delayMicroseconds(80);//DHT11發(fā)出響應,拉高總線80us
  if(digitalRead(dht11) == LOW);
  delayMicroseconds(80);//拉低總線80us后開始發(fā)送數(shù)據(jù)
  for(int i=0;i<4;i++)//接收溫濕度數(shù)據(jù),校驗位不考慮
  dat[i] = read_data();
  pinMode(dht11,OUTPUT);//改為輸出模式
  digitalWrite(dht11,HIGH);//發(fā)送完一次數(shù)據(jù)后釋放總線,等待主機
  //下一次的信號開始
  }
void setup() 
{
Serial.begin(9600);
pinMode(dht11,OUTPUT);
}
void loop() 
{
 start_test();
 Serial.print("Current humdity = ");
 Serial.print(dat[0],DEC);//顯示濕度的整數(shù)位
 Serial.print('.');
 Serial.print(dat[1],DEC);//顯示濕度的小數(shù)位
 Serial.println('%');
 Serial.print("Current temperature = ");
 Serial.print(dat[2],DEC);//顯示溫度的整數(shù)位
 Serial.print('.');
 Serial.print(dat[3],DEC);//顯示溫度的小數(shù)位
 Serial.println('C');
 delay(700);
}

程序效果

將例程上傳到Arduino控制器中,并按照接線圖正確進行接線,通過Arduino的串口監(jiān)視器可以觀察到當前環(huán)境下的溫度和濕度值,實驗效果如下圖所示:

02S014A03.png

應用視頻

Dht11.png

產(chǎn)品相關(guān)推薦

Erweima.png

產(chǎn)品購買地址

DHT11溫濕度傳感器

周邊產(chǎn)品推薦

Carduino UNO R3 控制器
Starduino 控制器
LM35 線性溫度傳感器
DS18B20 數(shù)字溫度傳感器

相關(guān)問題解答

DHT11溫濕度傳感器的工作原理

相關(guān)學習資料

運用Arduino DHT11溫濕度傳感器制作溫濕度報警器視頻
奧松機器人技術(shù)論壇