Arduino Mega - Ultraschallsensor

Diese Anleitung zeigt Ihnen, wie Sie einen Ultraschallsensor und einen Arduino Mega verwenden, um zu messen, wie weit ein Objekt entfernt ist. Das werden wir lernen:

Arduino Mega ultrasonic sensor

Erforderliche Hardware

1×Arduino Mega
1×USB 2.0 Kabel Typ A/B
1×Ultraschallsensor
1×Verbindungskabel
1×(Empfohlen) Screw Terminal Block Shield for Arduino Uno/Mega
1×(Empfohlen) Breadboard Shield for Arduino Mega
1×(Empfohlen) Enclosure for Arduino Mega

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über den Ultraschallsensor

Der HC-SR04 Ultraschallsensor zeigt an, wie weit Objekte entfernt sind, indem er Schallwellen verwendet. Er sendet eine Schallwelle aus, die Menschen nicht hören können, und wartet dann auf das Echo, wenn die Schallwelle von einem Objekt zurückprallt. Durch die Messung der Zeit, die der Schall benötigt, um zurückzukommen, kann der Sensor die Entfernung berechnen.

Pinout

Der HC-SR04 Ultraschallsensor hat vier Pins.

  • VCC Pin: an 5 Volt anschließen.
  • GND Pin: an Masse (0 Volt) anschließen.
  • TRIG Pin: an Arduino Mega anschließen, um Steuersignale (Impulse) zu senden.
  • ECHO Pin: dieser Pin sendet Impulse zurück an Arduino Mega. Der Arduino Mega misst, wie lange diese Impulse dauern, um die Entfernung zu ermitteln.
Ultrasonic Sensor Pinout
image source: diyables.io

Schaltplan

Arduino Mega Ultrasonic Sensor Wiring Diagram

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

Arduino Mega Code

#define TRIG_PIN 9 // The Arduino Mega pin connected to the ultrasonic sensor's TRIG pin #define ECHO_PIN 8 // The Arduino Mega 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

Führen Sie diese Schritte nacheinander aus.

  • Verbinden Sie die Teile wie im Schaltplan gezeigt.
  • Verbinden Sie den Arduino Mega mit einem USB-Kabel mit Ihrem Computer.
  • Öffnen Sie die Arduino IDE auf Ihrem Computer.
  • Wählen Sie das Arduino Mega Board und den korrekten COM-Port.
  • Kopieren Sie den obigen Code und öffnen Sie ihn in der Arduino IDE.
  • Klicken Sie auf die Upload-Schaltfläche in der Arduino IDE, um den Code auf den Arduino Mega hochzuladen.
Arduino IDE - How to Upload Code
  • Öffnen Sie den Serial Monitor.
  • Winken Sie mit Ihrer Hand vor dem Ultraschallsensor.
  • Sehen Sie, wie weit Ihre Hand vom Sensor entfernt ist, im Serial 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 oben gezeigten Arduino-Codes.

Wie Sie Rauschen aus Entfernungsmessungen des Ultraschallsensors filtern

Die Messwerte des Ultraschallsensors haben Rauschen. Manchmal können diese verrauschten Daten dazu führen, dass das System fehlerhaft funktioniert. Wir können das Rauschen mit dieser Methode entfernen:

  • Nehmen Sie mehrere Messungen vor und speichern Sie sie in einer Liste.
  • Sortieren Sie die Liste von kleinsten zu größten Werten.
  • Entfernen Sie Rauschen aus den Daten:
    • Ignorieren Sie die kleinsten Werte als Rauschen.
    • Ignorieren Sie die größten Werte als Rauschen.
    • Berechnen Sie den Durchschnitt mit den verbleibenden mittleren Werten.

    Der nachfolgende Code sammelt 20 Messungen.

    • Überspringen Sie die fünf kleinsten und die fünf größten Samples, da sie Rauschen sind. Dann berechnen Sie den Durchschnitt der zehn mittleren Samples, vom 5. bis zum 14.
    /* * Dieser Arduino Mega Code wurde von newbiely.de entwickelt * Dieser Arduino Mega 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-mega/arduino-mega-ultrasonic-sensor */ #define TRIG_PIN 9 // The Arduino Mega pin connected to the ultrasonic sensor's TRIG pin #define ECHO_PIN 8 // The Arduino Mega 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 für Ultraschallsensoren

  • Kollisionsvermeidung
  • Füllstandserkennung
  • Pegelprüfung
  • Näherungserkennung

Verwandte Tutorials

※ 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!