공기중의 먼지를 mg/m^3 단위로 측정해보자.
▶ 이 가이드를 따라하면
- 공기중의 먼지 농도를 간단히 측정할 수 있다.
▶ 먼저 읽으면 좋은 글
- Arduino 일반 : http://bbangpan.tistory.com/1
- PMS7003 : https://bbangpan.tistory.com/101
▶ 부품 설명 및 회로 구성
Sharp의 GP2Y1010AU (혹은 GP2Y1010AU0F)는 20mA/5V 정도의 전력만으로도 먼지 농도를 측정할 수 있는 저렴한 센서이다. 내부적으로는 적외선 송수신기를 통해 먼지로 빛이 약해지는 정도를 측정해 먼지 농도를 구한다고 알려져 있다. PM2.5정도의 초 미세먼지 입자도 측정이 가능하다(PM2.5는 직경이 2.5um 수준 입자).
이 녀석을 처음 구매하면 이렇게 배송이 온다. 220μF 커패시터(capacitor)와 150옴(ohm)의 저항이 같이 오는데, 회로 구성에 꼭 필요하다.
<Sharp GP2Y1010AU0F 센서, capacitor와 저항이 같이 동봉된 것을 사자>
이 녀석의 초기 가장 큰 고민은 바로 납땜이 필요하다는 것이다. 불행히도 고난이도 납땜(?)이 필요하며, 이를 위해 일반 납땜 공구 외에도 고정 받침대도 필요하다. 이 블로그의 원칙은 납땜이 없이 하는 것들을 다루는데, 불행히도 이 부품은 이를 피할 수가 없었다. 미안하니까 youtube 관련 납땜 강좌 동영상을 하나 참조하도록 하자. https://www.youtube.com/watch?v=Xv1j0qwwfP0
<납땜을 위해서는 이런 받침대가 필요하다.>
배선도 이제 capacitor와 저항이 필요하다.
<실제 배선은 위와 같다. Capacitor는 긴 다리가 양(+)이다.>
<간단 회로도를 공유한다. 빨간색 끝 라인을 기준으로 VCC,VO,S-GND,LED,LED-GND,V-LED로 불린다.>
<핀 번호에 대한 www.sunfounder.com 발췌/역시 빨간선만 기준으로 순서만 보자>
<arduinodev.woofex.net 발췌/역시 6번 빨간색 기준만 보자. 나머지는 선 색이 조금 다르다>
소스 및 정보 등은 이 사이트를 추가 참조한다. http://www.dfrobot.com/wiki/index.php/Sharp_GP2Y1010AU
▶ 소스 코드 입력 및 구동
상기 dfrobot의 소스를 발췌하여 게시한다.
/*
Standalone Sketch to use with a Arduino UNO and a
Sharp Optical Dust Sensor GP2Y1010AU0F
*/
int measurePin = 0; //Connect dust sensor to Arduino A0 pin
int ledPower = 2; //Connect 3 led driver pins of dust sensor to Arduino D2
int samplingTime = 280;
int deltaTime = 40;
int sleepTime = 9680;
float voMeasured = 0;
float calcVoltage = 0;
float dustDensity = 0;
void setup(){
Serial.begin(9600);
pinMode(ledPower,OUTPUT);
}
void loop(){
digitalWrite(ledPower,LOW); // power on the LED
delayMicroseconds(samplingTime);
voMeasured = analogRead(measurePin); // read the dust value
delayMicroseconds(deltaTime);
digitalWrite(ledPower,HIGH); // turn the LED off
delayMicroseconds(sleepTime);
// 0 - 5V mapped to 0 - 1023 integer values
// recover voltage
calcVoltage = voMeasured * (5.0 / 1024.0);
// linear eqaution taken from http://www.howmuchsnow.com/arduino/airquality/
// Chris Nafis (c) 2012
dustDensity = 0.17 * calcVoltage - 0.1;
Serial.print("Raw Signal Value (0-1023): ");
Serial.print(voMeasured);
Serial.print(" - Voltage: ");
Serial.print(calcVoltage);
Serial.print(" - Dust Density: ");
Serial.println(dustDensity); // unit: mg/m3
delay(1000);
}
컴파일 및 구동하여 시리얼 모니터를 보면 아래와 같이 결과를 볼 수 있다. 이런 종류 센서 측정이 난감할 때가 있는데(알코올 센서는 술을 마셔야 되는 등..) 적당히 먼지많은 수건이나 헝겊을 격렬하게 흔들면 신기하게도 먼지 농도가 올라간다. 다만, 실제 공기중의 농도는 대략 0.02~0.05mg(20~50μg)/m^3 정도가 일반적이므로 약간의 calibration이 필요하다고 알려져 있다.
(완전한 clean room과 적당히 농도가 알려진 곳에서 측정하여 linear하게 증가한다고 생각하고 보정하면 된다.) 이 calibration이전에는 대략 좋아짐과 나빠짐의 정도만 측정 가능하다.
<하단의 수치가 올라간 것은 헝겊을 털었기 때문이다. Density의 단위는 mg/m^3, 즉 1제곱미터당 mg이다>
데이터 쉬트를 확인하면 위 측정된 전압과 먼지 농도와의 관계가 나온다. 이를 보면 calibration이 어떻게 가능한지 대략 알 수 있다. 3.5V이전까지는 선형으로 전압과 먼지 농도의 관계를 알 수 있다. Y축이 전압, X축이 먼지 농도이다.
<전압과 먼지농도 관계 그래프/GP2Y1010AU datasheet 발췌>
이렇게 먼지 센서는 환풍 장치와 연결하거나 실내 혹은 실외 먼지 농도를 측정할 수 있다. 참조로 1mg=1000μg(마이크로 그램)이다.
▶ 구매 가이드
GP2Y2010AU : http://www.aliexpress.com/wholesale?catId=0&initiative_id=SB_20150625072505&isPremium=y&SearchText=dust+sensor+sharp
(저항과 capacitor를 집에 보유하고 있지 않다면, 동봉된 것으로 구매한다, $10)
▶ 강의 키워드
Arduino UNO, dust sensor, 먼지 센서, sharp GP2Y1010AU0F, GP2Y1010AU
'아두이노 센서' 카테고리의 다른 글
[센서/Tachometer] 무언가 반복해서 지나가는 속도를 측정할때는 IR(적외선) 기반 Tachometer를 사용하세요 (0) | 2015.10.26 |
---|---|
[센서/진동] 가변 진동 센서-디지탈/Adjustable vibration sensor-digital with potentiometer (0) | 2015.08.24 |
[센서/충격] 충격(진동) 감지 센서/Knock sensor/Vibration sensor (0) | 2015.08.17 |
[센서/조도] Lux(룩스)단위로 빛의 밝기를 읽어주는 GY-302센서(BH1750) (1) | 2015.08.12 |
[센서/CO2] 이산화탄소 농도를 알려주는 MG811 CO2 센서 모듈 (1) | 2015.07.14 |
[센서/무게,하중] 1kg미만의 무게를 측정 가능한 무게 센서(weight sensor) (4) | 2015.06.25 |
[센서/초음파 거리측정] 물체와의 거리를 측정해주는 초음파 센서(ultra sonic sensor) (0) | 2015.06.24 |
[센서/터치] 정전식 터치 센서를 통해 손가락 터치를 감지한다 (0) | 2015.06.22 |
[센서/진동] 약한 진동까지 감지할 수 있는Piezo Disk Vibration Sensor(피에조 디스크 진동 센서) (12) | 2015.06.22 |
[센서/컬러] 눈앞에 색을 인식하는 TCS3200 IC기반의 Color(RGB 색깔) sensor 인 GY-31을 실습해보자. (17) | 2015.06.18 |