溫濕度傳感器 - DHT22

出自YFRobotwiki
跳轉到: 導覽搜尋
DHT22溫濕度傳感器模塊


產品簡介


溫濕度傳感器 - DHT22模塊是採用高精度的數字溫濕度傳感器元件DHT22設計的模塊,可用來對環境溫度和濕度進行檢測。總線方式與arduino 進行數據傳輸,單線制串行接口,使系統集成變得簡易快捷。超小的體積、極低的功耗,信號傳輸距離可達20 米以上,使其成為各類應用甚至最為苛刻的應用場合的最佳選則。

傳感器包括一個電阻式感濕元件和一個NTC測溫元件,並與一個高性能8位單片機相連接。因此該產品具有品質卓越、超快響應、抗干擾能力強、性價比極高等優點。每個DHT22傳感器都在極為精確的濕度校驗室中進行校準。校準係數以程序的形式儲存在OTP內存中,傳感器內部在檢測信號的處理過程中要調用這些校準係數。產品為4 針單排引腳封裝。連接方便,特殊封裝形式可根據用戶需求而提供。

DHT22是數字溫濕度傳感器並且含有已校準數字信號輸出。它應用專用的數字模塊採集技術和溫濕度傳感技術,確保產品具有極高的可靠性與卓越的長期穩定性。相對DHT11,DHT22精確度很高,可以替代昂貴的進口SHT10溫濕度傳感器。

DHT22特點總結:超低能耗、傳輸距離遠、全部自動化校準、採用電容式濕敏元件、完全互換、標準數字單總線輸出、卓越的長期穩定性、採用高精度測溫元件。


規格參數


  • 供電電壓:DC3~5V,建議5V
  • 測量溫度範圍:-40℃ ~ 80℃
  • 測量濕度範圍:0%RH ~ 99.9%RH
  • 溫度測量精度:±1℃
  • 濕度測量精度:±2%RH
  • 溫濕靈敏度: 0.1℃ / 0.1%RH
  • 響應時間:溫度 <5s /濕度 <10s
  • 採樣周期:2s
  • 輸出形式:數字輸出
  • 安裝孔徑:3MM
  • 模塊尺寸:36*21*9.5MM (長*寬*高)
  • 孔間距:15MM
  • 模塊重量:7.9g


主要應用


暖通空調、除濕器、測試及檢測設備、消費品、汽車、自動控制、數據記錄器、家電、濕度調節器、醫療、氣象站、及其他相關濕度檢測控制等。


引腳說明


  • 1. G -- Gnd(地)
  • 2. V -- Vcc(電源+5V)
  • 3. S -- Sign(信號)


應用示例


電路連接示意圖


DHT22模塊的 G、V、S分別連接 Arduino UNO的GND、VCC(+5V)、A1引腳。



示例代碼
//
//    FILE: dht22_test.ino
//  AUTHOR: Rob Tillaart
// VERSION: 0.1.03
// PURPOSE: DHT library test sketch for DHT22 && Arduino
//     URL:
// HISTORY:
// 0.1.03 extended stats for all errors
// 0.1.02 added counters for error-regression testing.
// 0.1.01
// 0.1.00 initial version
//
// Released to the public domain
//

#include <dht.h>

dht DHT;

#define DHT22_PIN A1

struct
{
    uint32_t total;
    uint32_t ok;
    uint32_t crc_error;
    uint32_t time_out;
    uint32_t connect;
    uint32_t ack_l;
    uint32_t ack_h;
    uint32_t unknown;
} stat = { 0,0,0,0,0,0,0,0};

void setup()
{
    Serial.begin(9600);
    Serial.println("dht22_test.ino");
    Serial.print("LIBRARY VERSION: ");
    Serial.println(DHT_LIB_VERSION);
    Serial.println();
    Serial.println("Type,\tstatus,\tHumidity (%),\tTemperature (C)\tTime (us)");
}

void loop()
{
    // READ DATA
    Serial.print("DHT22, \t");

    uint32_t start = micros();
    int chk = DHT.read22(DHT22_PIN);
    uint32_t stop = micros();

    stat.total++;
    switch (chk)
    {
    case DHTLIB_OK:
        stat.ok++;
        Serial.print("OK,\t");
        break;
    case DHTLIB_ERROR_CHECKSUM:
        stat.crc_error++;
        Serial.print("Checksum error,\t");
        break;
    case DHTLIB_ERROR_TIMEOUT:
        stat.time_out++;
        Serial.print("Time out error,\t");
        break;
    case DHTLIB_ERROR_CONNECT:
        stat.connect++;
        Serial.print("Connect error,\t");
        break;
    case DHTLIB_ERROR_ACK_L:
        stat.ack_l++;
        Serial.print("Ack Low error,\t");
        break;
    case DHTLIB_ERROR_ACK_H:
        stat.ack_h++;
        Serial.print("Ack High error,\t");
        break;
    default:
        stat.unknown++;
        Serial.print("Unknown error,\t");
        break;
    }
    // DISPLAY DATA
    Serial.print(DHT.humidity, 1);
    Serial.print(",\t");
    Serial.print(DHT.temperature, 1);
    Serial.print(",\t");
    Serial.print(stop - start);
    Serial.println();

    if (stat.total % 20 == 0)
    {
        Serial.println("\nTOT\tOK\tCRC\tTO\tUNK");
        Serial.print(stat.total);
        Serial.print("\t");
        Serial.print(stat.ok);
        Serial.print("\t");
        Serial.print(stat.crc_error);
        Serial.print("\t");
        Serial.print(stat.time_out);
        Serial.print("\t");
        Serial.print(stat.connect);
        Serial.print("\t");
        Serial.print(stat.ack_l);
        Serial.print("\t");
        Serial.print(stat.ack_h);
        Serial.print("\t");
        Serial.print(stat.unknown);
        Serial.println("\n");
    }
    delay(2000);
}
//
// END OF FILE
//

程序下載地址:dit22_test


串口監視結果


DHT22串口監視結果



參考資料





返回首頁

更多建議和問題歡迎反饋至 YFRobot論壇

購買方式:YFRobot 電子工作室