5.4 - Lichtschranke

 
lichtschrankeintro 5.4
Mit einer Lichtschranke kann man erkennen, ob sich ein Objekt in einen bestimmten Bereich bewegt hat, indem er einen Lichtstrahl unterbricht. Diese Technik kommt z.B. als Endschalter oder Lageregelung zum Einsatz, oder um das Durchkommen von Teilen zu zählen.
Die Lichtschranke besteht aus einem Sender, der Licht erzeugt und einem Empfänger, der das einfallende Licht registriert und ein entsprechendes Signal ausgibt. Ich verwende für dieses Tutorial den Lichtschrankensatz Temic K153P, da er sehr günstig und leicht zu bekommen ist. Er besteht aus einer IR-Sendediode(blau) die nichts anderes als eine Infrarot LED ist und einem Fototransistor (schwarz).
 
Ich gehe hier auf zwei Anwendungsfälle ein, bzw. auf verschieden große Abstände von Sender und Empfängen.
 
 
 
 

Teileliste

 
 
 

6.4.1 - Lichtschranke nah

 

Bei dieser Konfiguration stehen Sender und Empfänger ca. 5 -10mm von einander entfernt. Hier liefert der Fototransistor an einem digitalen Pin ein HIGH Signal für eine nicht unterbrochene und ein LOW Signal, für eine unterbrochene Lichtschranke.

 
 
 
 

Anschlussplan

 
Anschlussplan 5.4.1     Schaltplan 5.4.1
       Der Fototransistor ist in der Zeichnung Weiß statt Schwarz, das hat aber nichts zu bedeuten.
 
 
 

Code

 

// Konstanten
const int empfPin = 2;      // Pin des Empfängers
const int ledPin = 13;      // LED auf dem Arduino initialisieren

// Variablen
int signal = 0;


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


void loop()
{
  signal = digitalRead(empfPin);
  
  // Wenn Lichtschranke unterbrochen wird, geht die LED an
  if(signal == HIGH)
  {
    digitalWrite(ledPin, HIGH);
  }   
  else
  {
    digitalWrite(ledPin, LOW);
  }
  
  // Zur Kontrolle an den Seriellen Monitor senden
  Serial.println(signal);
}

 
 
Nach dem setzen der Konstanten und Variablen, werden im setup noch die Ein- und Ausgänge deklariert. 
Der loop beginnt mit dem auslesen des Fototransistors. Dazu wird der Status des empfPin in der Variable signal gespeichert. Nun wird per if Abfrage geprüft ob signal HIGH ist. Wenn das zutrifft, sprich wenn die Lichtschranke unterbrochen ist, wird die LED auf dem Arduino angesteuert und leuchtet.
Wenn signal LOW ist, bleibt die LED aus.
 
 
 
 
 
 

6.4.2 - Lichtschranke fern

Bei dieser Konfiguration stehen Sender und Empfänger ca. 60mm von einander entfernt (mehr oder weniger Abstand müsst ihr testen). Hier liefert der Fototransistor an einem Analogen Pin einen Wert zwischen 0 und 1023, je nach Abstand und Unterbrechung der Lichtschranke.
 
 
 
 

Anschlussplan

 
Anschlussplan 5.4.2     Schaltplan 5.4.2
       Der Fototransistor ist in der Zeichnung Weiß statt Schwarz, das hat aber nichts zu bedeuten.
 
 
 

Code

 

// Konstanten
const int empfPin = A1;       // Pin des Empfängers
const int ledPin = 13;        // LED auf dem Arduino initialisieren

// Variablen
int signal = 0;


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


void loop()
{
  // Lichtschrankenstatus in Variable speichern
  signal = analogRead(empfPin);
  
  // Wenn Lichtschranke unterbrochen wird, geht die LED an
  if(signal > 900)
  {
    digitalWrite(ledPin, HIGH);
  }
  else
  {
    digitalWrite(ledPin, LOW);
  }
  
  // Zur Kontrolle an den Seriellen Monitor senden
  Serial.println(signal);
}

 
 
Nach dem setzen der Konstanten und Variablen, werden im setup noch die Ein- und Ausgänge deklariert. 
Der loop beginnt mit dem auslesen des Fototransistors. Im Gegensatze zum ersten Teil, lesen wir hier per analogRead aus, da wegen des großen Abstandes von Sender und Empfänger kein sauberes HIGH oder LOW Signal mehr zustande kommt, sondern ein Wert zwischen 0 und 1023, ja nach Abstand. Dazu wird der Wert des empfPin in der Variable signal gespeichert. 
Nun wird per if Abfrage geprüft ob signal größer als 900 ist (diesen Wert habe ich durch probieren und auslesen am Seriellen Monitor herausbekommen). Wenn das zutrifft, sprich wenn die Lichtschranke unterbrochen ist, wird die LED auf dem Arduino angesteuert und leuchtet.
Wenn das signal kleiner 900 ist ist, bleibt die LED aus.
 
 
Das war es auch schon  fertig
 
 
 
 
downloadbutton arduino
 
 
 
 

Seitennavigation
 
arrow button prev               arrow button up                            

Einen Kommentar verfassen

Als Gast kommentieren

0
  • Keine Kommentare gefunden