Diese Website verwendet Cookies und ähnliche Technologien!

Falls Sie die damit nicht einverstanden sind, ändern Sie bitte die Einstellungen Ihres Browsers. Mehr erfahren

Ich bin damit einverstanden

 Wir nutzen Cookies um Ihnen das beste Surferlebnis auf unserer Website bieten zu können.

  • Falls Sie dies bestätigen und fortfahren, ohne Ihre Einstellungen zu ändern, gehen wir davon aus, dass sie einverstanden sind alle Cookies unserer Seite zu erhalten:
  • Falls Sie Ihre Einstellung ändern möchten, so finden Sie eine Anleitung dazu hier.

In dem heutigen Beitrag in der BauteilSensor Reihe für den Arduino geht es um ein Modul, mit dem wir mittels Laufzeitmessung eines Ultraschallsignals Entfernungen berechnen können: Das weit verbreitete und kostengünstige HC-SR04-Modul.

 

Die Verkabelung

Das Modul hat nur 4 Pins, die wir verkabeln müssen:

  • GND Vcc: Zur Stromversorgung and GND, bzw. +5V
    (nach Datenblatt verträgt das HC-SR04 Abweichungen von 4.6 bis 5.5V)
  • Trig: Pin zum Start der Ultraschallimpulse
  • Echo: Pin zur Messung der Laufzeit bis zum Wiederhall

    Trig und Echo können an beliebigen Arduino Pins angesteckt werden. In diesem Beispiel werden wir Pin 7 (Trigger) und Pin 8 (Echo) verwenden:

    Code

    /*
      "Hallo Echo?" - Distanzmessung mit Ultraschall
      Codebeispiel für Modul HC-SR04
      
      Vollständiger Artikel:
      http://http://www.terramultimedia.de/cms/index.php/bauteile/ultraschall-distanzsensor
    */
    
    #define trigPin 7 // Trigger Pin => Löst Ultraschallimpulse aus
    #define echoPin 8 // Echo Pin    => Repräsentiert Laufzeit bis zum Wiederauftreffen an
    
    long laufzeit, distanz; 
    
    void setup() {
     Serial.begin (9600);
     pinMode(trigPin, OUTPUT);
     pinMode(echoPin, INPUT);
    }
    
    void loop() {
    /* Mit den folgenden 5 Befehlen, wird ein 10 Microsekunden langes HIGH-Signal erzeugt */ 
     digitalWrite(trigPin, LOW); 
     delayMicroseconds(2); 
    
     digitalWrite(trigPin, HIGH);
     delayMicroseconds(10); 
     
     digitalWrite(trigPin, LOW);
     
     /*  Messe wie lang der Eingangspuls am echoPin HIGH ist
         die Pulslänge ist gleich der Laufzeit zum Objekt und wieder zurück! */
     laufzeit = pulseIn(echoPin, HIGH);  
     
     //Berechne die Distanz (in cm)
     distanz = laufzeit/58.3;
     
     Serial.print(distanz);
     Serial.println(" cm");
     
     //Pausiere 50ms vor nächster Messung.
     delay(50);
    }
    

     

    Erklärung

    Mit einem 10µs (Mikrosekunden) langem HIGH-Signal am Trigger-Pin starten wir die Messung: 

    Nach dem Zurückfallen der Flanke dieses 10µs Signals von HIGH auf LOW generiert das Modul umgehend 8 Ultraschallimpuls in einer Tonhöhe von 40kHz und sendet diese in einem Bereich von ca. 15° nach vorne aus.

    Direkt nach dem letzten/dem 8. Schallimpuls springt das Signal am Echo-Pin auf HIGH und wechselt erst beim Wiedereintreffen des Echos auf LOW. Empfängt das Modul kein Echo, so schaltet es spätestens nach 200ms zurück auf LOW.

    Messen wir nun die Dauer dieses Pulses mit der Funktion pulseIn(echoPin, HIGH) erhalten wir die Laufzeit, die die Ultraschallimpulse bis zum ersten Hindernis und wieder zurück zum Modul benötigten.

    Umrechnung von Laufzeit in Entfernung (cm)

    Bei 20°C beträgt die Schallgeschwindigkeit in trockener Luft ca. 343 m/s.
    pulseIn liefert die Laufzeit jedoch in Mikrosekunden und das auch noch für Hin- UND Rückweg!

    Somit können wir dann folgende Rechnung aufstellen:

    343 m/s = 0,0343 cm/µs 

    distanz= laufzeit/2 * 0,0343 = laufzeit /2 / 29,154... ≈ laufzeit / 58.3

     

    Kommentare

     

Kommentar schreiben

Sicherheitscode
Aktualisieren