티스토리 뷰

개요

 

1) Shinyei PPD42NS 센서에서 미세먼지를 측정하는 방식을 이해하고

2) 측정값을 미세먼지 측정단위로 계산, 변환하는 정리해 본다.

 

Shinyei PPD42NS 센서의 동작 원리

 

1) 센서는 미세먼지가 지나가면 GPIO 를 High Low 만들어준다.

- LPO time: Low Pulse Occupancy time

 

2) 센서는 개의 GPIO Output 있는데 하나는 PM10, 다른 하나는 PM25 이다.

- 각각 미세먼지의 지름이 1.0 micron, 2.5 micron 이라는 말이다. (micron = um = 1/1000 mm)

수치를 동시에 계측했다면 지름이 작은 먼지의 개수는 계측 값에서 먼지의 개수를 빼는 것이 맞을 있겠다.

먼지 개수까지 중복해서 카운트 셈이기 때문이다.

 

- 그런데 아직도 P1 output PM 10.0 인지 PM 1.0 인지 헷갈리고, 아무리 구글링해도 정확한 답을 찾기가 쉽지는 않다.

일단 여기 구현에서는 PM10.0 것으로 이해하고 구현할 예정이다.

  (2019-04-08) 업체 문의 결과 PM 1.0 이라 한다. 

 

* 아래는 GitHub 코드 관련 부분 코멘트이다. 여기서는 P1 output PM1.0 측정한 것으로 이해했다.

- GitHub code: https://github.com/mauricecyril/pidustsensor/blob/master/pidustsensor.py

 

3) 먼지가 지나갈때에 GPIO 통해 Low pluse 발생되는데

결국은 단위 시간 (여기서는 30) 동안 Low Pulse 발생한 시간 비율 측정하여

그것을 수식을 통해 미세 먼지 개수 환산하는 작업을 해주게 된다.

 

파이썬 GitHub 분석

 

파이썬으로 구현한 GitHub. 다양한 정보들이 정리되어 있다. 

Readme 부분에 관련 자료들 링크가 많다. 하나씩 챙겨보자

 

 

센서관련 정보

 

- 링크: http://wiki.seeedstudio.com/Grove-Dust_Sensor/

 


 

LPO Time 개수의 상관관계

 

아래 그래프 함수를 통해 LPO Time Count 계산이 가능해진다.

 

ratio = float(self._low_ticks)/float(interval)*100.0  // 전체 측정 시간 중에서 Pulse Low 비율 계산

conc = 1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62;  // 비율을 0.01 ft3 개수로 변환한

센서 튜닝 테스트

 

- 링크: https://indiaairquality.com/2014/12/14/measuring-the-pickle-jr-a-modified-ppd42-with-an-attached-fan/

- 팬을 추가하거나, Pin5, Ground 10 킬로옴 저항을 달아주어서 성능을 높일 있다. (여기선 적용하지 않음)

 

ug/m3 계산하기

 

결국 최종적으로 센서 측정을 통해 얻고자 하는 값은

1) 세제곱미터의 공간속에 미세먼지가 마이크로그램이 들어 있는지 이다. (ug/m3)

2) 그리고 값으로 미세먼지가 어느 정도 수준인지, 좋은 나쁜지를 평가하는 것이다. (aqi)

 

관련 논문 링크: https://www.fijnstofmeter.com/documentatie/Data-Validation.pdf

 


 

가정

1) 모든 먼지 입자들은 구형이며 밀도는 1.65E12 ug/m3 이다.

2) PM2.5 먼지입자의 반지름은 0.44 um 이다.

3) PM10 먼지입자의 반지름은 2.60 um 이다.

4) 0.01 tf3  개수를 m3 개수로 환산하려면 3531.5 곱해주면 된다.

ug/m3 계산하기

 

계산 과정을 요약하면 다음과 같다.

1) 센서를 통해 LPO Time 알아내고, 이것을 공식에 넣어서 0.01 ft3  먼지 개수 계산한다.

2) PM2.5, PM10 먼지의 반지름 가정하여 부피 계산하고, 밀도 가정한다.

3) 부피와 밀도를 통해 먼지 알갱이의 질량 계산한다.

4) 먼지 개수 알갱이 질량을 곱해주면, 단위 부피당 먼지의 질량을 계산할 있다.

여기에 3531.5 곱해서 부피의 단위를 ug/(0.01)ft3 ug/m3 바꿔준다.

 

- 약간의 값의 오차는 무시하자

- 왜냐면 애초에 논문의 값들이 어느 정도의 가정이고, 센서자체의 한계도 있으니

 

PM10

PM2.5

1) 반지름 (r10) = 2.60 um = 2.6E-6 m

2) 입자 하나의 부피 (vol10) = (4/3) * pi  *  r103

3) 입자 하나의 질량 = 밀도 (ug/m3) * 부피( m3)

= density * vol10 (ug)

1) 반지름 (r25) = 0.44 um = 0.44E-6 m

2) 입자 하나의 부피 (vol25) = (4/3) * pi  *  r253

3) 입자 하나의 질량 = 밀도 (ug/m3) * 부피( m3)

= density * vol25 (ug)

 

실제 코딩에서는

 

1) PM10 PM2.5   0.01 ft3  먼지 개수 계산한 다음

2) 아래의 값을 곱해주면 m3 측정한 먼지의 무게 (ug) 알아낼 있다.

* 습도와 우천에 대한 보정도 필요하지만 여기서는 생략한다.

 

 

Air Quality Index (AQI)

 

AQI ug/m3 기준으로 미세먼지 상황이 좋은지 나쁜지를 평가하는 것이다.

AQI (Air Quality Index) 계산하는 공식은 아래와 같다. 단지 계산한 ugm3 값이 AQI 어느 인덱스에 들어가는지를  계산하는 뿐이다.

- Wiki: https://www.wikiwand.com/en/Air_quality_index

 


 



반응형
반응형
잡학툰 뱃지
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함