กลับไปหน้ารวมไฟล์
arduino-uv-index-meter.md

การวิเคราะห์รังสี: เครื่องวัด UV Index ด้วย Arduino

เซ็นเซอร์แสงทั่วไป (LDR) ตรวจจับแสงที่มองเห็นได้; แต่มันไม่สามารถตรวจจับรังสีแสงอาทิตย์ที่เป็นอันตรายได้เลย เครื่องวัด UV Index ด้วย Arduino ใช้ photodiodes ชนิด gallium nitride ที่มีความพิเศษ เพื่อวัดรังสี UV-A และ UV-B ที่มองไม่เห็นและอันตรายที่แผ่ออกมาจากดวงอาทิตย์ โดยจะคำนวณและแสดงค่าดัชนีความปลอดภัยตามมาตรฐานขององค์การอนามัยโลก (WHO) ลงบนหน้าจอที่มีคอนทราสต์สูงโดยตรง

stock_counter_lcd_setup_1772706693516.png

หลักการทำงานทางฟิสิกส์ของ ML8511 UV Sensor

GY-ML8511 UV Sensor Module เป็นหนึ่งในอุปกรณ์ analog ที่มีความไวสูงที่สุดที่ใช้ในงาน Arduino engineering

  1. เซ็นเซอร์จะส่งค่า analog voltage ที่เกี่ยวข้องโดยตรงกับความเข้มสูงของคลื่นแสง 280-390nm ที่มองไม่เห็น (มุ่งเป้าไปที่รังสีที่เป็นสาเหตุของการถูกแดดเผาที่อันตรายที่สุด)
  2. การคำนวณไม่ใช่แบบ 0-1023 เซ็นเซอร์มีกราฟความสัมพันธ์ที่ระบุไว้ใน datasheet อย่างชัดเจน: 1 Volt = 0 UV Index 2.8 Volts = 15 UV Index (แสงแดดในทะเลทรายที่ร้อนจัดจนผิวไหม้พุพอง)
  3. ข้อผิดพลาดในการคาลิเบรต 3.3V: ความผิดพลาดที่ใหญ่ที่สุดที่โปรแกรมเมอร์ทำคือการอ้างอิงจากสาย 5V เริ่มต้นของ Uno ML8511 ต้องการไฟเลี้ยง 3.3V อย่างแม่นยำ คุณต้องต่อสาย jumper จากขา 3.3V ของ Arduino ตรงไปยังขา A1 ที่เป็นขา analog-reference เพื่อใช้เป็นจุดอ้างอิงในการคำนวณ!

เอาต์พุต Floating Point และฟังก์ชัน Map

เนื่องจากข้อมูล analog เป็นเชิงเส้น แต่ถูกบีบอัดให้อยู่ในสเกล voltage ที่เล็กมาก (1.0V ถึง 2.8V) การคำนวณด้วยเลขจำนวนเต็มแบบมาตรฐานจึงใช้ไม่ได้ผล

  • คุณต้องสร้างฟังก์ชัน mapfloat() แบบกำหนดเอง! ฟังก์ชัน map() มาตรฐานของ C++ ส่งกลับค่าเป็นจำนวนเต็มเท่านั้น (เช่น Index: 4)
  • เราต้องการการวิเคราะห์ที่แม่นยำในรูปแบบทศนิยม (Index: 4.8! คำเตือน: ผิวหนังจะถูกทำลายภายใน 12 นาที!)
float mapfloat(float x, float in_min, float in_max, float out_min, float out_max) {
  return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
  • โค้ดจะคำนวณค่าทศนิยมและแสดงคำเตือนโดยตรงบน I2C OLED SSD1306 Display

ฮาร์ดแวร์สำหรับการตรวจจับรังสีจากดวงอาทิตย์

  • Arduino Uno/Nano
  • ML8511 หรือ VEML6070 I2C UV Light Sensor Module
  • 0.96" I2C OLED หรือ 16x2 LCD Display
  • กล่องหุ้มที่พิมพ์ด้วย 3D และใช้พลังงานจากแบตเตอรี่ ช่วยให้คุณสามารถพกพาเซ็นเซอร์ไปยังชายหาด หรือหันไปทางดวงอาทิตย์ได้โดยตรง! (คำเตือน: ควรใช้กระจกควอตซ์ใสแบบเฉพาะครอบรูของกล่องหุ้มไว้ พลาสติกอะคริลิกหรือกระจกหน้าต่างทั่วไปจะกั้นรังสี UV ได้ถึง 90% และจะทำให้เซ็นเซอร์ไม่สามารถตรวจจับอะไรได้เลย!)

ข้อมูล Frontmatter ดั้งเดิม

title: "Arduino UV index meter"
description: "Solar analytics! Build an advanced photodiode analysis tool by converting raw nano-ampere currents from specialized Ultraviolet ML8511 sensors into an absolute, WHO-standardized UV Index rating."
category: "Sensors & Environment"
difficulty: "Advanced"