Skip to Content

Wie man einen SHARP GP2Y0A21YK0F IR-Abstandssensor mit Arduino verwendet

Wie man einen SHARP GP2Y0A21YK0F IR-Abstandssensor mit Arduino verwendet

Der SHARP GP2Y0A21YK0F ist ein einfach zu verwendender IR-Abstandssensor mit einer Reichweite von 10 – 80 cm. Er ist ein großartiger Sensor für autonome Roboter oder berührungslose optische Schalter.

In diesem Tutorial lernst du, wie der Sensor funktioniert und wie du ihn mit Arduino verwendest. Ich habe ein Schaltbild und Beispielcode beigefügt, damit du direkt mit deinem Sensor experimentieren kannst.

Benötigte Teile

GP2Y0A21YK0F Abstandssensor

Arduino

Arduino Uno

USB Data Sync cable Arduino

USB-Kabel für Arduino UNO

Dupont wire set

Dupont-Kabelsatz

Half_breadboard56a

Breadboard

Kondensator(10 µF)

Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.

Wie funktioniert ein IR-Abstandssensor?

Ein IR-Abstandssensor verwendet einen Infrarotlichtstrahl, der von einem Objekt reflektiert wird, um dessen Entfernung zu messen. Die Entfernung wird durch Triangulation des Lichtstrahls berechnet. Der Sensor besteht aus einer IR-LED und einem Lichtsensor oder PSD (Position Sensing Device). Wenn der Lichtstrahl von einem Objekt reflektiert wird, erreicht der reflektierte Strahl den Lichtsensor und ein „optischer Fleck“ bildet sich auf dem PSD.

How an IR distance sensor works light emitter and detector PSD
IR-Abstandssensor

Wenn sich die Position des Objekts ändert, ändern sich auch der Winkel des reflektierten Strahls und die Position des Flecks auf dem PSD. Siehe Punkt A und Punkt B im Bild unten.

How an IR distance sensor works
Beachte die Änderung des Winkels des reflektierten Strahls und die Position des „optischen Flecks“ auf dem PSD.

Der Sensor verfügt über eine eingebaute Signalverarbeitungsschaltung. Diese Schaltung verarbeitet die Position des optischen Flecks auf dem PSD, um die Position (Entfernung) des reflektierenden Objekts zu bestimmen. Sie gibt ein analoges Signal aus, das von der Position des Objekts vor dem Sensor abhängt.

Wie liest man einen IR-Abstandssensor aus?

IR-Abstandssensoren geben ein analoges Signal aus, das sich je nach Abstand zwischen Sensor und Objekt ändert. Aus dem Datenblatt geht hervor, dass die Ausgangsspannung des SHARP GP2Y0A21YK0F von 2,3 V bei 10 cm Abstand bis 0,4 V bei 80 cm Abstand reicht. Das Diagramm zeigt auch, warum der nutzbare Erfassungsbereich bei 10 cm beginnt. Beachte, dass die Ausgangsspannung bei einem Objekt in 2 cm Entfernung gleich der Ausgangsspannung bei 28 cm Entfernung ist. Der nutzbare Erfassungsbereich beginnt daher nach dem Maximum bei etwa 10 cm oder 2,3 V.

GP2Y0A21YK0F Output Characteristics
Entfernungsmesscharakteristik (Ausgang)

Das Diagramm zeigt auch den Nachteil dieser Sensoren: Die Reaktion ist nicht linear. Mit anderen Worten, eine große Änderung der Ausgangsspannung entspricht nicht immer einer großen Änderung der Entfernung. Um die Entfernung zwischen Sensor und Objekt zu bestimmen, muss eine Funktion gefunden werden, die die Ausgangsspannung in einen Entfernungswert umwandelt.

Dies kann mit MS Excel gemacht werden und ergibt folgende Formel für Entfernungen > 10 cm:

Entfernung (cm) = 29.988 X POW(Volt , -1.173)

Dies ist die Funktion, die in der SharpIR-Bibliothekverwendet wird, die wir später nutzen werden. Beachte, dass diese Funktion nur auf Daten aus dem SHARP-Datenblatt basiert. Die Ausgangscharakteristik des Sensors variiert leicht von Sensor zu Sensor, daher können die Messwerte ungenau sein.

Wenn du die Genauigkeit deiner Messungen verbessern möchtest, kannst du viele Datenpunkte messen und in Excel auftragen und eine Kurve durch diese Punkte legen. Sobald du eine neue Funktion für deinen spezifischen Sensor hast, musst du die Formel in der Datei SharpIR.cpp anpassen.

GP2Y0A21YK0F Spezifikationen

Betriebsspannung4,5 bis 5,5 V
Betriebsstrom30 mA
Messbereich10 bis 80 cm
AusgangstypAnalog
Abmessungen29,5 x 13 x 13,5 mm
Befestigungslöcher2x 3,2 mm, 37 mm Abstand
KostenCheck price

Weitere Informationen findest du im Datenblatt hier.

Anschluss des GP2Y0A21YK0F IR-Sensors an Arduino

Das folgende Schaltbild zeigt, wie du den GP2Y0A21YK0F IR-Abstandssensor an einen Arduino anschließt.

SHARP GP2Y0A21YK0 with Arduino Wiring Diagram
GP2Y0A21YK0F IR-Abstandssensor mit Arduino​ Schaltbild.

Diese Art von Abstandssensoren neigt zu Störungen, daher wird empfohlen, einen Kondensator zwischen Vcc und GND zu schalten. Das Datenblatt empfiehlt einen Kondensator von 10 µF oder mehr (ich habe 220 µF verwendet). Verbinde den positiven Anschluss des Kondensators mit der Vcc-Leitung und den negativen Anschluss mit der GND-Leitung (siehe Bild). Kondensatoren sind oft mit einem Streifen markiert, der den negativen Anschluss anzeigt. Der positive Anschluss ist oft länger als der negative.

GP2Y0A21YK0F Anschlüsse

GP2Y0A21YK0FArduino
1 (Gelb)A0
2 (Schwarz)GND
3 (Rot)5V

Wenn dein Sensor andere Kabel-Farben hat, überprüfe unbedingt das Pinout unten. Der Vo-Pin ist mit dem analogen Eingang des Arduino (A0) verbunden.

SHARP GP2Y0A21YK0F Pinout
GP2Y0A21YK0F SHARP IR-Abstandssensor Pinbelegung

Nachdem du den Sensor angeschlossen hast, schauen wir uns nun Beispielcode an.

Installation der SharpIR Arduino-Bibliothek

Die SharpIR Bibliothek, geschrieben von Guillaume Rico und Thibaut Mauon, erleichtert die Arbeit mit SHARP IR-Sensoren erheblich. Sie enthält die Formeln, die benötigt werden, um die gemessene Ausgangsspannung in eine Entfernung in Zentimetern umzuwandeln. Aktuell unterstützt die Bibliothek folgende Sensoren: GP2Y0A02YK0F, GP2Y0A21YK0F, GP2Y0A710K0F und GP2YA41SK0F. Die neueste Version der Bibliothek kann auf GitHub heruntergeladen werden oder klicke auf den Button unten.

Du kannst die Bibliothek installieren, indem du in der Arduino IDE zu Sketch > Include Library > Add .ZIP Library gehst.

Installing an Arduino library ZIP
Installation einer .ZIP Arduino-Bibliothek.

Der Autor der Bibliothek hat festgestellt, dass die Messwerte des Sensors stark schwanken können. Die Bibliothek löst dieses Problem, indem sie mehrere Messwerte hintereinander nimmt, Ausreißer verwirft und den Mittelwert bildet, um eine stabilere Entfernungsanzeige zu erhalten. Aktuell nimmt die Bibliothek den Mittelwert von 25 Messungen, was etwa 53 ms dauert.

Beispielcode für SHARP GP2Y0A21YK0F IR-Abstandssensor mit Arduino

Der Beispielcode unten kann mit dem GP2Y0A21YK0F Sensor verwendet werden und zeigt die gemessene Entfernung in Zentimetern im seriellen Monitor an.

Du kannst den Code kopieren, indem du auf den Button oben rechts im Codefeld klickst.

/*SHARP GP2Y0A21YK0F IR distance sensor with 
  Arduino and SharpIR library example code. 
  More info: https://www.makerguides.com */

// Include the library:
#include "SharpIR.h"

// Define model and input pin:
#define IRPin A0
#define model 1080

// Variable to store the distance
int distance_cm;

/* Model :
  GP2Y0A02YK0F --> 20150
  GP2Y0A21YK0F --> 1080
  GP2Y0A710K0F --> 100500
  GP2YA41SK0F --> 430
*/

// Create a new instance of the SharpIR class:
SharpIR mySensor = SharpIR(IRPin, model);

void setup() {
  // Serial communication at a baudrate of 9600
  Serial.begin(9600);
}

void loop() {
  // Get a distance measurement and store it as distance_cm
  distance_cm = mySensor.distance();

  // Print the measured distance to the serial monitor
  Serial.print("Mean distance: ");
  Serial.print(distance_cm);
  Serial.println(" cm");

  delay(1000);
}

Beachte, dass wir den Sensor in diesem Beispiel mySensorgenannt haben. Wenn du mehrere IR-Abstandssensoren verwenden möchtest, kannst du ein weiteres Sensorobjekt mit einem anderen Namen erstellen: SharpIR mySensor2 = SharpIR(IRPin2, model); Beachte, dass du in diesem Fall auch einen anderen Eingangspin für den zweiten Sensor verwenden musst.

Im seriellen Monitor (Strg + Shift + M) solltest du folgende Ausgabe erhalten:

SHARP GP2Y0A21YK0F serial monitor output
Ausgabe im seriellen Monitor

Fazit

In diesem Artikel habe ich dir gezeigt, wie der SHARP GP2Y0A21YK0F IR-Abstandssensor funktioniert und wie du ihn mit Arduino verwenden kannst.

Wenn du nach einem günstigeren oder wasserdichten Abstandssensor suchst, schau dir den HC-SR04 oder JSN-SR04T an. In den untenstehenden Artikeln erkläre ich, wie diese Abstand-/Nähe-Sensoren funktionieren und wie du sie mit Arduino nutzen kannst.

Wenn du Fragen, Vorschläge hast oder denkst, dass in diesem Tutorial etwas fehlt, hinterlasse bitte einen Kommentar unten.