Inhaltsverzeichnis:

Infrarot-Radar mit Arduino - Gunook
Infrarot-Radar mit Arduino - Gunook

Video: Infrarot-Radar mit Arduino - Gunook

Video: Infrarot-Radar mit Arduino - Gunook
Video: How To Make Radar With Arduino || Arduino Project. 2024, November
Anonim
Image
Image

In diesem kleinen Projekt möchte ich Ihnen zeigen, wie Sie mit Arduino ein einfaches Radar zu Hause erstellen können. Es gibt viele ähnliche Projekte im Internet, aber alle verwenden einen Ultraschallsensor, um die Entfernung zu messen. In diesem Projekt verwende ich einen Infrarotsensor zur Entfernungsmessung.

Mein Ziel ist es, damit ein sehr einfaches und günstiges LIDAR-System zu erstellen und ein Mapping-Gerät zu implementieren.

Lieferungen

  • Arduino (ich habe einen Maple Mini verwendet)
  • Sharp Distanzsensor (ich habe Sharp GP2Y0A02YK0F verwendet)
  • Mikro-Servo (9g)
  • Steckbrett, Drähte
  • Optional: 4,7k Widerstand, 100nF Kondensator

Schritt 1: Ultraschall-VS-Infrarotsensor

Schaltplan
Schaltplan

Der Hauptunterschied zwischen Ultraschall- und Infrarot-Distanzsensoren besteht darin, dass der Ultraschallsensor die Distanz in einem größeren Bereich misst. Daher ist es nicht in der Lage, die Position eines Hindernisses genau zu lokalisieren. Dies bedeutet, dass es die Entfernung des nächsten Objekts misst, das sich innerhalb eines Winkelbereichs von ~ +-30° befindet.

Das heißt natürlich nicht, dass der Sharp-Sensor besser ist. Manchmal kann diese Eigenschaft sehr nützlich sein (z. B. von Drohnen verwendet, um die Höhe vom Boden zu messen). Die richtige Wahl hängt ganz von den Anforderungen Ihres Projekts ab.

Schritt 2: Schema

Schaltplan
Schaltplan
Schaltplan
Schaltplan

Es ist sehr einfach, die Verbindung zwischen den Teilen herzustellen. Wählen Sie einen PWM-Ausgang und einen analogen Eingang auf Ihrem Arduino-Board und verbinden Sie die Servo- und Sharp-Abstandssensoren mit diesen Pins. Dazu habe ich folgende Pins verwendet:

  • PA0: Analogeingang für Sharp Distanzsensor
  • PA9: PWM-Ausgang für Servo

Manchmal kann der Sharp IR-Sensor eine verrauschte Ausgabe haben, daher müssen Sie einen einfachen Tiefpassfilter darauf setzen. Ich habe einen 4,7k-Widerstand und einen 100nF-Kondensator verwendet, um das Rauschen am analogen Pin zu reduzieren. Außerdem habe ich den Messwert auch im Code gefiltert, indem ich ihn mehrmals gelesen und den Durchschnitt berechnet habe.

Schritt 3: Sensorcharakteristik

Sensorcharakteristik
Sensorcharakteristik
Sensorcharakteristik
Sensorcharakteristik

Leider hat der verwendete Infrarot-Distanzsensor eine nichtlineare Kennlinie. Das bedeutet, dass es nicht ausreicht, den gemessenen ADC-Wert mit einem konstanten Wert zu multiplizieren und einen weiteren konstanten Wert hinzuzufügen, um den Abstand zu erhalten.

Obwohl das Datenblatt des Sensors die Kennlinie liefert, ziehe ich es vor, diese im spezifischen Projekt selbst zu messen (es könnte von der verwendeten Spannung abhängen). Dazu habe ich alle 10 cm Paare aus dem gemessenen ADC-Wert und der Entfernung gebildet. (Mein Sensor konnte ab 12 cm den richtigen Abstand messen).

Ich habe diese Paare im Code verwendet, um mit Linearer Interpolation den richtigen Abstand zu erhalten.

Am Ende des Dokuments finden Sie einen einfachen Arduino-Code, um den ADC-Wert während der Kennlinienmessung zu messen.

Schritt 4: Serielle Kommunikation

Serielle Kommunikation
Serielle Kommunikation

Die gemessenen Winkel-Abstandswerte habe ich über eine serielle Kommunikation an den PC gesendet. Da ich mehrere Bytes und verschiedene Arten von Nachrichten senden muss, habe ich ein einfaches Kommunikationsprotokoll entworfen.

Dieses Protokoll ermöglicht es, verschiedene Nachrichtentypen auf generische Weise zu definieren. In diesem Projekt habe ich 2 Nachrichtentypen verwendet:

  • Parameter: Wird verwendet, um Parameter an die PC-Anwendung zu senden, die auf Arduino definiert sind, wie die maximale Entfernung und die Anzahl der Hindernisse in einer Runde.
  • Hindernis: Wird verwendet, um ein erkanntes Hindernis zu senden. Er wird durch den Winkel des Servos und den gemessenen Abstand identifiziert. Die x-y-Position wird per PC-Anwendung berechnet.

Schritt 5: Qt-Anwendung

Qt-Anwendung
Qt-Anwendung

Um mit Arduino zu kommunizieren und die gemessenen Punkte wie ein Radar zu zeichnen, habe ich eine PC-Anwendung in Qt (C++) erstellt. Es empfängt einige Parameter (definiert auf Arduino) und die gemessenen Distanzpunkte.

Sie können die Anwendung und ihren Quellcode auch herunterladen.

Schritt 6: Arduino-Quellcode

Sie können einige Parameter oben im Code mit Makros anpassen.

Beachten Sie, dass Sie, wenn Sie die Charakteristik des Sharp-Distanzsensors ändern, die Werte des Arrays distAdcMap ändern müssen!

  • InfraRadar.c: Radarcode. Kopieren Sie es und fügen Sie es in Ihr Arduino-Projekt ein.
  • InfraRadarMeasurement.c: Code zur Kennlinienmessung. Kopieren Sie es und fügen Sie es in Ihr Arduino-Projekt ein. Verwenden Sie die serielle Konsole, um die ADC-Werte zu überprüfen.

Empfohlen: