Leer un fotorresistor con Arduino

FunduinoÚltima actualización el

Helligkeit messen und eine LED bei Dunkelheit schalten

Jetzt wird’s etwas komplizierter. Erst durchatmen und ein neues Getränk holen!

Aufgabe: Eine LED soll leuchten, wenn es dunkel wird – also wenn du den Fotowiderstand abdeckst.

Schaltplan mit Fotowiderstand als Spannungsteiler an A0 und LED an Pin 12 des Arduino UNO
Schaltplan: Fotowiderstand und LED am Arduino UNO

Elige un microcontrolador

Pins, Schaltplan und Sketch in den Arbeitsschritten ändern sich entsprechend deiner Auswahl. Sie bleibt gespeichert.

Spannung über einen Spannungsteiler auslesen

Der Mikrocontroller soll über einen Fotowiderstand auslesen, wie hell es ist. Dazu nutzt du ein einfaches physikalisches Prinzip: Wenn in einem Stromkreis zwei Verbraucher hintereinander angeschlossen sind (Reihenschaltung), dann teilen sie sich die gemeinsam anliegende Spannung.

Ein Beispiel: Zwei gleiche Lampen sind in Reihe geschaltet und es liegt eine Spannung von 6 Volt an. Mit einem Spannungsmessgerät stellst du fest, dass an jeder Lampe nur 3 Volt anliegen. Schließt du zwei ungleiche Lampen an – eine davon mit geringerem Widerstand –, misst du an den beiden Lampen zwei unterschiedliche Spannungen, zum Beispiel 1,5 Volt und 4,5 Volt.

Ein Fotowiderstand ändert seinen Widerstand in Abhängigkeit von der Lichtstärke. Diesen Effekt nutzt du, um anhand der an ihm anliegenden Spannung einen Wert für Helligkeit bzw. Dunkelheit abzulesen. Damit überhaupt eine Spannungsteilung entsteht, schließt du den Fotowiderstand und einen weiteren Widerstand in Reihe an und verbindest sie mit 5 Volt und der Erdung (Ground / GND).

Das Mikrocontroller-Board kann analoge Signale (Spannungen) messen und verarbeiten. Das geschieht über die analogen Eingänge auf dem Board: Der Eingang wandelt den gemessenen Spannungswert in eine Zahl um, mit der du weiterarbeiten kannst. 0 Volt entsprechen dabei der Zahl 0, der höchste Messwert von 5 Volt entspricht der Zahl 1023 (0 bis 1023 sind 1024 Zahlen = 10 Bit). Ein Beispiel: Wird eine Spannung von 2,5 Volt gemessen, liefert der Mikrocontroller den Wert 512.

Der zweite Widerstand im Spannungsteiler sollte einen ähnlichen Wert haben wie der Fotowiderstand – bei einem LDR 10K also rund 10 kOhm. Die 220 Ohm aus der Materialliste gehören als Vorwiderstand vor die LED.

Den Seriellen Monitor nutzen

Der Serielle Monitor ist ein wichtiger Bestandteil der Arduino-Software. Mit diesem Werkzeug lässt du dir am PC Zahlen oder Texte anzeigen, die das Mikrocontroller-Board sendet. Das ist sehr sinnvoll, denn es ist nicht immer ein LCD-Display am Mikrocontroller angeschlossen, auf dem du Werte ablesen könntest.

In diesem Sketch nutzt du den Seriellen Monitor, um dir die Werte anzeigen zu lassen, die vom Fotowiderstand gelesen werden.

Wozu ist das sinnvoll? Nimm an, die LED soll erst bei beginnender Dunkelheit anfangen zu leuchten. Dann braucht der Sketch eine Stelle mit der Funktion: Wenn der Wert des Fotowiderstands den Wert x unterschreitet, soll die LED leuchten. Dazu musst du wissen, wie groß x bei beginnender Dämmerung ist.

Die Lösung: Du lässt dir den ausgelesenen Wert bei der entsprechenden Helligkeit – zum Beispiel in der Dämmerung – im Seriellen Monitor anzeigen. Mit diesem Wissen änderst du das Programm anschließend so ab: Wenn der Wert des Fotowiderstands x unterschreitet, schalte die LED ein. Die weitere Erklärung steht in den Sketchen.

Verkabeln und programmieren

Asignación de pines Arduino UNO

LED 1Pin 5
LED 2Pin 7
Logikspannung5 V

Beim Arduino UNO schreibst du die Pin-Nummer direkt in den Sketch, also 5 und 7 ohne Zusatz.

Der Spannungsteiler kommt an den analogen Eingang A0, die LED an Pin 12.

Schaltplan mit Fotowiderstand als Spannungsteiler an A0 und LED an Pin 12 des Arduino UNO
Schaltplan: Fotowiderstand und LED am Arduino UNO
Programmcode – Arduino UNO
// Pins für den Fotowiderstand und die LED
int Fotowiderstand = A0;
int LED = 12;
// der Wert für SchwelleDunkelheit
// kann an die gewünschte "Dunkelheit"
// (den Zeitpunkt, an dem die LED leuchten soll)
// angepasst werden
int SchwelleDunkelheit = 400;
void setup()
{
  pinMode(LED, OUTPUT);
  // Seriellen Monitor starten
  Serial.begin(9600);
}
void loop()
{
  // digitaler Wert der gelesenen Spannung am Pin A0
  int SensorWert = analogRead(Fotowiderstand);
  // Die Kommentarzeichen der beiden folgenden Zeilen entfernen,
  // um den digitalen Wert der ausgelesenen Spannung am Pin A0 anzuzeigen
  // und evtl. den Wert für SchwelleDunkelheit anzupassen
  // Serial.print("Ausgelesener Wert: ");
  // Serial.println(SensorWert);
  if (SensorWert < SchwelleDunkelheit)
  {
    // wenn der digitale Wert am Pin A0 unterschritten wird
    // -> LED einschalten
    digitalWrite(LED, HIGH);
  }
  // andernfalls LED ausschalten
  else
  {
    digitalWrite(LED, LOW);
  }
}

Descargar: programmcode-arduino-uno.ino

Placa en el IDE de ArduinoArduino Uno

Ein zusätzliches Board-Paket brauchst du dafür nicht. Der UNO ist in der Arduino IDE ab Werk dabei.

Calificar la guía

Comentarios

Haz una pregunta o comparte tu experiencia

Schreib uns, wenn etwas nicht funktioniert. Nenne dabei dein Board und die Fehlermeldung.

Revisamos cada comentario antes de publicarlo. Tu dirección de correo electrónico permanece con nosotros.