21/09/2021

การใช้งาน BH1750 (Light sensor module)

BH1750FVI Technical data

  • Power supply : 3-5VDC
  • Current consumption (อัตราการกินไฟ) : ~ 0.14 mA 
  • Communication : I2C (SDA/SCL)
  • I2C addressed :
    • 0x23 (default)
    • 0x5C เปลี่ยนมาใช้ address นี้ด้วยการต่อ pin ADDR หรือ ADD ให้เป็น High ( pulled down) ดังนั้นไม่ต้องต่อ GND
  • Measure range : 0-65,535 (16 bit)
  • Maximum resolution : 0.11 – 7.4 lx ขึ้นอยู่กับ setting
  • Size : 13.9mm X 18.5mm

Resolution modes

BH1750 อยู่ 2 mode หลักคือ

  • Continuously (ต่อเนื่อง) (default)
    • Continuously H-Resolution Mode
    • Continuously H-Resolution Mode2
    • Continuously L-Resolution Mode
  • One Time (ไม่ต่อเนื่อง) – จะทำงานครั้งเดียวแล้วเข้าสู่สถานะ power off จึงประหยัดไฟ
    • One Time H-Resolution Mode
    • One Time H-Resolution Mode2
    • One Time L-Resolution Mode

H-Resolution เป็น default
L-Resolution ใช้เมื่อต้องการวัดค่าถี่ๆ (หรือความถี่สูง)
H-Resolution Mode 2 ใช้เมื่อวัดความสว่างในที่มืดๆ หน่อย

Resolution vs maximum light intensity
ความละเอียดในการวัดค่า vs ความเข้มข้นของแสง

ข้อมูลจาก datasheet ระบุว่าค่าที่อ่านได้จาก sensor เป็น raw data หากต้องการแปลงเป็นหน่วย Lux ต้องนำค่าที่ได้มาหารด้วย 1.2 ทั้ง H-Resolution and L-Resolution mode ดังนั้นค่าสูงสุด 65,535 ที่ได้จาก sensor เมื่อแปลงเป็น Lux จะได้ค่า 54,612

ส้วน H-Resolution Mode2 ต้องนำค่าที่ได้มาหาร 2 อีกที ทำให้ค่าสูงสุดจะเหลือ 27,306

หากใช้ Library เราไม่ต้องคำนวณเอง เพราะจะได้ค่า lux มาใช้งานได้เลย

BH1750 One Time H-Resolution Mode2 & One Time H-Resolution Mode
ข้อมูล 7 วันย้อนหลัง 6 วันแรกตั้งค่าเป็น One Time H-Resolution Mode2 ค่า Lux ที่วัดได้จะไปตันที่ 27,306 ตอนแรกคิดว่าเขียน code ผิด พอกลับมาเช็คพบว่าเขียนดักไว้ที่ 65,535 อยู่แล้วจึงมาหาข้อมูลเพิ่มเติมว่าทำไมค่าสูงสุดจึงอั้นอยู่แถวๆ 25,000 วันที่ 7 จึงเปลี่ยนการตั้งค่ามาเป็น One Time H-Resolution Mode ทำให้ได้ max อยู่ที่ 54,612 อย่างที่ควรเป็น