Ultraschallsensor am Arduino auswerten + Abstand und Entfernung messen
Mit dem Arduino lässt sich die Entfernung zu anderen Objekten recht einfach messen: Neben dem Arduino braucht man dazu nur einen Ultraschallsensor wie zum Beispiel den recht günstigen Sensor “HC-SR04” (im 5er Set ca. 10 EUR bei Amazon). Dieser hat einen Sender und einen Empfänger: Über den Sender wird ein nicht hörbares Ultraschall-Signal abgegeben, das der Empfänger als Echo wieder auffängt, wenn es von anderen Objekten wie Wänden oder Hindernissen reflektiert wird.
Über den zeitlichen Abstand zwischen dem Aussenden und dem Empfangen des Signals lässt sich so die Distanz des Hindernisses berechnen: Mit dem Sensor lässt sich also auf 2-3 Zentimeter genau der Abstand zu anderen Objekten erkennen.
Abstand und Entfernung messen
Der HC-SR04 Sensor wird über den Arduino mit Strom versorgt (5V) und an zwei digitale Pins angeschlossen: Über den einen wird das Signal (“trigger”) gesendet, über den anderen die reflektierte Schallwelle (“echo”) empfangen. Mit einem kleinen Programm lässt sich das dann auswerten und die Entfernung anhand der Zeit berechnen.
Zur Demonstration nutzen wir zwei LEDs: Eine grüne, die leuchtet wenn der Abstand größer als 50cm ist und eine rote LED, die leuchtet wenn der Abstand geringer wird. Zusätzlich kann man sich die berechnete Entfernung auch über den Serial-Monitor in der Arduino-Software ausgeben lassen, was bei der Kontrolle und Fehlerfindung hilft.
Anschluss des HC-SR04 Sensors an den Arduino
Der HC-SR04 Ultraschall-Sensors hat vier Pins: VCC, GND, Echo und Trigger. VCC wird mit dem 5V Pin des Arduino verbunden, GND mit einem GND-Pin. Der Echo-Pin wird mit dem Pin D6 verbunden und der Trigger-Pin mit Pin D5.
Programm zum Messen von Abstand und Entfernung
Dieses Programm definiert zunächst die Pins und die Variablen für Entfernung und Dauer des Signals. Bei den Pins werden Pin Drei und Vier später für die LEDs benutzt, Pin Sechs und Sieben für das Senden und Empfangen des Ultraschall-Signals.
long dauer=0; long entfernung=0; int ledgruen=3; int ledrot=4; int trigger=5; int echo=6; void setup() { Serial.begin (9600); // Monitor starten pinMode(ledgruen, OUTPUT); pinMode(ledrot, OUTPUT); pinMode(trigger, OUTPUT); // Trigger (gelb) pinMode(echo, INPUT); // Echo (grün) } void loop() { digitalWrite(trigger, LOW); delay(5); digitalWrite(trigger, HIGH); delay(10); digitalWrite(trigger, LOW); dauer = pulseIn(echo, HIGH); entfernung = (dauer/2) * 0.03432; if (entfernung >= 1000 || entfernung < = 0) { Serial.print("Ungenauer Wert: "); Serial.print(entfernung); Serial.println(" cm"); digitalWrite(ledgruen, LOW); digitalWrite(ledrot, LOW); delay(1000); } else { Serial.print(entfernung); Serial.println(" cm"); if (entfernung > 50) { digitalWrite(ledgruen, HIGH); digitalWrite(ledrot, LOW); delay(1000); } else if (entfernung < 50) { digitalWrite(ledgruen, LOW); digitalWrite(ledrot, HIGH); delay(500); } } }
Im Hauptprogramm wird dann Zehn Millisekunden lang ein Signal über den trigger-Pin (5) gesendet und dann die verstrichene Zeit zwischen dem Senden und dem Empfangen mit dem Befehl pulseIn() abgefragt: Dieser zählt die Zeit in Millisekunden, bis der Echo-Pin ein "High"-Signal empfängt. Der Wert wird dann durch Zwei geteilt, da das Signal den doppelten Weg zurücklegen musste - vom Sender zum Hindernis und wieder zurück. Dieser Wert wird dann mit der Schallgeschwindigkeit in Zentimetern multipliziert. Am Ende enthält die Variable "entfernung" einen relativ genauen Wert, der den Abstand eines Objektes zum Sensor beschreibt.
Da es trotzdem manchmal zu Fehlinterpretationen kommen kann, wird zunächst geprüft, ob der Wert über 1000cm (10m) liegt: Hier arbeitet der Sensor längst nicht mehr genau genug, um eine Auswertung zu berechnen. Wenn nicht, wird geprüft ob der Wert größer als 50 ist: Bei einem Abstand von mehr als 50cm leuchtet dann die grüne LED. Beträgt der Abstand allerdings weniger als 50cm, soll die rote LED zur Warnung aufleuchten.
- datenschutz (46x gelesen)
- windows-beschleunigen (45x gelesen)
- windows-schneller-starten-autostart-aufraeumen (32x gelesen)
- pc-einsteigerkurs (22x gelesen)
- pc-einsteigerkurs-3-2 (9x gelesen)
Mehr Tipps zu Ultraschallsensor am Arduino auswert...
-
OpenOffice / LibreOffice: Zeilenabstand ändern
So geht's: Den Zeilenabstand ändern in OpenOffice und LibreOffice! Wenn der normale Zeilenabstand im Dokument nicht ausreicht, kann man den Zeilenabstand leicht ändern: Zum Beispiel...
-
Snipping Tool stürzt ab und hängt sich auf – das hilft!
Wenn Microsofts Screenshot Programm, das Snipping Tool, regelmäßig abstürzt oder sich aufhängt, kann die Windows Reparatur-Funktion helfen. Wie man das Snipping Tool damit repariert, zeigen...
-
Raspberry Pi: GPIO Pins mit Python steuern
Mit der Programmiersprache lassen sich die GPIO Pins des Raspberry Pi ganz einfach steuern und damit zum Beispiel eine LED ein oder ausschalten oder blinken...
-
Seeeduino Nano mit der Arduino IDE programmieren
Um den Seeeduino Nano mit der Arduino IDE zu programmieren braucht man nicht viel: Außer dem Seeeduino, einem PC und einem USB-C Kabel fehlen nur...
-
Seeeduino Nano: Ersatz für den Arduino mit Grove Port
Der Seeeduino Nano sieht dem Arduino Nano optisch sehr ähnlich: Bis auf die Farbe. Auf im arbeitet ebenfalls ein Atmega328P 8-bit Microcontroller, und auch die...
-
Unterschied Arduino / ESP und Raspberry Pi!
In unserem Smart Home Forum kommt immer wieder einmal die Frage nach den Unterschieden von Arduino und Raspberry Pi auf: Mit beiden kann man einige...
- Netzwerk Messen
- Windows 7: Drucker Magic Color 2400W druckt 2 Streifen gleicher Abstand
- Datenverkehr der RouterLinks messen
- macOSX 10.6.8 und Arduino software
ich hab ein Powerbook 2.16GHz Intel Core Duo 667MHz mit Version MacOSX 10.6.8Mein Problem ist,...
- Im April: Kostenloser Arduino E-Book (statt 15,40€)
- WPA-Entfernung
Ultraschallsensor am Arduino auswerten + Abstand und Entfernung messen