Umgebungslichtsensoren mit dem Arduino
Helligkeitswerte zum Vergleich
427.000 lx
5 mW Laserpointer, grün (532 nm), 3 mm Strahldurchmesser
105.000 lx
5 mW Laserpointer, rot (635 nm), 3 mm Strahldurchmesser
100.000 lx
Heller Sonnentag
20.000 lx
Bedeckter Sommertag
10.000 lx
Operationssaal
3.500 lx
Bedeckter Wintertag
500 lx
Büro-/Zimmerbeleuchtung
10 lx
Straßenbeleuchtung
1 lx
Kerze (~1m entfernt)
0,25 lx
Vollmondnacht
0,001 lx
Sternklarer Nachthimmel (Neumond)
Verwendete Bauteile
Umgebungslichtsensor BH1750
Merkmale
Lichtintensität: 1 lx bis 65535 lx
durch spezielle Programmierung von 0,11 lx bis zu 100000 lx
Betriebsspannung: 3,3V - 6V
I²C-Schnittstelle mit 2 alternativen Adressen
Stromverbrauch: 7mA
Anschlüsse
Pin
Pin-Funktion
Arduino Uno
VCC
Stromversorgung
3,3V
GND
Masse/Ground
GND
SCL (CL)
I²C clock
A5
SDA (DA)
I²C data
A4
ADD (ADDR)
Dieser Pin wird zum Setzen der I²C-Adresse verwendet. Standardmäßig (d.h. wenn an ADD weniger
als 0,7V anliegen) ist die Adresse des Sensors 0x23
. Sobald eine höhere Spannung als
0,7V anliegen (z.B. wenn der Pin mit VCC verbunden wird) hört das Modul auf die Adresse
0x5C
kein Anschluss bzw. GND oder VCC
Aufbau
Abb.: Aufbau der Schaltung
Sketch
Der folgende Sketch ist aus dem Beispiel der Library
AS_BH1750 mit leichten Änderungen:
#include <Wire.h>
#include <AS_BH1750.h>
AS_BH1750 sensor;
void setup()
{
Serial.begin(9600);
// for normal sensor resolution (1 lx resolution, 0-65535 lx, 120ms, no PowerDown)
// use: sensor.begin(RESOLUTION_NORMAL, false);
if(!sensor.begin()) {
Serial.println("BH1750 init failed!");
while(true);
}
}
void loop()
{
float lux = sensor.readLightLevel();
Serial.println("Light level: " + String(lux) + " lx");
delay(1000);
}
Abb.: Ausgabe auf der seriellen Konsole
Umgebungslichtsensor TEMT6000
Merkmale
Spannungsversorgung: 3,3V bis 5,5V
Betriebstemperatur: -40°C bis +100°C
Empfindlichkeit: 440nm bis 800nm
Höchste Empfindlichkeit: 570nm
Sensitivitätswinkel: +/-60 Grad
Stromverbrauch IPCE : 50µA
Damit entspricht die Empfindlichkeit des Sensors ungefähr dem, was das menschliche Auge wahrnimmt,
also Wellenlängen zwischen ca. 380nm und 780nm.
Anschlüsse
Pin
Funktion
Arduino
S (auch: OUT)
Analoger Signal-Ausgang
Analoger Eingang, z.B. A5
G (auch GND)
Masse/0V
GND
V (auch: VCC)
Versorgungsspannung (max. 5,5V)
5V
void setup()
{
Serial.begin(9600);
pinMode(A5, INPUT);
}
void loop()
{
int rawValue = analogRead(A5); //Read light level
Serial.println("Reading: " + String(rawValue));
double volts = rawValue * 5.0 / 1024.0;
long microvolts = volts * 1000000.0;
Serial.println("Voltage: " + String(volts) + " V (" + String(microvolts) + " µV)");
long microamps = microvolts / 10000;
Serial.println("Current: " + String(microamps) + " µA");
long lux = microamps * 2;
Serial.println("Illuminance: " + String(lux) + " lx\n");
delay(2000);
}
Abb.: Ausgabe auf der seriellen Konsole
zurück