Inhaltsverzeichnis:

Hindernisse asynchron mit Ultraschall erkennen - Gunook
Hindernisse asynchron mit Ultraschall erkennen - Gunook

Video: Hindernisse asynchron mit Ultraschall erkennen - Gunook

Video: Hindernisse asynchron mit Ultraschall erkennen - Gunook
Video: Befruchtung der Eizelle im Video 2024, Juli
Anonim
Erkennen Sie Hindernisse asynchron mit Ultraschall
Erkennen Sie Hindernisse asynchron mit Ultraschall

Ich baue zum Spaß einen Roboter, den ich autonom in einem Haus bewegen möchte.

Es ist eine lange Arbeit und ich arbeite Schritt für Schritt.

Dieser anweisbare Fokus auf die Hinderniserkennung mit Arduino Mega

Die Ultraschallsensoren HC-SR04 vs. HY-SRF05 sind billig und einfach zu verwenden, können jedoch schwierig in die Mikrocontroller-Schleife eines komplexen Roboters integriert werden. Ich wollte die Hinderniserkennung asynchron ausführen.

_

Ich habe bereits 3 Anleitungen zu den Funktionen dieses Roboters veröffentlicht:

  • Machen Sie Ihren Rad-Encoder
  • Machen Sie Ihr WLAN-Gateway
  • Trägheitsmoduleinheit verwenden

Und eine Dokumentation über die Kombination von künstlicher Intelligenz und Ultraschall, um den Roboter zu lokalisieren.

Schritt 1: Was genau ist das Problem bei Ultraschallsensoren und Mikrocontrollern?

Was genau ist das Problem bei Ultraschallsensoren und Mikrocontrollern?
Was genau ist das Problem bei Ultraschallsensoren und Mikrocontrollern?
Was genau ist das Problem bei Ultraschallsensoren und Mikrocontrollern?
Was genau ist das Problem bei Ultraschallsensoren und Mikrocontrollern?

Synchrones Warten und Arduino-Einschränkungen

Der Code von Mikrocontrollern wird in einer Schleife ausgeführt und unterstützt kein Multithread. Ultraschallsensoren basieren auf der Signaldauer. Diese Dauer beträgt bis zu 30 ms, was sehr lange innerhalb der Schleife zu warten ist, wenn die Mikrocontroller mit mehreren Motoren und Sensoren (zB Servo- und DC-Motoren mit Rad-Encodern) umgehen müssen.

Also wollte ich ein Objekt entwickeln, das asynchron läuft.

Schritt 2: Wie funktioniert es?

Wie funktioniert es ?
Wie funktioniert es ?

Es wurde für Atmega zur Hinderniserkennung entwickelt. Es unterstützt bis zu 4 Ultraschallsensoren.

Dank periodischer Zeitunterbrechung kann das System bis zu 4 Ultraschallsensoren überwachen. Der Hauptcode muss nur definieren, welcher Sensor mit Bedingung und Schwellenwert aktiviert werden soll. Der Hauptcode wird nur dann unterbrochen, wenn (Bedingung, Schwellenwert) erscheint.

Die Hauptfunktionen sind:

  • Alert ist die grundlegende Hinderniserkennung und bietet eine Unterbrechung, wenn mindestens einer der 4 Sensoren einen Abstand unter dem Schwellenwert erkennt
  • Monitor ist eine erweiterte Funktion, die eine Unterbrechung bei einer Kombination von Distanzbedingungen von bis zu 4 Sensoren bietet. Die möglichen Bedingungen sind über, unter, gleich oder ungleich den Schwellenwerten.

Schritt 3: Technische Details

Verwenden Sie Timer4, damit Pin 6 7 8 nicht als PWM verwendet werden kann.

Für jeden Sensor benötigt das Objekt eine Trigger-PIN und eine Interrupt-PIN.

Zusätzlich zu den Interrupt-PINs der Sensoren benötigt das Objekt eine weitere Interrupt-PIN für die Softwarenutzung.

Schritt 4: Wie implementieren?

Wie implementieren?
Wie implementieren?

Schließen Sie die Sensoren wie oben an

Von diesem GitHub-Repository herunterladen

  • EchoObstacleDetection.cpp,
  • EchoObstacleDetection.h
  • BeispielEchoObstacleDetection.ino

Erstellen Sie das EchoObstacleDetection-Verzeichnis in Ihrer IDE-Bibliothek und verschieben Sie die.cpp und.h

Probier es aus

Öffnen Sie ExampleEchoObstacleDetection.ino.

Dies ist ein einfaches Beispiel zur Hinderniserkennung, das mit 2 Ultraschallsensoren ausgeführt wird.

Die Ausgabe erfolgt auf den seriellen Monitor. Zuerst druckt es Entfernungen, die von den 2 Sensoren erkannt wurden, und druckt dann Warnungen abhängig von Entfernungen unter Schwellenwerten.

Empfohlen: