Inhaltsverzeichnis
Für dieses Projekt benötigst du
Optische Entfernungsmessung, Linetracking und Gegenstandserkennung
Übersicht
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.
Wie stark das reflektierte Licht ist, hängt stark von der Beschaffenheit der Oberfläche des detektierten Gegenstandes ab. 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 des Moduls
Beispielsketch 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.
}
Mithilfe 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. Die Ausgabe des seriellen Monitors sieht wie folgt aus:
Noch schöner ist die Darstellung der Messwerte mithilfe des seriellen Plotters. Hier ist besonders gut zu erkennen, wie schnell der Sensor auf Veränderungen der Entfernung reagiert. Das Ergebnis wird ebenfalls grafisch veranschaulicht:
Aufgabe
Wenn sich eine Hand dem Sensor nähert, soll eine LED aktiviert werden (Im Alltag könnte anstelle der LED ein elektrischer Seifenspender installiert sein).
Die LED soll also aufleuchten, wenn ein vorher definierter Messwert unterschritten wird.
Beispielsketch 2
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.
pinMode(LED, OUTPUT);
}
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.
}
}
Zusatzinformation zum Linetracking - Linienverfolgung eines Roboters
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.
Funduino - Dein Onlineshop für Mikroelektronik
-
Dauerhaft bis zu 10% Rabatt für Schüler, Studenten und Lehrkräfte
-
Mehr als 3.500 Artikel sofort verfügbar!
-
Über 8 Jahre Erfahrung mit Arduino, 3D-Druck und co.