17 feb 2012

TEC 4º ESO. Sensor de distancia SHARP

Vamos a utilizar un sensor de infrarrojos Sharp 2Y0A21, que nos permitirá calcular distancias a objetos.
Este sensor tiene un emisor y receptor de infrarrojos. El receptor, dependiendo de la distancia ofrece una salida de voltaje inversa (a mayor voltaje, menor distancia).






Para calcular la distancia en centímetros a un objeto, podemos usar un ajuste de mínimos cuadrados. La relación entre distancia <->voltaje no es lineal, sino que sigue una hipérbola.
             Se definen 3 zonas de medida, según la distancia:         A partir de 10cm. Entre 10 y 35 cm y de 35 hasta fuera de rango. Así tenemos 3 funciones diferentes según la zona de medida : alto, medio bajo, para ajustar la medida en centímetros.
Gráfico del voltaje y la distancia

Para obtener la distancia real en cm podemos usar el siguiente código:


Variables:
int alto=515, medio=160, bajo=77; //valores de tensión del sharp
int v1=5.811816334556221;         //Datos parametrizados
int v2=6.946413436045397;
int y1=1.80249287176700;
int y2=6.17138891056397;
int p1=10, p2=35;         //Distancia mínima de lectura y mediana
int cm=0;                //Para almacenar el valor obtenido en cm valor=0; 
int sharp=A0;            //Entrada analógica del sensor.


Programa:
valor=analogRead(sharp);

if (valor>alto || value=999; //fuera de rango
else if (valor > medio){
cm=(int)((1000.0/valor−y1)∗(v1)+p1); 
}else{
cm=(int)((1000.0/valor−y2 )∗(v2)+p2); 
}


(Código: David Vilaseca)