2020. 11. 25. 09:34ㆍDIY/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)
크게 회로도랄것도 없다. 아래의 이미지대로 구성하면된다.
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();
}
}
코드는 샘플코드에서 대략적으로 가독서잉 좋게 수정하였습니다.
출력된 데이터는 이렇게 출력이 되었습니다.
센서가 개방되어있고 공기흐름에 영향을 받다보니 사람이 움직이거나 하면 데이터가 크게 변동되는 경향이 보였습니다.
좀더 정밀한 데이터를 구하려면 센서부의 조금 작업을 해줘야 할것 같습니다.
주워온 센서치고는 정상적으로 작동하는듯 하여 기분은 좋아요~~^^
센서주의 사항(Precautions)
- 예열이 필요한 센서입니다. 강제적으로 동작하면 센서의 고장이 발생 할 수 있습니다.
- 센서를 세워두지 않으면 데이터값이 정상적으로 출력되지 않습니다.
- 나머지는 기억이 잘나지 않습니다. 찾아보시고 알려주세요~~^^
참고사이트(Reference site)
www.howmuchsnow.com/arduino/airquality/grovedust/grovedust.ino
github.com/mozilla-sensorweb/sensorweb-wiki/wiki/Shinyei-PPD42-Particle-Sensor
www.mouser.com/datasheet/2/744/Seeed_101020012-838657.pdf
wiki.seeedstudio.com/Grove-Dust_Sensor/
forum.fritzing.org/t/grove-dust-sensor-ppd42/2939
글을 준비하는 많은 시간과 노력을 헛되게 하지 말아주세요
무료로 배포하셔도 됩니다.
단 jamy광고 링크를 함께 배포 부탁드리며
공감과 광고 클릭은 블로그 운영에 많은 도움이 됩니다.
너무 사적으로 이용하지 말아주세요.
https://smartstore.naver.com/jamy
'DIY > Arduino' 카테고리의 다른 글
[시험관속 아두이노]Fritzing 원하는 저항값 어떻게 하나? (0) | 2019.10.28 |
---|---|
[시험관속 아두이노]Fritzing 부품추가하기 (2) | 2019.04.03 |
[시험관속 아두이노]아두이노 라이브러리 추가, 헤더파일 추가 (0) | 2019.04.03 |
[시험관속 아두이노]dht11 센서이용하여 온습도 측정 (0) | 2019.04.02 |
[시험관속의 아두이노] 아두이노 led제어하기 (0) | 2019.04.01 |