Skip to Content

Cómo utilizar un sensor de distancia IR SHARP GP2Y0A710K0F con Arduino

Cómo utilizar un sensor de distancia IR SHARP GP2Y0A710K0F con Arduino

El SHARP GP2Y0A710K0F es un sensor de distancia por infrarrojos relativamente fácil de usar con un alcance extra largo de 100 a 500 cm. Este alcance extra largo lo convierte en una buena alternativa para los sensores de distancia ultrasónicos.

En este tutorial, aprenderás cómo funciona el sensor y cómo utilizarlo con Arduino. He incluido un diagrama de cableado y un código de ejemplo para que puedas empezar a experimentar con tu sensor.

Si buscas un sensor de distancia más asequible o resistente al agua, echa un vistazo al HC-SR04 o al JSN-SR04T. En los artículos siguientes explico cómo funcionan estos sensores de distancia/proximidad y cómo puedes utilizarlos con Arduino.

Otros sensores de distancia/proximidad:

Suministros

Componentes de hardware

GP2Y0A710K0FSensor de distancia IR SHARP GP2Y0A710K0F× 1Amazon
Arduino Uno Rev 3Arduino Uno Rev3× 1Amazon
Tablero de pruebas× 1Amazon
Cables de puente~ 10Amazon
condensadorCondensador (10 µF o más)× 1Amazon
Cable USB tipo A/B× 1Amazon

Software

Arduino IDEArduino IDE

Makerguides.com is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for sites to earn advertising fees by advertising and linking to products on Amazon.com. As an Amazon Associate we earn from qualifying purchases.

¿Cómo funciona un sensor de distancia IR?

Un sensor de distancia IR utiliza un haz de luz infrarroja que se refleja en un objeto para medir su distancia. La distancia se calcula mediante la triangulación del haz de luz. El sensor consta de un LED IR y un detector de luz o PSD (Position Sensing Device).

Cuando el haz de luz se refleja en un objeto, el haz reflejado llegará al detector de luz y se formará un "punto óptico" en el PSD.

Cómo funciona un sensor de distancia IR emisor de luz y detector PSD 710
IR Sensor

Cuando la posición del objeto cambia, el ángulo del rayo reflejado y la posición del punto en el PSD también cambian. Véase el punto A y el punto B en la siguiente imagen.

Cómo funciona un sensor de distancia IR
Obsérvese el cambio en el ángulo del haz reflejado y la posición del "punto óptico" en el PSD.

El sensor lleva incorporado un circuito de procesamiento de señales. Este circuito procesa la posición del punto óptico en el PSD para determinar la posición (distancia) del objeto reflectante. Emite una señal analógica que depende de la posición del objeto frente al sensor.

¿Cómo leer un sensor de distancia IR?

IR distance sensors output an analog signal, which changes depending on the distance between the sensor and an object. From the datasheet, you can see that the output voltage of the SHARP GP2Y0A710K0F ranges from 2.5 V when an object is 100 cm away to 1.4 V when an object is 500 cm away. The graph also shows why the usable detection range starts at 100 cm.

Notice that the output voltage of an object that is 30 cm away is the same as the output voltage for an object that is 160 cm away. The usable detection range therefore start after the peak at roughly 100 cm or 2.5 V.

GP2Y0A710K0F Características de salida
Características de medición de la distancia (salida)

El gráfico también muestra el inconveniente de estos sensores, la respuesta no es lineal. En otras palabras, un gran cambio en la tensión de salida no siempre se corresponde con un gran cambio en el alcance. Para determinar la distancia entre el sensor y un objeto, hay que encontrar una función que convierta la tensión de salida en un valor de alcance.

Si se traza la tensión de salida frente a la distancia inversa, se obtiene una relación mayoritariamente lineal. Para distancias > 100 cm se obtiene la siguiente curva.

GP2Y0A710K0F Características de salida Lineal
Tensión de salida frente al número inverso de la distancia 1/L (1/cm)

Distance Calculation

A partir de los datos de la ficha técnica de SHARP, se puede calcular la función lineal:

y = 137500x + 1125

Con y igual a la tensión de salida en mV y x igual a 1/distancia en cm.

Esto da como resultado la siguiente fórmula para la distancia entre el sensor y un objeto:

Distancia (cm) = 1/((Tensión_de_salida_mV - 1125)/137500)

Esta es la función que se utiliza en la biblioteca SharpIR, que utilizaremos más adelante. Tenga en cuenta que esta función se basa únicamente en los datos de la hoja de datos de SHARP. Las características de salida del sensor variarán ligeramente de un sensor a otro, por lo que podría obtener lecturas inexactas.

Especificaciones del GP2Y0A710K0F

Tensión de funcionamiento4,5 a 5,5 V
Corriente de trabajo30 mA
Rango de medición100 a 550 cm
Tipo de salidaAnalógico
Dimensiones58 x 17,6 x 22,5 mm
Agujero de montaje4,2 mm
CosteComprobar el precio

Para más información, puede consultar la hoja de datos aquí.

Cableado - Conexión del sensor IR GP2Y0A710K0F a Arduino

El siguiente diagrama de cableado muestra cómo conectar el sensor de distancia IR GP2Y0A710K0F a un Arduino. Tenga en cuenta: ¡los colores de los cables no son intuitivos!

GP2Y0A710K0F-IR-Sensor de distancia-Arduino-Diagrama de cableado-Esquemático
Sensor de distancia IR GP2Y0A710K0F con diagrama de cableado Arduino

Este tipo de sensores de distancia tienden a ser un poco ruidosos, por lo que se recomienda añadir un condensador entre Vcc y GND. La hoja de datos sugiere un condensador de 10 µF o más. Conecte el cable positivo del condensador a la conexión del cable Vcc y el cable negativo a la conexión del cable GND (ver imagen). Los condensadores suelen estar marcados con una raya que indica el cable negativo. El cable positivo suele ser más largo que el negativo.

GP2Y0A710K0F Conexiones

GP2Y0A710K0FArduino
1 (Rojo)GND
2 (Negro)5V
3 (Amarillo)5V
4 (Verde)A0
5 (Azul)GND

Si tu sensor viene con cables de diferente color, asegúrate de comprobar el pinout de abajo. El pin Vo se conecta a la entrada analógica del Arduino (A0).

GP2Y0A710K0F Pinout
GP2Y0A710K0F Pinout del sensor de distancia IR

El conector del sensor no está marcado, el orden de los pines corresponde al sensor con el logo hacia arriba.

Ahora que has cableado el sensor es el momento de ver algún código de ejemplo.

Instalación de la biblioteca SharpIR Arduino

La librería SharpIR escrita por Guillaume Rico y Thibaut Mauon facilita el trabajo con los sensores IR de SHARP. Incluye las fórmulas necesarias para convertir la tensión de salida medida en una distancia en centímetros. Actualmente, la librería soporta los siguientes sensores: GP2Y0A02YK0F, GP2Y0A21YK0F, GP2Y0A710K0F, y GP2YA41SK0F. La última versión de la biblioteca se puede descargar aquí en GitHub o hacer clic en el botón de abajo.

Puedes instalar la librería yendo a Sketch > Include Library > Add .ZIP Library en el IDE de Arduino.

Instalación de una biblioteca Arduino ZIP
Instalación de una biblioteca Arduino .ZIP.

El autor de la biblioteca se dio cuenta de que las lecturas del sensor pueden fluctuar bastante. La biblioteca resuelve este problema tomando varias lecturas seguidas, descartando los valores atípicos, y tomando la media para obtener una lectura de distancia más estable. En la actualidad, la biblioteca toma la media de 25 lecturas, lo que lleva aproximadamente 53 ms.

Código de ejemplo para el sensor de distancia IR SHARP GP2Y0A710K0F con Arduino

El código de ejemplo que se muestra a continuación se puede utilizar con el sensor GP2Y0A710K0F y muestra la distancia medida en centímetros en el monitor de serie.

Puede copiar el código haciendo clic en el botón de la esquina superior derecha del campo de código.

/*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

// Create 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() {
  // Begin 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);
}

Observe que hemos llamado al sensor 'miSensor' en este ejemplo. Si quieres utilizar varios sensores de distancia IR, puedes crear otro objeto sensor con un nombre diferente: SharpIR mySensor2 = SharpIR(IRPin2, model); Ten en cuenta que en ese caso también utilizas un pin de entrada diferente para el segundo sensor.

Cuando la tensión de salida es inferior a 1,4 V o superior a 3,3 V, verá "Distancia media: 0 cm" en el monitor de serie.

Conclusión

En este artículo, te he mostrado cómo funciona el sensor de distancia IR SHARP GP2Y0A710K0F y cómo puedes utilizarlo con Arduino. Espero que te haya resultado útil e informativo. Si lo has hecho, ¡compártelo con un amigo al que también le guste la electrónica!

Me encantaría saber qué proyectos planeas construir (o ya has construido) con este sensor de distancia IR. Si tienes alguna pregunta, sugerencia, o si crees que faltan cosas en este tutorial, por favor deja un comentario abajo.

Tenga en cuenta que los comentarios son retenidos por la moderación para evitar el spam.

Rick

Tuesday 7th of May 2024

I know this is super basic and you may not be monitoring this anymore, but I'm new to all this and hoping someone can respond. What is the purpose of the capacitor in this circuit? Is this to stabilize the voltage to the sensor? If so, why? Also, why 10uF or more?

Stefan Maetschke

Tuesday 7th of May 2024

Hi, yes, if you look at the datasheet it says "In order to stabilize power supply line, we recommend to insert a by-pass capacitor of 10μF or more between Vcc and GND near this product." So it is a recommendation by the manufacturer. Seems the sensor is sensitive to fluctuations of the supply voltage. You can use a higher value for an even more stable voltage but the dimensions of the capacitor will also get bigger.

Donald

Saturday 11th of February 2023

// Get a distance measurement and store it as distance_cm: distance_cm = mySensor.getDistance();

Nandana.P

Miércoles 4 de mayo de 2022

Hola Mi proyecto era hacer un sensor de proximidad por infrarrojos ... ¿cómo puedo añadir la medición de la distancia a ese proyecto utilizando arduino? ¿Y cómo podemos escribir el código en consecuencia?

Praveen

Martes 22 de marzo de 2022

Hola Estoy pensando en diseñar la medición de la distancia de unos 4-5 metros en el parachoques del coche. amablemente sugerir Hardwre y los requisitos de software utilizando arduino.

Oliver

Miércoles 29 de mayo de 2019

Hola Me gustaría utilizar este sensor. Pero para mi proyecto me ayudaría si pudiera utilizar la salida en mm en lugar de cm - ¿es esto posible?

Benne de Bakker

Miércoles 29 de mayo de 2019

Hola,

No hay una función mm por defecto en esta biblioteca. Tendría que cambiar el archivo SharpIR.cpp de la biblioteca. Aquí es donde los datos en bruto se transforman en cm. Usted debe ser capaz de encontrar el archivo en su carpeta de bibliotecas o a través del enlace GitHub. Pero tengo que decir que no creo que el sensor sea lo suficientemente preciso para medir en mm.