<style>[reveal]{opacity:1 !important;transform:none !important}</style>

Helligkeit messen mit LDR

Fotowiderstand GL5528 am Arduino und ESP32: Teilerwiderstand für den gewünschten Helligkeitsbereich wählen, Lux grob umrechnen und mit Hysterese sauber schalten.

6 Min. LesezeitLDR ArduinoFotowiderstandHelligkeitssensorGL5528

Soll das Licht im Flur angehen, wenn es dämmert? Soll ein Display nachts dunkler werden? Für solche Aufgaben ist der Fotowiderstand, kurz LDR, die einfachste Lösung. Er ändert seinen Widerstand mit dem Licht über drei bis vier Zehnerpotenzen: hell einige hundert Ohm, dunkel über ein Megaohm. Ein Festwiderstand und ein Analogeingang machen daraus einen Helligkeitssensor.

Hier baust du ihn mit dem verbreiteten GL5528 an einem Arduino Uno auf, wählst den Teilerwiderstand passend zum Helligkeitsbereich und schaltest bei Dämmerung eine LED ohne Flackern. Danach folgt der ESP32.

Schaltplan

LDR-Messschaltung: +5 V über den Fotowiderstand LDR1 (GL5528) an den Messpunkt, R1 15 kΩ vom Messpunkt nach Masse, C1 100 nF am Messpunkt, Messpunkt an ADC1 (A1, Pin 24) des ATmega328P, AVCC (Pin 20) an derselben +5-V-Leitung
Der LDR sitzt oben im Teiler: Je heller es ist, desto höher die Spannung an A1.
  • LDR1, GL5528: Fotowiderstand aus Cadmiumsulfid, 10 bis 20 kΩ bei 10 lx, über 1 MΩ im Dunkeln. Am empfindlichsten für grünes Licht um 540 nm, ähnlich dem Auge.
  • R1, 15 kΩ: der Partner im Spannungsteiler. Sein Wert legt fest, in welchem Helligkeitsbereich der Sensor am feinsten auflöst.
  • C1, 100 nF: glättet Störungen und das Flimmern von Lampen.
  • IC1, ATmega328P: misst an A1 (Pin 24) gegen AVCC. Teiler und Referenz hängen an derselben Spannung, die Messung ist damit unabhängig von der genauen Versorgung.

So funktioniert die Schaltung

Licht setzt im Cadmiumsulfid Ladungsträger frei, und je mehr Licht einfällt, desto besser leitet es (Optoelektronik). Der Zusammenhang ist über einen weiten Bereich ein Potenzgesetz:

R(E) = R10 · (E10 lx)−γ

Für den GL5528 liegt R10 zwischen 10 und 20 kΩ, der Exponent γ bei etwa 0,6. Zehnmal mehr Licht teilt den Widerstand also durch 100,6 ≈ 4. Mit dem Mittelwert R10 = 15 kΩ:

BeleuchtungBeispielRLDRUA1 mit R1 = 15 kΩ
1 lxtiefe Dämmerung60 kΩ1,0 V
10 lxStraßenbeleuchtung15 kΩ2,5 V
100 lxtrüber Tag, Flur3,8 kΩ4,0 V
1000 lxheller Tag im Schatten0,95 kΩ4,7 V

Der LDR sitzt oben im Teiler, also steigt die Spannung mit der Helligkeit. Weil der Widerstand über Dekaden läuft, ist die Kennlinie über der Beleuchtungsstärke logarithmisch: Eine Dekade Licht bewegt die Spannung um etwa gleich viel, solange du in der Mitte des Bereichs bleibst.

Dimensionierung

1. R1 wählen. Am feinsten löst der Teiler auf, wo der LDR-Widerstand gleich R1 ist. Für einen Dämmerungsschalter liegt der interessante Bereich um 10 lx; dort hat der LDR im Mittel 15 kΩ, also R1 = 15 kΩ aus der E12-Reihe. Für Tageslicht nimmst du R1 kleiner, für die Nacht größer; nachrechnen kannst du das mit dem Rechner Spannungsteiler.

Spannung an A1 über der Beleuchtungsstärke von 0,1 bis 10 000 lx für R1 = 150 kΩ, 15 kΩ und 1,5 kΩ: Die Kurven sind gleich geformt und um je eine Dekade gegeneinander verschoben; mit 15 kΩ liegen bei 10 lx 2,5 V an
R1 verschiebt den empfindlichen Bereich. Jede Kurve überstreicht gut zwei Dekaden Helligkeit.

2. Empfindlichkeit. An der steilsten Stelle, wo RLDR = R1, ändert sich die Spannung pro Dekade um

ΔU = UCC · γ · ln 104 = 5 V · 0,6 · 2,3034 ≈ 1,73 V

Ein ADC-Schritt von 4,9 mV entspricht dort weniger als 1 % Helligkeitsänderung. Die Auflösung ist also nicht das Problem, die Streuung der Bauteile schon.

3. Streuung. R10 liegt laut Datenblatt irgendwo zwischen 10 und 20 kΩ. Bei gleicher Spannung kann die tatsächliche Helligkeit deshalb um den Faktor 21/0,6 ≈ 3,2 auseinanderliegen. Ein LDR ist ein guter Schwellwertgeber, aber kein Luxmeter. Die Schaltschwelle stellst du nach Gefühl ein oder kalibrierst sie einmal.

4. Belastung. Die größte Leistung im LDR entsteht, wenn er so groß ist wie R1: (2,5 V)2 / 15 kΩ ≈ 0,42 mW. Er verträgt 100 mW.

5. Hysterese. Rund um die Schaltschwelle schwankt der Messwert durch Wolken, Lampenflimmern und Rauschen. Ohne Hysterese flackert der Ausgang. Schalte also zum Beispiel unter 8 lx ein und erst über 12 lx wieder aus. Mehr zur Idee unter Komparator mit Hysterese.

Code

const float R1 = 15000.0, R10 = 15000.0, GAMMA = 0.6;
const int LED = 13;
bool licht = false;

void setup() {
  pinMode(LED, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  int n = analogRead(A1);
  if (n < 1) n = 1;                                   // Division durch null vermeiden
  float r   = R1 * (1024.0 - n) / n;                  // LDR-Widerstand
  float lux = 10.0 * pow(r / R10, -1.0 / GAMMA);      // grobe Schätzung
  if (!licht && lux < 8.0)  licht = true;             // Hysterese: an unter 8 lx,
  if (licht  && lux > 12.0) licht = false;            // aus erst über 12 lx
  digitalWrite(LED, licht);
  Serial.println(lux, 1);
  delay(500);
}

Bauteilliste

BezeichnerWert/TypHinweis
LDR1GL552810–20 kΩ bei 10 lx, γ ≈ 0,6
R115 kΩESP32 an 3,3 V: 8,2 kΩ
C1100 nFdirekt am Pin
IC1ATmega328P (Arduino Uno)A1 = Pin 24

Varianten

ESP32. Sein Wandler misst nur bis etwa 2,45 V zuverlässig und nicht gegen die Versorgung. Mit dem LDR an 3,3 V und R1 = 8,2 kΩ ergeben 1 lx 0,40 V, 10 lx 1,17 V und 100 lx 2,26 V – der Dämmerungsbereich passt ins gute Fenster. Lies mit analogReadMilliVolts(). Die Eigenheiten des Wandlers stehen unter Spannung messen mit dem ADC.

Ohne Mikrocontroller. Derselbe Teiler an einem Komparator oder Transistor schaltet ein Relais direkt: Dämmerungsschalter.

Echte Luxwerte. Für Messungen nimmst du einen digitalen Lichtsensor wie den BH1750 oder VEML7700 am I²C-Bus. Er ist kalibriert, an das Auge angepasst und liefert Lux direkt (I²C-Bus richtig beschalten).

Schnelle Lichtsignale. Ein LDR braucht 20 bis 30 ms für eine Änderung und erinnert sich eine Weile an die vorige Helligkeit. Für Lichtschranken und Datenübertragung sind Fotodiode oder Fototransistor die richtige Wahl.

Typische Fehler

  • Wert steigt bei Dunkelheit: LDR und R1 sind vertauscht. Entweder umstecken oder die Formel im Programm anpassen.
  • Ausgang flackert in der Dämmerung: keine Hysterese, oder die eingeschaltete Lampe beleuchtet den eigenen Sensor. Sensor abschirmen und Hysterese einbauen.
  • Sensor reagiert kaum: R1 passt nicht zum Helligkeitsbereich, die Spannung klebt nahe 0 oder 5 V. R1 an den LDR-Widerstand im interessanten Bereich anpassen.
  • Zwei Geräte schalten verschieden: Streuung der LDRs. Schwelle für jedes Gerät einmal abgleichen.

Selbsttest

Welchen Widerstand hat ein GL5528 mit R10 = 15 kΩ bei 100 lx?

15 kΩ / 100,6 ≈ 3,8 kΩ.

Warum steigt die Spannung an A1 mit der Helligkeit?

Der LDR sitzt oben im Teiler; wird er kleiner, liegt mehr Spannung an R1.

Welchen R1 nimmst du, um um 1000 lx am feinsten aufzulösen?

Etwa den LDR-Widerstand bei 1000 lx, also rund 1 kΩ.

Warum taugt ein LDR nicht als Luxmeter?

Sein Widerstand bei gleicher Helligkeit streut von Exemplar zu Exemplar um den Faktor zwei, er ist träge und hat ein Gedächtnis für vorige Helligkeit.

Warum braucht ein Dämmerungsschalter eine Hysterese?

Rund um die Schwelle schwankt der Messwert; ohne Abstand zwischen Ein- und Ausschaltschwelle flackert der Ausgang.