Projekt 5 Ultraschallsensor
1. Beschreibung

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.

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

3. Komponenten
Entwicklungsboard *1 |
8833 Motor Driver *1 |
Rotes LED Modul*1 |
Ultraschallsensor*1 |
|---|---|---|---|
|
|
|
|
4P Dupont Kabel*1 |
USB Kabel*1 |
3P Dupont Kabel*1 |
|
|
|
|
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:
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.
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.
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.

Schaltplan des Ultraschallsensors:

5. Anschlussdiagramm

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.

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.

//*****************************************************************
/*
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.





