BH1750 LUX-Sensor verständlich erklärt: Lichtstärke messen leicht gemacht!
Das ist ein vollwertiger Auszug aus dem Buch Elektronik und Heimautomation DIY.
Mit dem BH1750 16-bit Sensor können wir die Lichtmenge in Lux messen und die Daten über die I²C Schnittstelle auslesen. Der Sensor bietet zwei Modi für die Luxmessung. Kontinuierlich und einmalig. Im kontinuierlichen Modus misst der Sensor die Lichtintensität ohne Unterbrechung. Im Modus „einmalig“ werden einzelne Messungen durchgeführt, dann schaltet sich der Sensor ab.
Wir können die Empfindlichkeit für beide Modi festlegen und können damit von 0,5 Lux bis zu 4 Lux Genauigkeit messen. Eingesetzt kann der Sensor werden zur Unterscheidung, ob es Tag oder Nacht ist, zur Helligkeitssteuerung von Displays oder zur Steuerung der Beleuchtung in der Heimautomation.
Technische Details
- Messbereich: 1 – 65535 lux
- Spannungsbereich: 3,3 – 5 Volt
- I²C Adressen: 0x23 und 0x5C
- Genauigkeit: ± 20 %
- Stromverbrauch: 0.12 mA
- Arbeitstemperatur: -40 °C bis +85 °C

Messmethoden vom Sensor
Die Messmethoden unterscheiden sich in der Geschwindigkeit und Genauigkeit. Der Hersteller empfiehlt für die meisten Anwendungen die kontinuierliche Messung mit hoher Auflösung.
| Modus | Genauigkeit | Messzeit | Dauermessung |
|---|---|---|---|
| Niedrige Auflösung | 4 Lux | 16 ms | BH1750_CONTINUOUS_LOW_RES_MODE |
| Hohe Auflösung | 1 Lux | 120 ms | BH1750_CONTINUOUS_HIGH_RES_MODE |
| Hohe Auflösung 2 | 0,5 Lux | 120 ms | BH1750_CONTINUOUS_HIGH_RES_MODE_2 |
| Einmalige Messung | BH1750_ONE_TIME_RES_MODES | ||
| Niedrige Auflösung | 4 Lux | 16 ms | BH1750_ONE_TIME_LOW_RES_MODE |
| Hohe Auflösung | 1 Lux | 120 ms | BH1750_ONE_TIME_HIGH_RES_MODE |
| Hohe Auflösung 2 | 0,5 Lux | 120 ms | BH1750_ONE_TIME_HIGH_RES_MODE_2 |
I²C Adresse ändern
Über den ADDR Pin lässt sich die Adresse wählen. Liegt die Spannung am Pin unter 0,7 Volt (GND oder offen), ist die Adresse 0x23. Bei einer Spannung über 0,7 Volt wechselt die Adresse auf 0x5C.
Der Sketch
#include <BH1750.h>
#include <Wire.h>
BH1750 lightMeter;
void setup(){
Serial.begin(115200);
Wire.begin(); // Wire.begin(SDA, SCL)
lightMeter.begin(BH1750::CONTINUOUS_HIGH_RES_MODE, 0x23, &Wire);
}
void loop() {
float lux = lightMeter.readLightLevel();
Serial.print(" Lichtmenge: ");
Serial.print(lux);
Serial.println(" lx");
delay(1000);
}Der Sketch auf GitHub
Hier findet ihr das benötigte Material!
Wenn dir dieser Beitrag geholfen hat, freue ich mich über einen kleinen Beitrag für die Kaffeekasse.

