Navthai : ชุมชนผู้ใช้งาน GPS อันดับหนึ่งของไทย

หมวดหมู่ทั่วไป => DIY => ข้อความที่เริ่มโดย: มด [tewbc] ที่ 07 มิถุนายน 2019, 16:34:19



หัวข้อ: PM 2.5 DIY (ครบแล้วนะจ๊ะ)
เริ่มหัวข้อโดย: มด [tewbc] ที่ 07 มิถุนายน 2019, 16:34:19
ผมขอแบ่งออกเป็น 3 ตอนนะ (แก่...เริ่มเขียนยาวๆ ไม่ได้)
ท้าวฟามหลัง:
    เริ่มจาก 2 ปีก่อนปลายปีมีอาการไอเป็นหมาหอบแดด เลยไปหาหมอๆ บอกแค่ว่าแพ้อากาศ ToT ออ..ครับหมอแพ้อากาศนี่ชีวิตเปลี่ยนเลยนะ ก็เลยหาหน้ากากมาใส่ก็เลยดีขึ้น พอปีที่แล้วมาเป็นอีกแต่มีการเตรียมตัวมาดี คือมีหน้ากากกับตัวเช็คฝุ่น ที่ลองซื้อมา 2 ตัวๆ แรกเป็น xiaomi  สีขาวตัวสี่เหลี่ยมเล็กๆ และอีกตัวเป็นยี่ห้อไรก็ไม่รู้ วัดค่าออกมาได้ไม่ตรงกัน บางที X สูงกว่า บางครั้งก็ต่ำกว่าเลยเอามาวิเคราะห์แยกส่วนชิ้นดูพบว่า อะไรก็ตามแต่ที่ใช้หลักการ light scattering มันจะมั่วมากถ้าเจอความชื้นสูงๆ หรือบางที่ทีมี VOC สูง พอเอาทดสอบค่า LOD (Limit of Detection) เลยยิ่งไม่น่าใช้มากขึ้นคือ Relative Error อยู่ราว 3-4 เท่าหากเมื่อมีระดับความเข้มข้นฝุ่นเฉลี่ยน้อยกว่า 30 ไมโครกรัมต่อลบ.เมตร แต่พอสูงเกินกว่า 80ug/cu.meter ขึ้นไปก็อยู่ราวๆ 1.5 - 2 เท่าเมื่อเทียบกับเครื่องวัดฝุ่น MetOne BAM 1020 ดังนั้นผมคิดว่าตัวเลขที่แสดงมานั้นมันเชื่อถือไม่ได้ แต่หากเอาแค่เทรนก็พอไปไหว

:-[ ต่อแระ [1]
เลยเกิดเป็นงานวิจัยผมเองขอทุนคณะได้ตัง มาแค่ 15K ...ToT ตอนนี้ยังไม่เสร็จกำลังประกอบร่างสมบรูณ์ แต่เห็นข้อมูลน่าจะโอเลยเอามาทำเป็นตัวเล็กๆ ให้ได้ลองใช้กันก่อน

เริ่มจากหาเซ้นเซอร์วัดความหนาแน่นฝุ่นดู เลยซื้อมาทั้งหมด 5 ตัวแรกได้แก่
1. PMS5003 ของ Plan Tower
2. PMS7003 ของ Plan Tower
3. SDS021 ของ Nova Fitness
4. HPMA115S0 ของ HoneyWell
5. CP-15-A4-CG ของ Yeetc

ระยะแรก ทดสอบหาตัวที่โอเคก่อน
เครื่องมือที่ใช้
1. ตัวโมดูลหลักผลใช้ Arduino DUE เพราะต้องใช้การทำงานคล้ายกับมัลติเทรดเสมือน ที่สำคัญไม่ต้องหาทางแปลงระดับไฟเลี้ยง I/O 5V ไป 3.3V
2. ตัวเก็บข้อมูลผมเอาง่ายเลยใช้ OpenLog เก็บข้อมูล
3. MetOne BAM 1020 อันนี้ขอเขาเอาไปตั้งใกล้ๆ
4. แผงโซ่ล่า 12V 30W + ตัวอัดถ่าน LiFo4  + LiFo4 x 2
ความถูกต้องของค่าที่วัดได้
   จากนั้นก็ตั้งไว้ตั้งแต่เดือนส.ค. 61 - มีนา 62 มีเข้าไปดูบ้างบางครั้ง จนผลลัพธ์สรุปได้คือ (วัดจากค่า R square ของ Linear resgression ระหว่างเซ็นเซอร์กับ MetOne BAM 1020 [PM2.5] )
1. PMS5003 ของ Plan Tower เทรนการเก็บข้อมูลใกล้เคียงกับ BAM 1020 แต่สูงกว่าราว 350 - 400% ใช้งานได้นานไม่วุ่นวาย แต่เมื่อความชื้นสูงเกิน 80% ข้อมูลโดดไปมาแต่พอรับได้
2. PMS7003 ของ Plan Tower เหมือนกันกับ (1) แต่ก็ยังวัดค่าได้สูงกว่า BAM 1020 ราว 300 - 400% ใช้งานแบบเดียวกับ (1) แต่ดีขึ้นมาหน่อยตรงความชื้นเกิน 85% ถึงเลอะเทอะ
3. SDS021 ของ Nova Fitness อันนี้เจ๋งเหมือนสามารถวัดข้อมูลตรงกันกับ BAM 1020 ถึง 1% จากข้อมูลทั้งหมด 5800 กว่าชุด แต่เทรนช่างน่าเสียดายไม่ค่อยจะเหมือนกับ BAM1020 ซักเท่าไหร และคลาดเคลื่อนที่ความชื้นมากกว่า 70%
4. HPMA115S0 ของ HoneyWell อันนี้สุดติ่งไม่รู้ว่ามันดีจริง หรือผมเขียนไลบราลี่มันผิด ข้อมูลที่ได้สูงกว่าความเป็นจริงเลย 400% แถมต้องตั้งค่า CF ในโมดูลมันใหม่จาก 100 เหลือ 40 สำหรับเทรนที่วัดได้ใกล้เคียงกับ BAM1020 มีค่าสูงกว่า SDS021 แต่น้อยกว่า ตระกูล PMS ที่สำคัญมันแป๊กตั้งแต่วันที่ 6 นับตั้งแต่เริ่มทำงาน
5. CP-15-A4-CG ของ Yeetc อันนี้ยอมรับว่าตัวเอกเลยข้อมูลที่วัดได้มันช่างดีจังได้ค่า R-Square ราว 0.85 แม้จะยังไม่ได้ปรับปแต่งค่าใดๆ อันอื่นๆ อยู่ราว 0.62 - 0.74 แต่ก็มีผลคลาดเคลื่อนเมื่อความชื้นอยู่ระดับ 80% ขึ้นไปเช่นกัน ที่สำคัญมันแพงจังเกือบพัน ตัวอื่นๆ อยู่ราว 400-700 บาท

 *** เซ็นเซอร์ทุกตัววัด PM2.5 ได้จริงแต่ PM10 มันเป็นการประมาณการเท่านั้นนะจ๊ะ ตัวเลข PM10 ไม่สัมพันธ์กับอะไรเลยได้ค่า R-square ราวๆ 0.5 ต้นๆ เอง** ที่สำคัญจะเป็นว่าผมไม่ใช้ของ Sharp หรือ Shinyea เพราะมันใช้อินฟราเร็ดเซ้นเซอร์ซึ่งมีเวฟเร้นราว 800-900nm แต่ที่ผมเอามาใช้จะเป็นเลเซอร์มีเวฟเร้นราว 600-700nm เท่านั้นเพราะต้องการค่ากระเจิงแสงที่มากกว่าจะได้วัดความหนาแน่นกับจำนวนได้ด้วย ***

 =v= สรุปเบื้องต้นเรียงความต้องการใช้งานได้ดังนี้ CP-15-A4-CG > PMS7003 > PMS5003 > SDS021 > HPMA115S0

CP-15-A4-CG
https://thai.alibaba.com/product-detail/yeetc-a4-cg-laser-pm2-5-sensor-module-air-quality-detection-dust-haze-pollen-particle-sensor-60819168111.html
Arduino Library: https://github.com/tewbc/A4-CG อันนี้เขียนเองแต่ยืมเค้าโครงมาจาก PMS

PMS5003
https://thai.alibaba.com/product-detail/G5-laser-pm2-5PM10-sensor-module-60830524720.html?spm=a2700.galleryofferlist.normalList.12.22322a2eBoU3NP
Arduino Library: https://drive.google.com/file/d/1NLSgwYLXt5ifRH2sZ_-J6YffG9yHC-iM/view?usp=sharing อันนี้แก้โค้ดบางส่วนให้แสดงค่าทั้งหมด

ความแม่นยำในการผลิต
    ต่อมาก็ดูเรื่องราคาค่าตัวแระ เพราะต้องใช้ความแม่นยำสูง เลยต้องหาซื้อมาอีก 4 ตัวที่เป็นยี่ห้อเดียวกันและรุ่นเดียวกัน แต่.......งบเท่านี้เอาไรกันมากเลยตัดใจซื้ออันน้อยสุดคือ PMS5003 แล้วเอามาทำ RSD วัดต่อเนื่อง 7 วัน ช่วงปลายมี.ค. 62 ผลคือมีความแตกต่างอยู่ราว 1.5 - 4.8% ซึ่งเทียบกับเกณฑ์ความคลาดเคลื่อนของ EPA 2014 แบบ FEMs ยอมให้เหวี่ยงถึง 10%  =v= ก็ผ่านดิ ของเขาแน่จริง เลยทำให้เมื่อคำนวณสมการปรับค่าออกมาได้แล้วก็ไม่ต้องเกรงใจอะไรมากมาย เอาไปใช้เลย
(https://i.postimg.cc/WDcst0RP/RSD-dev.png) (https://postimg.cc/WDcst0RP)
ในที่นี้เปรียบเทียบ PMS5003 กับ Nova fitness SD021 เท่านั้นนะ

เอาไปเลย สมการปรับค่า เปรียบเทียบกับ BAM1020 กับ Teledyne Beta plus 620
สำหรับคนที่ใช้ PMS5003 / 7003
โมเดลที่ 2 คืออันที่แนะนำให้ใช้ ผมใช้ของ Petters and Kredienweis, 2007 มันง่ายดีใช้ความชื้นสัมพัทธ์อย่างเดียว และให้แทนค่า k น้อยๆ ด้วย 0.29 นะ ค่านี้มาจากค่าเฉลี่ยของความชื้นสัมพัทธ์เฉลี่ยรายปีของภาคกลางที่ระดับคววามสูงไม่เกิน 1.5 เมตรจากผิวดิน
(https://i.postimg.cc/CR8H0pHx/Result-PMS.png) (https://postimg.cc/CR8H0pHx)

อันนี้แสดงความผิดพลาดที่เกิดขึ้นจากการวัดลดลง (รูปขวา) เทียบกับค่าเดิมๆจากเซ็นเซอร์ (รูปซ้าย)
(https://i.postimg.cc/QVMQtTkP/RE-Error.png) (https://postimg.cc/QVMQtTkP)

สำหรับคนที่ใช้ Yeetec A4-CG
ให้ตั้งค่าเสกลที่ 1.5 - 1.6 จะได้ค่าที่ใกล้เคียงกับค่าจริง ข้อแม้คือความชื้นสัมพัทธ์ต้องไม่เกิน 60% หากเกินต้องปรับให้ค่าอยู่ระหว่าง 1.3-1.4 (ในไลบราลี่ที่ผมเขียนมีใช้งานอยู่ setScale(1.5))

ส่วนการต่อใช้งานนั้นใช้ซีเรียลพอร์ตแบบ HW หรือ SW (ถ้าใช้ Softserial ให้ตั้งขาที่เป็น  RX ให้เป็นขา D2 / D3 เพราะต้องใช้ขาที่รองรับการใช้งาน Interrupt) ถ้าเอาแบบผมจะได้แบบนี้
ต.ย. schedmatic
(https://i.postimg.cc/ykcy4zTY/SCH.png) (https://postimg.cc/ykcy4zTY)

ต.ย. อันที่ใช้ในภาคสนามของงานวิจัยผม
(https://i.postimg.cc/Hc87wQZs/IMG-20191221-004841.jpg) (https://postimg.cc/Hc87wQZs)

ต.ย. โค้ดเครื่องต้นแบบใช้ Mega 2560 +SHT21 +PMS5003 +SDCARD +DS1302 คนละตัวกับ schedmatic แต่ใช้จัมพ์ตรงบน Ardunino Mega 2560
https://drive.google.com/file/d/1B0f0fmZRNXOtiLtwuUKQGGhal_Tg3AIt/view?usp=sharing

ปล. ใครใช้ตัวนี้
(https://i.postimg.cc/HrqPgtqb/Mi.jpg) (https://postimg.cc/HrqPgtqb)
ค่ามันจะได้ตามความชื้นแบบนี้ คร่าวๆ นะ เทียบกับ Teledyne Beta plus 620
RH < 40% +/- 5-10 ไมครอน/ลบ.เมตร
RH < 60% +/- 10-15 ไมครอน/ลบ.เมตร
RH < 80% +/- 15-25 ไมครอน/ลบ.เมตร
RH < 100% +/- 25-40 ไมครอน/ลบ.เมตร

ผมมาต่อจนจบแล้วนะ เซ็นเซอร์ผมทดสอบมาครบ 13 เดือนต่อเนื่อง 24ชม. แต่ละอุปกรณ์มีอายุใช้งานต่างกันดังนี้
PMS / Yeetec ยังปกติอยู่
DHT11/12 เน่าทุกตัว 5/5 ในอาทิตย์ที่ 4-5
SHT21-Dis เน่าไป 4/5 ตัว ในอาทิตย์ที่ 35 สังเกตุจาก RH เกิน 100% ไปเยอะและเทียบกับอุปกรณ์บนแลปต่างกันเกิน 50%  ค่าใกล้เคียงกับเครื่องมือวัด +/- 13%
BME280 เน่าไป 2/5 ตัว ในอาทิตย์ที่ 40 ค่าใกล้เคียงกับเครื่องมือวัด +/- 8%
SHT31-Dis เน่าไป 1/5 ตัว ในอาทิตย์ที่ 46 ค่าใกล้เคียงกับเครื่องมือวัด +/- 10%
HDC1080 เพิ่งใช้ไป 5 อาทิตย์ยังโออยู่ (ทดสอบ) ค่าใกล้เคียงกับเครื่องมือวัด +/- 5%
INA-219 5 ตัวยังปกติ

ภาพทดสอบกับ MetOne Aerocet 530
(https://i.postimg.cc/HrB2B1mZ/IMG-20191001-210622.jpg) (https://postimg.cc/HrB2B1mZ)

ภาคต่อกำลังเปลี่ยนไปทำ Thermal image Camera สำหรับแสกนคนผ่านเข้า-ออกคณะ (เผือกร้อน)


หัวข้อ: Re: PM 2.5 DIY (ครบแล้วนะจ๊ะ)
เริ่มหัวข้อโดย: มด [tewbc] ที่ 21 กุมภาพันธ์ 2022, 10:01:34
(https://i.postimg.cc/x8cK7SxX/1645411876369.jpg)
มาอัพความคืบหน้าการพัฒนาอัลกอลิทั่มใหม่ (ยังไม่ได้ตีพิมพ์เหมือนเดิม รอนานโครต)
เห็นมันห่างกันแบบนี้มาได้ 40 กว่าวันแล้ว ระหว่างอุปกรณ์ที่ปรับปรุงใหม่ กับ BAM1022 ของกรมควบคุม ความผิดพลาดเฉลี่ย 24 ชั่วโมงสะสมไม่เกิน +|- 2ug/cu.m
อันใหม่พอสู้ได้ แม้ว่าจะกินไฟมากขึ้นก็ตาม (ฮิตเตอร์ล้วนๆ) กับการประยุกต์ใช้ฟลูเรียทรานฟอร์ม ขนาด 38 Knot บน MCU ใหม่ ESP32 แบบใช้ 2 cores พร้อมกัน  :QvQ: