Wie misst man den Abstand zwischen zwei Punkten mit Arduino?

In der Elektronik werden meistens Ultraschallsensoren verwendet, um die Entfernung von einem bestimmten Punkt zu einem anderen zu messen. Es ist sehr einfach einen Code auf das Arduino Board zu schreiben und ein Ultraschallsensor diese Aufgabe zu erfüllen. Aber in diesem Artikel werden wir einen anderen Ansatz verfolgen. Wir werden zwei separate Ultraschallsensoren verwenden, die mit zwei separaten Arduinos integriert werden. Diese beiden Module werden an zwei verschiedenen Punkten platziert, zwischen denen der Abstand gemessen werden soll. Ein Sensor wird zum Empfänger und der andere zum Sender. Auf diese Weise können wir den Abstand zwischen ihnen messen, indem wir einfach die Position des Senders mit vielen Ultraschallempfängern lokalisieren. Die Technik, die wir hier verwenden, heißt Triangulation.

Die hier verwendete Technik ist nur bei kleinen Systemen nützlich, bei denen eine geringe Entfernung zu finden ist. Um es im großen Stil zu implementieren, sind sicherlich einige Modifikationen erforderlich. Alle Herausforderungen, die bei der Durchführung dieses Projekts aufgetreten sind, werden im Folgenden erörtert.

Wie verwendet man Arduino und Ultraschallsensor, um die Entfernung zu messen?

Da wir die Zusammenfassung hinter dem Projekt kennen, lassen Sie uns weitermachen und weitere Informationen sammeln, um das Projekt zu starten.

Schritt 1: Sammeln der Komponenten (Hardware)

Wenn Sie während eines Projekts keine Unannehmlichkeiten vermeiden möchten, erstellen Sie am besten eine vollständige Liste aller Komponenten, die wir verwenden werden. Der zweite Schritt, bevor Sie mit dem Erstellen der Schaltung beginnen, besteht darin, alle diese Komponenten kurz zu studieren. Eine Liste aller Komponenten, die wir in diesem Projekt benötigen, finden Sie unten.

Schritt 2: Sammeln der Komponenten (Software)

Entwerfen Sie nach dem Herunterladen des Proteus 8 Professional die Schaltung darauf. Ich habe hier Softwaresimulationen eingefügt, damit es für Anfänger bequem sein kann, die Schaltung zu entwerfen und entsprechende Verbindungen an der Hardware herzustellen.

Schritt 3: Arbeiten des HCR-05

Da wir jetzt die Hauptzusammenfassung unseres Projekts kennen, lassen Sie uns weitermachen und eine kurze Studie über die Arbeit von HCR-05. Sie können die Hauptfunktion dieses Sensors anhand des folgenden Diagramms verstehen.

Dieser Sensor hat zwei Pins, Auslösestift, und Öko-Pin die beide verwendet werden, um den Abstand zwischen zwei bestimmten Punkten zu messen. Der Vorgang wird durch das Senden einer Ultraschallwelle vom Sensor eingeleitet. Diese Aufgabe wird durch Auslösen des Trig-Pins für 10us erledigt. Sobald diese Aufgabe erledigt ist, wird vom Sender ein 8-Sonic-Burst von Ultraschallwellen gesendet. Diese Welle breitet sich in der Luft aus und sobald sie auf ein Objekt trifft, schlägt sie zurück und wird vom im Sensor eingebauten Empfänger empfangen.

Wenn die Ultraschallwelle vom Empfänger nach der Reflexion des Sensors empfangen wird, wird die Öko-Pinzu einem hohen Zustand. Dieser Pin bleibt für die Dauer im High-Zustand, die genau der Zeit entspricht, die die Ultraschallwelle benötigt, um vom Sender und zurück zum Empfänger des Sensors zu wandern.

So machen Sie Ihren Ultraschallsensor nur Sender,Machen Sie einfach den Trig-Pin als Ausgangspin und senden Sie einen hohen Impuls für 10us an diesen Pin. Sobald dies geschehen ist, wird ein Ultraschallstoß ausgelöst. Immer wenn die Welle gesendet werden soll, muss also nur der Triggerpin des Ultraschallsensors angesteuert werden.

Es gibt keine Möglichkeit, den Ultraschallsensor als nur Empfänger weil der Anstieg des ECO-Pins nicht vom Mikrocontroller gesteuert werden kann, da er mit dem Trig-Pin des Sensors zusammenhängt. Aber eines können wir tun: Wir können den Sender dieses Ultraschallsensors mit Klebeband so abdecken, dass keine UV-Welle nach außen dringt. Dann wird der ECO-Pin dieses Senders vom Sender nicht beeinflusst.

Schritt 4: Arbeiten der Schaltung

Da wir nun beide Sensoren so gestaltet haben, dass sie getrennt als Sender und Empfänger arbeiten, gibt es hier ein großes Problem. Der Empfänger kennt die Zeit, die die Ultraschallwelle vom Sender zum Empfänger benötigt, nicht, da er nicht genau weiß, wann diese Welle gesendet wurde.

Um dieses Problem zu lösen, müssen wir eine HOCH Signal an den ECO des Empfängers, sobald die Ultraschallwelle vom Sendersensor gesendet wird. Oder vereinfacht gesagt, dass der ECO des Empfängers und der Trigger des Senders gleichzeitig auf HIGH gesendet werden sollen. Um dies zu erreichen, werden wir den Trigger des Empfängers irgendwie hochfahren lassen, sobald der Trigger des Senders hoch geht. Dieser Trigger des Empfängers bleibt hoch, bis der ECO-Pin geht NIEDRIG. Wenn ein Ultraschallsignal vom ECO-Pin des Empfängers empfangen wird, geht es auf LOW. Dies bedeutet, dass der Trigger des Sendersensors gerade ein HIGH-Signal erhalten hat. Sobald der ECO niedrig wird, warten wir auf die bekannte Verzögerung und setzen den Trigger des Empfängers auf HIGH. Auf diese Weise werden die Trigger beider Sensoren synchronisiert und die Entfernung wird berechnet, indem die Zeitverzögerung der Wellenbewegung bekannt ist.

Schritt 5: Zusammenbau der Komponenten

Obwohl wir nur den Sender des einen Ultraschallsensors und den Empfänger des anderen verwenden, ist es zwingend erforderlich, alle vier Pins des Ultraschallsensor zum Arduino. Um die Schaltung anzuschließen, gehen Sie wie folgt vor:

  1. Nehmen Sie zwei Ultraschallsensoren. Decken Sie den Empfänger des ersten Sensors und den Sender des zweiten Sensors ab. Verwenden Sie dazu weißes Klebeband und stellen Sie sicher, dass diese beiden vollständig abgedeckt sind, damit kein Signal den Sender des zweiten Sensors verlässt und kein Signal in den Empfänger des ersten Sensors gelangt.
  2. Verbinden Sie zwei Arduino auf zwei separaten Steckbrettern und verbinden Sie ihre jeweiligen Sensoren mit ihnen. Verbinden Sie den Trigger-Pin mit Pin9 des Arduino und ecoPin mit dem Pin10 des Arduino. Schalten Sie den Ultraschallsensor mit den 5V von Arduino ein und teilen Sie alle Gründe.
  3. Laden Sie den Empfängercode zum Arduino des Empfängers und den Sendercode zum Arduino des Senders hoch.
  4. Öffnen Sie nun den seriellen Monitor der Empfangsseite und notieren Sie die gemessene Entfernung.

Der Schaltplan dieses Projekts sieht so aus:

Schritt 6: Erste Schritte mit Arduino

Wenn Sie mit der Arduino IDE noch nicht vertraut sind, machen Sie sich keine Sorgen, denn im Folgenden wird eine Schritt-für-Schritt-Anleitung zum Einrichten und Verwenden der Arduino IDE mit einem Mikrocontroller-Board erklärt.

  1. Laden Sie die neueste Version der Arduino IDE von Arduino herunter.
  2. Verbinden Sie Ihr Arduino Nano Board mit Ihrem Laptop und öffnen Sie die Systemsteuerung. Klicken Sie in der Systemsteuerung aufHardware und Sound. Klicken Sie nun aufGeräte und Drucker.Suchen Sie hier den Port, an dem Ihr Mikrocontroller-Board angeschlossen ist. In meinem Fall ist es COM14aber es ist auf verschiedenen Computern unterschiedlich.
  3. Klicken Sie auf das Werkzeugmenü. und stelle das Brett auf Arduino Nano aus dem Dropdown-Menü.
  4. Stellen Sie im selben Tool-Menü den Port auf die Portnummer ein, die Sie zuvor im . beobachtet haben Geräte und Drucker.
  5. Stellen Sie im selben Werkzeugmenü den Prozessor auf ATmega328P (alter Bootloader).
  6. Laden Sie den unten angehängten Code herunter und fügen Sie ihn in Ihre Arduino-IDE ein. Klick auf das hochladen Taste, um den Code auf Ihrem Mikrocontroller-Board zu brennen.

Klicken Sie hier, um den Code herunterzuladen.

Schritt 7: Den Code verstehen

Der in diesem Projekt verwendete Code ist sehr einfach und recht gut kommentiert. Im angehängten Ordner befinden sich zwei Codedateien. Code für den Sender und ein Code für die Empfängerseite werden beide getrennt angegeben. Wir werden diese Codes in die beiden jeweiligen Arduino-Boards hochladen. Obwohl es selbsterklärend ist, wird es im Folgenden kurz beschrieben.

Code für Senderseite

1. Zu Beginn werden Pins des Arduino-Boards initialisiert, die mit dem Ultraschallsensor verbunden werden. Dann werden die Variablen deklariert, in denen während der Laufzeit des Codes Werte für die Berechnung von Zeit und Distanz gespeichert werden.

// definiert Pin-Nummern const int trigPin = 9; // Verbinden Sie den Trig-Pin des Ultraschallsensors mit Pin9 von Arduino const int echoPin = 10; // Verbinden Sie den Eco-Pin des Ultraschallsensors mit Pin10 von Arduino // definiert Variablen lange Dauer; // variabel, um die Zeit zu speichern, die die Ultraschallwelle t int Strecke zurücklegt; // Variable zum Speichern der berechneten Entfernung

2. Void-Setup ()ist eine Funktion, die nur einmal beim Start ausgeführt wird, wenn die Platine eingeschaltet oder die Freigabetaste gedrückt wird. Hier werden beide Pins von Arduino als zu verwenden deklariert EINGANG und AUSGABE. In dieser Funktion wird die Baudrate eingestellt. Baudrate ist die Geschwindigkeit in Bits pro Sekunde, mit der der Mikrocontroller mit dem Ultraschallsensor kommuniziert.

Void setup () { PinMode (trigPin, AUSGANG); // Setzt den trigPin als Output pinMode (echoPin, INPUT); // Setzt den echoPin als Input Serial.begin(9600); // Startet die serielle Kommunikation }

3. Leere Schleife ()ist eine Funktion, die immer wieder in einer Schleife läuft. Hier haben wir den Mikrocontroller so codiert, dass er für 20 Mikrosekunden ein HIGH-Signal an den Trigger-Pin des Ultraschallsensors sendet und ein LOW-Signal an diesen sendet.

Void loop () {// Setzt den trigPin auf HIGH-Zustand für 10 Mikrosekunden digitalWrite (trigPin, HIGH); // ein HIGH-Signal beim Trigger des ersten Sensors senden delayMicroseconds (10); // 10 Mikrosekunden warten digitalWrite (trigPin, LOW); // ein LOW-Signal an den Trigger der ersten Sensorverzögerung senden (2); // warte 0,2 Sekunden }

Code für Empfängerseite

1. Zu Beginn werden Pins des Arduino-Boards initialisiert, die mit dem Ultraschallsensor verbunden werden. Dann werden die Variablen deklariert, in denen während der Laufzeit des Codes Werte für die Berechnung von Zeit und Distanz gespeichert werden.

// definiert Pin-Nummern const int trigPin = 9; // Verbinden Sie den Trig-Pin des Ultraschallsensors mit Pin9 von Arduino const int echoPin = 10; // Verbinden Sie den Eco-Pin des Ultraschallsensors mit Pin10 von Arduino // definiert Variablen lange Dauer; // variabel, um die Zeit zu speichern, die die Ultraschallwelle t int Strecke zurücklegt; // Variable zum Speichern der berechneten Entfernung

2. Void-Setup ()ist eine Funktion, die nur einmal beim Start ausgeführt wird, wenn die Platine eingeschaltet oder die Freigabetaste gedrückt wird. Hier werden beide Pins von Arduino als INPUT und OUTPUT deklariert. In dieser Funktion wird die Baudrate eingestellt. Die Baudrate ist die Geschwindigkeit in Bit pro Sekunde, mit der der Mikrocontroller mit dem Ultraschallsensor kommuniziert.

Void setup () { PinMode (trigPin, AUSGANG); // Setzt das trigPin als Output pinMode (echoPin, INPUT); // Setzt den echoPin als Input Serial.begin(9600); // Startet die serielle Kommunikation}

3. void Trigger_US() ist eine Funktion, die zum Fake Triggering des Triggerpins des zweiten Ultraschallsensors aufgerufen wird. Wir werden die Triggerzeit des Trigger-Pins beider Sensoren synchronisieren.

Void Trigger_US () {// Fake-Trigger des US-Sensors digitalWrite (trigPin, HIGH); // Senden Sie ein HIGH-Signal an den Trigger-Pin des zweiten Sensors delayMicroseconds (10); // 10 Mikrosekunden warten digitalWrite (trigPin, LOW); // ein LOW-Signal an den zweiten Sender des Trigger-Pins senden}

4. void Calc()ist eine Funktion, die verwendet wird, um die Zeit zu berechnen, die das Ultraschallsignal benötigt, um vom ersten Sensor zum zweiten Sensor zu gelangen.

void Calc () // Funktion zum Berechnen der Zeit, die die Ultraschallwelle benötigt, um sich fortzubewegen {Dauer = 0; // Dauer zunächst auf Null gesetzt Trigger_US(); // Aufruf der Funktion Trigger_US while (digitalRead(echoPin)==HIGH); // während der Status des eo-Pins in hoher Verzögerung (2); // setze eine Verzögerung von 0,2 Sekunden ein Trigger_US(); // Aufruf der Funktion Trigger_US Dauer = pulseIn (echoPin, HIGH); // berechne die benötigte Zeit }

5. Hier im Leere Schleife ()Funktion berechnen wir den Abstand, indem wir die Zeit verwenden, die das Ultraschallsignal benötigt, um vom ersten Sensor zum zweiten Sensor zu gelangen.

Void Schleife () { Pabstand = Abstand; Calc(); // rufe die Calc () Funktion auf distanz = dauer * 0.034; // Berechnen der Entfernung, die von der Ultraschallwelle zurückgelegt wird, wenn (Pdistanz = = Distanz || Pdistanz = = Distanz + 1 || Pdistanz = = Distanz-1) { Serial.print ( "Gemessene Distanz: "); // auf seriellem Monitor drucken Serial.println (Abstand/2); // auf seriellem Monitor drucken} //Serial.print ( "Distanz: "); //Seriell.println (Abstand/2); Verzögerung (500); // 0,5 Sekunden warten}
Facebook Twitter Google Plus Pinterest