Arduino UNO R4 - Ultraschallsensor

Dieses Tutorial zeigt dir, wie man den Ultraschallsensor und den Arduino UNO R4 verwendet, um den Abstand zu einem Objekt zu messen. Im Detail werden wir Folgendes lernen:

Arduino UNO R4 Ultraschallsensor

Über Ultraschallsensor

Der HC-SR04 Ultraschallsensor misst den Abstand zu Objekten mithilfe von Schallwellen. Er sendet eine Schallwelle aus, die für Menschen unhörbar ist, und hört anschließend auf das Echo, wenn die Schallwelle von einem Objekt zurückprallt. Indem er die Zeit misst, die die Schallwelle für die Rückkehr benötigt, kann der Sensor berechnen, wie weit das Objekt entfernt ist.

Pinbelegung

Der Ultraschallsensor HC-SR04 verfügt über vier Anschlüsse:

  • VCC-Pin: Verbinden Sie diesen Pin mit VCC (5V).
  • GND-Pin: Verbinden Sie diesen Pin mit GND (0V).
  • TRIG-Pin: Verbinden Sie diesen Pin mit dem Arduino UNO R4, um Steuersignale (Impulse) zu senden.
  • ECHO-Pin: Dieser Pin sendet Signale (Impulse) zurück an den Arduino UNO R4. Der Arduino UNO R4 berechnet dann die Dauer dieser Impulse, um die Entfernung zu bestimmen.
Pinbelegung des Ultraschallsensors
image source: diyables.io

Verdrahtungsdiagramm

Arduino UNO R4 Ultraschallsensor-Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Siehe Der beste Weg, den Arduino Uno R4 und andere Komponenten mit Strom zu versorgen.

Arduino UNO R4 Code

#define TRIG_PIN 9 // The Arduino UNO R4 pin connected to the ultrasonic sensor's TRIG pin #define ECHO_PIN 8 // The Arduino UNO R4 pin connected to the ultrasonic sensor's ECHO pin float duration_us, distance_cm; void setup() { // begin serial port Serial.begin (9600); // configure the trigger pin to output mode pinMode(TRIG_PIN, OUTPUT); // configure the echo pin to input mode pinMode(ECHO_PIN, INPUT); } void loop() { // generate 10-microsecond pulse to TRIG pin digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); // measure duration of pulse from ECHO pin duration_us = pulseIn(ECHO_PIN, HIGH); // calculate the distance distance_cm = 0.017 * duration_us; // print the value to Serial Monitor Serial.print("distance: "); Serial.print(distance_cm); Serial.println(" cm"); delay(500); }

Schnelle Schritte

Folge den Anweisungen Schritt für Schritt:

  • Wenn Sie den Arduino Uno R4 WiFi/Minima zum ersten Mal verwenden, lesen Sie das Tutorial zur Einrichtung der Umgebung für Arduino Uno R4 WiFi/Minima in der Arduino IDE.
  • Verdrahten Sie die Bauteile gemäß dem bereitgestellten Diagramm.
  • Verbinden Sie das Arduino Uno R4-Board über ein USB-Kabel mit Ihrem Computer.
  • Starten Sie die Arduino IDE auf Ihrem Computer.
  • Wählen Sie das passende Arduino Uno R4-Board (z. B. Arduino Uno R4 WiFi) und den COM-Port aus.
  • Kopieren Sie den obigen Code und öffnen Sie ihn mit der Arduino IDE.
  • Klicken Sie auf die Schaltfläche Upload in der Arduino IDE, um den Code auf den Arduino UNO R4 zu übertragen.
Arduino IDE - Wie man Code hochlädt
  • Öffne den seriellen Monitor.
  • Winke mit der Hand vor dem Ultraschallsensor.
  • Überprüfe den Abstand zwischen deiner Hand und dem Sensor im seriellen Monitor.
COM6
Send
distance: 29.4 cm distance: 27.6 cm distance: 26.9 cm distance: 17.4 cm distance: 16.9 cm distance: 14.3 cm distance: 15.6 cm distance: 13.1 cm
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Code-Erklärung

Die Erklärung befindet sich in den Kommentaren des Arduino-Codes oben.

Wie man Rauschen aus den Distanzmessungen eines Ultraschallsensors filtert

Die Messwerte des Ultraschallsensors enthalten Rauschen. In einigen Fällen können diese verrauschten Daten zu Fehlfunktionen führen. Wir können das Rauschen mit dieser Methode eliminieren:

  • Nehmen Sie mehrere Messungen vor und speichern Sie sie in einem Array.
  • Sortieren Sie das Array von klein nach groß.
  • Entfernen Sie Rauschen aus den Daten:
    • Ignorieren Sie die kleinsten Werte, da sie Rauschen sind.
    • Ignorieren Sie die größten Werte, da sie Rauschen sind.
    • Berechnen Sie den Durchschnitt aus den verbleibenden mittleren Werten.

    Der folgende Beispielcode führt 20 Messungen durch.

    • Ignoriere die fünf kleinsten Messwerte und die fünf größten Messwerte, da sie als Rauschen angesehen werden. Berechne den Durchschnitt der zehn mittleren Messwerte, von der fünften bis zur vierzehnten.
    /* * Dieser Arduino UNO R4 Code wurde von newbiely.de entwickelt * Dieser Arduino UNO R4 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-r4/arduino-uno-r4-ultrasonic-sensor */ #define TRIG_PIN 9 // The Arduino UNO R4 pin connected to the ultrasonic sensor's TRIG pin #define ECHO_PIN 8 // The Arduino UNO R4 pin connected to the ultrasonic sensor's ECHO pin float filterArray[20]; // array to store data samples from sensor float distance; // store the distance from sensor void setup() { // begin serial port Serial.begin (9600); // configure the trigger and echo pins to output mode pinMode(TRIG_PIN, OUTPUT); pinMode(ECHO_PIN, INPUT); } void loop() { // 1. TAKING MULTIPLE MEASUREMENTS AND STORE IN AN ARRAY for (int sample = 0; sample < 20; sample++) { filterArray[sample] = ultrasonicMeasure(); delay(30); // to avoid untrasonic interfering } // 2. SORTING THE ARRAY IN ASCENDING ORDER for (int i = 0; i < 19; i++) { for (int j = i + 1; j < 20; j++) { if (filterArray[i] > filterArray[j]) { float swap = filterArray[i]; filterArray[i] = filterArray[j]; filterArray[j] = swap; } } } // 3. FILTERING NOISE // + the five smallest samples are considered as noise -> ignore it // + the five biggest samples are considered as noise -> ignore it // ---------------------------------------------------------------- // => get average of the 10 middle samples (from 5th to 14th) double sum = 0; for (int sample = 5; sample < 15; sample++) { sum += filterArray[sample]; } distance = sum / 10; // print the value to Serial Monitor Serial.print("distance: "); Serial.print(distance); Serial.println(" cm"); } float ultrasonicMeasure() { // generate 10-microsecond pulse to TRIG pin digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); // measure duration of pulse from ECHO pin float duration_us = pulseIn(ECHO_PIN, HIGH); // calculate the distance float distance_cm = 0.017 * duration_us; return distance_cm; }

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

Anwendungen von Ultraschallsensoren

  • Kollisionen vermeiden
  • Füllstand erkennen
  • Füllstand messen
  • Nähe erkennen

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!