Codebeispiele
  • Registrieren

Der Ultraschall Entfernungssensor HC-SR04 eignet sich zur Messung im Bereich zwischen 2cm und ca. 4m (Auflösung von 3mm). Er benötigt nur eine einfache Versorgungsspannung von 5V bei einer Stromaufnahme  weniger als 2mA.

Achtung! Durch die Betriebsspannung von 5V haben auch die Pegel eine Spannung von 5V. Für den RAspberry Pi wird ein Spannungsteiler aus Widerständen oder besser noch ein Pegelwandler benötigt, um den Pegel auf 3,3v abzusenken.

Nach Triggerung mit einer fallenden Flanke (TTL - Pegel) misst das Modul selbstständig die Entfernung und wandelt diese in ein PWM Signal, welches am Ausgang zur Verfügung steht. Ein Messintervall hat eine Dauer von 20ms, es können somit bis zu 50 Messungen pro Sekunde durchgeführt werden.

Beispielcode HC-SR04

View source
  1. # coding=utf-8
  2. # Benötigte Module werden eingefügt und konfiguriert
  3. import time
  4. import RPi.GPIO as GPIO
  5. GPIO.setmode(GPIO.BCM)
  6.  
  7. # Hier können die jeweiligen Eingangs-/Ausgangspins ausgewählt werden
  8. Trigger_AusgangsPin = 17
  9. Echo_EingangsPin = 27
  10.  
  11. # Die Pause zwischen den einzelnen Messugnen kann hier in Sekunden eingestellt werden
  12. sleeptime = 0.8
  13.  
  14. # Hier werden die Ein-/Ausgangspins konfiguriert
  15. GPIO.setup(Trigger_AusgangsPin, GPIO.OUT)
  16. GPIO.setup(Echo_EingangsPin, GPIO.IN)
  17. GPIO.output(Trigger_AusgangsPin, False)
  18.  
  19. # Hauptprogrammschleife
  20. try:
  21. while True:
  22. # Abstandsmessung wird mittels des 10us langen Triggersignals gestartet
  23. GPIO.output(Trigger_AusgangsPin, True)
  24. time.sleep(0.00001)
  25. GPIO.output(Trigger_AusgangsPin, False)
  26.  
  27. # Hier wird die Stopuhr gestartet
  28. EinschaltZeit = time.time()
  29. while GPIO.input(Echo_EingangsPin) == 0:
  30. EinschaltZeit = time.time() # Es wird solange die aktuelle Zeit gespeichert, bis das Signal aktiviert wird
  31.  
  32. while GPIO.input(Echo_EingangsPin) == 1:
  33. AusschaltZeit = time.time() # Es wird die letzte Zeit aufgenommen, wo noch das Signal aktiv war
  34.  
  35. # Die Differenz der beiden Zeiten ergibt die gesuchte Dauer
  36. Dauer = AusschaltZeit - EinschaltZeit
  37. # Mittels dieser kann nun der Abstand auf Basis der Schallgeschwindigkeit der Abstand berechnet werden
  38. Abstand = (Dauer * 34300) / 2
  39.  
  40. # Überprüfung, ob der gemessene Wert innerhalb der zulässigen Entfernung liegt
  41. if Abstand < 2 or (round(Abstand) > 300):
  42. # Falls nicht wird eine Fehlermeldung ausgegeben
  43. print("Abstand außerhalb des Messbereich")
  44. print("------------------------------")
  45. else:
  46. # Der Abstand wird auf zwei Stellen hinterm Komma formatiert
  47. Abstand = format((Dauer * 34300) / 2, '.2f')
  48. # Der berechnete Abstand wird auf der Konsole ausgegeben
  49. print("Der Abstand beträgt:"), Abstand,("cm")
  50. print("------------------------------")
  51.  
  52. # Pause zwischen den einzelnen Messungen
  53. time.sleep(sleeptime)
  54.  
  55. # Aufraeumarbeiten nachdem das Programm beendet wurde
  56. except KeyboardInterrupt:
  57. GPIO.cleanup()
  58.  

Warenkorb

0 Produkte - 0,00 EUR
Zum Warenkorb

Neue Produkte

miniUSB Verbindungskabel 15cm (Artikelnummer: MINIUSB15CM)
0,65 EUR
Raspberry Pi 3 Modell B+ (Artikelnummer: RASPI3BPLUS)
36,50 EUR
Acrylgehäuse NanoPi NEO AIR (Artikelnummer: GEHNANOPINEOAIR)
5,50 EUR
3D Druck Gehäuse NanoPi NEO (Artikelnummer: GEHNANOPINEO)
4,50 EUR
NanoHat Proto (Artikelnummer: NANOHATPROTO)
7,45 EUR