Messung der Beleuchtungsstärke mit einem BH1750FVI-Breakoutboard (GY-30) und einem Arduino Uno

In dieser kleinen Schaltung verwenden wir einen BH1750FVI-Sensor auf einem Breakoutboard und einen Arduino zur Messung der Beleuchtungsstärke in Lux. Neben der Anwendung zur Messung der Ausleuchtung von Objekten in der Fotografie, kann man allerdings – mit einer Erweiterung dieser Schaltung – auch leicht eine automatisch angepasste Beleuchtung von Räumen oder Grundstücken vornehmen. Ebenso ist es möglich eine automatische Helligkeitsregelung von Displays zu realisieren.

Messung der Beleuchtungsstärke mit einem BH1750FVI-Breakoutboard (GY-30) und einem Arduino - blog.simtronyx.de.jpg

Messung der Beleuchtungsstärke mit einem BH1750FVI-Breakoutboard (GY-30) und einem Arduino

Wir verkabeln unseren Arduino – in diesem Fall ein Arduino Uno – mit dem (GY-30) Breakoutboard wie folgend:

Schaltplangröße:

ATMega328P1afbgchdie1j55101015152020252530afbgchdie30j
Für weitere Informationen (z.B. Pinbelegungen von Bauteilen oder genaue Kabelverbindungen)
mit der Maus über Elemente fahren (oder im Touch-Modus: Elemente antippen)...

Arduino
(Nano, Uno, Pro Mini)
Arduino
(Mega, Mega 2560)
GY-30
BH1750FVI Breakoutboard
5V oder 3.3V (VCC) 5V oder 3.3V (VCC) VCC
GND GND GND
A4 (SDA) D20 (SDA) SDA
A5 (SCL) D21 (SCL) SCL

Programmcode (Sketch):

Da eine zusätzliche Bibliothek nicht notwendig ist, brauchen wir nur noch folgenden Sketch auf den Arduino laden:

#include <Wire.h>

int BH1750_address = 0x23; // i2c Addresse
byte buff[2];

void setup(){
  
  Wire.begin();
  BH1750_Init(BH1750_address);
  
  delay(200);
  Serial.begin(9600);
  Serial.println("Starte Beleuchtungsstaerkemessung - blog.simtronyx.de");
}

void loop(){
  
  float valf=0;

  if(BH1750_Read(BH1750_address)==2){
    
    valf=((buff[0]<<8)|buff[1])/1.2;
    
    if(valf<0)Serial.print("> 65535");
    else Serial.print((int)valf,DEC); 
    
    Serial.println(" lx"); 
  }
  delay(1000);
}

void BH1750_Init(int address){
  
  Wire.beginTransmission(address);
  Wire.write(0x10); // 1 [lux] aufloesung
  Wire.endTransmission();
}

byte BH1750_Read(int address){
  
  byte i=0;
  Wire.beginTransmission(address);
  Wire.requestFrom(address, 2);
  while(Wire.available()){
    buff[i] = Wire.read(); 
    i++;
  }
  Wire.endTransmission();  
  return i;
}

Download Source Code

und starten dann noch den seriellen Monitor (mit 9600 Baud Geschwindigkeit):

Beleuchtungsstaerkemessung-BH1750FVI-Arduino-Uno-Serial-Monitor-blog.simtronyx.de

Beleuchtungsstärkemessung mit einem BH1750FVI und einem Arduino Uno – Serieller-Monitor

Nun sollten eine ähnliche Ausgabe wie im obigen Bild erhalten. Im vorliegenden Fall wurde bei sonnigem Wetter der Sensor zwischen Schatten (kurzzeitig mit von der Hand in geringem Abstand abgedeckt) und direkter Sonne hin- und herbewegt. Hierbei ist zu erkennen, dass bei direkter Sonneneinstrahlung sehr schnell der Wertebereich des Sensors überschritten wird.

Eine Übersicht mit Beispielen gängiger Beleuchtungsstärken zum Vergleich ist hier in der Wikipedia zu finden.

Bauteile (Bezugsquellen):

eBay: Arduino
BH1750FVI
Breadboard
Breadboard Kabel
Amazon: Arduino
BH1750FVI
Breadboard
Breadboard Kabel

Gut?

FacebooktwitterredditpinterestlinkedinmailFacebooktwitterredditpinterestlinkedinmail