Weitere Informationen zum Ultraschallsensor PING))) findet man unter
Weitere Informationen zum Ultraschallsensor HC-SR04 findet man unter
Die heute wohl am häufigsten eingesetzten Verfahren zur Entfernungsmessung bzw. Abstandsbestimmung beruhen auf Laufzeitverfahren. Handwerker arbeiten mit Lasergeräten, mit denen sich auch große Entfernungen ausmessen lassen, im Hobbybereich und in der Schule werden häufig Ultraschallsensoren eingesetzt, deren maximale Reichweite bei ca. 3 Metern liegt.
Beide Medien nutzen die Laufzeitdifferenzen, die entstehen, wenn ein ausgesandtes Licht- oder Schallsignal von einem Hindernis reflektiert wird und anschließend zum Sender zurückkehrt.
In den Kapiteln Mikrocontroller - BS - Intelligente Sensoren - Ultraschallsensor PING))) und Mikrocontroller - Prop.Sensoren et al. - Ultraschallsensor wurde bereits ausführlich auf die Theorie der Abstandsbestimmung mit dem PING))) Sensor der Fa. Parallax eingegangen. Es ist empfehlenswert, sich diese Abschnitte anzuschauen und durchzulesen, bevor man hier weiter liest.
Der PING)))-Sensor der Fa. Parallax verfügt über drei Anschlüsse: GND, 5V, SIG. Einige Versuche mit diesem Sensor und den Controllern BASIC Stamp 2 und Propeller wurden an anderer Stelle bereits vorgestellt. Wir werden hier die Beschaltung und Programmierung mit dem Arduino UNO kennen lernen.
Abstandsmessung mit dem PING))) Sensor | |
Material |
|
Aufgaben |
|
Verdrahtungsplan des Schaltungsaufbaus
Schaltskizze
Das Programm PING_1.ino
Ausgabe im seriellen Terminal
Wie arbeitet das Programm Ping1.ino?
Die Schallgeschwindigkeit in Luft ist von der Temperatur abhängig. Den formelmäßigen Zusammenhang kann man nachschlagen oder über die Näherungsformel
berechnen. c_schall ist auf diese Weise berechnet worden. In der Methode setup() wird die serielle Schnittstelle gestartet. Das Hauptprogramm in der Methode loop() besteht nur aus drei Zeilen. In der Variablen s wird der Rückgabewert aus der Methode Abstand_cm() abgelegt und mit Serial.println anschließend im Terminal ausgegeben. Die Hauptarbeit erfolgt in der Methode Abstand_cm().
P7 des Arduino wird Ausgang und für 5 µs auf LOW, anschließend - ebenfalls für 5 µs - auf HIGH und dann wieder auf LOW gesetzt. Das ist der Startimpuls, mit dem der PING))) Sensor getriggert wird; er sendet nach einer kleinen Pause eine kurze Impulsfolge (Ultraschall von 40 kHz) aus und setzt gleichzeitig Pin SIG auf HIGH.
Vorher wird P7 des Arduino UNO auf Eingang umgeschaltet. Mit dem Attribut HIGH wartet pulseIn() solange, bis P7 an seinem Eingang ein HIGH Signal erkennt (genauer: den Sprung von 0 auf 1) und beginnt mit der Zeitmessung. Sobald der Empfänger im PING))) Sensor das reflektierte Signal erkennt, setzt er Pin SIG auf LOW. P7 erkennt den Spannungssprung von 1 auf 0 und beendet seine Zeitmessung.
Der Befehl pulsIn() weist die gemessene Zeit in der Einheit Mikrosekunden der Variablen t_us zu. Da es sich bei jeder Messung um die Zeit für einen Hin- und Rücklauf des Signals handelt, muss die gemessene Zeit halbiert und dieser Wert t dann in die Einheit Sekunde umgewandelt werden. Anschließend wird der Abstand d über die Beziehung
berechnet und im Terminal ausgegeben.
Der HC-SR04 Ultraschallsensor besitzt gegenüber dem PING))) Sensor vier Anschlüsse: Vcc, Trig, Echo, GND. Vcc wird mit der +5 Volt Buchse und GND mit der gleichnamigen Buchse auf dem Arduino UNO verbunden. Über den Anschluss Trig wird das Triggersignal, der Startimpuls für den Sensor, übertragen, während über den Anschluss Echo das Start- und Stoppsignal für die Zeitmessung empfangen wird. Ein Startimpuls von ca. 10µs startet die Abstandsmessung. Das Modul sendet daraufhin eine Impulsfolge im Ultraschallbereich aus (40 kHz), die die Zeitmessung startet, während das Rücklaufsignal sie stoppt.
Im Prinzip arbeiten der Sensor PING))) und der HC-SR04 völlig identisch, so dass das nachfolgende Programm sich nur in einigen wenigen Programmteilen vom Versuch aus Abschnitt 2 unterscheidet.
Abstandsmessung mit dem HC-SR04 | |
Material |
|
Aufgaben |
|
Schaltungsaufbau
Das Programm Ultraschall_HC_SR_04_UNO_WiFi_R2.ino