Ultraschallsensor

Abbildung: Ultraschallsensor (HC-SR04)
Quelle: BBS2 Wolfsburg

Beschreibung:

Mit dem Ultraschallsensor HC-SR04 kann man die Entfernung zu einem Objekt bestimmen. Dabei werden Ultraschallwellen gesendet (Trig), die von einem Objekt reflektiert und von dem Sensor wieder empfangen (Echo) werden. Die dabei vergangene Zeit wird gemessen und lässt auf die Entfernung zurück schließen.

Kenndaten:

Anschlüsse:

  • VCC  (Spannungsversorgung 5 V)
  • GND (Spannungsversorgung Ground)
  • Trig   (Sender)
  • Echo (Empfänger)

Wichtige Informationen:

  • Nicht verpolen!
  • Der Messbereich liegt zwischen ca. 2 cm und 3 m

Anwendungsbeispiel:

Der Ultraschallsensor HC-SR04 kann verwendet werden um die Entfernung zu einem Objekt zu bestimmen.

Dazu muss der Sensor wie folgt an dem ESP32 angeschlossen und programmiert werden.

Steckplan

Abbildung: Verdrahtungsplan
Quelle: BBS2 Wolfsburg

Mit folgendem Programm wird die Entfernung zu einem Objekt bestimmt.

#define echo 25                   //Anschluss ECHO vom HC-SR04 wurde für PIN 25 festgelegt
#define trig 33                   //Anschluss TRIG vom HC-SR04 wurde für PIN 33 festgelegt
 
int entfernung = 0;               //Entfernung als globale Variable anlegen 

int getEntfernung()               //Funktion zur Messung der Entfernung (Einheit: cm)
{
  long entfernung = 1;            //Deklaration der Variablen "entfernung"
  long zeitx = 0;                 //Deklaration der Variablen "zeitx"
 
  digitalWrite (trig, LOW);       //setzt den Zustand von trig auf LOW
  delayMicroseconds(3);           //setzt eine Pause/Unterbrechung von 3 Mikrosekunden
  noInterrupts();                 //verhindert eine Unterbrechung des Vorgangs
  digitalWrite(trig, HIGH);       //setzt den Zustand von trig auf HIGH
  delayMicroseconds(10);          //setzt eine Pause/Unterbrechung von 10 Mikrosekunden
  digitalWrite(trig, LOW);        //setzt den Zustand von trig auf LOW
  zeitx = pulseIn(echo, HIGH);
  interrupts();                   //unterbricht den Vorgang
  zeitx = (zeitx / 2);            //teilt die Zeit durch 2
  entfernung = zeitx / 29.1;      //teilt die Restzeit durch die Geschwindigkeit des Schalls
  return (entfernung);            //gibt die berechnete Entfernung zurück
}
 
void setup()
{
  pinMode(trig, OUTPUT);         //Legt den Eingangstyp vom PIN "trig" fest
  pinMode(echo, INPUT);          //Legt den Eingangstyp vom PIN "echo" fest
}
 
void loop()
{
  entfernung = getEntfernung();  //speichert den return-Wert der Funktion getEntfernung
                                 //in die Variable "entfernung"
  delay(20);                     //verzögert den nächsten Schleifendurchlauf un 20 ms 
}
Zuletzt geändert: Freitag, 12. Februar 2021, 12:07