You are on page 1of 22

EL sensor de distancias GP2D120

(c) Domingo Llorente 2010

Caractersticas del sensor


Salida analgica (Vo) Alimentacin a +5v Rango efectivo de medida de 4 a 40 cm Tiempo tpico de respuesta 39ms Retardo tpico de comienzo 44ms Consumo medio 33mA

(c) Domingo Llorente 2010

Diagrama de bloques
El sensor calcula la distancia midiendo el ngulo de reflexin recibido

Diagrama de bloques

(c) Domingo Llorente 2010

Curva de respuesta
La respuesta NO es lineal Es necesario utilizar algn mtodo de interpolacin El sensor NO da lecturas fiables por debajo de 4cm.

(c) Domingo Llorente 2010

Mtodos de interpolacin
Experimental. (Realizando lecturas de tensin en funcin de la distancia). Interpolacin lineal. Mtodo de la recta punto pendiente. Interpolacin lineal. Mtodo de los mnimos cuadrados. Interpolacin polinmica.

(c) Domingo Llorente 2010

Interpolacin experimental (no recomendable)


Realizar experimentalmente lecturas de tensin del sensor colocando un objeto a distancias conocidas. Cuantas ms lecturas realicemos mejores resultados obtendremos. Luego guardar los resultados en dos tablas. float V[n]={0.3 ,0.4 ,0.5 , }; // Valores de tensin float D[n]={40.0 ,30.0,25.8, }; // Valores de distancia En tiempo de ejecucin para cada lectura de tensin del sensor consultaremos el valor ms prximo almacenado en la tabla V[n] y su valor de distancia asociado en D[n].

(c) Domingo Llorente 2010

Interpolacin lineal. Recta punto pendiente


El mtodo de la interpolacin lineal consiste en tomar dos lecturas, parejas (Tensin,distancia). (x1,y2),(x2,y2) Con dos puntos se puede calcular matemticamente la ecuacin de la recta que pasa por dichos puntos: (y-y1)=m(x-x1) donde m=(y2-y1)/(x2-x1) Al resolver la ecuacin tendremos una funcin que nos devolver el valor de la distancia en funcin del valor de tensin que nos da el sensor. Si tomamos N medidas podemos calcular las ecuaciones de N-1 rectas y as sustituir la curva NO lineal por un conjunto de rectas conocidas.
(c) Domingo Llorente 2010 7

Interpolacin lineal. Recta punto pendiente


Tomando 7 puntos vamos a convertir la curva de respuesta no lineal del conversor en 6 rectas.

Nota: Vamos a considerar como eje X el valor de tensin y como eje Y el valor de distancia para sacar las ecuaciones y=f(x), es decir, distancia=f(tensin);

(c) Domingo Llorente 2010

Interpolacin lineal. Recta punto pendiente


Aplicando la ecuacin de la recta cada dos puntos obtenemos: R1) R2) R3) R4) R5) R6) y= y= y= y= y= y= 12 3x 16 5x 21 8.57x 32.32 19.35x 41.53 31.81x 60.45 68.18x

Donde: y= Distancia en cm x= Tensin Vo del sensor GP2D120

(c) Domingo Llorente 2010

Interpolacin lineal. Recta punto pendiente


Ahora ya solo queda programar las ecuaciones en CCS:
voltios=5.0*valor_adc/1023; if(voltios <=3.00 && voltios >2.00) dist=12.00-3.00*voltios; if(voltios <=2.00 && voltios >1.40) dist=16.00-5.00*voltios; if(voltios <=1.40 && voltios >1.05) dist=21.00-8.57*voltios; if(voltios <=1.05 && voltios >0.74) dist=32.32-19.35*voltios; if(voltios <=0.74 && voltios >0.52) dist=41.53-31.81*voltios; if(voltios <=0.52 && voltios >0.30) dist=60.45-68.18*voltios; printf(lcd_putc,\fVsal:%f,voltios); printf(lcd_putc,\nDist:%f,dist);

// Tramo R1 // Tramo R2 // Tramo R3 // Tramo R4 // Tramo R5 // Tramo R6

(c) Domingo Llorente 2010

10

Interpolacin lineal. Mnimos cuadrados

(c) Domingo Llorente 2010

11

Interpolacin lineal. Mnimos cuadrados (II)


Se trata de encontrar la ecuacin de la recta que pase, lo ms cerca posible, de todos los puntos.

(c) Domingo Llorente 2010

12

Interpolacin lineal. Mnimos cuadrados (III)

Completamos la tabla con los valores tomados de forma experimental


(c) Domingo Llorente 2010 13

Interpolacin lineal. Mnimos cuadrados (IV)


La recta buscada es: Y=0.935x + 0.36

En nuestro caso: Podramos fijar grupos de tres o cuatro puntos de la grfica del sensor y calcular las ecuaciones de las rectas por este mtodo

(c) Domingo Llorente 2010

14

Interpolacin Polinmica.
Base matemtica: Dados N puntos del plano siempre existir un polinomio de orden N-1 que pase por dichos puntos. Para dos puntos: p1 y p2 existe un polinomio de grado 1 (recta) que pasa por los dos. Y=ax+b Para tres puntos: p1,p2 y p3 existe un polinomio de grado 2 (parbola) que pasa por los tres. Y=ax2+bx+c El mtodo consiste en plantear las N ecuaciones con N incognitas para calcular los valores de a,b,c, El mtodo consigue polinomios que suavizan las curvas entre los puntos pero suelen ser inestables segn vamos subiendo de orden y el clculo se complica.
(c) Domingo Llorente 2010 15

Ejemplo de programa
Disear un programa que est, constantemente, leyendo valor Vo del sensor GP2D120 conectado a la entrada analgica AN3 y mostrando en el LCD de la placa el valor de la tensin y la distancia en cm. Utilizar el mtodo de interpolacin lineal dividiendo la curva de respuesta del sensor en 6 rectas.

(c) Domingo Llorente 2010

16

Solucin en CCS (I)


Comenzamos utilizando el asistente PIC Wizard

Luego creamos la carpeta para nuestro proyecto y damos un nombre al archivo con extensin .pjt

(c) Domingo Llorente 2010

17

Solucin en CCS (II)


Elegir: Pic: PIC17F877A Frecuencia del oscilador: 4Mhz Fuses: Crystal osc <=4Mhz Memoria de programa: No protegida

(c) Domingo Llorente 2010

18

Solucin en CCS (III)


En la pestaa de Analog configurar: Resolucin: 1024 (10bits). Fuente de reloj para la conversin: Internal La entrada analgica: A0 A1 A3

(c) Domingo Llorente 2010

19

Solucin en CCS (IV)


En la pestaa Code podemos ver el cdigo que se aadir en nuestro programa.

(c) Domingo Llorente 2010

20

Solucin completa:

(c) Domingo Llorente 2010

21

Valores obtenidos

(c) Domingo Llorente 2010

22