Projekt 5 Ultraschallsensor

1. Beschreibung

image-20250509085643931

Der HC-SR04 Ultraschallsensor verwendet Sonar, um die Entfernung zu einem Objekt zu bestimmen, ähnlich wie Fledermäuse. Er bietet eine ausgezeichnete berührungslose Abstandserkennung mit hoher Genauigkeit und stabilen Messwerten in einem einfach zu verwendenden Paket. Er wird komplett mit einem Ultraschall-Sender- und Empfangsmodul geliefert.

Img

Der HC-SR04 oder der Ultraschallsensor wird in einer Vielzahl von Elektronikprojekten verwendet, um Hinderniserkennung und Abstandsmessanwendungen sowie verschiedene andere Anwendungen zu realisieren. Hier haben wir eine einfache Methode vorgestellt, um mit Arduino und einem Ultraschallsensor die Entfernung zu messen und wie man den Ultraschallsensor mit Arduino verwendet.

2. Spezifikation

  • Betriebsspannung: +5V DC

  • Ruhestrom: <2mA

  • Betriebsstrom: 15mA

  • Effektiver Winkel: <15°

  • Entfernungsbereich: 2cm – 300 cm

  • Genauigkeit: 0,3 cm

  • Messwinkel: 30 Grad

  • Trigger-Eingang Impulsbreite: 10µs

image-20250509085705309

3. Komponenten

Entwicklungsboard *1

8833 Motor Driver *1

Rotes LED Modul*1

Ultraschallsensor*1

img

img

img

image-20250509085643931

4P Dupont Kabel*1

USB Kabel*1

3P Dupont Kabel*1

image-20250509143737972

img

img

4. Funktionsprinzip

Wie auf dem obigen Bild gezeigt, ist es wie zwei Augen. Eines ist der Sender, das andere der Empfänger.

Das Ultraschallmodul sendet nach Auslösen eines Signals Ultraschallwellen aus. Wenn die Ultraschallwellen auf ein Objekt treffen und reflektiert werden, gibt das Modul ein Echo-Signal aus, sodass es die Entfernung des Objekts anhand der Zeitdifferenz zwischen dem Trigger-Signal und dem Echo-Signal bestimmen kann.

t ist die Zeit, die das ausgesendete Signal benötigt, um auf ein Hindernis zu treffen und zurückzukehren. Die Ausbreitungsgeschwindigkeit des Schalls in der Luft beträgt etwa 343 m/s, und Entfernung = Geschwindigkeit * Zeit. Da die Ultraschallwelle ausgesendet wird und zurückkommt, entspricht dies der doppelten Entfernung. Daher muss durch 2 geteilt werden, die vom Ultraschall gemessene Entfernung = (Geschwindigkeit * Zeit)/2.

Verwendungsmethode und Diagramm des Ultraschallmoduls:

  1. Verwenden Sie den GPIO-Pin, um ein High-Level-Signal von mindestens 10μs an den Trig-Pin des SR04 zu geben, um die Entfernungsmessung auszulösen.

  2. Nach dem Auslösen sendet das Modul automatisch acht 40KHz Ultraschallimpulse aus und erkennt, ob ein Signal zurückkommt. Dieser Schritt wird automatisch vom Modul ausgeführt.

  3. Wenn das Signal zurückkommt, gibt der Echo-Pin ein High-Level-Signal aus, dessen Dauer die Zeit vom Aussenden der Ultraschallwelle bis zum Empfang des Echos ist.

image-20250509143833078

Schaltplan des Ultraschallsensors:

image-20250509154035287

5. Anschlussdiagramm

image-20250509154107103

VCC, Trig, Echo und Gnd des Ultraschallsensors sind mit 5V(V), D12, D13 und Gnd(G) verbunden.

6. Testcode

//***************************************************************************
/*
 keyestudio 4wd BT Car
 lesson 5.1
 Ultrasonic Sensor
 http://www.keyestudio.com
*/ 
int trigPin = 12;    // Trigger
int echoPin = 13;    // Echo
long duration, cm, inches;
void setup() {
  //Serielle Schnittstelle starten
  Serial.begin (9600);
  //Eingänge und Ausgänge definieren
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
}

void loop() {
  // Der Sensor wird durch einen HIGH-Impuls von 10 oder mehr Mikrosekunden ausgelöst.
  // Geben Sie vorher einen kurzen LOW-Impuls, um einen sauberen HIGH-Impuls zu gewährleisten:
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
   // Lesen Sie das Signal vom Sensor: ein HIGH-Impuls, dessen
  // Dauer die Zeit (in Mikrosekunden) vom Senden
  // des Pings bis zum Empfang seines Echos von einem Objekt ist.
  duration = pulseIn(echoPin, HIGH);
   // Konvertieren Sie die Zeit in eine Entfernung
  cm = (duration/2) / 29.1;     // Teilen durch 29,1 oder multiplizieren mit 0,0343
  inches = (duration/2) / 74;   // Teilen durch 74 oder multiplizieren mit 0,0135
  Serial.print(inches);
  Serial.print("in, ");
  Serial.print(cm);
  Serial.print("cm");
  Serial.println();
  delay(250);
}
//***************************************************************************

7. Testergebnis

Nachdem der Code erfolgreich auf das V4.0 Board hochgeladen wurde, verbinden Sie die Verkabelung gemäß dem Schaltplan und schließen Sie dann den Computer über ein USB-Kabel an, um das Board mit Strom zu versorgen. Nach dem Einschalten öffnen Sie den seriellen Monitor und stellen die Baudrate auf 9600 ein.

Die erkannte Entfernung wird angezeigt, und die Einheit ist cm und Zoll. Blockieren Sie den Ultraschallsensor mit der Hand, wird der angezeigte Entfernungswert kleiner.

image-20250509154147537

8. Code-Erklärung

int trigPin - Dieser Pin ist definiert, um Ultraschallwellen zu senden, normalerweise Ausgang.

int echoPin - Dieser Pin ist als Empfangspin definiert, normalerweise Eingang.

cm = (duration/2) / 29.1 -

inches = (duration/2) / 74 -

Wir können die Entfernung mit der folgenden Formel berechnen:

distance = (Reisezeit/2) x Schallgeschwindigkeit

Die Schallgeschwindigkeit beträgt: 343 m/s = 0,0343 cm/µs = 1/29,1 cm/µs

Oder in Zoll: 13503,9 in/s = 0,0135 in/µs = 1/74 in/µs

Wir müssen die Reisezeit durch 2 teilen, da wir berücksichtigen müssen, dass die Welle gesendet wurde, das Objekt getroffen hat und dann zum Sensor zurückgekehrt ist.

9. Erweiterte Übung

Wir haben gerade die vom Ultraschall gemessene Entfernung angezeigt. Wie wäre es, die LED mit der gemessenen Entfernung zu steuern? Versuchen wir es und verbinden ein LED-Lichtmodul mit dem Pin D9.

image-20250509154232505

//*****************************************************************
/*
 keyestudio 4wd BT Car
 lesson 5.2
 Ultrasonic LED
 http://www.keyestudio.com
*/ 
int trigPin = 12;    // Trigger
int echoPin = 13;    // Echo
long duration, cm, inches;

void setup() {
  Serial.begin (9600);  //Serielle Schnittstelle starten
  pinMode(trigPin, OUTPUT);  //Definiere Ein- und Ausgänge
  pinMode(echoPin, INPUT);
}

void loop() 
{
  // Der Sensor wird durch einen HIGH-Impuls von 10 oder mehr Mikrosekunden ausgelöst.
  // Geben Sie vorher einen kurzen LOW-Impuls, um einen sauberen HIGH-Impuls zu gewährleisten:
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  // Lesen Sie das Signal vom Sensor: ein HIGH-Impuls, dessen
  // Dauer die Zeit (in Mikrosekunden) vom Senden
  // des Pings bis zum Empfang seines Echos von einem Objekt ist.
  duration = pulseIn(echoPin, HIGH);
  // Konvertieren Sie die Zeit in eine Entfernung
  cm = (duration/2) / 29.1;     // Teilen durch 29,1 oder multiplizieren mit 0,0343
  inches = (duration/2) / 74;   // Teilen durch 74 oder multiplizieren mit 0,0135
  Serial.print(inches);
  Serial.print("in, ");
  Serial.print(cm);
  Serial.print("cm");
  Serial.println();
  delay(250);
  if (cm>=2 && cm<=10)
  {
    Serial.println("HIGH");
    digitalWrite(9, HIGH);
  }
  else
  {
    Serial.println("LOW");
    digitalWrite(9, LOW);
  }
}
//*****************************************************************

Nachdem der Code erfolgreich auf das V4.0 Board hochgeladen wurde, verbinden Sie die Verkabelung gemäß dem Schaltplan und schließen Sie dann den Computer über ein USB-Kabel an, um das Board mit Strom zu versorgen. Nach dem Einschalten blockieren Sie den Ultraschallsensor mit der Hand (der Abstand liegt zwischen 2-10 cm) und prüfen, ob die LED leuchtet.