Arduino Tutorial: Der Ultraschallsensor

 

Dieses Tutorial handelt von dem Ultraschallsensor HC-SR04. Mit diesen Sensor ist es möglich die Entfernung von Objekten zu messen. Dabei sendet der Sensor, wie der Name schon sagt, eine Ultraschallwelle und berechnet die Zeit bis die Ultraschallwelle zurückkommt. Mit der Zeitdauer kannst du auf die Entfernung zurück schließen.

 

Der HC-SR04 hat 4 Pins VCC, GND für die Spannungsversorgung und Trig und Echo für das Senden und Empfangen von Ultraschallwellen.

 

 

 

 

Wenn Der Trig(Trigger) Pin ein HIGH- Signal bekommt wird der Sensor eine Ultraschallwelle senden bis der Trigger Pin wieder auf LOW gesetzt wird.

 

Die Ultraschallwelle bewegt sich nun solange vom Sensor weg, bis die Welle auf ein Hindernis trifft. Danach wird die Welle am Hindernis reflektiert und die Welle wandert zurück zum Sensor.

 

 

 

 

Sobald die Welle wieder den Sensor erreicht. Sendet der Sensor ein HIGH am Echo Pin. Die Aufgabe ist nun die Zeit zwischen dem Senden und dem Empfangen der Ultraschallwelle zu messen.

 

 

Was benötigst du?

  • 1 x Arduino Uno

 

  • 1 x USB Kabel

 

  • 1 x Steckbrett

 

  • 1 x Ultraschallsensor(HC-SR04)

 

  •  Jump Wire (Männlich)

Wie sieht der Schaltplan aus?

 

 

 

Der Code

int trigger=9;                               // Der Trigger Pin

int echo=8;                                  // Der Echo Pin

long dauer=0;                                // Hier wird die Zeitdauer abgespeichert

                                             // die die Ultraschallwelle braucht

                                             // um zum Sensor zurückzukommen

long entfernung=0;                           // Hier wird die Entfernung vom 

                                             // Hindernis abgespeichert

 

void setup()

 

{

    Serial.begin(9600);                      // Die serielle Kommunikation starten

    pinMode(trigger, OUTPUT);                // Trigger Pin als Ausgang definieren

    pinMode(echo, INPUT);                    // Echo Pin als Eingang defnieren

}

 

void loop()

{

    digitalWrite(trigger, LOW);              // Den Trigger auf LOW setzen um

                                             // ein rauschfreies Signal

                                             // senden zu können

    delay(5);                                // 5 Millisekunden warten

    digitalWrite(trigger, HIGH);             // Den Trigger auf HIGH setzen um eine 

                                             // Ultraschallwelle zu senden

    delay(10);                               // 10 Millisekunden warten

    digitalWrite(trigger, LOW);              // Trigger auf LOW setzen um das 

                                             // Senden abzuschließen

    dauer = pulseIn(echo, HIGH);             // Die Zeit messen bis die 

                                             // Ultraschallwelle zurückkommt

    entfernung = (dauer/2) / 29.1;           // Die Zeit in den Weg in Zentimeter umrechnen

 

        Serial.print(entfernung);            // Den Weg in Zentimeter ausgeben

        Serial.println(" cm");               //

 

    delay(1000);                             // Nach einer Sekunde wiederholen

 

}

 

 

Den Sketch kannst du auch hier herunterladen.

 

 

Code- Review

dauer = pulseIn(echo, HIGH);             // Die Zeit messen bis die 

                                         // Ultraschallwelle zurückkommt

 

Mit der pulseIn- Methode wird die Zeit gemessen, bis der Echo Pin ein HIGH Signal erhält.

 

entfernung = (dauer/2) / 29.1;           // Die Zeit in den Weg in Zentimeter umrechnen

 

In der dauer- Variable ist die Zeit abgespeichert, die die Ultraschallwelle benötigt um einmal zum Hindernis hin und wieder zurück zum Sensor zu gelangen Daher muss die Zeitdauer durch 2 geteilt werden um nur die Zeit zum Hindernis zu erhalten. Eine Ultraschallwelle benötigt 29,1 Millisekunden um sich einen Zentimeter fortzubewegen, deswegen wird hier die Zeit nochmal durch die Zahl 29,1 geteilt um den Weg zwischen Sensor und Hindernis zu erhalten.

 

Ich schätze das der Rest nun verständlich für dich ist.

 

 

 

 

 

Wenn du hier irgendetwas vermisst, bessere Ansätze hast oder dir etwas nicht klar ist, zögere nicht einen Kommentar zu hinterlassen.

Kommentar schreiben

Kommentare: 2
  • #1

    Dieter (Montag, 09 Januar 2017 05:11)

    Hallo,
    erstmal Danke für die sehr guten Anleitungen. Die sind echt sehr hilfreich.
    Meine Frage wie steuere ich 2.bzw.mehrere Ultraschallsensoren an?

  • #2

    Thomas (Freitag, 20 Januar 2017 09:46)

    Hallo Dieter,

    du kannst mehrere Ultraschall- Sensoren an den I/O Ports am Arduino anschließen. Nach meinen Wissensstand kannst du die Ultraschallsensoren dann nacheinander abfragen, sprich den oben dargestellten Code für jeden Ultraschallsensor einmal anpassen. Man kann sich aber schon denken, dass wenn man zu viele Ultraschallsensoren hat ein Abfragezyklus ziemlich lange dauern kann.

    Gruß,

    Thomas