Phase 2 2021/22
In diesem Buch sind die Teamergebnisse der FST21 in Phase 2 dokumentiert.
Der HC-SR04 ist ein Ultraschallsensor mit den wir den Abstand zu einem Objekt
messen können.
Abbildung: Ultraschallsensor HC-SR04
Quelle: BBS2 Wolfsburg
An Pin 1 (VCC) des Ultraschallsensors benötigt man eine Spannung von +5V. Um den
Stromkreis zu schließen und den Sensor mit Spannung zu versorgen wird an Pin 4
(Gnd) die Masse angelegt.
Damit der Sensor die Messung startet benötigt er ein High-Signal bzw. eine fallende
Flanke an Pin 2 (Trig).
Nach ca. 250 µs sendet der HC-SR04 ein Burst-Signal mit 40 kHz aus für die Dauer
von 200 µs.
Der Ausgang Pin 3 (Echo) geht auf High-Pegel und wartet auf den Empfang des
akustischen Echos.
Wenn das Echo erfolgreich registriert wurde, fällt der Ausgang auf Low-Pegel.
Nach 20 ms kann die nächste Messung durchgeführt werden.
Wenn das High Signal länger als 200 ms am Ausgang Pin 3 (Echo) anliegt, dann wurde
kein Hindernis vom Sensor erkannt (außer Reichweite).
#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
//Entfernung als globale Variable anlegen
int entfernung = 0;
//Funktion zur Messung der Entfernung über den Ultraschallsensor HC-SR04 (mit Echo und Trigger), Einheit: cm
int getEntfernung()
{
long entfernung = 1;
long zeitx = 0;
digitalWrite (trig, LOW); //setzt den Zustand von trig auf LOW
delayMicroseconds(3); //setzt eine Pause/Unterbrechung von 3 Mikrosekunden
noInterrupts(); //keine Unterbrechung
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); //setzt den Zustand von echo auf 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 des angegebenen PINs fest
pinMode(echo, INPUT); //Legt den Eingangstyp des angegebenen PINs fest
}
void loop()
{
entfernung = getEntfernung(); //Aufruf der Funktion zum Messen der Entfernung
}