Ultraschallsensor HCSR-04

By | 20. Februar 2016

Ultraschallsensor HCSR-04

Der HC-SR04 ist ein äußerst günstiger und doch recht genauer Entfernungs-sensor. Er benötigt eine Betriebsspannung von 5V und misst im Bereich von 2cm bis 400 cm bei einer Stromaufnahme von 15mA.

Ultra

Die Funktion basiert auf  folgendem Prinzip:  Ein 10 Microsekunden langer Impuls am Trigger-Pin löst acht 40kHz Ultraschall Impulse aus. Diese werden ausgesendet und wieder empfangen. Die gemessene Entfernung ist proportional zur Echo-Puls-Weite die am Signal Pin aufgenommen werden kann. Demnach ist das Prinzip der Ultraschall Entfernungsmessung das gleiche wie bei einem auf Radiowellen basierenden Radar.

In der folgenden Abbildung wird das oben beschriebene Funktion-Prinzip noch einmal schematisch dargestellt:

Dabei gilt das klassische Weg/Zeit Gesetz:

    \[v = \frac{s} {t}\]

    \[t = \frac{s} {v}\]

    \[s = t \cdot \frac{0,0344} {2} \]

Da wir den Schall in eine Richtung senden und dieser von einem Gegenstand reflektiert den gleichen Weg zurück antritt, wird die gemessene Zeit durch zwei dividiert.

Um beispielsweise ein 10cm entferntes Objekt zu detektieren, würde ein Signal mit der Schallgeschwindigkeit von 344m/s (=0.034 cm/µs) rund 290,7 µs Zeit benötigen.

Die Schall Geschwindigkeit beträgt in einem Raum um 20 Grad Celsius 344 Meter pro Sekunde. Da die Geschwindigkeit des Schalls durch die Luftdichte bestimmt wird und diese sich mit der Temperatur verändert, müsste für hoch akkurate Messwerte dies in der Gleichung berücksichtig werden. Für unsere Zwecke wird es aber ohne Temperatur-Kompensation gehen.

Programm-Beispiele

Im ersten Programm-Beispiel soll gezeigt werden, wie der Sensor über das Träger-Signal aktiviert wird und wie die Zeit gemessen wird, bis das Echo-Signal wieder am Sensor angekommen ist. Dazu gibt es in der Arduino-Entwicklungsumgebung die Funktion pulseIn(Pin,Value).

Die Funktion wartet und zählt dabei die Zeit bis ein bestimmtes Signal am spezifizierten Pin ankommt. Die dabei gezählte Zeit wird in der Einheit Microsekunden zurück gegeben, und kann dann entsprechend weiterverarbeitet werden.

Das Beispielprogramm liefert folgende Ausgabe: