Weitere Informationen zum Ultraschallsensor PING))) findet man unter
Hier zeigen wir, wie man den Abstand zu einem Objekt aus den Laufzeitdaten des Ping))) Ultraschallsensors mit Hilfe von PBASIC berechnet.
Gleichförmige Bewegung
Schall legt in Luft in der Zeit t einen Weg s nach der Formel (1) zurück. Der Ping))) Sensor misst die Zeit für Hin- und Rückweg des Schalls, wir benötigen aber nur die einfache Entfernung und damit die halbe gemessene Zeit (2).
In Tabellen oder im Internet kann die Ausbreitungsgeschwindigkeit von Schall in Luft in der Einheit m pro s bei bestimmten Lufttemperaturen nachgeschlagen werden. Einfacher ist es für die BASIC Stamp, wenn wir die Entfernung in der Einheit Zentimeter angeben. Auf einen Meter gehen 100cm, das wäre dann der Umrechnungsfaktor, mit dem die Ausbreitungsgeschwindigkeit multipliziert werden muss, wenn die Angabe in cm pro s erfolgt (3).
Die kleinste Zeiteinheit in der die BASIC Stamp, mit Hilfe des PULSIN Befehls die Länge eines Messzeitimpulses misst, sind 2µs. Um das in der Formel deutlich zu machen, setzen wir statt t (das wäre ja die Angabe in 1µs-Einheiten) (4)
Multiplikation mit 2/1.000.000 ergibt dann die Zeit in Sekunden (5).
Die Ausbreitungsgeschwindigkeit von Schall in Luft bei 22,2°C beträgt 344,8 m/s. Nehmen wir davon den 10.000-sten Teil, erhält man (7)
Mit Hilfe des ** Operators kann die BASIC Stamp den von PULSIN gemessenen Zeitwert Zeit mit einer Bruchzahl kleiner 1 multiplizieren.
Beispiel
Wird im PULSIN Befehl die Zeit in der Variablen Zeit gespeichert, dann wird durch die Programmzeile
cmAbstand = cmConst ** Zeit
der gemessene Zeitwert als Abstandsgröße abgelegt. Es muss nur noch cmConst aus dem Produkt der Dezimalzahlen 0,03448 und 65536 bestimmt werden.
Jetzt haben wir alles zusammen, um das Programm PingAbstand.bs2 so zu verändern, dass es die Entfernung in der Einheit cm anzeigt.
Für die beiden Größen cmAbstand und cmConst definieren wir im Programm zwei Konstanten
CmConst CON 2260 cmAbstand VAR Word
Die ** Multiplikation wird in die DO...LOOP Schleife des Programms PingAbstand eingefügt und der Abstand in Zentimeter berechnet. Der Befehl DEBUG bringt das Ergebnis im Terminal zur Anzeige.
cmAbstand = CmConst ** Zeit DEBUG HOME, DEC3 cmAbstand, " cm"
Programmbeispiel PingAbstand.bs2
Aufgaben |
|
Jetzt kommst du! - Überprüfung der Berechnungen
Überzeugen wir uns davon, dass die Berechnungen alle korrekt sind.
Aufgaben |
|
In dieser Übung werden die Messdaten des Ping))) Sensors im Parallax LCD ausgegeben. Wenn das Board mit einer Batterie versorgt wird, lassen sich an den verschiedensten Orten Messungen vornehmen.
Zur größeren Beweglichkeit wird der Ping))) Sensor mit einem Erweiterungskabel verbunden. Damit wird der Sensor beweglicher, kann leicht in verschiedene Richtung gehalten werden und lässt sich ggf. auch zusammen mit dem BoE in einem Gehäuse zu einem leicht zu transportierenden Messgerät umbauen.
Material |
1x Ping))) Sensor 1x Parallax LCD 1x Erweiterungskabel 3x Steckdraht |
Schaltskizze
Aufgaben |
|
Aufgaben |
|
Stelle den PWR-Schalter erst dann wieder auf 1, wenn alle Kabelverbindungen korrekt sind. Bei falschen Verbindungen kann das LCD dauerhaft zerstört werden.