Introducción.
Los Sensores Sharp 2Y0A21 y Sharp 2Y0A02Y son una interesante alternativa a los sensores de ultrasonido, el punto fuerte de estos pequeños sensores son su precisión ya que como veremos en otro apartado tienen un alcance muy corto en especial el sensor Sharp 2Y0A21 , estos sensores trabajan mediante señales infrarrojas y tiene un costo bajo.
Características del Sensor Sharp 2Y0A21 y Sharp 2Y0A02Y
Si necesitas mas datos del sensor puedes consultar su datasheet en este enlace.
- Rango Mínimo 10 cm para el sensor 2Y0A21 , 20 cm para el sensor 2Y0A02Y.
- Rango Máximo 80 cm para el sensor 2Y0A21 , 150 cm para el sensor 2Y0A02Y.
- Tensión en la Salida de 0.3 v a 3.1 v dependiendo de la distancia medida.
- Alimentación de 4.5 a 5.5 v
- Tres Pines (Alimentación, Tierra, Salida)
Requisitos.
- Arduino
- Sensor Sharp 2Y0A21 o Sharp 2Y0A02Y.
- Cables de Conexión o Jumpers
- Protoboard
Repositorio del Proyecto.
Tenemos todos los Archivos Necesarios del Proyecto en nuestro Repositorio en Github
Diagrama de Conexiones.
La conexión se la hizo directamente aunque podrías agregar un protoboard para agregar otras funcionalidades.
Código Arduino.
Haciendo varias pruebas con el sensor nos dimos cuenta de que lanzaba varias mediciones incoherentes es por eso que nos vimos de la necesidad de contar con una librería que nos solucione el problema.
La librería que utilizamos para controlar el sensor se llama SharpIr que nos simplifica el trabajo de conversiones en los diferentes sistemas de unidades, puedes descargar la librería y su documentación en el siguiente enlace:
Importante: No olvides cambiar el tipo de sensor Sharp que tienes en la variable model.
#define ir A0
#define model 1080
SharpIR sharp(ir, 25, 93, model);
// ir: Pin Analogico donde se conecta el sensor
// 25: El numero de lecturas que la libreria hara antes de hacer el calculo de distancias
// 93: la diferencia entre dos medias consecutivas tomadas como validas
// model: Determina el Modelo de tu sensor : 1080 for GP2Y0A21Y
// 20150 for GP2Y0A02Y
void setup(){
Serial.begin(9600);
pinMode (ir, INPUT);
}
void loop(){
delay(2000); // Retardo entre cada medicion
unsigned long pepe1=millis(); // toma el tiempo de cada loop
int dis=sharp.distance(); // retorna la distancia
Serial.print("Distancia: ");
Serial.println(dis);
unsigned long pepe2=millis()-pepe1; // retornal el tiempo de cada medicion
Serial.print("Tiempo (ms): ");
Serial.println(pepe2);
}
Resultados.
Como podemos apreciar en la Imagen las distancias obtenidas están expresadas en centímetros y tienen una exactitud muy apreciable dado el movimiento del objetivo de medición.
Tanto el Diagrama de conexiones como el código sirven para las dos clases de sensores lo que nos facilita el trabajo a la hora de probar entre los sensores.