Welt der Fertigung
Sie sind hier: Startseite » Suchen » Lernen » Arduino

Abstandsmessung per Ultraschall

Der Arduino als Meterstab

Ultraschall wird beispielsweise von Fledermäusen verwendet, um sich in ihrer Umwelt zu orientieren. Diese Tiere sind in der Lage, aus der Laufzeit eines ausgestoßenen Ultraschall-Tons auf die Entfernung eines Hindernisses zu schließen. Dieses Prinzip kann man sich mit entsprechendem Equipment auch in der Technik zunutze machen.

Ob Abstandssensoren am Auto, Füllstandsanzeige in der chemischen Industrie oder Fernbedienungen früherer Bauart – in allen diesen Anwendungen kommt beziehungsweise kam Ultraschall zum Einsatz, um Entfernungen zu bestimmen oder Geräte zu steuern. Besitzer eines Microcontrollers, etwa eines Arduinos, können dank eines großen Angebots sehr preiswerter Ultraschallsensoren problemlos eigene Lösungen umsetzen und so ganz nebenbei viel über die dahinterstehende Technik beziehungsweise Physik lernen.

Zum Eintauchen in die Welt des Ultraschalls eignet sich beispielsweise der Ultraschallsensor ›Hc-sr04‹, der vom einschlägigen Elektronikhandel für wenig Geld zu beziehen ist. Zu beachten ist, dass alternative Sensoren äußerlich dem Hcsr04 sehr ähnlich sind, jedoch mitunter eine andere Beschaltung ihrer Anschlüsse besitzen. Dieser Umstand kann sich bei einem irrtümlichen Vertauschen der Anschlüsse Vcc und GND fatal auf den Sensor auswirken. Ein Totalverlust des Sensors ist in diesem Fall nicht ausgeschlossen!

Der Hcsr04 besitzt folgende Beschaltung:

Die Zuordnung ist relativ einfach: Vcc (5V) und GND müssen mit den gleichnamigen Anschlüssen am Arduino verbunden werden, während die Anschlüsse ›Trig‹ und ›Echo‹ an einem der digitalen Pins des Arduino verbunden werden. Für das nachfolgende Beispiel wurde für ›Trig‹ Pin 8 verwendet, während Pin 7 für ›Echo‹ ausgewählt wurde. Werden andere Pins gewählt, so muss dies lediglich im Sketch berücksichtigt werden.

Das nachfolgende Programm zum Ansteuern des Ultraschallsensors wurde ausführlich kommentiert, sodass an dieser Stelle weitere Erläuterungen unterbleiben.

int trigger=8; // Pin für Trigger
int echo=7; // Pin für Echo
long dauer=0; // Variable für die Laufzeit der Ultraschallwelle
long entfernung=0; // Variable für die Entfernung zum Hindernis

void setup()
{
Serial.begin(9600); // Serielle Kommunikation starten
pinMode(trigger, OUTPUT); // Trigger Pin als Ausgang definieren
pinMode(echo, INPUT); // Echo Pin als Eingang definieren
}

void loop()
{
digitalWrite(trigger, LOW); // Zum rauschfreien Senden Trigger auf LOW setzen
delay(5); // 5 Millisekunden warten
digitalWrite(trigger, HIGH); // Trigger auf HIGH sendet eine Ultraschallwelle
delay(10); // 10 Millisekunden warten
digitalWrite(trigger, LOW); // Trigger auf LOW schliesst Senden ab
dauer = pulseIn(echo, HIGH); // Zeit zwischen Senden und Empfang
entfernung = (dauer/2) / 29.1; // Zeit in Weg in Zentimeter umrechnen
Serial.print(entfernung); // Weg in Zentimeter auf Monitor ausgeben
Serial.println(" cm");
delay(500); // Nach 0,5 Sekunden erneuter Durchlauf
}

Interessant ist, wie die Berechnung der Entfernung vorgenommen wird. Dabei ist festzuhalten, dass sich der Schall bei einer Umgebungstemperatur von 20 Grad Celsius mit 343 Meter pro Sekunde durch den Raum bewegt. Dies sind 34.300 cm pro Sekunde. Um zu berechnen, wie viel Zeit vergeht, wenn der Schall die Wegstrecke von einem Zentimeter zurücklegt, muss der berühmte Dreisatz bemüht werden:

Wenn nun beispielsweise 290 Mikrosekunden vergehen, bis der rückkehrende Schall als Echo vom Sensor registriert wird, muss diese Zeit durch 2 dividiert werden, da ja nur der einfache Weg berücksichtigt werden darf, um die Entfernung zum Objekt errechnen zu können.

Die Schallwelle benötigte demnach 145 Mikrosekunden, um auf das Hindernis zu stoßen, von dem ein Teil der Schallwelle zum Sensor zurückreflektiert wurde. Wird die halbe Laufzeit nun durch die Zeit dividiert, die der Schall für das Zurücklegen von einem Zentimeter benötigt, so gilt folgendes Ergebnis:

Das Hindernis ist demnach rund fünf Zentimeter vom Ultraschallsensor entfernt. Nachfolgendes Schaubild verdeutlicht den Zusammenhang:

Die Ausgabe der Entfernung kann über den sogenannten Monitor erfolgen, der über Werkzeuge/Serieller Monitor aktiviert werden kann.

Die Ausgabe der Werte ist rein zweckmäßig, kann aber mit einer Erweiterung des Programms ausgebaut werden. Selbstverständlich wäre eine Ausgabe auf einer LCD-Anzeige ebenso möglich, wie eine Visualisierung per LED-Reihe oder via Bargraph-Anzeige, wenn das Programm entsprechend angepasst wird.

Es bietet sich zudem an, einen zweckmäßigen Aufbau vorzunehmen, um die Genauigkeit zu ermitteln, die eine Abstandsmessung via Ultraschall bietet. Dabei wird man feststellen, dass diese bei ungefähr ± 5 Millimeter liegt. Dies ist für viele Zwecke völlig ausreichend, für Anwendungen, die genauere Messungen benötigen, unter Umständen jedoch nicht.

Es zeigt sich, dass dieser Aufbau zumindest einen schönen Einblick in die Arbeitsweise professioneller Geräte gewährt und Anregung geben soll, sinnvolle Projekte für den Einsatz von Ultraschall zu entdecken, die sich mit einem Arduino sinnvoll umsetzen lassen.

War dieser Artikel für Sie hilfreich?

Bitte bewerten Sie diese Seite durch Klick auf die Symbole.

Zugriffe heute: 1 - gesamt: 354.