본문 바로가기

Sensors

DHT-11 온습도센서

728x90

DHT-11 온습도센서


스펙

습도 측정 범위 : 20-90% RH

습도 오차 범위 : ±5% RH

측정 온도 범위 : 0-50 °C

온도 오차 범위 : ±2% °C

동작 전압 : 5V

소비 전력 : 저전력



온습도 센서 기본원리

DHT11은 두 전극 사이의 전기 저항을 측정하여 수증기를 감지합니다. 

습도 감지 구성 요소는 전극이 표면에 적용된 수분 보유 기판입니다. 

수증기가 기판에 흡수되면 이온이 기판에 의해 방출되어 전극 사이의 전도성이 증가합니다

두 전극 사이의 저항 변화는 상대 습도에 비례합니다. 

상대 습도가 높을수록 전극 사이의 저항이 감소하고 상대적 습도가 낮 으면 전극 사이의 저항이 증가합니다

온도는 표면에 설치된  NTC 온도 센서 (써미스터)를 사용하여 온도에 따른 물질의 저항치 변화값으로 온도를 측정 합니다



하드웨어 연결

위와 같이 DHT11 센서는 보통 3핀이나 4핀 형태로 판매되며 차이점은 3핀의 경우는 풀업 저항이 일정한 센서값을 가져올수 있는 점정도가 있습니다

실제 연결에 사용하는 핀은 3개만 사용하게 됩니다

Signal핀은 MCU의 디지털 핀에 연결하며 Vcc는 3V또는 5V에 연결하고 GND는 MCU의 GND에 연결하면 됩니다

(클릭하면 확대)



제어

DHT11센서는 Signal 핀의 레벨을 통해 통신을 위와 같이 수행합니다

초기 18ms 동안 LOW로 유지하다 HIGH로 전환하여 DHT에 요청을 하게되고

20us~40us이후 DHT에서 50us간 LOW로 80us간 HIGH로 전환하여 진행에 대한 반환을 하게 됩니다

이후 온습도 데이터를 전송하며 

비트전송시 50us LOW후 26~28us HIGH는 0bit로  

50us LOW후 70us HIGH는 1bit로 간주하여 데이터를 전송합니다

데이터의 끝에서는 50us LOW후 계속 HIGH상태를 유지합니다



아두이노 지원 (ATmega328P)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// 라이브러리 사용
//https://github.com/adafruit/DHT-sensor-library
 
#include "DHT.h"
 
#define DHTPIN 7    // Signal핀과 연결된 디지털 핀 넘
#define DHTTYPE DHT11   // DHT11 사용 명시
 
DHT dht(DHTPIN, DHTTYPE); // 사용핀넘버 타입 등록
 
void setup()
{
    Serial.begin(9600); // 시리얼 사용 초기화
    dht.begin(); // DHT 초기화
}
 
void loop()
{
    float hum = dht.readHumidity(); // 습도 읽기
    float temp = dht.readTemperature(); // 온도 읽기
    if (isnan(hum) || isnan(temp)) 
    {
        Serial.println("Failed to read from DHT sensor!");
        return;
    }
    // 결과 시리얼 출력  
    Serial.print("Humidity: ");
    Serial.print(hum);
    Serial.print(" %\t");
    Serial.print("Temperature: ");
    Serial.print(temp);
    Serial.println("C");
}
cs



MBED 지원 (STmicroelectronics NUCLEO-L432KC)

1
2
3
// 라이브러리 사용
// https://manguring@os.mbed.com/teams/components/code/DHT/
// 코드 추후 업데이트
cs


728x90