5.3 - Helligkeitsmessung mit einem Fotowiederstand

 
ntcintro 5.3
Ein Fotowiderstand oder auch LDR genannt, ändert je nach Lichtstärke seinen Widerstandswert. Diese Änderung können wir nutzen um an einem Analogen Eingang des Arduinos die Spannung zu messen. Der Arduino wandelt die anliegende analoge Spannung von 0V - 5V in einen digitalen Wert zwischen 0 - 1023 um, mit dem wir dann arbeiten können.
So kann man Beispielsweise einen Dämmerungsschalter bauen, oder die Beleuchtungsstärke seines Computers je nach Umgebungslicht automatisch steuern.
 
 
 
 

Teileliste

 
 
 

Anschlussplan

 
Anschlussplan 5.3     Schaltplan 5.3
 
 
 
 

Code

 
// Konstanten
const int abfrageZahl = 5;      // Je mehr abfragen, desto stabiler isr das Ergebnis
const int ldr = A0;             // Pin für den Fotowiederstand
const int led = 2;

// Variablen
int helligkeit = 0;            // Variable für die Helligkeit  
int abfrage[abfrageZahl];      // Array Variable für das Mitteln der Temperatur
float durchschnitt = 0;        // Variable für das Mitteln der Temperatur


void setup()
{  
  Serial.begin(9600);       // Baudrate für die Ausgabe am Serial Monitor
  pinMode(ldr, INPUT);      // Pin des NTC Wiederstands als Eingang
  pinMode(led, OUTPUT);
}


void loop()
{
  // Nimmt N Abfragen in einer Reihe, mit einem kurzen delay
  for (int i=0; i < abfrageZahl; i++)
  {
    abfrage[i] = analogRead(ldr);
    delay(10);
  }
  
  // Mittelt alle Abfragen
  durchschnitt = 0;
  for (int i=0; i < abfrageZahl; i++)
  {
    durchschnitt += abfrage[i];
  }
  helligkeit = durchschnitt/abfrageZahl;
  
  // Ausgabe an den Seriellen Monitor
  Serial.print("LDR ");
  Serial.println(helligkeit);
  
  // Schalte bei Dunkelheit die LED an
  if(helligkeit > 950)
  {
    digitalWrite(led, HIGH);
  }  
  else
  {
    digitalWrite(led, LOW);
  }  
}

 
 
abfrageZahl und abfrage hängen zusammen und bestimmen mit wie vielen Messwerten des LDR gemittelt wird. Je höher der Wert, desto weniger sprunghaft ist der Helligkeitsrwert, allerdings dauert die Erfassung auch länger.
Nachdem alle Variablen gesetzt und die Ein- und Ausgänge deklariert wurden, beginnt der Loop mit einer for Schleife in der 5 mal hintereinander der Helligkeitswert am Analogpin A0 gelesen wird.
In der nächsten for Schleife werden dann die fünf Ergebnisse in der Variable durchschnitt zusammengezählt und danach durch fünf geteilt um so eine gemittelte Messung zu erhalten. Das Ergebnis wird nun am Seriellen Monitor ausgegeben.
 
 
Wenn man nun Beispielsweise einen Dämmerungsschalter bauen möchte, muss eigentlich nur noch eine if Abfrage in den Code eingebaut werden und ein Pin als Ausgang deklariert werden.
 
 
 
 

Anschlussplan

 
Anschluss 5.3 Daemmerungsschalter     Schaltplan 5.3 Daemmerungsschalter
 
 
 
 

Code

 
// Konstanten
const int abfrageZahl = 5;      // Je mehr abfragen, desto stabiler isr das Ergebnis
const int ldr = A0;             // Pin für den Fotowiederstand
const int led = 2;              // Pin für die LED

// Variablen
int helligkeit = 0;            // Variable für die Helligkeit  
int abfrage[abfrageZahl];      // Array Variable für das Mitteln der Temperatur
float durchschnitt = 0;        // Variable für das Mitteln der Temperatur


void setup()
{  
  Serial.begin(9600);       // Baudrate für die Ausgabe am Serial Monitor
  pinMode(ldr, INPUT);      // Pin des NTC Wiederstands als Eingang
  pinMode(led, OUTPUT);     // Pin der LED als Ausgang
}


void loop()
{
  // Nimmt N Abfragen in einer Reihe, mit einem kurzen delay
  for (int i=0; i < abfrageZahl; i++)
  {
    abfrage[i] = analogRead(ldr);
    delay(10);
  }
  
  // Mittelt alle Abfragen
  durchschnitt = 0;
  for (int i=0; i < abfrageZahl; i++)
  {
    durchschnitt += abfrage[i];
  }
  helligkeit = durchschnitt/abfrageZahl;
  
  // Ausgabe an den Seriellen Monitor
  Serial.print("LDR ");
  Serial.println(helligkeit);
  
  // Schalte bei Dunkelheit die LED an
  if(helligkeit > 950)
  {
    digitalWrite(led, HIGH);
  }  
  else
  {
    digitalWrite(led, LOW);
  }  
}

 
 
Hier wird lediglich noch eine if Abfrage eingefügt, bei der ab einem Wert von 950 (wurde aus dem Seriellen Monitor ausgelesen) die LED angeht und darunter aus ist.
 
 
Das war es auch schon  fertig
 
 
 
 
downloadbutton arduino
 
 
 
 

Seitennavigation
 
arrow button prev               arrow button up               arrow button next

Einen Kommentar verfassen

Als Gast kommentieren

0
  • Keine Kommentare gefunden