Suchcode

Arduino-Code und Video für den HC-SR04 Ultraschall-Abstandssensor

Arduino-Code und Video für den HC-SR04 Ultraschall-Abstandssensor

In diesem Tutorial zeigen wir, wie man den HC-SR04 Ultraschall-Entfernungssensor mit einem Arduino verwendet. Der HC-SR04 ist eine kostengünstige und effektive Methode, Entfernungen mit Ultraschallwellen zu messen. Indem wir ein Signal senden und die Zeit messen, die das Echo benötigt, um zurückzukehren, können wir die Entfernung zu einem Objekt genau berechnen.

How HC-SR04 ulrasonic sensor work

Bei diesem Projekt geht es darum, den Sensor mit einem Arduino einzurichten und ein einfaches Programm zu schreiben, um die Abstandsmessungen auszulesen und anzuzeigen. Das Programm verwendet die NewPing-Bibliothek, um die Kommunikation mit dem Sensor zu vereinfachen. Wenn Sie eine visuelle Referenz oder weitere Erläuterungen zu einzelnen Schritten wünschen, sehen Sie sich unbedingt das Video (im Video bei 00:00) an.

Hardware erklärt

Der HC-SR04 Ultraschallsensor besteht aus zwei Hauptkomponenten: einem Sender und einem Empfänger. Der Sender sendet Ultraschallimpulse mit einer Frequenz oberhalb des menschlichen Hörbereichs, während der Empfänger auf das Echo dieser Impulse hört, nachdem sie von einem Objekt reflektiert wurden. Durch die Berechnung der Zeit zwischen dem Aussenden des Impulses und dem Empfangen des Echos können wir die Entfernung zum Objekt bestimmen.

Der Sensor hat zwei wesentliche Pins: den Trigger-Pin und den Echo-Pin. Der Trigger-Pin wird verwendet, um die Messung zu starten, indem er ein kurzes High-Signal sendet, während der Echo-Pin das reflektierte Signal empfängt und die Zeit misst, die das Echo für die Rückkehr benötigt.

Details zum Datenblatt

HerstellerHC-SR04
TeilenummerHC-SR04
Logik-/I/O-Spannung5 V
Versorgungsspannung5 V
Ausgangsstrom (pro Kanal)15 mA
Spitzenstrom (pro Kanal)20 mA
Hinweise zur PWM-FrequenzNicht zutreffend
Logik-Eingangsschwellen0.3 V (niedrig), 0.7 V (hoch)
Spannungsabfall / RDS(on)/ SättigungNicht zutreffend
Thermische Grenzwerte0 °C bis 70 °C
PaketModul
Hinweise / VariantenMaximale Reichweite 400 cm

  • Stellen Sie eine ordnungsgemäße Stromversorgung (5 V) sicher.
  • Halten Sie den Sensor sauber, um genaue Messwerte zu erhalten.
  • Verwenden Sie den Trigger-Pin, um Messungen zu starten.
  • Überschreiten Sie nicht die maximale Entfernung für zuverlässige Ergebnisse.
  • Halten Sie einen freien Weg, damit die Ultraschallwellen zurückreflektiert werden können.
  • Verwenden Sie Entkopplungskondensatoren in der Nähe der Versorgungspins.
  • Achten Sie auf Umgebungsgeräusche, die Messwerte beeinträchtigen könnten.
  • Teste verschiedene Abstände, um dich mit dem Sensor vertraut zu machen.

Verdrahtungsanleitung

Arduino Wiring for HC-SR04 ulrasonic sensor
Arduino Wiring for HC-SR04 ulrasonic sensor
Arduino Wiring for HC-SR04 ulrasonic sensor
Arduino Wiring for HC-SR04 ulrasonic sensor

Um den HC-SR04-Ultraschallsensor an Ihr Arduino anzuschließen, gehen Sie wie folgt vor:

  • Verbinden Sie dieVCCPin des HC-SR04 an den 5V-Pin des Arduino
  • Verbinden Sie dasGNDPin des HC-SR04 an einen GND-Pin am Arduino.
  • Verbinden Sie dasTRIGVerbinde den Pin des HC-SR04 (der normalerweise blau ist) mit dem digitalen Pin 12 am Arduino.
  • Verbinden Sie dieECHOVerbinde den Pin des HC-SR04 (der normalerweise grün ist) mit dem digitalen Pin 11 am Arduino.

Stellen Sie sicher, dass die Verbindungen fest sitzen, um instabile Messwerte zu vermeiden. Wenn Sie eine andere Konfiguration verwenden oder eine alternative Verkabelung haben, sehen Sie sich das Video für zusätzliche Hinweise an (im Video bei 00:00).

Code-Beispiele & Schritt-für-Schritt-Anleitung

Der folgende Code initialisiert die NewPing-Bibliothek und richtet die Pins für den HC-SR04-Sensor ein. Zu den Hauptbestandteilen gehört die Definition der Trigger- und Echo-Pins sowie der maximalen Distanz.

#define TRIGGER_PIN  12  // Trigger pin
#define ECHO_PIN     11  // Echo pin
#define MAX_DISTANCE 200  // Max distance in cm

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // Set up NewPing

In diesem Auszug, derTRIGGER_PINundECHO_PINsind auf die digitalen Pins 12 bzw. 11 eingestellt. DieMAX_DISTANCEwird als 200 cm definiert, was die maximale Entfernung ist, die Sie messen möchten.

Als Nächstes haben wir die setup-Funktion, in der der serielle Monitor initialisiert wird, um die Ergebnisse anzuzeigen:

void setup() {
  Serial.begin(115200); // Initialize serial monitor
}

Dieser Code öffnet die serielle Kommunikation mit einer Baudrate von 115200, sodass wir die Abstandsmessungen im seriellen Monitor sehen können.

Schließlich misst die loop()-Funktion die Entfernung und prüft, ob sie kleiner oder gleich 12 cm ist:

void loop() {
  delay(50); // Wait between pings
  int distance = sonar.ping_cm(); // Measure distance
  if(distance <=12){ // Check distance
    Serial.println("Very close"); // Print if very close
  }
}

In demloop(), wir fügen eine Verzögerung von 50 Millisekunden ein, um die Messfrequenz zu steuern. Die Entfernung wird gemessen, und wenn sie kleiner oder gleich 12 cm ist, wird "Sehr nah" auf dem seriellen Monitor ausgegeben.

Den vollständigen Code finden Sie im Abschnitt „Laden“ unter dem Artikel.

Demonstration / Was Sie erwartet

Wenn Sie das Programm ausführen, misst der Arduino kontinuierlich den Abstand zum nächstgelegenen Objekt. Er sollte den Abstand in Zentimetern ausgeben und Sie mit "Sehr nah" benachrichtigen, wenn ein Objekt innerhalb von 12 cm erkannt wird. Ist das Objekt zu nahe, können die Messwerte ungenau sein oder ganz ausbleiben, wie im Video erwähnt (im Video bei 10:00).

Stellen Sie sicher, dass der Sensor richtig positioniert ist und dass keine Hindernisse die Ultraschallwellen blockieren. Wenn alles korrekt eingerichtet ist, sollten im seriellen Monitor stabile Messwerte angezeigt werden.

Video-Zeitstempel

  • 00:00- Einführung in den HC-SR04
  • 01:30Sensor anschließen
  • 03:00- Überblick über den Code
  • 05:00- Programm ausführen
  • 07:30- Entfernungen messen

Bilder

Arduino Wiring for HC-SR04 ulrasonic sensor
Arduino Wiring for HC-SR04 ulrasonic sensor
Arduino Wiring for HC-SR04 ulrasonic sensor
Arduino Wiring for HC-SR04 ulrasonic sensor
HC-SR04 ulrasonic sensor
HC-SR04 ulrasonic sensor
How HC-SR04 ulrasonic sensor work
How HC-SR04 ulrasonic sensor work
42-This is the Arduino code for the HC-SR04 ultrasonic distance sensor.
Sprache: C++
/*
 * This is the Arduino code for the HC-SR04 Ultrasonic Distance Sensor
 * to measure the distance using Arduino for a robotic car and other applications
 * Watch the video https://youtu.be/QI9541YQq7M
 * 
 * Written by Ahmad Shamshiri for Robojax Video
 * Date: December 21, 2017, in Ajax, Ontario, Canada
 * Permission granted to share this code given that this
 * note is kept with the code.
 * Disclaimer: this code is "AS IS" and for educational purposes only.
 * 
 */

/* Original Code 
// https://playground.arduino.cc/Code/NewPing
 * Modified for Robojax video on December 21, 2017

 */

// ---------------------------------------------------------------------------
// Example NewPing library sketch that does a ping about 20 times per second.
// ---------------------------------------------------------------------------

#include <NewPing.h>

#define TRIGGER_PIN  12  // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN     11  // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 200 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.

void setup() {
  Serial.begin(115200); // Open serial monitor at 115200 baud to see ping results.
}

void loop() {
  delay(50);                     // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.
  Serial.print("Ping: ");
  Serial.print(sonar.ping_cm()); // Send ping, get distance in cm and print result (0 = outside set distance range)
  Serial.println("cm");
  int distance = sonar.ping_cm();// store the distance value in "distance" variable
  if(distance <=12){             // if distance is less than 12, do something. For example, here just print "very close"
    Serial.println("Very close");
  }
}

Ressourcen & Referenzen

Dateien📁

Keine Dateien verfügbar.