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
HC-SR04 von vorne HC-SR04 von hinten
Technische Daten
Sensorname | SR-04 |
---|---|
Typ | Sonar |
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 |
Schnittstelle | TTL Peget Tigger/Echo |
Frequenz/ Wellenlänger | 40 kHz |
Pin-Belegung
- Versorgungsspannung 5V
- Trigger (Auslöser)
- Echo („Empfänger“)
- 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.
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
http://stefanfrings.de/hc-sr04/index.html
Nachträglich gefundener, wirklich guter Heise Beitrag