Arduino Nano - Ultraschallsensor

Dieses Tutorial zeigt dir, wie du den Arduino Nano und einen Ultraschallsensor verwendest, um den Abstand zu Hindernissen oder Objekten zu messen. Im Detail werden wir Folgendes lernen:

Erforderliche Hardware

1×Official Arduino Nano
1×Alternativ: DIYables ATMEGA328P Nano Development Board
1×USB-A-zu-Mini-B-Kabel
1×Ultraschallsensor
1×Verbindungskabel
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für Arduino Nano
1×(Empfohlen) Breakout-Erweiterungsboard für Arduino Nano
1×(Empfohlen) Stromverteiler für Arduino Nano

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 Ultraschallsensor

Der HC-SR04 Ultraschallsensor dient dazu, den Abstand zu einem Objekt mithilfe von Ultraschallwellen zu messen.

Die Pinbelegung des Ultraschallsensors

Der HC-SR04 Ultraschallsensor hat vier Pins:

  • VCC-Pin: muss mit VCC (5V) verbunden werden
  • GND-Pin: muss mit GND (0V) verbunden werden
  • TRIG-Pin: empfängt ein Steuersignal (Impuls) vom Arduino Nano
  • ECHO-Pin: sendet ein Signal (Impuls) an den Arduino Nano. Der Arduino Nano misst die Länge des Impulses, um die Entfernung zu berechnen.
Pinbelegung des Ultraschallsensors

Wie es funktioniert

Dieser Abschnitt widmet sich vertieftem Wissen. Machen Sie sich KEINE Sorgen, wenn Sie es nicht verstehen. Überspringen Sie diesen Abschnitt, wenn er Sie überfordert, und kommen Sie an einem anderen Tag zurück. Lesen Sie weiter mit den folgenden Abschnitten.
  • Der Arduino Nano erzeugt einen 10-Mikrosekunden-Puls am TRIG-Pin, der den Ultraschallsensor dazu veranlasst, Ultraschallwellen auszusenden.
  • Wenn die Wellen auf ein Hindernis treffen, werden sie zurückreflektiert.
  • Der Ultraschallsensor ist in der Lage, die reflektierte Welle zu erkennen und ihre Laufzeit zu messen.
  • Der Sensor erzeugt dann einen Impuls am ECHO-Pin, dessen Dauer der Ausbreitungszeit der Ultraschallwelle entspricht.
  • Der Arduino Nano misst die Impulsdauer am ECHO-Pin und berechnet die Entfernung zwischen dem Sensor und dem Hindernis.

Wie man Abstand vom Ultraschallsensor erhält

Um den Abstand vom Ultraschallsensor zu berechnen, müssen wir einfach Arduino-Code schreiben, um zwei Schritte auszuführen (1 und 6 auf Wie es funktioniert):

  • Arduino Nano erzeugt einen 10-Mikrosekunden-Puls am TRIG-Pin.
  • Arduino Nano misst die Pulsdauer am ECHO-Pin.
  • Anschließend verwendet der Arduino Nano die gemessene Pulsdauer, um die Entfernung zwischen dem Sensor und dem Hindernis zu berechnen.

Distanzberechnung

Wir haben:

  • Die Ausbreitungszeit der Ultraschallwelle (µs): travel_time = pulse_duration
  • Die Geschwindigkeit der Ultraschallwelle: speed = SPEED_OF_SOUND = 340 m/s = 0.034 cm/µs

Also:

  • Die Laufstrecke der Ultraschallwelle (cm): travel_distance = speed × travel_time = 0.034 × pulse_duration
  • Der Abstand zwischen Sensor und Hindernis (cm): distance = travel_distance / 2 = 0.034 × pulse_duration / 2 = 0.017 × pulse_duration

Arduino Nano - Ultraschallsensor

Die Pins des Arduino Nano können einen 10-Mikrosekunden-Puls erzeugen und die Pulsdauer messen. Damit können wir zwei Pins des Arduino Nano verwenden, um die Entfernung vom Ultraschallsensor zu einem Objekt zu bestimmen. Wir müssen nur Folgendes tun:

  • Verbinden Sie einen Pin des Arduino Nano mit dem TRIG-Pin des Ultraschallsensors. Dieser Pin des Arduino Nano wird verwendet, um einen 10-µs-Puls an den TRIG-Pin des Sensors zu erzeugen.
  • Verbinden Sie einen weiteren Pin des Arduino Nano mit dem ECHO-Pin des Ultraschallsensors. Dieser Pin des Arduino Nano wird verwendet, um den Puls des Sensors zu messen.

Verdrahtungsdiagramm

Arduino Nano Ultraschallsensor-Verdrahtungsdiagramm

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

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

Wie man einen Ultraschallsensor programmiert

digitalWrite(3, HIGH); delayMicroseconds(10); digitalWrite(3, LOW);
  • Miss die Pulsdauer (in Mikrosekunden) am Arduino-Pin 2, indem du die Funktion pulseIn() verwendest. Zum Beispiel:
duration_us = pulseIn(2, HIGH);
  • Berechnen Sie die Entfernung (cm):
distance_cm = 0.017 * duration_us;

Arduino Nano Quellcode

/* * Dieser Arduino Nano Code wurde von newbiely.de entwickelt * Dieser Arduino Nano 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-nano/arduino-nano-ultrasonic-sensor */ #define TRIG_PIN 3 // The Arduino Nano pin connected to TRIG pin of ultrasonic sensor #define ECHO_PIN 2 // The Arduino Nano pin connected to ECHO pin of ultrasonic sensor 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() { // Produce a 10-microsecond pulse to the TRIG pin. digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); // Measure the pulse duration from the 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

  • Kopieren Sie den Code und öffnen Sie ihn mit der Arduino IDE.
  • Klicken Sie dann in der Arduino IDE auf die Schaltfläche Hochladen, um den Code zu kompilieren und auf den Arduino Nano hochzuladen.
Wie man Code auf den Arduino Nano hochlädt
  • Öffnen Sie den Serial Monitor
  • Legen Sie Ihre Hand vor dem Ultraschallsensor hin
  • Prüfen Sie die Entfernung vom Sensor zu Ihrer Hand, die im Serial Monitor angezeigt wird
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  

Quellcode-Erklärung

Schau dir die zeilenweise Erklärung in den Kommentaren des Quellcodes an!

Wie man Rauschen aus Distanzmessungen eines Ultraschallsensors herausfiltert

Das Messergebnis eines Ultraschallsensors kann Rauschen enthalten, was in einigen Anwendungen zu unerwünschten Abläufen führen kann. Um das Rauschen zu entfernen, können wir den folgenden Algorithmus verwenden:

  1. Nehmen Sie mehrere Messungen vor und speichern Sie sie in einem Array
  2. Sortieren Sie das Array in aufsteigender Reihenfolge
  3. Filtern Sie Rauschen heraus durch:
    • Die kleinsten Messwerte werden als Rauschen betrachtet und sollten ignoriert werden
    • Die größten Messwerte werden als Rauschen betrachtet und sollten ignoriert werden
    • Es sollte der Mittelwert der mittleren Messwerte genommen werden

    Der folgende Beispielcode führt 20 Messungen durch:

    • Ignoriere die fünf kleinsten Proben.
    • Ignoriere die fünf größten Proben.
    • Berechne den Durchschnitt der zehn mittleren Proben vom fünften bis zum vierzehnten.
    /* * Dieser Arduino Nano Code wurde von newbiely.de entwickelt * Dieser Arduino Nano 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-nano/arduino-nano-ultrasonic-sensor */ #define TRIG_PIN 3 // The Arduino Nano pin connected to TRIG pin of ultrasonic sensor #define ECHO_PIN 2 // The Arduino Nano pin connected to ECHO pin of ultrasonic sensor 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() { // Produce a 10-microsecond pulse to the TRIG pin. digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); // Measure the pulse duration from the 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.

Fordere dich heraus

Verwenden Sie für eines der folgenden Projekte einen Ultraschallsensor:

  • Der Aufbau eines Systems zur Kollisionsvermeidung für ein ferngesteuertes Auto.
  • Bestimmung des Füllstands einer Mülltonne.
  • Überwachung des Füllstands einer Mülltonne.
  • Automatisches Öffnen und Schließen einer Mülltonne. Hinweis: Siehe Arduino Nano - Servo Motor.

Ultraschallsensor-Anwendungen

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