Du bist hier: Sensor > Fotowiderstand

Arduino Sensor Fotowiderstand

1. Vorbereiten

Der Fotowiderstand ↗ ist ein simpler Sensor für Arduino. Steure mit dem Lichtwiderstand/Fotowiderstand/LDR viele Dinge mit Werten zwischen 0% und 100%. Die Abkürzung LDR steht für "Light Dependent Resistor" und erklärt auch gleich seine Funktion:

  • Er erzeugt einen Widerstand zwischen 0Ω (=viel Licht) und 10kΩ (=kein Licht)
  • Er liefert Werte zwischen 100% (=viel Licht) und 0% (=kein Licht)
  • Er kann direkt in einen der vier Sensor Eingänge eingeschraubt werden (- und △). Die Polung ist egal.

2. Anschliessen

Fotowiderstand an Arduino anschliessen

3. Programmieren

3.1. Eine LED direkt mit einem Fotowiderstand steuern

Sketch 1 - Fotowiderstand schaltet LED direkt

Sketch 1: Lichtwiderstand steuert logischen Zustand einer LED

Sketch 2 - Fotowiderstand schaltet LED umgekehrt

Sketch 2: Lichtwiderstand steuert logischen Zustand einer LED umgekehrt

Sketch 3 - Fotowiderstand reguliert LED direkt

Sketch 3: Lichtwiderstand steuert %-Wert einer LED

Sketch 4 - Fotowiderstand reguliert LED umgekehrt

Sketch 4: Lichtwiderstand steuert %-Wert einer LED umgekehrt

Sketch 5 - Wirkbereich von Fotowiderstand mit Neopixel visualisieren

Sketch 5: Lichtwiderstand Position eines Pixels

4. Aktivität - einen Arduino Roboter mit Fotowiderstand steuern

4.1. Roboter, der in Richtung des Lichts fährt

Baue ein Roboter Auto, lasse jedoch die Fühler weg.

  • Positioniere zwei Fotowiderstände an der Front des Fahrzeugs. Sie sollen nach vorne- und 45° übers Kreuz nach innen schauen.
  • Die genaue Positionierung siehst du am Anfang des folgenden Videos:

Die Programmierung ist simpel:

Sketch 6: Roboter Motorengeschwindigkeit mit Fotowiderstand steuern
Sketch 7: Empfindlichkeit eines Fotowiderstands erhöhen (für Zoom klicken)

4.2. Roboter, der einer weissen Linie folgt (Line follower)

Baue ein Roboter Auto, lasse jedoch die Fühler weg.

  • Positioniere einen Fotowiderstand an der Front des Fahrzeugs, so dass er die Helligkeit des Bodens messen kann.
  • Positioniere dicht neben dem Sensor eine LED, welche den Boden aufhellt.
  • Tip: Um ein perfekt gleichmässig diffuses Licht zu erhalten, schleife die LED an ihrem Kopf so ab, dass eine Fläche entsteht.
  • Tip: Konstruiere die Halterung so, dass du die Höhe über Boden leicht justieren kannst
  • Die genaue Konstruktion siehst du in diesem Video:

Das folgende Grundprogramm entspricht dem Projekt "Line Follower" in Variante 5a. Es tut folgendes:

  • Drehe Motor 1 so langsam, wie die gemessene Helligkeit beträgt (= je heller desto langsamer)
  • Drehe Motor 2 so schnell,   wie die gemessene Helligkeit beträgt (= je heller desto schneller)

Etwas anders ausgedrückt:

  • Wenn hell, dann fahre Richtung Boden
  • Wenn dunkel, dann fahre Richtung Linie
  • Tip: für eine bessere Darstellung im Editor: Rechtsklick auf Blöcke > vertikale Darstellung
Sketch 8: Arduino Line follower mit einem Fotowiderstand. steuern. Grundprogramm.

Einschränkung: Dieses Sketch funktioniert nur "in einer perfekten Welt" wo der Helligkeitsunterschied zwischen Linie und Boden 100% beträgt. Meistens ist dies jedoch nicht der Fall und die Werte die der Lichtwiderstand misst (z.B. Boden = 30%, Linie = 45%) müssen skaliert werden.

Eine mögliche Lösung wird in Variante 5b (Arbeitsblatt zweite Seite) geliefert. Die Helligkeitswerte von Boden und Linie werden zuerst ausgemessen, gespeichert und dann auf 0% bis 100% skaliert.

Referenzwert LinieReferenzwert FlächeDiese Linefollower Programmierung ist optimiert für Linien mit wenig Kontrast (z.B. Klebband)Es ist egal, ob die Linie heller als der Boden ist oder umgekehrtIm Gegenzug müssen vor jedem Programmstart die Helligkeit des Bodens und der Linie gemessen werden (=kalibrieren)LED1HIGHLED2HIGHLED3LOW1000LED1LOW1000Referenzwert LinieSENSOR3LED1HIGH1000LED2LOW1000Referenzwert FlächeSENSOR3LED2HIGHKalibrierung hell-dunkel-Kontrast:Bei Signal: Sensor über Linie haltenBei Signal: Sensor über Boden haltenVon innen (grün) nach aussen (orange) verstehen!Ändere: skaliert die effektiven Sensorwerte mit den Referenzwerten auf 0 bis 80 resp. 80 bis 0 (je nach Rad - experimentiere mit diesen Werten)Begrenze: stellt sicher, dass keine höheren Werte als 100- oder tieferen als 0 entstehenMOTOR1SENSOR3Referenzwert LinieReferenzwert Fläche0800100MOTOR2SENSOR3Referenzwert LinieReferenzwert Fläche8000100