Mit dem Ultraschallsensor Entfernungen messen

Im folgenden Artikel möchte ich zeigen, wie mit dem Ultraschallsensor Entfernungen gemessen werden können.

Mit dem Ultraschallsensor HC-SR04 kann die Entfernung zu einem Objekt gemessen werden. Im ersten Schritt hier die Liste der verwendeten Materialen:

Für den Versuchsaufbau habe ich zudem Breadboard sowie Jumper-Kabel eingesetzt. Ich denke diese sind aber mittlerweile bei jedem Leser vorhanden 😉

Bevor wir mit dem Aufbau der Schaltung beginnen können, schauen wir uns das Ultraschallsensor-Modul genauer an. Das Modul verfügt über folgende Anschlüsse:

  • VCC (Plus-Anschluss 5V)
    Hier wird der Plus-Pol des Boards angeschlossen. Wichtig hier, die Spannung muss 5V betragen, ich nehme also den VIN-Port vom NodeMCU-Board, da dieser, wenn das Board über USB betrieben wird, 5V  ausgibt.
  • Trig (Trigger-Pin)
    Der Trigger Pin bekommt vom Board einen kurzen 5V Impuls, der die Schallwelle generiert und somit die Messung startet.
  • Echo (Echo-Pin)
    Der Echo-Pin gibt die gemessene Zeit der Schallwelle wieder an das Board zurück.
  • GND (Minus-Anschluss)

 

Im nächsten Schritt beginnen wir mit dem Aufbau der Schaltung.

 

Nach dem wir nun die Schaltung aufgebaut haben, können wir mit der Programmierung beginnen. Im folgenden Sketch definieren wir im ersten Schritt die Konstanten für die einzelnen Pins sowie die Variablen für die Dauer und Entfernung der Messung. In der Setup-Methode starten wir die serielle Schnittstelle mit einer Baudrate von 9600 und definieren die beiden pinModes für den Trigger- und Echo-Pin. Der Trigger wird wie oben bereits beschrieben als OUTPUT-Pin definiert, da hiermit die Schallwelle gesendet wird. Über den Echo-Pin wird das Echo gelesen und somit die Zeit gemessen. In der Loop-Methode starten wir nun die Schallwelle und lesen das Echo via pulseIn wieder ein.

const int pinTrigger=D7; 
const int pinEcho=D6; 

long dauer=0; 
long entfernungCM=0; 

void setup()
{
  Serial.begin (9600); 
  pinMode(pinTrigger, OUTPUT); 
  pinMode(pinEcho, INPUT); 
}

void loop()
{  
  digitalWrite(pinTrigger, LOW); 
  delay(5); 
  digitalWrite(pinTrigger, HIGH); 
  delay(10);
  digitalWrite(pinTrigger, LOW);

  dauer = pulseIn(pinEcho, HIGH); 
  entfernungCM = (dauer/2) * 0.03432; 
  if (entfernungCM >= 500 || entfernungCM <= 0) 
  {
    Serial.println("Kein Messwert"); 
  } 
  else 
  {
    Serial.print(entfernungCM); 
    Serial.println(" cm"); 
  }  
  delay(1000); 
}

 

Im seriellen Monitor sehen wir jetzt die Entfernung des Ultraschallsensors bis zum Objekt gemessen in cm.

Matthias Korte

Hauptberuflich Software-Entwickler und seit einigen Jahren Smart-Home Fan. Angefangen hat alles mit einem RaspberryMatic und einer schaltbaren Steckdose. Mittlerweile habe ich einige Steckdosen, Sensoren, und Thermostate sowie ioBroker zur Visualisierung im Einsatz.

4 Gedanken zu „Mit dem Ultraschallsensor Entfernungen messen

  • 20. August 2018 um 15:32
    Permalink

    Hi,

    ich bekomm immer kein Messwert…was mach ich falsch?

    Antwort
    • 20. August 2018 um 19:05
      Permalink

      Hallo, hast Du denn auf dem Ultraschallsensor 5V? Das ist eins der häufigsten Probleme, wie ich festgestellt habe.

      Antwort
  • 14. Juni 2019 um 10:28
    Permalink

    Hallo, vielen Dank für diese Anleitung ! Ich bin kein Elektroniker und hätte befürchtet den NodeMCU zu zerstören wenn ich auf den Echo Pin 5V zurückgebe ? Muss da kein Widerstand dazwischen ?

    Antwort
    • 15. Juni 2019 um 6:52
      Permalink

      Moin,

      nein, wir nutzen den ECHO-Pin ja im Input-Mode. In der Setup-Methode wird dazu der Pin-Mode auf Input gesetzt und in der Loop-Methode mit pulseIn() gelesen.

      Viele Grüße,
      Matthias

      Antwort

Schreibe einen Kommentar

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

* Die Checkbox für die Zustimmung zur Speicherung ist nach DSGVO zwingend.

Ich akzeptiere