Ultraschall Sensor HC-SR04
Ich zeige euch wie man mit dem Ultraschall Sensor HC-SR04 und dem Raspberry Pi arbeitet. Im letzten Artikel habe ich euch ja schon auf die Abstandsmessung eingestimmt, nun wird ernst. Wir montieren den Ultraschall Sensor auf unserem Steckbrett, verkabeln diesen Sensor und messen die Entfernung zum nächsten Objekt. Ich habe mir angesehen wie das funktioniert.
Ultraschall Sensor HC-SR04
Der HC-SR04 Ultraschall Sensor ist ein handelsüblicher Sensor zur Abstandsmessung. Dieser ist über diverse Shops lieferbar und man findet im Internet zahlreiche Dokumentationen und Anleitungen. Der Sensor ist optimal für den Raspberry Pi geeignet, er benötigt eine Betriebsspannung von 5 Volt und liefert seine Daten digital. Der Messbereich liegt im Bereich von 2 cm bis 400 cm. Innerhalb dessen liefert der Sensor millimetergenaue Werte. Wir benötigen folgendes:
Die Pins des Ultraschall Sensor HC-SR04 sind auf dessen Platine beschriftet. Es gibt insgesamt 4 Pins die folgende Bedeutung haben:
- Vcc
Betriebsspannung von 5 Volt. Diese Pin schließt man an einen der +5 Volt Pins der GPIO Schnittstelle an, beispielsweise Pin Nummer 2. - Trig
Das ist der Signalpin vom Sender. Liegt dort Spannung an, dann wird das Ultraschall Signal gesendet. Diesen Pin schließen wir direkt an einen GPIO Pin, den wir im Programm später als Ausgangspin definieren. In meinem Fall ist das GPIO 23. - Echo
Das ist der Eingangspin vom Empfänger. Sobald dort Spannung gemessen wird, wurde das zuvor ausgesandte Signal empfangen. Bei der Verkabelung schließen wir den Pin an einen GPIO Pin, den wir im Programm als Eingangspin definieren. In meinem Fall ist das GPIO 24. Achtung: der Pin wird mit vorgeschaltenem Widerstand angeschlossen. Die Leiterbahn ist zudem auch noch über einen Widerstand mit der Masse verbunden. - Gnd
Masse oder Erdung. Dafür verwenden wir einen der GND Pins der GPIO Schnittstelle, beispielsweise Pin Nummer 6.
Hardware
Den Ultraschall Sensor HC-SR04 schließt man wie folgt an die GPIO Schnittstelle an:
Vcc, GND und Trig werden direkt an den jeweiligen GPIO Pin angeschlossen. Das ist recht einfach, man muss nur die Übersicht bewahren. Beim Echo Pin des Ultraschall Sensor HC-SR04 gehören 2 Widerstände dazu. Einen kleineren Widerstand zwischen GPIO und Sensor und einen stärkeren für die Verbindung mit der Masse. Ich schreibe bewusst keine fixen Werte, da die mit unterschiedlichen Widerständen funktioniert. Getestet wurde das mit:
- 1 kΩ (Ohm) und einen 2.2 kΩ (Ohm) Widerstand
- 330 Ω (Ohm) und einen 470 Ω (Ohm) Widerstand (siehe Bild)
Welche Version man wählt hängt davon ab, welche Widerstände man gerade zur Verfügung hat. Am Messergebnis ändert das nichts. Laut anderen Anleitungen muss der höhere Widerstand geringer sein als das doppelte des niedrigeren Widerstands. Das stimmt bei der ersten Version mit 1 kΩ und 2.2 kΩ zwar nicht, es funktioniert trotzdem.
Fazit
Das zusammenstecken und die Recherche zu dem Thema haben viel Spaß gemacht. Noch besser jedoch ist es, wenn man die ersten Messungen mit dem Ultraschall Sensor HC-SR04 macht und mit dem Lineal nachmisst. Der Sensor liefert erstaunlich genaue Messwerte und das nur aus der Errechnung eines Zeitintervalls. Wow! Damit ihr das auch nachmachen könnt zeige ich euch im nächsten Teil wie die Software dazu am Raspberry Pi geschrieben wird.
Wie sind eure Erfahrungen mit dem Sensor? Welche alternativen Ultraschall Sensoren kennt ihr bzw. könnt ihr empfehlen?
Teil 1 | Teil 2 | Teil 3 | Teil 4 | Teil 5
Guter Artikel. Ich habe eine Anwendung beim „doit_1“-Fahrzeug erfolgreich aufgebaut. Sh https://raspiprojectsblog.wordpress.com/
Vielen Dank für Deine ausführliche Beschreibung! Ich konnte diese sehr gut in einem Monitoring-System für eine Garten-Zysterne verwenden, siehe https://github.com/adbuerger/cistern_monitor
Hey, super Projekt! Danke für den Backlink auf Github.
Gerne, ist doch selbstverständlich!
das funktioniert bei mir nicht. Das bleibt bei mir immer beim messen stehen, d.h. es startet, stoppt aber nicht…
Habt ihr tipps??
Wie kann etwas stehen bleiben aber nicht stoppen? Um welchen Code geht es denn? Bzw. was ist die Ausgabe?
Ist zwar schon etwas älter, aber ich hab eine Frage dazu:
Ich will den Ultraschallsensor mit einem ESP8266 verwenden, der ist eigentlich nur bis 3,3 V ausgelegt. Mittlerweile ist auch bekannt, dass der ESP8266 auch mit den 5V vom Netzteil zurechtkommt.
Muss ich die Widerstände unbedingt verwenden? Im Testaufbau ohne Widerstände hat das ganze perfekt funktioniert und hat auf den Millimeter genau die richtigen Werte geliefert