Busca en nuestro Blog. Encontrarás múltiples aplicaciones, soluciones, ejemplos de código. Navega utilizando la nube de etiquetas o busca utilizando criterios específicos

Medición de distancias con un sensor de distancia óptico

Usando el controlador industrial Arduino para soluciones de monitoreo

 Introducción 

El Sharp GP2Y0A02YK0F es un sensor de distancia óptica. Consiste en un LED infrarrojo junto con un dispositivo detector de posición (PSD) y un procesador integrado responsable de calcular la distancia. 

El sensor escanea continuamente los objetos situados delante de él y proporciona la salida a través de una referencia de voltaje analógica, para que podamos utilizar las entradas analógicas Arduino para leer el valor de la distancia.  

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

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

Requisitos 

Ethernet PLC or 20 I/Os PLC: 


GP2Y0A02YK0F optical distance sensor
GP2Y0A02YK0F Datasheet >> 

Industrial Shields boards:
 Use the mapping pins of IS boards >>


Descripción

GP2Y0A02YK0F sensor de distancia óptica:  

- Dimensiones del contorno: (unidad de medida: mm) 

GP2Y0A02YK0F optical distance sensor - Working with Arduino PLC








Características









Tensión de alimentación (Vcc)(-0.3 to 7) V 








Tensión del terminal de salida (Vo)(-0.3 to Vcc+ 0.3) V









Temperatura de funcionamiento (Topr)(-10 to +60) ºC










Temperatura de almacenamiento  (Tstg)(-40 to +70) ºC









Corriente media de suministro (Icc)typ. 30mA, max. 50mA









Rango de distancia de medición  (ΔL)(20 to150) cm









Voltaje de salida (V0)(mín. 0.25 ; typ. 0,4 ; max. 0,55) V




How it works

The infrared LED emitter emits a beam of infrared pulsed light with a wavelength of 850nm +/- 70nm. A pulsed light is sent to minimize the influence of the ambient light and the color of the object in the measurement.

The position detector PSD (position sensitive detection) is actually a small linear CCD sensor that receives light reflected on any object in the path of the beam. The sensor uses triangulation to determine the distance of the sensor to objects located in front of the beam.

Infrared LED emitter

The analog output has a value of 0,25V to 20 cm, and 0.4V to 150cm. However, as we have mentioned, the answer is non-linear, so it is necessary to interpolate the value to obtain an adequate level of precision.

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


Conexiones

GP2Y0A02YK - Conexiones de cableado PLC basadas en Arduino:
Pin 1 (Data)    -->  I0_12

Pin2 (Gnd) --> Gnd

Pin3 (5V) --> 5V
 


Conexión final:

Arduino PLC and Sharp GP2Y0A02YK0F

Software

This simple sketch allows us to perform analog readings of the GP2Y0A02YK   every sec. For this we have used the entry I0.12 of our M-Duino. You can use any of the analog inputs available on your Arduino based PLC.

 Como prueba comprobaremos el resultado monitoreado por el  serial port comprobando el valor analógico leído, la tensión recibida y finalmente la distancia entre el sensor y el objeto. 

const long referenceMv = 5000;

 

void setup() {

   Serial.begin(9600);

}

 

void loop() {

   //lectura de la tensión

   int val = analogRead(I0_12);

   int mV = (val * referenceMv) / 1023;

   int cm = getDistance(mV);

 

   //mostrar valores por pantalla

   Serial.print(mV);

   Serial.print(",");

   Serial.println(cm);

   delay(1000);

}

 

//interpolación de la distancia a intervalos de 250mV

const int TABLE_ENTRIES = 12;

const int INTERVAL  = 250;

static int distance[TABLE_ENTRIES] = {150,140,130,100,60,50,40,35,30,25,20,15};

 

int getDistance(int mV) {

   if (mV > INTERVAL * TABLE_ENTRIES - 1)      return distance[TABLE_ENTRIES - 1];

   else {

      int index = mV / INTERVAL;

      float frac = (mV % 250) / (float)INTERVAL;

      return distance[index] - ((distance[index] - distance[index + 1]) * frac);

   }

}

Watch the video - Optical distance sensor using an Arduino based Industrial PLC 

 
 


Industrial Solutions

Open Source based solutions for automation, monitoring and control

PLC Based on Arduino, Raspberry Pi and ESP 32



¿Quieres más información?

Con la tecnología Open Source, puedes ejecutar tus propias instalaciones.

Rellena el formulario y contactaremos contigo lo más pronto posible.

Enviar  Por favor, completa el formulario correctamente.