In diesem Artikel werden wir das Ultraschall-Entfernungsmesser-Sonar HC-SR04 mit dem Arduino verbinden.
Notwendig
- -Arduino;
- - Ultraschallsensor HC-SR04;
- - Anschlussdrähte.
Anweisungen
Schritt 1
Die Wirkungsweise des Ultraschall-Entfernungsmessers HC-SR04 basiert auf dem Prinzip der Echoortung. Es sendet Schallimpulse in den Weltraum und empfängt ein von einem Hindernis reflektiertes Signal. Die Entfernung zum Objekt wird durch die Laufzeit der Schallwelle zum Hindernis und zurück bestimmt.
Die Schallwelle wird durch Anlegen eines positiven Impulses von mindestens 10 Mikrosekunden an den TRIG-Schenkel des Entfernungsmessers ausgelöst. Sobald der Impuls endet, sendet der Entfernungsmesser eine Reihe von Schallimpulsen mit einer Frequenz von 40 kHz in den Raum davor. Gleichzeitig wird der Algorithmus zur Bestimmung der Verzögerungszeit des reflektierten Signals gestartet und eine logische Einheit erscheint auf dem ECHO-Zweig des Entfernungsmessers. Sobald der Sensor das reflektierte Signal erkennt, erscheint am ECHO-Pin eine logische Null. Die Dauer dieses Signals (im Bild „Echoverzögerung“) bestimmt die Entfernung zum Objekt.
Entfernungsmessbereich des Entfernungsmessers HC-SR04 - bis zu 4 Meter mit einer Auflösung von 0,3 cm Beobachtungswinkel - 30 Grad, effektiver Winkel - 15 Grad. Die Stromaufnahme im Standby-Modus beträgt 2 mA, im Betrieb - 15 mA.
Schritt 2
Die Stromversorgung des Ultraschall-Entfernungsmessers erfolgt mit einer Spannung von +5 V. Die anderen beiden Pins werden mit beliebigen digitalen Ports des Arduino verbunden, wir werden mit 11 und 12 verbinden.
Schritt 3
Jetzt schreiben wir eine Skizze, die den Abstand zum Hindernis bestimmt und an die serielle Schnittstelle ausgibt. Zuerst stellen wir die Nummern der TRIG- und ECHO-Pins ein - dies sind die Pins 12 und 11. Dann deklarieren wir den Trigger als Ausgang und Echo als Eingang. Wir initialisieren die serielle Schnittstelle mit 9600 Baud. Bei jeder Wiederholung der Schleife () lesen wir die Distanz und geben sie an den Port aus.
Die Funktion getEchoTiming() erzeugt einen Triggerimpuls. Es erzeugt lediglich einen Strom von 10 Mikrosekunden Impuls, der ein Auslöser für den Beginn der Abstrahlung durch den Entfernungsmesser eines Schallpakets in den Weltraum ist. Dann erinnert sie sich an die Zeit vom Beginn der Übertragung der Schallwelle bis zum Eintreffen des Echos.
Die Funktion getDistance() berechnet die Entfernung zum Objekt. Aus dem Physikkurs der Schule erinnern wir uns, dass die Entfernung gleich der Geschwindigkeit multipliziert mit der Zeit ist: S = V * t. Die Schallgeschwindigkeit in der Luft beträgt 340 m / s, die uns bekannte Zeit in Mikrosekunden ist "Dauer". Um die Zeit in Sekunden zu erhalten, dividiere durch 1.000.000. Da der Schall die doppelte Entfernung zurücklegt - zum Objekt und zurück - müssen Sie die Entfernung halbieren. Es stellt sich also heraus, dass die Entfernung zum Objekt S = 34000 cm / sec * Dauer / 1.000.000 sec / 2 = 1,7 cm / sec / 100 ist, die wir in die Skizze geschrieben haben. Der Mikrocontroller führt die Multiplikation schneller als die Division durch, daher habe ich "/100" durch das Äquivalent "* 0, 01" ersetzt.
Schritt 4
Außerdem wurden viele Bibliotheken geschrieben, um mit einem Ultraschall-Entfernungsmesser zu arbeiten. Zum Beispiel dieses hier: https://robocraft.ru/files/sensors/Ultrasonic/HC-SR04/ultrasonic-HC-SR04.zip. Die Bibliothek wird standardmäßig installiert: herunterladen, in das Bibliotheksverzeichnis entpacken, das sich im Ordner mit der Arduino-IDE befindet. Danach kann die Bibliothek genutzt werden.
Nachdem wir die Bibliothek installiert haben, schreiben wir eine neue Skizze. Das Ergebnis seiner Arbeit ist das gleiche - der Monitor der seriellen Schnittstelle zeigt die Entfernung zum Objekt in Zentimetern an. Schreibt man in der Skizze float dist_cm = ultraschall. Ranging (INC), dann wird die Distanz in Zoll angezeigt.
Schritt 5
Also haben wir den Ultraschall-Entfernungsmesser HC-SR04 mit dem Arduino verbunden und auf zwei verschiedene Arten Daten davon empfangen: mit einer speziellen Bibliothek und ohne.
Der Vorteil bei der Nutzung der Bibliothek besteht darin, dass der Codeaufwand deutlich reduziert und die Lesbarkeit des Programms verbessert wird, man sich nicht in die Feinheiten des Gerätes vertiefen muss und es sofort einsetzen kann. Das ist aber auch der Nachteil: Man versteht weniger gut, wie das Gerät funktioniert und welche Prozesse darin ablaufen. Welche Methode Sie verwenden, liegt in jedem Fall bei Ihnen.