Skip to Content

Come usare un sensore di distanza IR SHARP GP2Y0A710K0F con Arduino

Come usare un sensore di distanza IR SHARP GP2Y0A710K0F con Arduino

The  SHARP GP2Y0A710K0F è un sensore di distanza IR facile da usare con un raggio extra lungo di 100 – 500 cm. Questo raggio extra lungo lo rende una buona alternativa ai sensori di distanza a ultrasuoni.

In questo tutorial imparerai come funziona il sensore e come usarlo con Arduino. Ho incluso uno schema di collegamento e un codice di esempio per iniziare a sperimentare con il tuo sensore.

Se stai cercando un sensore di distanza più economico o impermeabile, dai un’occhiata all’HC-SR04 o JSN-SR04T. Negli articoli seguenti spiego come funzionano questi sensori di distanza/prossimità e come usarli con Arduino.

Altri sensori di distanza/prossimità:

Componenti necessari

Sensore di distanza GP2Y0A710K0F

Arduino

Arduino Uno

USB Data Sync cable Arduino

Cavo USB per Arduino UNO

Dupont wire set

Set di fili Dupont

Half_breadboard56a

Breadboard

Condensatore( 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.

Come funziona un sensore di distanza IR?

Un sensore di distanza IR usa un fascio di luce infrarossa che si riflette su un oggetto per misurarne la distanza. La distanza viene calcolata tramite triangolazione del fascio luminoso. Il sensore è composto da un LED IR e un rilevatore di luce o PSD (Position Sensing Device).

Quando il fascio di luce viene riflesso da un oggetto, il fascio riflesso raggiunge il rilevatore di luce e si forma un ‘punto ottico’ sul PSD.

How an IR distance sensor works light emitter and detector PSD 710
Sensore IR

Quando la posizione dell’oggetto cambia, cambia anche l’angolo del fascio riflesso e la posizione del punto sul PSD. Vedi i punti A e B nell’immagine sottostante.

How an IR distance sensor works
Nota il cambiamento nell’angolo del fascio riflesso e nella posizione del ‘punto ottico’ sul PSD.

Il sensore ha un circuito di elaborazione del segnale integrato. Questo circuito elabora la posizione del punto ottico sul PSD per determinare la posizione (distanza) dell’oggetto riflettente. Fornisce un segnale analogico che dipende dalla posizione dell’oggetto davanti al sensore.

Come leggere un sensore di distanza IR?

I sensori di distanza IR forniscono un segnale analogico che varia in base alla distanza tra il sensore e un oggetto. Dal datasheet si vede che la tensione di uscita del SHARP GP2Y0A710K0F varia da 2,5 V quando un oggetto è a 100 cm a 1,4 V quando un oggetto è a 500 cm. Il grafico mostra anche perché l’intervallo di rilevamento utile inizia a 100 cm.

Nota che la tensione di uscita per un oggetto a 30 cm è la stessa di quella per un oggetto a 160 cm. L’intervallo di rilevamento utile quindi inizia dopo il picco a circa 100 cm o 2,5 V.

GP2Y0A710K0F Output Characteristics
Caratteristiche di misura della distanza (uscita)

Il grafico mostra anche il limite di questi sensori: la risposta non è lineare. In altre parole, un grande cambiamento nella tensione di uscita non corrisponde sempre a un grande cambiamento nella distanza. Per determinare la distanza tra il sensore e un oggetto, è necessario trovare una funzione che converta la tensione di uscita in un valore di distanza.

Se si traccia la tensione di uscita rispetto all’inverso della distanza, si ottiene una relazione per lo più lineare. Per distanze > 100 cm si ottiene la seguente curva.

GP2Y0A710K0F Output Characteristics Linear
Tensione di uscita vs Numero inverso della distanza 1/L (1/cm)

Calcolo della distanza

Basandosi sui dati del datasheet SHARP, si può calcolare la funzione lineare:

y = 137500x + 1125

Con y uguale alla tensione di uscita in mV e x uguale a 1/distanza in cm.

Questo porta alla seguente formula per la distanza tra il sensore e un oggetto:

distanza (cm) = 1 / ((output_voltage_mV – 1125) / 137500)

Questa è la funzione usata nella  libreria SharpIR , che useremo più avanti. Nota che questa funzione si basa solo sui dati del datasheet SHARP. Le caratteristiche di uscita del sensore possono variare leggermente da sensore a sensore, quindi potresti ottenere letture imprecise.

Specifiche GP2Y0A710K0F

Tensione di funzionamento 4,5 a 5,5 V
Corrente di funzionamento 30 mA
Intervallo di misura 100 a 550 cm
Tipo di uscita Analogica
Dimensioni 58 x 17,6 x 22,5 mm
Foro di montaggio 4,2 mm
Costo Check price

Per maggiori informazioni puoi consultare il datasheet qui.

Collegare il sensore IR GP2Y0A710K0F ad Arduino

Lo schema di collegamento qui sotto mostra come collegare il sensore di distanza IR GP2Y0A710K0F a un Arduino.  Nota bene: i colori dei fili non sono intuitivi!

GP2Y0A710K0F-IR-Distance-Sensor-Arduino-Wiring-Diagram-Schematic
Schema di collegamento sensore di distanza IR GP2Y0A710K0F con Arduino

Questi tipi di sensori di distanza tendono a essere un po’ rumorosi, quindi si consiglia di aggiungere un condensatore tra Vcc e GND. Il datasheet suggerisce un condensatore da 10 µF o più. Collega il terminale positivo del condensatore al filo Vcc e il terminale negativo al filo GND (vedi immagine). I condensatori sono spesso contrassegnati da una striscia che indica il terminale negativo. Il terminale positivo è spesso più lungo di quello negativo.

Collegamenti GP2Y0A710K0F

GP2Y0A710K0F Arduino
1 (Rosso) GND
2 (Nero) 5V
3 (Giallo) 5V
4 (Verde) A0
5 (Blu) GND

Se il tuo sensore ha fili di colori diversi, assicurati di controllare il pinout qui sotto. Il pin Vo è collegato all’ingresso analogico di Arduino (A0).

GP2Y0A710K0F Pinout
Pinout sensore di distanza IR GP2Y0A710K0F

Il connettore del sensore non è marcato, l’ordine dei pin corrisponde al sensore con il logo rivolto verso l’alto.

Ora che hai collegato il sensore, è il momento di vedere un esempio di codice.

Installare la libreria SharpIR per Arduino

La libreria SharpIR scritta da Guillaume Rico e Thibaut Mauon rende molto più semplice lavorare con i sensori IR SHARP. Include le formule necessarie per convertire la tensione di uscita misurata in una distanza in centimetri. Attualmente, la libreria supporta i seguenti sensori: GP2Y0A02YK0F, GP2Y0A21YK0F, GP2Y0A710K0F e GP2YA41SK0F. L’ultima versione della libreria può essere scaricata qui su GitHub o cliccando il pulsante qui sotto.

Puoi installare la libreria andando su Sketch > Include Library > Add .ZIP Library nell’IDE di Arduino.

Installing an Arduino library ZIP
Installare una libreria Arduino da file .ZIP.

L’autore della libreria ha notato che le letture del sensore possono variare molto. La libreria risolve questo problema prendendo più letture consecutive, scartando i valori anomali e calcolando la media per ottenere una lettura della distanza più stabile. Attualmente, la libreria calcola la media di 25 letture, che richiede circa 53 ms.

Codice di esempio per sensore di distanza IR SHARP GP2Y0A710K0F con Arduino

Il codice di esempio qui sotto può essere usato con il sensore GP2Y0A710K0F e mostra la distanza misurata in centimetri nel monitor seriale.

Puoi copiare il codice cliccando il pulsante in alto a destra nel campo del codice.

/*SHARP GP2Y0A710K0F 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 100500

// 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 baud rate 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);
}

Nota che in questo esempio abbiamo chiamato il sensore mySensor. Se vuoi usare più sensori di distanza IR, puoi creare un altro oggetto sensore con un nome diverso:  SharpIR mySensor2 = SharpIR(IRPin2, model);  Nota che in questo caso devi anche usare un pin di ingresso diverso per il secondo sensore.

Quando la tensione di uscita è sotto 1,4 V o superiore a 3,3 V, vedrai “Mean distance: 0 cm” nel monitor seriale.

Conclusione

In questo articolo ti ho mostrato come funziona il sensore di distanza IR SHARP GP2Y0A710K0F e come usarlo con Arduino. Spero che ti sia stato utile e interessante. Se è così, condividilo con un amico appassionato di elettronica!

Sentiti libero di lasciare qualsiasi domanda nella sezione commenti.