Nr. 30 – Abstandssensor (IR)

Optische Entfernungsmessung, Linetracking und Gegenstandserkennung

Aktuell in Bearbeitung. 19.06.2018

Mit einem Infrarot-Sensor-Modul ist es möglich, eine Entfernung zu bestimmen, einen Gegenstand zu detektieren, oder auch eine Linie zu erkennen. Die Module gibt es dabei in diversen Ausführungen, wobei der technische Hintergrund immer der gleiche ist. Am Sensor befindet sich eine Infrarotleuchtdiode, die für den Menschen unsichtbares Infrarotlicht vom Sensormodul abstrahlt. In gleicher „Blickrichtung“ befindet sich am Sensormodul ein Fotowiderstand. Wenn sich dem Sensor ein Gegenstand nähert,  wird das Infrarotlicht am Gegenstand reflektiert und gleichermaßen vom Fotowiderstand detektiert. Die Leuchtstärke des reflektierten Lichtes wird vom Sensormodul ausgewertet und dann je nach Bauart als analoges oder digitales Spannungssignal vom Sensor ausgegeben. Die Stärke des reflektierten Lichts ist stark abhängig von der Beschaffenheit der Oberfläche des detektierten Gegenstandes. Ein heller Gegenstand reflektiert mehr Licht, als ein dunkler. Daher ist die Bestimmung der Entfernung immer nur als relativer Wert zu betrachten. Ein angeschlossener Arduino Mikrocontroller kann den Wert einlesen und entsprechend der Anwendung verarbeiten. Das veranschaulichen wir in dieser Anleitung anhand von einigen Beispielen.

Aufbau: Auf der Rückseite des Sensors sind je nach Modell drei oder vier Kontakte zu sehen. In der Regel VCC, GND und die Ausgänge.

Aufgabe: Wenn sich eine Hand dem Sensor nähert, soll eine LED aktiviert werden (Im Alltag könnte an Stelle der LED ein elektrischer Seifenspender installiert sein).

Material: Arduino / IR-Entfernungssensor / Breadboardkabel  Materialbeschaffung: www.funduinoshop.com

In unseren Beispielen verwenden wir ein Modul mit digitalem und analogem Ausgang. Der Sensor auf dem Modul besteht aus dem elektrischen Bauteil TCRT5000, welches die Infrarot-LED und den Fotowiderstand in einem Gehäuse zusammenfasst.

Sketch 1:

In unserem ersten Beispiel lesen wir lediglich den analogen Messwert des Sensormoduls aus und stellen ihn grafisch dar.

int SensorAnalog=A1; // Das Sensormodul wird mit dem analogen Ausgang an Pin A1 des Arduino angeschlossen
int Wert1; // Erstellen einer Variablen mit dem Namen „Wert1“, unter dem die Messwerte gespeichert werden.

void setup()
{
Serial.begin(9600); //im Setup wird lediglich die Kommunikation zum Seriellen Monitor hergestellt.
}

void loop()
{
Wert1=analogRead(SensorAnalog); // Der analoge Wert an Pin A1 wird ausgelesen und unter der Variablen „Wert1 gespeichert)
Serial.println(Wert1); // Der Wert wird an den Serial Monitor gesendet.
}

Mit Hilfe des Seriellen Monitors kann man sich nun die Messwerte in Form einer Zahl anzeigen lassen. Je näher man dem Sensor kommt, desto kleiner wird die Zahl.

Noch schöner ist die Darstellung der Messwerte mit Hilfe des Seriellen Plotters. Hier ist besonders gut zu erkennen, wie schnell der Sensor auf Veränderungen der Entfernung reagiert.

Sketch 2

Mit der LED an Pin13 des Arduinoboards kann sehr schnell eine Anwendung in Abhängigkeit des Messwertes erstellt werden.

Aufgabe: Wenn die Entfernung eines Gegenstandes zum Sensor eine vorgegebene Entfernung unterschreitet, soll die LED an Pin13 leuchten.

 

int SensorAnalog=A1; // Das Sensormodul wird mit dem analogen Ausgang an Pin A1 des Arduino angeschlossen
int Wert1; // Erstellen einer Variablen mit dem Namen „Wert1“, unter dem die Messwerte gespeichert werden.
Int LED=13; // Die LED an Pin13 wird nun im Programm als „LED“ bezeichnet.

void setup()
{
Serial.begin(9600); //im Setup wird lediglich die Kommunikation zum Seriellen Monitor hergestellt.
}

void loop()
{
Wert1=analogRead(SensorAnalog); // Der analoge Wert an Pin A1 wird ausgelesen und unter der Variablen „Wert1 gespeichert)
Serial.println(Wert1); // Der Wert wird an den Serial Monitor gesendet.
if (Wert1<=50)  // …wenn der Wert „Wert1“ kleiner oder gleich 50 ist…
{
digitalWrite(LED,HIGH); …geht die LED an…
}
else  // …ansonsten
{
digitalWrite(LED,LOW); // … bleibt die LED aus.
}
}

Linienverfolgung eines Roboters – Linetracking

Beim sogenannten „Linetracking“ fährt ein Fahrzeug über eine schwarze oder weiße Linie. Dabei prüft ein Infrarotsensor die Helligkeit des reflektierten Lichts vom Boden.