미세먼지 센서 shinyei ppd42(Fine dust sensor shinyei ppd42)

2020. 11. 25. 09:34DIY/Arduino

초~!!!미세먼지 센서 shinyei ppd42(Fine dust sensor shinyei ppd42)

길거리에 버려진 공기청정기를 뜯어네어 그안에 있는 미세먼지 센서를 주워와 실험을 시작하였습니다.

실험을 한내용을 확이하는 내용이며 쓰레기를 주워서 동작하는 것이라 원래 기존의 Data sheet의 정보와 차이가 발생 할 수도 있습니다. 그리고 동작이 하지 않는 경우도 발생 할 수 있습니다. 

그런점 양해를 부탁드립니다.

 

Koreans tend to leave unused home appliances on the street. Among the forged home appliances, an air purifier was discovered, and the experiment was started by bringing only the fine dust sensor from the air purifier.

The imported sensor is Fine dust sensor shinyei ppd42.

 

실험을 진행했다는 것에 이이를 두려고 합니다.

모든실험은 성공 할 수 있는게 아니니까요~~^^

미세먼지와 초미세먼지 공기질등을 확인할 수 있는 센서입니다.

 

I don't know if it works. But I'm trying to give it a try.

 

DATA Sheet


이것저것 조사할사항이 많았지만 아두이노만으로 동작하기에 크게 문제는 없어보였다.

그리고 재공되는 기본소스또한 있어서 간단하게 테스트를 할 수 있었다.

위 이미지의 핀 번호가 중요하다. 1번 GND 3번vcc 4번 데이터 핀으로 구성되어있었다.

고드 주석을 보고 알게되었다 하하. 

기판이 작아서 핀번호의 순서를 확인하기 조금 어려웠던 점도 있다.

 

회로도(Circuit diagram)


크게 회로도랄것도 없다. 아래의 이미지대로 구성하면된다.

 

Fine dust sensor shinyei ppd42 Circuit diagram

ARDUINO CODE


/*
 Interface to Shinyei Model PPD42NS Particle Sensor
 Program by Christopher Nafis 
 Written April 2012
 
 http://www.seeedstudio.com/depot/grove-dust-sensor-p-1050.html
 http://www.sca-shinyei.com/pdf/PPD42NS.pdf
 
 JST Pin 1 (Black Wire)  => Arduino GND
 JST Pin 3 (Red wire)    => Arduino 5VDC
 JST Pin 4 (Yellow wire) => Arduino Digital Pin 8
 */

int pin = 8;
unsigned long duration;
unsigned long starttime;
unsigned long sampletime_ms = 30000;
unsigned long lowpulseoccupancy = 0;
float ratio = 0;
float concentration = 0;
float ugm3 = 0;

void setup() {
  Serial.begin(9600);
  pinMode(8,INPUT);
  starttime = millis();
}

void loop() {
  duration = pulseIn(pin, LOW);
  lowpulseoccupancy = lowpulseoccupancy+duration;

  if ((millis()-starttime) > sampletime_ms)
  {
    ratio = lowpulseoccupancy/(sampletime_ms*10.0);  // Integer percentage 0=>100
    concentration = 1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62; // using spec sheet curve
    ugm3 = concentration*100/13000;
    Serial.print("lowpulseoccupancy = ");
    Serial.println(lowpulseoccupancy);
    Serial.print("ratio = ");
    Serial.println(ratio);
    Serial.print("concentration = ");
    Serial.print(concentration);
    Serial.println(" pcs/0.01cf");
    /* pcs/0.01cf 단위를 사용하였는데, pcs 는, 입자의 크기를 뜻하고, cf는 세제곱피트를 의미합니다. 
     즉 0.01cf 공간을 차지하고 있는 먼지 입자의 양을 의미한다 보시면 될듯합니다.*/
    Serial.print(ugm3);
    Serial.println(" ug/m3 PM1.0");
    Serial.println(" ========================= ");
    lowpulseoccupancy = 0;
    starttime = millis();
  }
}

코드는 샘플코드에서 대략적으로 가독서잉 좋게 수정하였습니다.

 

Tthe shinyei ppd42 Serial monitor

출력된 데이터는 이렇게 출력이 되었습니다.

센서가 개방되어있고 공기흐름에 영향을 받다보니 사람이 움직이거나 하면 데이터가 크게 변동되는 경향이 보였습니다.

좀더 정밀한 데이터를 구하려면 센서부의 조금 작업을 해줘야 할것 같습니다.

 

주워온 센서치고는 정상적으로 작동하는듯 하여 기분은 좋아요~~^^

 

센서주의 사항(Precautions)


- 예열이 필요한 센서입니다. 강제적으로 동작하면 센서의 고장이 발생 할 수 있습니다.

- 센서를 세워두지 않으면 데이터값이 정상적으로 출력되지 않습니다.

- 나머지는 기억이 잘나지 않습니다. 찾아보시고 알려주세요~~^^

 

 

참고사이트(Reference site)


 

www.howmuchsnow.com/arduino/airquality/grovedust/grovedust.ino

 

github.com/mozilla-sensorweb/sensorweb-wiki/wiki/Shinyei-PPD42-Particle-Sensor

 

mozilla-sensorweb/sensorweb-wiki

Using the github wiki to document various things about the sensorweb project. - mozilla-sensorweb/sensorweb-wiki

github.com

www.mouser.com/datasheet/2/744/Seeed_101020012-838657.pdf

wiki.seeedstudio.com/Grove-Dust_Sensor/

 

Grove - Dust Sensor - Seeed Wiki

edit Grove - Dust Sensor This Dust Sensor gives a good indication of the air quality in an environment by measuring the dust concentration. The Particulate Matter level (PM level) in the air is measured by counting the Low Pulse Occupancy time (LPO time) i

wiki.seeedstudio.com

forum.fritzing.org/t/grove-dust-sensor-ppd42/2939

 

Grove Dust Sensor PPD42

Grove dust sensor: http://wiki.seeed.cc/Grove-Dust_Sensor/ Grove Dust Sensor.fzpz (20.7 KB)

forum.fritzing.org

fflask.tistory.com/49

 

[시험관속 아두이노]Fritzing 부품추가하기

회로도를 그리는 중 회로에 필요한 부품이 없는것을 확인하였다. 그럴때는 추가를 해주면 된다. 이번에는 fritzing에 부품 추가를 해보려고 한다. 순서 Fritzing 실행 - 부품 다운로드 - import부품 이

fflask.tistory.com

 

글을 준비하는 많은 시간과 노력을 헛되게 하지 말아주세요

무료로 배포하셔도 됩니다. 

단 jamy광고 링크를 함께 배포 부탁드리며

공감과 광고 클릭은 블로그 운영에 많은 도움이 됩니다.

너무 사적으로 이용하지 말아주세요.

 

https://smartstore.naver.com/jamy

 

JAMY : 네이버쇼핑 스마트스토어

소소한행복

smartstore.naver.com

 

 

 

 

 

 

반응형