안녕하세요 대짜이찐입니다.
요즘 다시 미세 먼지가 심해지고 있어서
미세 먼지 센서를 통해 미세 먼지 농도를 측정해보는
포스팅을 진행해보겠습니다.
이번 포스팅에서 사용할 GP2Y1010AU0F 센서입니다.
SHARP 사에서 만든 제품으로, 광학식으로 미세 먼지를 검출하는 센서입니다.
PM2.5(먼지의 지름이 2.5um이하)의 먼지까지 측정 가능한 센서로
저렴하기도 하여 많이 사용되는 제품입니다.
이번 포스팅에서 사용할 GP2Y1010AU0F 센서입니다.
SHARP 사에서 만든 제품으로, 광학식으로 미세 먼지를 검출하는 센서입니다.
PM2.5(먼지의 지름이 2.5um이하)의 먼지까지 측정 가능한 센서로
저렴하기도 하여 많이 사용되는 제품입니다.
미세 먼지 센서의 내부 구조입니다.
가운데 원형의 구멍에 IRED(적외선 LED)를 통해 먼지의 농도를 검출하는 센서입니다.
핀맵은 왼쪽부터 1번입니다.
1번과 2번으로 적외선 LED에 전원을 주고,
3번 핀에 연결된 PNP트랜지스터를 통해 적외선 LED를 제어합니다.
4번과 6번 핀을 통해 증폭기에 전원을 넣고 PD(포토 다이오드)를 통해 증폭된 신호를
5번 핀을 통해 아날로그 출력을 합니다.
미세 먼지 센서를 제어하기 위해 먼저 회로를 구성해야 합니다.
미세 먼지 센서에 동봉 된 150Ω 저항과 220uF 캐패시터를 통해 시정수를 맞춰줍니다.
해당 회로를 구성하지 않으면 미세 먼지 센서가 제대로 동작하지 않습니다.
제품을 사용 할 때 연결만 해서는 동작하지 않고,
데이터 값을 받아오는 타이밍이 중요합니다.
적외선 LED를 켜고 끄는 1주기는 10ms 이며,
이중에 적외선LED를 ON시키는 시간은 0.32ms입니다.
나머지 10-0.32=9.68ms 동안은 적외선 LED를 OFF시켜야 합니다.
그럼 아날로그 값은 언제 받느냐 하면
적외선 LED가 ON되고 0.28ms 후에 값을 받을 수 있습니다.
0.32ms동안 LED를 ON시키고 0.28ms후에 아날로그 값을 읽고,
나머지 0.32-0.28=0.04ms후에는 적외선 LED를 OFF시켜야 합니다.
1ms=1000us이기 때문에 소스코드에서는
정확한 딜레이를 위해 us로 코드를 작성하겠습니다.
(준비물: 아두이노 우노, 점퍼선, GP2Y1010AU0F 미세 먼지 센서, 220uF 캐패시터, 150Ω 저항, 브레드보드)
소스 코드 중에
-delayMicrosecond() 함수는 마이크로 초(us)로 딜레이를 주기위해 사용하는 함수입니다.
기존의 delay()함수는 밀리 초(ms)로 딜레이를 주기 때문에 해당 함수를 사용합니다.
-delayMicrosecond() 함수는 마이크로 초(us)로 딜레이를 주기위해 사용하는 함수입니다.
기존의 delay()함수는 밀리 초(ms)로 딜레이를 주기 때문에 해당 함수를 사용합니다.
-#define no_dust 0.35로 세팅 한 값은, 미세먼지의 초기 값입니다.
미세먼지 센서마다 초기값이 다르므로, 공기청정기 위나, 먼지가 가라앉아
먼지가 없는 환경에서 먼지값이 0이 나와야합니다.
여러번 측정하여 평균적인 초기값을 찾아서 세팅해주면 됩니다.
-get_dust_density() 함수는 미세먼지를 전압(V)값으로 측정한 값을
미세먼지 농도(us)값으로 바꾸는 함수입니다.
데이터 시트를 보면 1m^3의 공간에 0.1mg의 먼지당 0.5V가 증가합니다.
0.1mg=100ug단위를 1ug로 바꾸기 위해서 0.5V를 0.005V로 바꿔줍니다.
추가적으로 온습도 센서와 RGB LED모듈, LED 등을 사용해서
사진과 같이 제작 할 수도 있습니다.
(준비물: 아두이노 우노, 점퍼선, GP2Y1010AU0F 미세 먼지 센서, 220uF 캐패시터,
150Ω 저항, 브레드 보드, DHT 11 온습도 센서, RGB LED 모듈)
150Ω 저항, 브레드 보드, DHT 11 온습도 센서, RGB LED 모듈)
위에 있는 부품들로 제작해본 미세 먼지+온습도 측정기입니다.
미세 먼지 센서에 캐패시터와 저항이 세트로 포함되어 있긴하지만,
캐패시터와 저항을 브레드 보드에 연결하기 귀찮으시다면,
(위 제품은 케이블 포함 제품입니다.)
캐패시터와 저항이 포함된 어댑터 보드를 사용하여 좀 더 편하게
제작하실 수 있습니다.
위에 사용된 모든 제품은 디바이스마트에서 구매하실 수 있습니다.
GP2Y1010AU0F 미세 먼지 센서-https://www.devicemart.co.kr/goods/view?no=1327422
미세 먼지 센서 어댑터-https://www.devicemart.co.kr/goods/view?no=1078216
DHT11 온습도 센서모듈-https://www.devicemart.co.kr/goods/view?no=1358495
미니 브레드보드 170핀-https://www.devicemart.co.kr/goods/view?no=1329504
감사합니다.
6 댓글
미세먼지 + 온도 습도 측정기 코드 알 수 있을까요??
답글삭제코드는 따로 저장해두지 않아서 제공을 바로 해드리기 어렵습니다
삭제혹시 윗분 처럼 미세먼지 + 온소습도측정 코드 주실수있나요 주셨다면 제발 말씀해주시면 감사합니다.
삭제안녕하세요. 코드 제공은 따로 해드리지는 않습니다. 다만 미세먼지센서 사용 방법, lcd 사용방법에 대한 예시는 각각 블로그에 있으니 합쳐서 사용하시는걸 추천드립니다.
삭제혹시 미세먼지 센서 작동할 때 delayMicrosecond를 이용해 딜레이를 줘야하는 이유가 무엇인가요?
답글삭제센서의 작동 원리 때문에 delayMicrosecond() 함수가 필요합니다.
삭제미세먼지 센서의 경우 적외선을 펄스파를 밀리초보다 더 빠른 마이크로초 단위로 쏘면서 미세먼지를 측정하는 방식이어서 그냥 delay()가 아닌 delayMicrosecond() 함수를 사용합니다