티스토리 뷰
개요
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)
두 수치를 동시에 계측했다면 지름이 작은 먼지의 개수는 계측 값에서 큰 먼지의 개수를 빼는 것이 맞을 수 있겠다. 큰 먼지 개수까지 중복해서 카운트 한 셈이기 때문이다.
→ (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 부분에 관련 자료들 링크가 많다. 하나씩 챙겨보자
- GitHub: https://github.com/mauricecyril/pidustsensor - 코드: https://github.com/mauricecyril/pidustsensor/blob/master/pidustsensor.py |
센서관련 정보
- 링크: http://wiki.seeedstudio.com/Grove-Dust_Sensor/
LPO Time 과 개수의 상관관계
아래 그래프 함수를 통해 LPO Time → Count 로 계산이 가능해진다.
|
||
센서 튜닝 및 테스트
- 팬을 추가하거나, Pin5, Ground 에 10 킬로옴 저항을 달아주어서 성능을 높일 수 있다. (여기선 적용하지 않음) |
ug/m3 계산하기
결국 최종적으로 센서 측정을 통해 얻고자 하는 값은
1) 세제곱미터의 공간속에 미세먼지가 몇 마이크로그램이 들어 있는지 이다. (ug/m3)
2) 그리고 그 값으로 미세먼지가 어느 정도 수준인지, 좋은 지 나쁜지를 평가하는 것이다. (aqi)
관련 논문 링크: https://www.fijnstofmeter.com/documentatie/Data-Validation.pdf
가정
|
ug/m3 계산하기
계산 과정을 요약하면 다음과 같다.
- 약간의 값의 오차는 무시하자 - 왜냐면 애초에 논문의 값들이 어느 정도의 가정이고, 센서자체의 한계도 있으니
실제 코딩에서는
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
'embedded' 카테고리의 다른 글
미세먼지 토이 프로젝트 - ug/m3 와 aqi 계산 (0) | 2019.04.15 |
---|---|
미세먼지 토이 프로젝트 - 기본 테스트 (0) | 2019.04.11 |
미세먼지 토이 프로젝트 - 센서 선정 및 라즈베리파이 연결 (1) | 2019.04.03 |
Edit and Execute code in Raspberry Pi from Visual Studio Code in my computer (0) | 2019.03.20 |
Embedded Project - Modularizing (0) | 2019.01.18 |
- Total
- Today
- Yesterday
- github
- folklore
- 영화
- 클린 애자일
- 노션
- strange
- go
- Bug
- intellij
- 오블완
- 체호프
- Gin
- API
- 엉클 밥
- 제이펍
- golang
- 독서
- ChatGPT
- solid
- 티스토리챌린지
- clean agile
- 2023
- bun
- websocket
- 잡학툰
- 독서후기
- notion
- 인텔리제이
- OpenAI
- agile
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |