728x90
300x250

[기초전자실습] 온도(LM35), 온습도(DHT22)센서와 아두이노메가 2560 사용

 

아두이노를 활용하여 온도, 온도/습도를 측정할 수 있는 방법에 대해서 소개하려고 한다.

 


1. 아두이노 라이브러리

 

[첨부(Attachment)]

 

https://github.com/adafruit/DHT-sensor-library

 

[DHT11 버전]

DHT11_library.7z

 

[DHT 통합버전(DHT11, DHT22 등)]

DHT-sensor_library.7z

 


2. 하드웨어

 

번호

구분

항목명

비고

1

센서(Sensor)

온도센서

 

2

센서(Sensor)

DHT11(습도, 온도 센서) || DHT22

 

3

보드(Board)

아두이노 메가 2560

 

 

[DHT-11, DHT-22 특징]

 

항목명

DHT-11

DHT-22

온도 측정 범위

0~50℃

-40~80℃

온도 측정 오차

2℃

0.5℃

습도 측정 범위

20~80%

0~100%

습도 측정 오차

5%

2%

측정 간격

1초

2초

 

[LM35 특징]

 

번호 

구분

영어(문장)

한글

1

특징(Features)

 Calibrated Directly in Celsius (Centigrade)

 직접 섭씨(중앙)로 보정됨

2

특징(Features) 

 Linear + 10-mV/°C Scale Factor

 선형(리너) + 10mV/°C 스케일 팩터

3

특징(Features) 

 0.5°C Ensured Accuracy (at 25°C)

 0.5°C의 정확성 보장(25°C)

4

특징(Features)

 Rated for Full −55°C to 150°C Range

 전체 -55°C~150°C 범위에 대해 등급 설정

5

특징(Features)

 Suitable for Remote Applications

 원격 애플리케이션에 적합

6

특징(Features)

 Low-Cost Due to Wafer-Level Trimming

 웨이퍼 레벨 트리밍으로 인한 저비용

7

특징(Features)

 Operates From 4 V to 30 V

 4V ~ 30V 작동

8

특징(Features)

 Less Than 60-μA Current Drain

 60μA 미만의 전류 방전

9

특징(Features)

 Low Self-Heating, 0.08°C in Still Air

 낮은 자체 가열, 정지 공기 중 0.08°C

10

특징(Features)

 Non-Linearity Only ±¼°C Typical

 비선형성만 ±1⁄4°C 일반

11

특징(Features)

 Low-Impedance Output, 0.1 Ω for 1-mA Load

 저임피던스 출력, 1mA 로드의 경우 0.1Ω

12

적용(Applications)

 Power Supplies

 전원 공급류

13

적용(Applications) 

 Battery Management

 베터리 관리

14

적용(Applications)

 HVAC

 

15

적용(Applications)

 Appliance

 가전

 

 

 


3. 소스코드

 

#include <DHT11.h>

const int temperaturePin = 0;
const int DHTPIN = 2;

#define DHTTYPE DHT11

DHT11 dht11(DHTPIN);

float dht_temperature;
float dht_humidity;

void setup() { 
     Serial.begin(9600); //시리얼 통신속도 설정
}
 
void loop() {
     char type = NULL;
     int reading = analogRead(temperaturePin);           // LM35 센서값 읽어오기
  
     printTemperatureHumidity();
  
     Serial.print((5.0*reading*100.0)/1024.0);               // LM35 센서
     Serial.print(",");

     Serial.print( dht_temperature );
     Serial.print(",");
     Serial.print( dht_humidity );
     Serial.print("%");

     delay(1000); // 측정 간격 설정 (1000 = 1초)

}

void printTemperatureHumidity(){
 
     int err;
  
     if (err = dht11.read(dht_humidity, dht_temperature) == 0 ) {
         dht_temperature = dht_temperature + 28; // 보정값
     }else{
         Serial.println("Failed to read from DHT sensor!");
         return;
     }
}


소스코드(DHT11)

 

#include "DHT.h"       // DHT.h 라이브러리를 포함한다

#define DHTPIN 2      // DHT핀 (DATA핀 - 디지털 포트로 구성)

#define DHTTYPE DHT11  // DHT타입을 DHT11 DHT22,

 

DHT dht(DHTPIN, DHTTYPE);  // DHT설정 - dht (디지털 포트번호, dht11)


void setup() {

     Serial.begin(9600);    // 9600 속도로 시리얼 통신을 시작한다

}

 

void loop() {

     delay(2000);

    

     int h = dht.readHumidity();  // 변수 h에 습도 값을 저장

     int t = dht.readTemperature();  // 변수 t에 온도 값을 저장

    

     Serial.print("Humidity: ");  // 문자열 Humidity: 를 출력한다.

     Serial.print(h);  // 변수 h(습도)를 출력한다.

     Serial.print("%\t");  // %를 출력한다

     Serial.print("Temperature: ");  // 이하생략

     Serial.print(t);

     Serial.println(" C");

 

}


소스코드(통합 DHT)

 


4. 참고자료(Reference)

 

1. Arduino Playground - DHT11Lib, Last Modified , Accessed by 2018-08-14, http://playground.arduino.cc/main/DHT11Lib

2. adafruit/DHT-sensor-library: Arduino library for DHT11DHT22, etc, Temp & Humidity Sensors, Last Modified , Accessed by 2018-08-14, https://github.com/adafruit/DHT-sensor-library

3. DHT11, DHT22 and AM2302 Sensors - Adafruit, Last Modified , Accessed by 2018-08-14, https://cdn-learn.adafruit.com/downloads/pdf/dht.pdf

4. LM35 Precision Centigrade Temperature Sensors datasheet (Rev. H), Last Modified , Accessed by 2018-08-14, www.ti.com/lit/ds/symlink/lm35.pdf

반응형

+ Recent posts