HC-SR04 Entfernungsmesser

Last Updated on 14. Mai 2020 by sfambach

Der HCSR-04 ist ein weit verbreiteter Entfernungssensoren und dementsprechend günstig. Er ermittelt die entfernung mittels Ultraschall und ist leicht mit bekannten 5V Microcontrollern zu betreiben.

Bei der maximalen Entfernungsangabe wiedersprechen sich die Datenblätter und schwanken zwischen 3 und 4 Metern. Ich habe bis jetzt noch kein Modul in der Hand gehabt, welches die 4m erreicht. 3m war bei meinen Modulen schluss.

Hier wie immer nur ein kurzer Einblick, für Details sind unten ein paar gute Beiträge verlinkt.

Ansichten

Technische Daten

SensornameSR-04
TypSonar
Entfernung [mm]20 - 3000
Genauigkeit [mm]3
Winkel [Grad]15
Spannung [V]5
Strom [mA]<20
Größe l/b/t [mm]45 x 21 x 18
Gewicht [g]8,7
SchnittstelleTTL Peget Tigger/Echo
Frequenz/ Wellenlänger 40 kHz

Pin-Belegung

  1. Versorgungsspannung 5V
  2. Trigger (Auslöser)
  3. Echo („Empfänger“)
  4. Masse

Funktionsweise

Über den Trigger Pin wird ein kurzer Impuls gesendet. Dieser löst ein Ultraschall Signal aus. Wird dieses Signal von einer Fläche reflektiert und vom Empfänger auf dem Mdoul wieder empfangen wird der Echo Pin auf Hight gesetzt. Durch die Zeitmessung vom Sendeimpuls zum Empfang kann über die Schallgeschwindigkeit die Entfernung berechnet werden.

Dibujo Prinzip Ultraschall

Echo-Laufzeit-Verhalten von Ultraschall
Quelle: https://de.wikipedia.org/ (CC BY-SA 3.0 de)

Verwandte Links

Tips

HC-SR04 im 3 pin Betrieb

Ist im folgenden Link beschrieben:

Aus HC-SR04 einen Parallax Ping machen

https://www.heise.de/developer/artikel/Arduino-fuer-Fledermaeuse-3221620.html

Abschnitt: Aus HC-SR04 einen Parallax Ping machen

Probleme

Echo kommt nicht bei weiten Strecken

Bei manchen China-Produkten scheint ein Fehler im SR04 zu sein. Hierbei wird bei langen Strecken, wenn kein Echo-Ultraschall signal empfangen wird, der Echo Ausgang nicht zurückgesetzt.

Lösung1: Bei Abfrage des Echo impulse einen Timer setzen. Beispielsweise kann beim Arduio in der Funktion zur Abfrage des Echoimpulses Timerwert mit angegebenm werden

 pulseIn(ECHO_PIN, HIGH, MAX_TIMER_MS);

direkt mitgegeben werden.

Lösung2: anderes Modul verwenden 😉

Quellen

Datenblatt bei Microcontroller.net

Datenblatt Sparkfun

http://stefanfrings.de/hc-sr04/index.html

Nachträglich gefundener, wirklich guter Heise Beitrag

Noch ein Beitrag zum SR04 auch sehr ausführlich

Proximity – HC-SR04 I2C Backpack

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert