Wie messe ich den Abstand zwischen zwei Punkten mit Arduino?

In der Elektronik werden meistens Ultraschallsensoren verwendet, um den Abstand von einem bestimmten Punkt zum anderen zu messen. Es ist sehr einfach, einen Code auf die Arduino-Platine zu schreiben und einen Ultraschallsensor zu integrieren, um diese Aufgabe auszuführen. In diesem Artikel werden wir jedoch einen anderen Ansatz verfolgen. Wir werden zwei separate Ultraschallsensoren verwenden, die in zwei separate Arduino 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 mithilfe vieler Ultraschallempfänger lokalisieren. Die Technik, die wir hier verwenden, heißt Triangulation.

Entfernungsmessung mit Arduino

Die hier verwendete Technik ist nur bei kleinen Systemen nützlich, bei denen ein geringer Abstand zu finden ist. Um es in großem Maßstab zu implementieren, sind sicherlich einige Modifikationen erforderlich. Alle Herausforderungen, denen sich dieses Projekt gegenübersah, werden im Folgenden erörtert.

Wie verwende ich Arduino und Ultraschallsensor, um die Entfernung zu messen?

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

Schritt 1: Sammeln der Komponenten (Hardware)

Wenn Sie Unannehmlichkeiten während eines Projekts vermeiden möchten, ist es am besten, eine vollständige Liste aller Komponenten zu erstellen, die wir verwenden werden. Der zweite Schritt, bevor mit der Herstellung der Schaltung begonnen wird, besteht darin, alle diese Komponenten kurz zu untersuchen. Nachfolgend finden Sie eine Liste aller Komponenten, die wir in diesem Projekt benötigen.

Schritt 2: Sammeln der Komponenten (Software)

  • Proteus 8 Professional (Kann von heruntergeladen werden Hier)

Entwerfen Sie nach dem Herunterladen des Proteus 8 Professional die Schaltung darauf. Ich habe hier Software-Simulationen eingefügt, damit Anfänger die Schaltung bequem entwerfen und entsprechende Verbindungen auf der Hardware herstellen können.

Schritt 3: Arbeiten des HCR-05

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

Dieser Sensor verfügt über zwei Stifte, einen Triggerstift und einen Öko-Stift, die beide zum Messen des Abstands zwischen zwei bestimmten Punkten verwendet werden. Der Prozess wird durch Senden einer Ultraschallwelle vom Sensor eingeleitet. Diese Aufgabe wird durch Auslösen des Trigger-Pins für 10us erledigt. Sobald diese Aufgabe erledigt ist, wird vom Sender ein Ultraschallstoß von 8 gesendet. Diese Welle bewegt sich in der Luft 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 empfangen wird, nachdem der Sensor reflektiert wurde, wird der Öko-Pin in einen hohen Zustand versetzt. Dieser Pin bleibt für die Dauer im hohen Zustand, die genau der Zeit entspricht, die die Ultraschallwelle benötigt, um vom Sender zum Empfänger des Sensors zurückzukehren.

Um nur Ihren Ultraschallsensor-Sender herzustellen, machen Sie einfach den Trigger-Pin zu Ihrem Ausgangs-Pin und senden Sie für 10us einen hohen Impuls an diesen Pin. Sobald dies geschehen ist, wird ein Ultraschallstoß ausgelöst. Wenn also die Welle übertragen werden soll, muss nur der Triggerstift des Ultraschallsensors gesteuert werden.

Es gibt keine Möglichkeit, den Ultraschallsensor nur als Empfänger zu verwenden, da der Anstieg des ECO-Pins vom Mikrocontroller nicht gesteuert werden kann, da er mit dem Trigger-Pin des Sensors zusammenhängt. Aber eines können wir tun: Wir können den Sender dieses Ultraschallsensors mit Klebebändern abdecken, damit keine UV-Welle austritt. Dann wird der ECO-Pin dieses Senders vom Sender nicht beeinflusst.

Schritt 4: Arbeiten der Schaltung

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

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

Schritt 5: Zusammenbau der Komponenten

Obwohl wir nur den Sender eines Ultraschallsensors und den Empfänger des anderen verwenden, müssen alle vier Pins des Ultraschallsensors mit dem Arduino verbunden werden. Führen Sie die folgenden Schritte aus, um die Schaltung anzuschließen:

  1. Nehmen Sie zwei Ultraschallsensoren. Decken Sie den Empfänger des ersten Sensors und den Sender des zweiten Sensors ab. Verwenden Sie zu diesem Zweck 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 Pin 9 von Arduino und den ecoPin mit Pin 10 des Arduino. Schalten Sie den Ultraschallsensor mit 5 V von Arduino ein und nutzen Sie alle Erdungen.
  3. Laden Sie den Empfängercode in das Arduino des Empfängers und den Sendercode in das Arduino des Senders hoch.
  4. Öffnen Sie nun den seriellen Monitor der Empfangsseite und notieren Sie die gemessene Entfernung.

Der Schaltplan dieses Projekts sieht folgendermaßen aus:

Schaltplan

Schritt 6: Erste Schritte mit Arduino

Wenn Sie mit der Arduino IDE noch nicht vertraut sind, machen Sie sich keine Sorgen, da im Folgenden eine schrittweise Anleitung zum Einrichten und Verwenden der Arduino IDE mit einer Mikrocontroller-Karte erläutert wird.

  1. Laden Sie die neueste Version von Arduino IDE von herunter Arduino.
  2. Schließen Sie Ihr Arduino Nano-Board an Ihren Laptop an und öffnen Sie das Bedienfeld. Klicken Sie in der Systemsteuerung auf Hardware und Sound. Klicken Sie nun auf Geräte und Drucker. Hier finden Sie den Anschluss, an den Ihre Mikrocontroller-Karte angeschlossen ist. In meinem Fall ist es COM14, aber es ist auf verschiedenen Computern unterschiedlich.Port finden
  3. Klicken Sie auf das Menü Tool. und stellen Sie das Board aus dem Dropdown-Menü auf Arduino Nano.Board einstellen
  4. Stellen Sie im selben Tool-Menü den Port auf die Portnummer ein, die Sie zuvor in den Geräten und Druckern beobachtet haben.Port einstellen
  5. Stellen Sie im selben Tool-Menü den Prozessor auf ATmega328P (Old Bootloader) ein.Prozessor
  6. Laden Sie den unten angehängten Code herunter und fügen Sie ihn in Ihre Arduino IDE ein. Klicken Sie auf die Schaltfläche zum Hochladen, um den Code auf Ihrer Mikrocontroller-Karte zu brennen.Hochladen

Um den Code herunterzuladen, Klicke hier.

Schritt 7: Den Code verstehen

Der in diesem Projekt verwendete Code ist sehr einfach und sehr gut kommentiert. Der angehängte Ordner enthält zwei Codedateien. Der Code für den Sender und ein Code für die Empfängerseite werden separat angegeben. Wir werden diese Codes in beide Arduino-Boards hochladen. Obwohl es selbsterklärend ist, wird es im Folgenden kurz beschrieben.

Code für die Senderseite

1. Zu Beginn werden die Pins der Arduino-Platine initialisiert, die mit dem Ultraschallsensor verbunden werden. Anschließend werden die Variablen deklariert, mit denen Werte für die Berechnung von Zeit und Entfernung während der Laufzeit des Codes gespeichert werden.

// definiert Pinnummern const int trigPin = 9; // Verbinde den Trigger-Pin des Ultraschallsensors mit Pin9 von Arduino const int echoPin = 10; // Verbinde den Öko-Pin des Ultraschallsensors mit Pin 10 von Arduino // definiert Variablen mit langer Dauer; // variabel, um die Zeit zu speichern, die die Ultraschallwelle benötigt, um die Entfernung zurückzulegen; // Variable zum Speichern der berechneten Entfernung

2. void setup () ist eine Funktion, die beim Start nur einmal ausgeführt wird, wenn die Karte eingeschaltet oder die Aktivierungstaste 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, OUTPUT); // Setzt das trigPin als Output pinMode (echoPin, INPUT); // Setzt den echoPin als Input Serial.begin (9600); // Startet die serielle Kommunikation}

3. void loop () ist eine Funktion, die in einer Schleife immer wieder ausgeführt wird. Hier haben wir den Mikrocontroller so codiert, dass er ein HIGH-Signal an den Trigger-Pin des Ultraschallsensors sendet, 20 Mikrosekunden lang spricht und ein LOW-Signal an ihn sendet.

void loop () {// Setzt das trigPin für 10 Mikrosekunden auf den Status HIGH digitalWrite (trigPin, HIGH); // sende ein HIGH-Signal am Trigger der ersten SensorverzögerungMicroseconds (10); // 10 Mikrosekunden warten digitalWrite (trigPin, LOW); // ein LOW-Signal an den Trigger der ersten Sensorverzögerung senden (2); // 0,2 Sekunden warten} Code für die Empfängerseite

1. Zu Beginn werden die Pins der Arduino-Platine initialisiert, die mit dem Ultraschallsensor verbunden werden. Anschließend werden die Variablen deklariert, mit denen Werte für die Berechnung von Zeit und Entfernung während der Laufzeit des Codes gespeichert werden.

// definiert Pinnummern const int trigPin = 9; // Verbinde den Trigger-Pin des Ultraschallsensors mit Pin9 von Arduino const int echoPin = 10; // Verbinde den Öko-Pin des Ultraschallsensors mit Pin 10 von Arduino // definiert Variablen mit langer Dauer; // variabel, um die Zeit zu speichern, die die Ultraschallwelle benötigt, um die Entfernung zurückzulegen; // Variable zum Speichern der berechneten Entfernung

2. void setup () ist eine Funktion, die beim Start nur einmal ausgeführt wird, wenn die Karte eingeschaltet oder die Aktivierungstaste 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, OUTPUT); // 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 für das Fake-Triggering des Trigger-Pins 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); // Sende ein HIGH-Signal an den Trigger-Pin des zweiten Sensors delayMicroseconds (10); // warte auf 10 Mikrosekunden digitalWrite (trigPin, LOW); // ein LOW-Signal an den Trigger-Pin des zweiten Senders senden}

4. void Calc () ist eine Funktion, mit der die Zeit berechnet wird, 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 anfänglich auf Null gesetzt Trigger_US (); // rufe die Trigger_US Funktion auf while (digitalRead (echoPin) == HIGH); // während der Status des eo-Pins in hoher Verzögerung ist (2); // Verzögerung von 0,2 Sekunden setzen Trigger_US (); // rufe die Trigger_US Funktionsdauer auf = pulsIn (echoPin, HIGH); // Berechne die benötigte Zeit}

5. Hier in der Funktion void loop () berechnen wir die Entfernung anhand der Zeit, die das Ultraschallsignal benötigt, um vom ersten Sensor zum zweiten Sensor zu gelangen.

void loop () {Pdistance = distance; Calc (); // rufe die Calc () Funktion auf distanz = dauer * 0.034; // Berechnung der von der Ultraschallwelle zurückgelegten Entfernung if (Pdistance == distance || Pdistance == distance + 1 || Pdistance == distance-1) {Serial.print (“Measured Distance:”); // auf seriellem Monitor drucken Serial.println (distance / 2); // auf seriellem Monitor drucken} //Serial.print(“Distance: “); //Serial.println(distance/2); Verzögerung (500); // 0,5 Sekunden warten}

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *