Ultraschall-Sensormodul (HC-SR04)

../_images/01_ultrasonic.png

Einleitung

Das Ultraschall-Sensormodul (HC-SR04) ist ein Sensor, der mithilfe von Ultraschallwellen Entfernungen zwischen 2 cm und 4 Metern messen kann. Es wird häufig in Robotik- und Automatisierungsprojekten eingesetzt, um Objekte zu erkennen und Entfernungen zu messen. Das Modul besteht aus einem Ultraschall-Sender und -Empfänger, die gemeinsam Ultraschallwellen senden und empfangen.

Funktionsprinzip

Das Modul umfasst Ultraschallsender, Empfänger und Steuerschaltung. Die grundlegenden Prinzipien sind wie folgt:

  1. Ein IO-Flipflop verarbeitet ein High-Level-Signal von mindestens 10us.

  2. Das Modul sendet automatisch acht 40-kHz-Signale aus und prüft, ob ein Pulssignal zurückkehrt.

  3. Wenn das Signal zurückkehrt und das High-Level passiert, beträgt die Ausgabe-IO-Dauer die Zeit vom Senden der Ultraschallwelle bis zu ihrer Rückkehr. Hier gilt: Testentfernung = (High-Level-Zeit x Schallgeschwindigkeit (340 m/s) / 2.

Das Timing-Diagramm ist unten dargestellt.

../_images/01_ultrasonic_principle.png

Es genügt, einen kurzen 10us-Impuls für den Trigger-Eingang zu liefern, um die Entfernungsmessung zu starten. Das Modul sendet dann eine 8-Zyklus-Serie von Ultraschallwellen mit 40 kHz aus und erhebt sein Echo. Die Entfernung kann durch das Zeitintervall zwischen dem Senden des Trigger-Signals und dem Empfang des Echo-Signals berechnet werden.

Bemerkung

Es wird empfohlen, einen Messzyklus von mehr als 60 ms zu verwenden, um Signalüberlappungen zwischen Trigger- und Echo-Signal zu vermeiden.

Formel:
  • us / 58 = Zentimeter

  • us / 148 = Zoll

  • Entfernung = High-Level-Zeit * Schallgeschwindigkeit (340m/s) / 2;

Anwendungsbeispiele

Benötigte Hardware-Komponenten

  • Arduino Uno R4 oder R3-Board * 1

  • Ultraschall-Sensormodul * 1

  • Jumperkabel

Schaltungsaufbau

../_images/01-ultrasonic_circuit.png

Programmcode



Programmcode Erklärung

  1. Pin-Deklaration:

    Beginnen Sie mit der Definition der Pins für den Ultraschallsensor. echoPin und trigPin werden als Ganzzahlen deklariert und ihre Werte entsprechen den physischen Anschlüssen auf dem Arduino-Board.

    const int echoPin = 3;
    const int trigPin = 4;
    
  2. setup() Funktion:

    Die setup() Funktion initialisiert die serielle Kommunikation, setzt die Pin-Modi und gibt eine Meldung aus, um anzuzeigen, dass der Ultraschallsensor bereit ist.

    void setup() {
      Serial.begin(9600);
      pinMode(echoPin, INPUT);
      pinMode(trigPin, OUTPUT);
      Serial.println("Ultrasonic sensor:");
    }
    
  3. loop() Funktion:

    Die loop() Funktion liest die Entfernung vom Sensor und zeigt sie auf dem seriellen Monitor an. Anschließend erfolgt eine Verzögerung von 400 Millisekunden, bevor der Vorgang wiederholt wird.

    void loop() {
      float distance = readDistance();
      Serial.print(distance);
      Serial.println(" cm");
      delay(400);
    }
    
  4. readDistance() Funktion:

    Die readDistance() Funktion aktiviert den Ultraschallsensor und berechnet die Entfernung anhand der Zeit, die das Signal für den Hin- und Rückweg benötigt.

    float readDistance() {
      digitalWrite(trigPin, LOW);   // Set trig pin to low to ensure a clean pulse
      delayMicroseconds(2);         // Delay for 2 microseconds
      digitalWrite(trigPin, HIGH);  // Send a 10 microsecond pulse by setting trig pin to high
      delayMicroseconds(10);
      digitalWrite(trigPin, LOW);  // Set trig pin back to low
      float distance = pulseIn(echoPin, HIGH) / 58.00;  // Formula: (340m/s * 1us) / 2
      return distance;
    }
    

Zusätzliche Ideen

  • Anzeige der Entfernung auf einem LCD-Bildschirm statt auf dem seriellen Monitor

  • Hinzufügen von LEDs, die leuchten, wenn ein Objekt innerhalb einer bestimmten Entfernung ist

Weitere Projekte