Zonne intentie meten met BH1750
24 berichten
• Pagina 1 van 3 • 1, 2, 3
Zonne intentie meten met BH1750
Voor mijn zonnepaneelproject (zie elders) wil ik graag meten wat de zon aan vermogen (Lumen) levert per vierkante meter (Watt/m^2)
Alles gaat goed behalve.....die Lumen weergeven.
Telkens strandt de aangegeven waarde bij ongeveer 20.000 Lumen op de LCD.
Ik krijg dan een min teken voor de waarde te staan en de waarde geeft dan dus ook weer lager aan.
Kan iemand mij vertellen waar ik overheen kijk ?
Tweede vraag, ik heb gehoord dat de BH1750 niet in direct zonlicht geplaatst mag worden, maar waarom kan ik dan wel tot minimaal 100.000 LUX meten volgens de sheet ?
Alvast bedankt, Rob
Alles gaat goed behalve.....die Lumen weergeven.
Telkens strandt de aangegeven waarde bij ongeveer 20.000 Lumen op de LCD.
Ik krijg dan een min teken voor de waarde te staan en de waarde geeft dan dus ook weer lager aan.
Kan iemand mij vertellen waar ik overheen kijk ?
Tweede vraag, ik heb gehoord dat de BH1750 niet in direct zonlicht geplaatst mag worden, maar waarom kan ik dan wel tot minimaal 100.000 LUX meten volgens de sheet ?
Alvast bedankt, Rob
- Code: Alles selecteren
/*Solarpanel Lightmeter*/
#include <LiquidCrystal_I2C.h>
#include <BH1750.h>
#include <Wire.h>; //BH1750 IIC Mode
LiquidCrystal_I2C lcd(0x27,16,2); // ADDRESS LCD BLUE
int BH1750_Device = 0x23; // I2C address for BH1750
unsigned int Lux, Scaled_FtCd, Wattsm2;
float FtCd; // FEET CANDEL
void setup() {
Wire.begin();
Serial.begin(9600);
lcd.setBacklight (HIGH);
lcd.begin (16,2);
Wire.beginTransmission(BH1750_Device);
Wire.write(0x10); // Set resolution to 1 Lux
// Wire.write(0x11); // Set resolution to 2 Lux
// Wire.write(0x13); // Set resolution to 4 Lux
Wire.endTransmission();
delay(200);
lcd.clear();
}
void loop() {
int i;
Lux = BH1750_Read();
FtCd = Lux/10.764;
Wattsm2 = Lux/93; // 93 Lumen = 1 Watt/m^2 ?
/*debug*/
Serial.println();
Serial.print(Lux,DEC);
Serial.println("[lx]");
Serial.print(FtCd,2);
Serial.println("[FC]");
Serial.print(Wattsm2,4);
Serial.println("[Watt/m^2]");
delay(1000);
lcd.setCursor (0,0);
lcd.print ("W/m^2:");
lcd.setCursor (11,0);
char temp2[40]; // enough space for 5 numbers
snprintf(temp2,7,"%5d",Wattsm2); // %5d = 5 digits, right aligned
lcd.print (temp2);
lcd.setCursor (0,1);
lcd.print ("Lumen:"); // 130.000 max lux sunpower
lcd.setCursor (10,1);
char temp1[40]; // enough space for 7 numbers
snprintf(temp1,7,"%6d",Lux); // %5d = 5 digits, right aligned
lcd.print (temp1);
}
unsigned int BH1750_Read() {
unsigned int i=0;
Wire.requestFrom(BH1750_Device, 2);
while(Wire.available()) //
{
i <<=8;
i|= Wire.read();
}
return i/1.3; // Convert to Lux
}
Advertisement
Re: Zonne intentie meten met BH1750
In de functie "BH1750_Read()" haal je twee byte op en die combineer je in een 16-bits variabele 'i'.
Dat is een unsigned integer, tot zover gaat het goed.
Ik raad je aan om vanaf dat punt de rest met 'float' te doen, en zelfs zodat "BH1750_Read()" een float terug geeft.
cpp code
Daarna alle berekeningen met 'float' doen.
Hij kan zelfs tot 120.000 lux.
Maar hij hoort nu eenmaal niet in direct zonlicht.
De datasheet zegt: "BH1750FVI is an digital Ambient Light Sensor IC for I²C bus interface". Hij meet het omgevingslicht, niet de zon-intensiteit.
Ik heb je sketch niet uitgeprobeerd.
Dat is een unsigned integer, tot zover gaat het goed.
Ik raad je aan om vanaf dat punt de rest met 'float' te doen, en zelfs zodat "BH1750_Read()" een float terug geeft.
cpp code
float BH1750_Read() {
unsigned int i=0;
Wire.requestFrom(BH1750_Device, 2);
while(Wire.available()) //
{
i <<=8;
i|= Wire.read();
}
float lux = float( i) / 1.3; // Convert to Lux, default 1.2 correction factor
return( lux);
}
Daarna alle berekeningen met 'float' doen.
Hij kan zelfs tot 120.000 lux.
Maar hij hoort nu eenmaal niet in direct zonlicht.
De datasheet zegt: "BH1750FVI is an digital Ambient Light Sensor IC for I²C bus interface". Hij meet het omgevingslicht, niet de zon-intensiteit.
Ik heb je sketch niet uitgeprobeerd.
Re: Zonne intentie meten met BH1750
Ik kan een stukje "melkglas" voor de sensor te zetten, maar dat houdt in dat ik weer een verzwakking van de Lux krijg.
Op internet kan ik eigenlijk niets vinden hoe je zonlicht kan meten, uitzondering een LDR, of welke filter ik moet gebruiken.
Op internet kan ik eigenlijk niets vinden hoe je zonlicht kan meten, uitzondering een LDR, of welke filter ik moet gebruiken.
Re: Zonne intentie meten met BH1750
Een LDR kan ook niet in zonlicht. Als de LDR een beetje te warm wordt, dan is hij definitief beschadigd.
Er zijn "filters" of een halve bol ("dome") die het daglicht met 50% of 90% tegenhouden.
Dan is het nog steeds oppassen dat de sensor niet te warm wordt.
Sommigen gebruiken een fotografisch filter. Die hebben een nauwkeurige verzwakking en zijn voor het hele daglicht-spectrum.
Er zijn "filters" of een halve bol ("dome") die het daglicht met 50% of 90% tegenhouden.
Dan is het nog steeds oppassen dat de sensor niet te warm wordt.
Sommigen gebruiken een fotografisch filter. Die hebben een nauwkeurige verzwakking en zijn voor het hele daglicht-spectrum.
Re: Zonne intentie meten met BH1750
Met die fotografische filters is het probleem (meestal) dat ze voor een bepaald spectrum geschikt zijn (UV-IR-enz).
Ik denk dat ik even naar Action loop en daar een goedkope PIR-sensor haal van 2 euro en daar de dome vanaf sloop.
Spec [1] geeft een piek bij 600nm, dus de filter moet deze dus niet blokkeren.
Ik zie ook dat de meting redelijk constant is tussen de -20 en + 80° C
Het zelfde is inderdaad bij mijn solarvolger, de LDR's pakken teveel licht waardoor het paneel behoorlijk nerveus werd.
Ik heb er een (melkkleur) plastic bakje overheen gezet en nu is het OK, hoewel de reactietijd nog wel wat langer kan dan 10 sec.
Het heeft geen enkele zijn om iedere 10 sec het paneel te stellen, daar kan makkelijk een (0,5) uur overheen gaan, zo snel draait de zon niet.
[1]
http://rohmfs.rohm.com/en/products/data ... 1fvc-e.pdf
Ik denk dat ik even naar Action loop en daar een goedkope PIR-sensor haal van 2 euro en daar de dome vanaf sloop.
Spec [1] geeft een piek bij 600nm, dus de filter moet deze dus niet blokkeren.
Ik zie ook dat de meting redelijk constant is tussen de -20 en + 80° C
Het zelfde is inderdaad bij mijn solarvolger, de LDR's pakken teveel licht waardoor het paneel behoorlijk nerveus werd.
Ik heb er een (melkkleur) plastic bakje overheen gezet en nu is het OK, hoewel de reactietijd nog wel wat langer kan dan 10 sec.
Het heeft geen enkele zijn om iedere 10 sec het paneel te stellen, daar kan makkelijk een (0,5) uur overheen gaan, zo snel draait de zon niet.
[1]
http://rohmfs.rohm.com/en/products/data ... 1fvc-e.pdf
Re: Zonne intentie meten met BH1750
Ik zit nog met het volgende probleem....de LUX-waarde op de LCD.
Serial geeft hij goed weer:
11:57:52.425 -> 54612[lx]
Maar op de LCD krijg ik dit te zien als ik boven de 30.000 LUX kom.
Het lijkt dan als of er terug geteld gaat worden want bij meer licht gaat de waarde ook omlaag.
Serial geeft hij goed weer:
11:57:52.425 -> 54612[lx]
- Code: Alles selecteren
/*Solarpanel Lightmeter*/
#include <LiquidCrystal_I2C.h>
#include <BH1750.h>
#include <Wire.h>; //BH1750 IIC Mode
LiquidCrystal_I2C lcd(0x27,16,2); // ADDRESS LCD BLUE
int BH1750_Device = 0x23; // I2C address for light sensor
unsigned int Lux, Scaled_FtCd, Wattsm2;
float FtCd; // FEET CANDEL
void setup() {
Wire.begin();
Serial.begin(9600);
lcd.setBacklight (HIGH);
lcd.begin (16,2);
Wire.beginTransmission(BH1750_Device);
Wire.write(0x10); // Set resolution to 1 Lux
// Wire.write(0x11); // Set resolution to 2 Lux
// Wire.write(0x13); // Set resolution to 4 Lux
Wire.endTransmission();
delay(200);
lcd.clear();
}
void loop() {
int i;
Lux = BH1750_Read();
FtCd = Lux/10.764;
Wattsm2 = Lux/683; // 683 Lux = 1 Watt/m^2
/*debug*/
Serial.println();
Serial.print(Lux,DEC);
Serial.println("[lx]");
Serial.print(FtCd,2);
Serial.println("[FC]");
Serial.print(Wattsm2,4);
Serial.println("[Watt/m^2]");
delay(1000);
lcd.setCursor (0,0);
lcd.print ( "LUX :" );
lcd.setCursor (10,0);
char temp1[20]; // enough room for 9 numbers
snprintf(temp1,7,"%6d",Lux); // %6d = 6 digits, right aligned
lcd.print (temp1);
lcd.setCursor (0,1);
lcd.print ( "W/m^2:" );
lcd.setCursor (11,1);
char temp2[20]; // enough room for 5 numbers
snprintf(temp2,7,"%5d",Wattsm2); // %6d = 5 digits, right aligned
lcd.print (temp2);
}
float BH1750_Read() {
unsigned int i=0;
Wire.requestFrom(BH1750_Device, 2);
while(Wire.available()) //
{
i <<=8;
i|= Wire.read();
}
float lux = float( i) / 1.2; // Convert to Lux, default 1.2 correction factor
return( lux);
}
Maar op de LCD krijg ik dit te zien als ik boven de 30.000 LUX kom.
Het lijkt dan als of er terug geteld gaat worden want bij meer licht gaat de waarde ook omlaag.
- Bijlagen
-
- P1050482.JPG (58.75 KiB) 7065 keer bekeken
Re: Zonne intentie meten met BH1750
Gevonden !
%6d gewijzigd in %6u
- Code: Alles selecteren
lcd.setCursor (0,0);
lcd.print ( "LUX :" );
lcd.setCursor (10,0);
char temp1[40]; // enough space value
snprintf(temp1,7,"%6u",Lux); // %6d = 6 digits, right aligned
lcd.print (temp1);
%6d gewijzigd in %6u
Re: Zonne intentie meten met BH1750
We zijn er nog niet want ik weet nog niet wat de dome gaat doen......er zal dan een herberekening gemaakt moeten worden.
Ik ben er ook nog steeds niet goed achter hoeveel LUX 1 Watt/m^2 is, er zijn verschillende uitleggen met name het spectrum.
Tussen 500 en 700 nm zit een wereld van verschil en dan lees je dit weer
/start/
http://bccp.lbl.gov/Academy/workshop08/ ... re_Law.pdf
Converting Lux to W/m2
• There is no simple conversion….it depends on
the wavelength or color of the light.
• However, for the SUN, there is an approximate
conversion of 0.0079 W/m2 per Lux.
• Example: We read 75,000 Lux on our light
sensor. We can convert that reading to W/m2.
75,000 x 0.0079 = 590 W/m2
/end/
Ik begin langzaam maar zeker door de bomen het bos niet meer te zien
Kwam deze tegen bij Banggood.
https://nl.banggood.com/BH1750-BH1750FV ... rehouse=CN
Ik ben er ook nog steeds niet goed achter hoeveel LUX 1 Watt/m^2 is, er zijn verschillende uitleggen met name het spectrum.
Tussen 500 en 700 nm zit een wereld van verschil en dan lees je dit weer
/start/
http://bccp.lbl.gov/Academy/workshop08/ ... re_Law.pdf
Converting Lux to W/m2
• There is no simple conversion….it depends on
the wavelength or color of the light.
• However, for the SUN, there is an approximate
conversion of 0.0079 W/m2 per Lux.
• Example: We read 75,000 Lux on our light
sensor. We can convert that reading to W/m2.
75,000 x 0.0079 = 590 W/m2
/end/
Ik begin langzaam maar zeker door de bomen het bos niet meer te zien
Kwam deze tegen bij Banggood.
https://nl.banggood.com/BH1750-BH1750FV ... rehouse=CN
Re: Zonne intentie meten met BH1750
Wat ik er van begrijp is inderdaad voor de zon de 0.0079 W/m2 per Lux een grove maar werkbare benadering.
Dat is voor de zon. Onze ogen zien een ander spectrum en een zonnecel vangt weer een ander deel op.
Stel dat de sensor zegt: 75.000 lux, dan is dat inderdaad ongeveer 590 Watt/m².
Stel dat je de lux als float hebt, dan:
Zet in je sketch een verklaring voor het getal "0.0079", het liefst met een link naar een goede bron.
Het dopje op een PIR sensor laat infrarood door.
Dat dopje van Banggood is ook maar vaag.
Een grijsfilter voor een fototoestel is nauwkeurig voor zichtbaar licht. Misschien vind je zoiets op een rommelmarkt, maar nieuw zijn ze niet duur. Bijvoorbeeld een ND4 or ND8 grijsfilter. Daar zijn ook van die halve bolletjes van, maar dat kan ik nu even niet vinden.
Dat is voor de zon. Onze ogen zien een ander spectrum en een zonnecel vangt weer een ander deel op.
Stel dat de sensor zegt: 75.000 lux, dan is dat inderdaad ongeveer 590 Watt/m².
Stel dat je de lux als float hebt, dan:
- Code: Alles selecteren
float wattPerSquareMeter = lux * 0.0079; // 0.0079 is approximate value for sunlight
Zet in je sketch een verklaring voor het getal "0.0079", het liefst met een link naar een goede bron.
Het dopje op een PIR sensor laat infrarood door.
Dat dopje van Banggood is ook maar vaag.
Een grijsfilter voor een fototoestel is nauwkeurig voor zichtbaar licht. Misschien vind je zoiets op een rommelmarkt, maar nieuw zijn ze niet duur. Bijvoorbeeld een ND4 or ND8 grijsfilter. Daar zijn ook van die halve bolletjes van, maar dat kan ik nu even niet vinden.
24 berichten
• Pagina 1 van 3 • 1, 2, 3
Terug naar Gezamenlijke projecten
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 3 gasten