Ultraschallsensor
Completion requirements
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.
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
}
Last modified: Friday, 12 February 2021, 12:07 PM