Abstandssensor

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

}