Overview

The BH1750FVI is a digital ambient light sensor IC with an I2C bus interface. It converts light intensity directly into a 16-bit digital number corresponding to illuminance in lux (lx) without requiring complex mathematical calibration.

The sensor features a spectral response closely matching the human eye response (peak sensitivity at ~560 nm). It includes built-in signal conditioning, an ADC, and automatic rejection of 50 Hz / 60 Hz light flicker.

Quick reference

Operating voltage2.4 V – 3.6 V (5 V module breakouts include a regulator)
Measurement range1 lx – 65,535 lx
InterfaceI2C (Standard & Fast mode, up to 400 kHz)
I2C address0x23 (ADDR pin LOW or floating) / 0x5C (ADDR pin HIGH)
Current draw120 µA operating / 0.01 µA power-down
Peak spectral response560 nm (human eye visual curve)

Pinout

Standard 5-Pin Breakout Module

PinNameTypeDescription
1VCCPowerSupply voltage (3.3 V or 5 V for regulated breakouts)
2GNDPowerGround (0 V)
3SCLDigital InputI2C Clock Line
4SDADigital I/OI2C Data Line
5ADDRDigital InputI2C Address Select (LOW: 0x23, HIGH: 0x5C)

Specifications

ParameterSymbolMinTypMaxUnitConditions
Supply VoltageVCC2.43.03.6VIC rating
Power-down CurrentIPD0.011.0µANo illumination
Operating CurrentIIN120190µAHigh-resolution mode
Measurement Time (H-Mode)tH120180ms1 lx resolution
Measurement Time (L-Mode)tL1624ms4 lx resolution

Communication & instructions

BH1750 is controlled by sending single opcode bytes over I2C.

OpcodeInstruction NameDescription
0x00Power DownPower down IC, reducing current to < 1 µA.
0x01Power OnPower up IC, waiting for measurement command.
0x07ResetReset Data register value (only valid in Power On mode).
0x10Continuously H-Resolution ModeStart continuous measurement at 1 lx resolution (120 ms).
0x11Continuously H-Resolution Mode 2Start continuous measurement at 0.5 lx resolution (120 ms).
0x13Continuously L-Resolution ModeStart continuous measurement at 4 lx resolution (16 ms).
0x20One Time H-Resolution ModePerform one measurement at 1 lx, then automatically Power Down.
0x21One Time H-Resolution Mode 2Perform one measurement at 0.5 lx, then automatically Power Down.
0x23One Time L-Resolution ModePerform one measurement at 4 lx, then automatically Power Down.

Lux calculation formula

To calculate illuminance in lux from the 2-byte I2C read result:

Illuminance (lx)=Raw Data (16-bit)1.2\text{Illuminance (lx)} = \frac{\text{Raw Data (16-bit)}}{1.2}

Wiring

BH1750 ModuleMicrocontroller (Arduino / ESP32)
VCC3.3 V (or 5 V if module has 662K regulator)
GNDGND
SCLI2C SCL
SDAI2C SDA
ADDRGND (0x23) or VCC (0x5C)

Common mistakes

  • Reading data before measurement conversion finishes: In High-Resolution mode, a measurement takes up to 180 ms. Requesting I2C data before this delay completes yields stale or zero values.
  • Floating ADDR pin: Leaving ADDR disconnected may cause erratic switching between I2C address 0x23 and 0x5C. Tie ADDR explicitly to GND or VCC.

Notes

  • Measurement Time Register: The default measurement time factor can be adjusted (via opcodes 0x400x7F) to calibrate for optical window attenuation (e.g. dark glass covers).

Assets & downloads