Medir distancias con Arduino y sensor Sharp GP2Y0A02YK0F


arduino-sharp-GP2Y0A02YK0F1

¿Qué es un sensor Sharp GP2Y0A02YK0F?

El Sharp GP2Y0A02YK0F es un sensor de distancia óptico. Está compuesto por un LED infrarrojo junto con dispositivo detector de posición (PSD) y un procesador integrado encargado de realizar el cálculo de la distancia.

El sensor escanea de forma continua los objetos ubicados en frente suyo y proporciona la salida mediante una referencia de tensión analógica, por lo que podemos emplear las entradas analógicas de Arduino para leer el valor de la distancia.

El rango de medición es de 20 a 150 cm, manteniendo un grado de precisión elevado en todo el intervalo. La tensión de alimentación es de 4.5 a 5.5V y el consumo de corriente de 33mA. El intervalo de refresco entre mediciones es de unos 80ms.

El GP2Y0A02YK0F es un dispositivo sencillo de conectar y usar. Sin embargo hay que tener en cuenta que incorpora un conector JST (Japanese Solderless Terminal) para su conexión, por lo que tendremos que emplear un conector de este tipo o soldar directamente los terminales en la placa.

Anuncio:

El sensor es poco sensible al color y reflectividad del objeto detectado, ni a la temperatura ambiente. Sin embargo, sí puede ser afectado por luz ambiente si recibe un alto grado de luminosidad de forma directamente, en especial al usarlo en exterior. También pueden proporcionar mediciones incorrectas al detectar objetos transparentes o muy brillantes, especialmente vidrios y espejos.

El sensor Sharp es más preciso que los sensores de ultrasonidos como el HC-SR04, especialmente en distancias medias y largas, donde los sensores de ultrasonidos ven afectadas sus mediciones por los rebotes y ecos que producen las geometrías del entorno.

Sin embargo no puede operar en distancias cortas (<20cm) donde el HC-SR04, aunque con baja precisión, al menos puede realizar mediciones.

Cuando montéis estos sensores en un vehículo o robot intentarlos montarlos en la parte trasera del mismo, aunque la primera tendencia sea montarlos en la delantera. Así ganáis el ancho del vehículo como distancia, y podréis medir distancias inferiores.

Por otro lado, el sensor Sharp tiene una zona de medición más estrecho que el HC-SR04, lo cual permite obtener mayores para mediciones en frente del objeto. Por contra, ignorar objetos que el HC-SR04 si detectaría por su mayor ángulo de medición (por ejemplo, las patas de una mesa).

Finalmente, al emplear más de un sensor pueden producirse interferencias entre las mediciones si ambos haces interfieren. Sin embargo, el problema es mucho menor que al combinar sensores HC-SR04, donde podemos tener interferencias incluso sin que los haces interfieran, por los rebotes y ecos secundarios originados por el propio HC-SR04.

Podemos usar el GP2Y0A02YK0F en nuestros robots para medición de distancias en rangos medios y largos en un haz estrecho. Dadas sus diferentes características, podemos combinarlos con sensores ultrasonido tipo HC-SR04 para rangos cortos o amplios, o sensores de detección de obstáculos para distancias muy cortas.

El sensor Sharp también tiene puede ser empleado en otro tipo de aplicaciones como, por ejemplo, sistemas Touch-Less, control de iluminación, sensores de posición, fines de carrera o detección de objetos en un determinada zona.

Precio

El sensor Sharp GP2Y0A02YK0F es más caro que un sensor de ultrasonidos HC-SR04. Podemos encontrar sensores Sharp GP2Y0A02YK0F por 3.70€ en vendedores internacionales de eBay o AliExpress.

arduino-sharp-GP2Y0A02YK0F1-componente

¿Cómo funciona el Sharp GP2Y0A02YK0F?

El emisor LED infrarrojo emite un haz de luz pulsada infrarroja con una longitud de onda de 850nm +/-70nm. Se envía una luz pulsada para minimizar la influencia de la luz ambiente y del color del objeto en la medición.

El detector de posición PSD (position sensitive detection) es en realidad es un pequeño sensor CCD lineal que recibe la luz reflejada en cualquier objeto en la trayectoria del rayo. El sensor emplea triangulación para determinar la distancia del sensor a los objetos ubicados frente al rayo.

arduino-sharp-GP2Y0A02YK0F1-funcionamiento

La salida analógica tienen un valor de 2.5V a 20 cm, y de 0.4 a 150cm. Sin embargo, como hemos mencionado, la respuesta es no lineal por lo que es necesario interpolar el valor para obtener un nivel de precisión adecuado.

arduino-sharp-GP2Y0A02YK0F1-precision

Esquema de montaje

El esquema de montaje es sencillo. Por un lado, alimentamos el sensor mediante Vcc y GND conectándolos, respectivamente, a 5V y GND de Arduino.

arduino-sharp-GP2Y0A02YK0F1-esquema

Finalmente, conectamos el pin de señal a una de las entradas analógicas de Arduino.

arduino-sharp-GP2Y0A02YK0F1-conexion

Ejemplos de código

El siguiente código realiza la medición de la salida del sensor empleando las entradas analógicas de Arduino. A continuación, realiza la interpolación para obtener la distancia en centímetros.

Finalmente, muestra los valores por pantalla empleando el puerto serie. En un montaje real, usaríamos esta zona para hacer las acciones necesarias, como detener un robot o activar un mecanismo.

Si te ha gustado esta entrada y quieres leer más sobre Arduino puedes consultar la sección Tutoriales de Arduino

Anuncio:

Previous Hacer un encoder óptico con un optointerruptor y Arduino
Next Detector de líneas con Arduino y sensor TCRT5000L
1000
6 Comment threads
7 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
6 Comment authors
newest oldest
María José Gámez

Hola Luis,

¿serviría este sensor para medir distancias de +- 1 mm? Tengo un proyecto en el que necesito detectar arrugas en tela sobre una superficie lisa. En caso de que este sensor no sirva, ¿conoces alguno otro económico que pueda hacerlo?

Muchas gracias!

luisllamas

Es un sensor preciso en cierto rango de distancias, pero no creo que ni en óptimas condiciones llegues a conseguir una precisión de +-1mm. Además detectar arrugas sería muy difícil, porque el sensor abarca un área, y la tela es flexible. Osea, que no tendrías forma de saber si estas capturando las arrugas o no (tampoco sé se si estamos hablando de pequeñas arrugas, o de grandes dobleces de tela) Si tuviera que hacerlo, y entiendo tu problema, yo le metería un láser lineal que barra el ancho de la superficie a medir, una webcam conectada a un ordenador, y… Read more »

María José Gámez

¡Muchísimas gracias! Creo que mis conocimientos se quedan bastante lejos de lo que planteas, aunque de todas formas lo intentaré.

Gracias de nuevo Luis, has sido muy amable.

luisllamas

Hola, en el artículo trata detalladamente el rango de medición del Sharp.
Relee el contenido pregunta las dudas que tengas.
Un saludo!

César Azócar P

para distancias mas cortas te recomiendo el sensor TCR5000

luisllamas

Si te refieres al TCRT5000 tienes el tutorial en “Detector de líneas con Arduino y sensor TCRT5000”
https://www.luisllamas.es/arduino-detector-lineas-tcrt5000l/

Marcela Rea

Buenas tardes, alguna idea para sacar los valores por un lcd 16*2?

Jose Guevara Alvarez

Hola, soy nuevo en esto (aunque soy un viejo profesor de Física) me gustaría saber si este sensor capta la posición de un cuerpo que se mueve en una trayectoria recta (un carrito o un trenecito de juguete).
Como pueden ver me interesa construir un instrumento con el cual pueda analizar el movimiento de estos y otros juguetes y obtener SU LEY DE MOVIMIENTO.
Les agradecería mucho si me pudieran ayudar.

ivanna

Hola, muy bueno la info. En mi caso necesito medir el nivel de un tanque pequeño de agua, totalizador, que está a la intemperie, que sensor me recomendaría? Gracias