Ziel des Projekts
Der Ultraschallsensor HC-SR04 misst die Entfernung eines sich bewegenden Objekts und zeigt Die Werte im Seriellen Monitor an.


Die Hardware

Der Ultraschallsensor HC-SR04 arbeitet nach einem einfachen Prinzip:

„Der Ultraschallsensor strahlt zyklisch einen kurzen, hochfrequenten Schallimpuls aus. Dieser pflanzt sich mit Schallgeschwindigkeit in der Luft fort.
Trifft er auf ein Objekt, wird er dort reflektiert und gelangt als Echo zurück zum Ultraschallsensor. Aus der Zeitspanne zwischen dem Aussenden des Schallimpulses und dem Empfang des Echosignals berechnet der Ultraschallsensor intern die Entfernung zum Objekt.“
Quelle: 🔗microsonic.de
Der Schaltplan


Damit der Ultraschallsensor ordnungsgemäß arbeiten kann, musst du ihn so in das Steckbrett setzen, dass Sender und Empfänger nach vorn zeigen, damit das Signal ungehindert gesendet und empfangen werden kann. Die Leitungsdrähte werden auf der Rückseite eingesteckt.
Das Programm
Im Programm sendet der Befehl pulseIn() ein HIGH-Signal, startet einen Timer und wartet anschließend darauf, dass das Signal wieder zurückkommt (den Wert LOW hat). Daraufhin wird der Timer gestoppt und die Zeitspanne zwischen dem Senden des Signal (Trigger) und seiner Rückkehr (Echo) wird in Mikrosekunden ermittelt.
Die Geschwindigkeit des Schalls in der Luft beträgt 343,20 m/s. Dieser Wert muss in cm/µs (cm/Mikrosekunde) umgerechnet werden.
| Umrechnung in cm | 343,2 m • 100 = 34.320 cm |
| Strecke pro ms (Millisekunde) | 34.320 : 1.000 = 34,32 cm/ms |
| Strecke pro µs (Mikrosekunde) | 34,32 : 1.000 = 0,03432 cm/µs |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
// Senden und Empfangen #define SENDEN 9 #define ECHO 8 void setup() { pinMode(SENDEN, OUTPUT); pinMode(ECHO, INPUT); Serial.begin(9600); } void loop() { long Entfernung = 0; // Sender kurz ausschalten um Störungen des Signal zu vermeiden digitalWrite(SENDEN, LOW); delay(5); // Signal senden digitalWrite(SENDEN, HIGH); delayMicroseconds(10); digitalWrite(SENDEN, LOW); // pulseIn -> Zeit messen, bis das Signal zurückkommt long Zeit = pulseIn(ECHO, HIGH); // Entfernung in cm berechnen Entfernung = (Zeit / 2) * 0.03432; // Entfernung anzeigen Serial.print("Entfernung in cm: "); Serial.println(Entfernung); delay(1000); } |
Ähnliche Projekte
Letzte Aktualisierung: