Weitere Informationen zum Ultraschallsensor PING))) findet man unter
Der PING))) Ultraschallsensor sendet ein Signal aus. Trifft es auf ein Hindernis, wird es im Idealfall reflektiert und direkt an den Sender zurückgesandt. Über die Zeit, die das Signal für Hin- und Rückweg benötigt, lässt sich so die Entfernung bestimmen.
Auf diese Art lassen sich Abstände zwischen 3 cm bis zu 300 cm ausmessen. Für Roboter ist der PING))) ein idealer Abstandsmesser, lässt sich aber auch als Überwachungssystem vielseitig einsetzen.
Ziele
Wenn du dieses Kapitel durchgearbeitet hast, bist du in der Lage ...
Bevor wir uns weiter mit Abstandsmessungen beschäftigen, muss erst einmal geklärt werden, was Ultraschall ist und wovon die Ausbreitungsgeschwindigkeit von Schall im Medium Luft abhängt.
Als Ultraschall bezeichnet man Schall mit Frequenzen oberhalb des menschlichen Hörfre-quenzbereichs. Er umfasst Frequenzen ab etwa 16 kHz bis zu 1 GHz. Oberhalb von 1 GHz spricht man von Hyperschall. Unterhalb der menschlichen Hörgrenze (unterhalb von ca. 20 Hz) spricht man vom Infraschall.
In Gasen und Flüssigkeiten breitet sich Ultraschall vorwiegend als Longitudinalwelle aus. Je nach Material eines Hindernisses wird Ultraschall an ihm reflektiert, in ihm absorbiert, gestreut oder er tritt durch das Material hindurch (transmittiert).
Abhängigkeit der Schallgeschwindigkeit in Luft von der Temperatur
Der PING))) Ultraschallsensor sendet einen hochfrequentes Signalton aus und misst die Zeit, bis das reflektierte Signal wieder bei ihm eintrifft. Diese Zeitmessung ist also abhängig von der Ausbreitungsgeschwindigkeit von Schall in Luft.
Die Ausbreitungsgeschwindigkeit von Schall ist abhängig von der Temperatur, der Luftfeuchtigkeit und auch der Luftqualität. Im Gegensatz zur Lufttemperatur gehen die Effekte Luftfeuchtigkeit und Luftqualität nicht signifikant in die Abstandsberechnung des PING))) Sensors ein. Die Ausbreitungsgeschwindigkeit von Schall erhöht sich pro Grad Celsius (°C) um 0,6 Meter pro Sekunde (m/s). Bei 0° C liegt sie bei 331,5 m/s. Mit der folgenden Formel lässt sich die Ausbreitungsgeschwindigkeit von Schall in Abhängigkeit von der Temperatur berechnen:
In den folgenden beiden Beispielen wird die Ausbreitungsgeschwindigkeit von Schall bei 22,2° C und 25°C berechnet.
Beispiel 1: Berechne die Ausbreitungsgeschwindigkeit von Schall bei 22,2° C.
Beispiel 2: Berechne die Ausbreitungsgeschwindigkeit von Schall bei 25° C.
Die Größe des prozentualen Fehlers, der bei diesen kleinen Temperaturdifferenzen auftritt, berechnet sich über die folgende Formel:
Wenn die angenommene Raumtemperatur 22,2°C ist, die tatsächliche Temperatur aber bei 25°C liegt, beträgt der Fehler 0,49%. Ein halbes Prozent bedeutet, dass das Objekt bei einer tatsächlichen Entfernung von 100 cm jetzt einen halben Zentimeter weiter entfernt erscheint.
Nach soviel Theorie schauen wir uns jetzt mal den PING))) Ultraschallsensor an. Er verfügt über drei Anschlussleitungen: I/O Pin, 5V und GND. Um ihn in einer ersten Schaltung einsetzen zu können, benötigen wir das folgende Material:
Schaltungsaufbau und Schaltskizze
Programm-Code eingeben
Mit diesem Programm wird der Abstand eines Gegenstands bestimmt, der sich vor dem Sensor befindet. Der Abstand wird im Debug Terminal in Zentimetern angegeben.
Material |
|
Aufgabe |
|
Das Programm ping1.c
Wie arbeitet das Programm ping1.c?
Sobald der PING))) Sensor ein LOW-HIGH-LOW Signal vom Propeller empfängt, sendet er kurze Ultraschallsignale aus. Menschen können diese Töne nicht hören. Der Wandler im PING)))-Sensor ist dazu in der Lage und kann die am Gegenstand reflektierten Signale empfangen.
Sobald der PING))) Sensor ein Signal ausgesandt hat, wird der Ausgangspin auf HIGH gesetzt. Kommt das Signal zurück und wird vom Wandler erkannt, geht der Pin auf LOW. Der Propeller berechnet die Zeit, die zwischen HIGH und LOW Zustand vergangen ist; es ist die Laufzeit, die der Schall für den Hin- und Rückweg benötigte.
Die Programmbibliothek von SimpleTools enthält eine Datei PING mit Funktionen, die über das Aussenden von Impulsen und die Messung des Echozeitverhaltens wachen. Sie enthält auch Funktionen, die die Geschwindigkeit der Schallausbreitung berücksichtigen und die gemessene Zeit in eine Abstandsgröße umrechnen. Eingebunden wird sie über Project/Add Simple Library und Sensor/libping – Ordner auswählen und im Programm aufgerufen über
(#include “ping.h”)
Im Programm ping1.c wird in einer Endlosschleife (while(1)) mit int cmAbst = ping_cm(15) die Rücklaufzeit beim PING)))-Sensor an P15 gemessen. Die Zeit wird in Mikrosekunden gespeichert und mit Hilfe der Geschwindigkeit von Schall in Luft in eine Abstandsbestimmung in cm umgerechnet.
In Zeile 18 des Programms wird das Ergebnis der Entfernungsbestimmung über ping_cm(15) in der Variablen cmAbst abgelegt und anschließend über die print-Anweisung (Zeile 19) im Debug Terminal ausgegeben. Dieser Vorgang wiederholt sich alle 200 ms.
Was du wissen solltest!
Die Ausbreitungsgeschwindigkeit von Schall in Luft beträgt 344, 8 Meter pro Sekunde bei Raumtemperatur (22,2° C) oder kurz: c = 344,8 m/s, T = 22,2°C.
Die Entfernung s, die der Schall in einer gewissen Zeit t zurücklegt entspricht dem Produkt aus der Zeit t und der Schallausbreitungsgeschwindigkeit c:
in der Zeit t eine Strecke 2s. Daraus ergibt sich für s:
Das Ergebnis muss also durch 2 geteilt werden, um den Wert von s zu erhalten:
Erinnern wir uns: 1 Meter (m) entspricht 100 cm und 1 Sekunde (s) entspricht 1.000.000 Mikrosekunden (µs). Wenn die Rücklaufzeit in Mikrosekunden gemessen wird und die Entfernung in Zentimetern ausgegeben werden soll, dann gilt:
0,01724 entspricht ungefähr 1/58. In der ping-Bibliothek wird folgende Formel benutzt:
Die Division durch eine ganze Zahl spart Speicherplatz und wird vom Prozessor schneller ausgeführt als die Berechnung von Fließkommazahlen.
Versuch mal dies!
Achtung!!! Dieser Versuch funktioniert nur mit dem Prop-Activity Board (AB). In diesem Beispiel wird die Abstandsmessung dazu benutzt die Helligkeit einer LED an P27 zu beeinflussen.
Diesem Versuch wird ein Abstandsbereich zwischen Sensor und Objekt von 25 cm zugrunde gelegt. Je geringer er ist, desto stärker soll das Licht gedimmt werden.
Übung 2
Material | Aufbau wie in Übung 1 |
Aufgabe |
|
Das Programm ping2.c
Wie arbeitet das Programm ping2.c?
Zeile 21: Die Abstandsmessung wird im Programm auf 25cm beschränkt.
Zeile 22: Der gemessene Abstandswert cmAbst wird mit 10 multipliziert, da die Funktion dac_ctr einen
Wert zwischen 0 und 255 erwartet.
Zeile 23: Mit dem in Zeile 22 neu berechneten Abstandswert cmAbst wird die Helligkeit der LED im
Bereich von 0 bis 250 verändert.
Zeile 18: Mit jedem Schleifendurchlauf wird die Variable cmAbst mit einem Wert aus der
Sensormessung neu initialisiert.
Jetzt kommst du!
Möchtest du noch mehr über den Ultraschallsensor Ping))) erfahren, dann gehe zur Rubrik BS - Intelligente Sensoren - Ultraschallsensor Ping)) oder BS - Intelligente Sensoren - Mit Ping))) auf Abstand.