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:
- Cómo utilizar un sensor de distancia ultrasónico HC-SR04 con Arduino
- Sensor de distancia ultrasónico impermeable JSN-SR04T con tutorial de Arduino
- Cómo utilizar un sensor de distancia IR SHARP GP2Y0A21YK0F con Arduino
Suministros
Componentes de hardware
Sensor de distancia IR SHARP GP2Y0A710K0F | × 1 | Amazon | |
Arduino Uno Rev3 | × 1 | Amazon | |
Tablero de pruebas | × 1 | Amazon | |
Cables de puente | ~ 10 | Amazon | |
Condensador (10 µF o más) | × 1 | Amazon | |
Cable USB tipo A/B | × 1 | Amazon |
Software
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.
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.
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.
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.
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 funcionamiento | 4,5 a 5,5 V |
Corriente de trabajo | 30 mA |
Rango de medición | 100 a 550 cm |
Tipo de salida | Analógico |
Dimensiones | 58 x 17,6 x 22,5 mm |
Agujero de montaje | 4,2 mm |
Coste | Comprobar 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!
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
GP2Y0A710K0F | Arduino |
---|---|
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).
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.
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.
Benne is professional Systems Engineer with a deep expertise in Arduino and a passion for DIY projects.
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.