BH1750 lichtintensiteit sensor (GY-302)

Deze lichtintensiteit sensor BH1750 (GY-302) heeft een groot bereik en kan bijv. gebruikt worden om de backlight van een LCD scherm bij te stellen aan de hand van het licht dat aanwezig is.
Deze module heeft een standaard bereik van 1 – 65535 lx.

Enkele voorbeelden van lichtsterkte:

Nacht: 0.001–0.02
Nacht met maanlicht: 0.02–0.3
Bewolkt binnen huis: 5–50
Bewolkt buiten huis: 50–500
Zonnig binnen huis: 100–1000

bh1750 gy302 licht module bovenkantEigenschappen (ENG)

  • I2C bus Interface
  • Spectral responsibility is approximately human eye response
  • Illuminance to Digital Converter
  • Wide range and High resolution. ( 1 – 65535 lx )
  • Low Current by power down function
  • 50Hz / 60Hz Light noise reject-function
  • Light source dependency is little. ( ex. Incandescent Lamp. Fluorescent Lamp. Halogen Lamp. White LED. Sun Light)
  • It is possible to select 2 type of I2C slave-address
  • Adjustable measurement result for influence of optical window
  • Small measurement variation (+/- 20%)
  • The influence of infrared is very small
  • Operating Voltage: 3.3V-5V
  • Dimensions: 0.85*0.63*0.13″(21*16*3.3mm)

Pinout

BH1750 (bovenkant en van links naar rechts): Pin  Functie
1  ADDR
2  SDA (Serial Data)
3  SDL (Serial Clock)
4  GND
5  VCC (3.3v – 5v)

Er zijn ook andere varianten zoals de BH1750FVI, deze heeft wel een andere pinout!

bh1750fvi licht module bovenkant

Wat heb je nodig?

1) BH1750 (Gy-302) bibliotheek

Aansluiten op de Arduino

Sluit de lichtsensor module aan volgens onderstaand overzicht:

Arduino BH1750 schema

BH1750 pin (bovenkant en van links naar rechts): Arduino pin:
2 – SDA (Serial Data) A4
3 – SDL (Serial Clock) A5
4 – GND GND
5 – VCC (3.3v – 5v) +5v

Script

Sluit de lichtsensor module aan zoals hierboven aangegeven.

Arduino code
#include
#include

BH1750 lichtMeter;

void setup(){
Serial.begin(9600);
lichtMeter.begin();
}

void loop() {
uint16_t lux = lichtMeter.readLightLevel();
Serial.print("Licht: ");
Serial.print(lux);
Serial.println(" lux");
delay(500);
}

Het resultaat

arduino bh1750 console output

 

 

 

 

 

 

 

 

 

 

 


Een ander script zonder gebruik van een “extra” bibliotheek:

#include //BH1750 IIC Mode
#include

int BH1750_Device = 0x23; // I2C address for light sensor
unsigned int Lux, Scaled_FtCd;
float FtCd, Wattsm2;

void setup() {
Wire.begin();
Serial.begin(9600);

Wire.beginTransmission(BH1750_Device);
Wire.write(0x10); // Set resolution to 1 Lux
Wire.endTransmission();

delay(200);
}

void loop() {
int i;
Lux = BH1750_Read();
FtCd = Lux/10.764;
Wattsm2 = Lux/683.0;
Serial.print(Lux,DEC);
Serial.println("[lx]");
Serial.print(FtCd,2);
Serial.println("[FC]");
Serial.print(Wattsm2,4);
Serial.println("[Watts/m^2]");
delay(1000);
}

unsigned int BH1750_Read() {
unsigned int i=0;
Wire.beginTransmission(BH1750_Device);
Wire.requestFrom(BH1750_Device, 2);
while(Wire.available()) //
{
i <<=8;
i|= Wire.read();
}
Wire.endTransmission();
return i/1.2; // Convert to Lux
}

Resultaat:

670[lx]
62.24[FC]
0.9810[Watts/m^2]
650[lx]
60.39[FC]
0.9517[Watts/m^2]
548[lx]
50.91[FC]
0.8023[Watts/m^2]
16[lx]
1.49[FC]
0.0234[Watts/m^2]
14[lx]
1.30[FC]
0.0205[Watts/m^2]
19[lx]
1.77[FC]
0.0278[Watts/m^2]

Bron: http://www.sunrom.com/p/digital-light-sensor-bh1750fvi