HC-SR04 Abstandssensor Ultraschall

Aus Arduino Hannover
Zur Navigation springen Zur Suche springen

Ultraschall Abstandssensor HC-SR04

Die Schallgeschwindigkeit beträgt in relativ trockener Luft und durchschnittlichem Luftdruck in Bodennähe bei 20°C etwa 343,2 m/s. Das sind umgerechnet 1235,52 km/h. Laut Wiki lässt sich die temperaturabhängige Ausbreitungsgeschwindigkeit c mit folgender Näherungsformel berechnen:

c = 331.5m/s + 0,6 * T

Die hier im nachfolgenden Sketch noch als Konstante T fest definierte Umgebungs­temperatur von 20°C kann daher später noch prima erweitert werden. Dazu wird über einen beliebigen zusätzlichen Temperatursensor einfach die tatsächlich vorhandene Umgebungstemperatur an eine Variable T übermittelt. Wer möchte, kann gern auch noch versuchen die relative Luftfeuchtigkeit und den aktuellen Luftdruck in die Berechnung einfließen zu lassen, um so die Genauigkeit der Abstandsmessung nochmals zu erhöhen. Zur Steuerung eines Roboters beispielsweise sollte die Genauigkeit einer temperatur­kompensierten Messung der Laufzeit des Schalls aber völlig ausreichend sein.

Der für diesen Versuch verwendete preiswerte Ultraschallsensor HC-SR04 hat insgesamt 4 Anschlüsse, 2 davon werden für die Spannungsversorgung über GND und +5V benötigt. Die 2 verbleibenden Kontakte sind digitale IO-Pins, von denen einer als Eingang zum Starten der eigentlichen Messung und der 2. als Ausgang zur Darstellung der gemessenen Laufzeit verwendet wird.

Wie funktioniert nun aber so ein Ultraschall Abstandssensor? Das Geheimnis ist schnell gelüftet und einfach erklärt. Über den Triggereingang des Moduls kann ein Messzyklus gestartet werden und damit eine Folge von unhörbaren Ultraschallimpulsen im 40kHz Bereich über einen Ultraschalllautsprecher in den Raum abgestrahlt werden. Mit dem letzten gesendeten Impuls wird umgeschaltet und die Zeit bis zum Eintreffen der von einem Gegenstand reflektierten Pulsfolge am Ultraschallmikro gemessen. Über die Laufzeit des Ultraschallsignals bis zum Gegenstand der das Signal zuerst reflektiert und dem Eintreffen dieses reflektierten Signals am Mikrofon kann nach obiger Formel die Strecke berechnet werden. Da der Schall die Strecke zweimal zurücklegt, muss der Wert zum Schluß nur noch halbiert werden. Wissenswert ist noch, dass der kurzwellige Ultraschall ähnlich hohen Audiofrequenzen eines Stereo-Radios, gerichtet in den Raum abgestrahlt werden. Das bedingt, dass der Sensor die genauesten Ergebnisse frontal zum Sensor liefert.

HC-SR04 Pulse.png

Mit einer fallenden Flanke am Triggereingang des Sensors wird der Messzyklus gestartet. Auf Kanal 1 in Gelb ist dieses vom Arduino generierte Triggersignal gut zu erkennen. 450us später später beginnt die Ausgabe der Messung als pulsbreitenmoduliertes Signal am Echoausgang, hier auf Kanal 2 in Blau dargestellt.Je länger die Laufzeit des reflektierten Ultraschallsignales ist, desto breiter auch die Pulszeit am Echoausgang des Sensors und damit auch die gemessene Entfernung.


Sketch HCSR04Ultrasonic

Der dokumentierte Sketch HCSR04Ultrasonic ist im Github zum Download verfügbar.