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
Eigenschappen (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!
Wat heb je nodig?
1) BH1750 (Gy-302) bibliotheek
Aansluiten op de Arduino
Sluit de lichtsensor module aan volgens onderstaand overzicht:
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
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