먼지 센서 (GP2Y1010AU0F, PPD42NS)

대도시에 살면 미세먼지에서 자유로울 수 없죠. 봄이라면 황사의 습격이 두렵기도 하구요. 이럴때 유용하게 사용할 수 있는 센서 되시겠습니다. 먼지센서.

공기질을 측정할 때 사용하는 MQ 시리즈의 센서는 내부의 작은 히터를 이용해서 입자를 태워 원하는 입자의 농도를 측정합니다. 먼지센서는 이것과는 동작형태가 틀립니다. 적외선 송신기, 수신기를 이용해서 미세입자에 의해 반사되는 빛의 양을 측정하는 방식으로 동작합니다.

저렴하게 구매할 수 있는 먼지센서를 뒤져보니 2가지 종류가 보이네요. 둘 다 테스트가 된 상태가 아니라서 어떤 것이 더 좋은지 모르겠습니다. Datasheet 혹은 인터넷 검색을 활용해서 정밀도나 신뢰도에 대한 자료를 확보한 후 구입하세요.

 

1. Sharp Dust Sensor (GP2Y1010AU0F)

담배연기 같은 미세입자 검출이 가능한 먼지센서입니다. 전류 소모량이 매우 적고(20mA max, 11mA typical) 7V DC 까지의 전원으로 동작이 가능합니다. 먼지의 농도에 따라 비례적으로 아날로그 출력을 내므로 아두이노의 아날로그 핀으로 값을 읽어 사용할 수 있습니다. 0.5V/0.1mg/m3 의 감도를 가지고 있습니다. 출력 전압에 따라 먼지 농도가 아래 그래프와 같이 변합니다.

Output Voltage vs Dust Density

 

데이터 시트는 다음 링크를 참고하세요 :  GP2Y1010AU0F data sheet

이 센서는 6개의 핀을 가지고 있습니다.

Dust sharpsensor

 

왼쪽 3개의 핀이 적외선 LED 컨트롤 핀(1~3)이고 오른쪽 3개의 핀이 Signal 출력 핀(4~6)입니다.

1~3번 핀을 연결할 때 아래와 같이 150ohm 저항과 220uF 커패시터를 함께 연결해줘야 합니다. 적외선 LED 를 이용해 계속 값을 측정하는 것이 아니라, 측정이 필요한 순간에 커패시터에 축적된 전류를 방출해서 사용하는 구조 같습니다. 따라서 먼지 농도를 측정할 때 충분한 시간 간격을 두고 사용해야 겠습니다.

sharpExternalCircuit

 

아두이노에는 아래와 같이 연결합니다.

Sensor Pin Arduino Pin
1 Vled –> 5V (150ohm resistor)
2 LED-GND –> GND
3 LED –> Digital pin 2
4 S-GND –> GND
5 Vo –> Analog pin 0
6 Vcc –> 5V

 

연결이 완료되면 아래와 같은 모습이 됩니다.

5186110877_d0acd060cf

 

소스코드는 아래와 같습니다.

 

소스를보면 적외선 LED Pin을 LOW 상태로 바꾸고 잠시 후 센서값을 측정한 뒤, 다시 HIGH 상태로 바꿔줍니다. 이 부분을 변경하면 값이 잘못 나올 수도 있을듯…

아날로그 핀을 통해 센서에서 값을 읽으면 먼저 voltage 단위로 변환합니다. 그리고 앞서 보여드렸던 그래프와 같이 전압에 해당되는 농도값을 계산합니다.

관련된 자료를 보면 이 모듈의 정확도, 신뢰도가 그리 높지는 않다는 의견이 있습니다. 그리고 1~6번 핀에 저항과 커패시터 연결이 제대로 되지 않으면 값이 원하는 범위로 나오지 않는다고도 합니다.

그리고 정확한 측정값을 위해 어느정도 보정(Calibration)작업을 해줘야 한다고 하네요. 처음 시스템이 부팅되고 짧은 시간이 지난 시점에 센서의 값을 읽어들여서  기준값으로 사용하는것을 권장합니다. 주변 환경에 따라(온도등..) 측정 오차가 발생할 수 있으므로 이렇게 측정된 초기값을 미리 기억해서 이후 측정값들을 보정해 주라는 의미입니다.

This sensor works similar to optical smoke alarms. The 150R resistor charges up the 220uF cap, the FET discharges the capacitor into the IR emitter and the output from IR diode is read while this high current is flowing. The FET is then turned off and the capacitor is allowed to charge again. Leaving the current flowing through the emitter will not give good results.

The best way to get a result is to measure the voltage just before the current is switched on and then a millisecond after the current is flowing and then subtract one from the other to give a reading. This will offset the ‘dark reading so minimising temperature effects.

 

 

2. Dust Sensor (PPD42NS)

b370983e0136653903ce35f027b620dd.image.530x397

앞서 소개한 Shart 먼지 센서는 적외선 LED 핀으로 특정한 신호를 넣어줘야 값을 측정할 수 있는데 이 센서는 인터페이스가 훨씬 간단한 것이 특징입니다. 대신 사용방법(소스코드)이 완전히 틀립니다.

  • Grove compatible interface(extra wire with connecter)
  • Supply voltage range: 5V
  • Minimum detect particle: 1um
  • Detecting particles range: 8000pcs / 283ml
  • PWM output
  • Dimensions: 59(W)x45(H)x22(D) [mm]

 

설명 상으로는 2개의 output 모드를 지원하고 각 모드는 다른 감도를 가지고 있다고 합니다. 모드를 바꾸는 방법은 아직 자료를 찾지 못했네요. 필요하신분은 구글 검색을 해보셔야 할듯…

일단 연결은 아래와 같이 합니다. 아두이노 디지털 핀으로 연결된 라인을 읽어서 값을 측정할 수 있습니다.

  • JST Pin 1 (Black Wire) => Arduino GND
  • JST Pin 3 (Red wire) => Arduino 5VDC
  • JST Pin 4 (Yellow wire) => Arduino Digital Pin 8

 

Pin4 의 신호는 보통 HIGH 상태입니다. 이 신호가 PM concentration(Particulate Matters, 입자 농도) 에 비례적으로 LOW로 바뀝니다. 따라서 Lo Pulse Occupancy (LPO, Low 신호가 지속된 시간)를 측정함으로써 PM(=먼지 농도)을 계산 할 수 있습니다.

LPO 시간 측정은 30초 동안 하기를 권장합니다.(30초간 Low 상태가 지속된 시간을 측정함) 만약 해상도를 어느정도 포기할 수 있는 상황이라면 15초간 측정해서 사용하는 것도 가능합니다.

소스코드는 아래를 참고하세요.

 

주의할 점은 측정값의 편차가 심하다는 점입니다. 단순히 측정값 만을 나열하면 아래와 같이 기복이 심한 그래프가 나옵니다. (아래는 24시간동안 센서를 돌려 나온값으로 만든 그래프)

readings-1avg

수집된 값들을 50개씩 묶어서(12.5분간 측정한 자료에 해당) 평균을 내면 아래와 같은 그래프가 됩니다. 먼지 농도의 변화를 파악하기 훨씬 좋은 상태가 됨을 알 수 있습니다.

readings-50avg

 

 

센서 사용시 주의할 점

  • 센서 주변의 빛에 의해 적외선 센서가 영향받지 않도록 빛을 차단하는 케이스 필요
  • 센서가 측정하는 공기질에 영향을 주는 바람, 대류현상을 차단하도록 설치
  • PPD42NS 센서의 경우 내부에 작은 히터가 들어가 있습니다. 히터에 의한 상승기류를 이용한 측정장치이므로 히터 부위가 광학부위보다 아래쪽에 위치하도록 설치해야 합니다.

 

참고자료

 

Post Author: TORTUGA

TORTUGA
궁금하신 점은 새로 개편한 홈페이지의 QnA 게시판을 이용해주세요!!!!!!! http://www.hardcopyworld.com/gnuboard5/bbs/board.php?bo_table=qna

4 thoughts on “먼지 센서 (GP2Y1010AU0F, PPD42NS)

    강민준

    (2017년 5월 6일 - 3:18 오전)

    먼지센서의 측정결과를 예시 자료로 사용하려고 합니다. 그래프 2개를 참고하려고 하는데 양해부탁드립니다.

    PJH

    (2018년 3월 21일 - 4:32 오후)

    ppd42ns 센서 50개씩 묶었다는 소스좀 알 수 있을까요? 부탁드립니다.

      박성진

      (2018년 4월 16일 - 12:03 오후)

      대략 계산해보면 나오는거 같은데요
      12.5분의 데이터가 50개라면 약 15초마다 하나씩 모아놓은 데이터로 평균을 냈다고 보는거죠. 물론 평균방법이야 여러가지가 있지만 시간의 따른 변동폭으로 사용시 이동평균을 주로 사용하긴 합니다.

댓글 남기기

이메일은 공개되지 않습니다.