El Sensor de Distancia GP2D120 Rev291110

22
(c) Domingo Llorente 2010 1 EL sensor de distancias GP2D120

Transcript of El Sensor de Distancia GP2D120 Rev291110

Page 1: El Sensor de Distancia GP2D120 Rev291110

(c) Domingo Llorente 2010 1

EL sensor de distancias GP2D120

Page 2: El Sensor de Distancia GP2D120 Rev291110

(c) Domingo Llorente 2010 2

Características del sensor

� Salida analógica (Vo)

� Alimentación a +5v

� Rango efectivo de medida de 4 a 40 cm

� Tiempo típico de respuesta 39ms

� Retardo típico de comienzo 44ms

� Consumo medio 33mA

Page 3: El Sensor de Distancia GP2D120 Rev291110

(c) Domingo Llorente 2010 3

Diagrama de bloques

� El sensor calcula la distancia midiendo el ángulo de reflexión recibido

Diagrama de bloques

Page 4: El Sensor de Distancia GP2D120 Rev291110

(c) Domingo Llorente 2010 4

Curva derespuesta

� La respuesta NO es lineal

� Es necesario utilizar algúnmétodo de interpolación

� El sensor NO da lecturasfiables por debajo de 4cm.

Page 5: El Sensor de Distancia GP2D120 Rev291110

(c) Domingo Llorente 2010 5

Métodos de interpolación

� Experimental. (Realizando lecturas de tensión en función de la distancia).

� Interpolación lineal. Método de la recta punto pendiente.

� Interpolación lineal. Método de los mínimos cuadrados.

� Interpolación polinómica.

Page 6: El Sensor de Distancia GP2D120 Rev291110

(c) Domingo Llorente 2010 6

Interpolación experimental (no recomendable)

� Realizar experimentalmente lecturas de tensión del sensor

colocando un objeto a distancias conocidas.

� Cuantas más lecturas realicemos mejores resultados obtendremos.

� Luego guardar los resultados en dos tablas.

float V[n]={0.3 ,0.4 ,0.5 ,…… }; // Valores de tensión

float D[n]={40.0 ,30.0,25.8,…… }; // Valores de distancia

� En tiempo de ejecución para cada lectura de tensión del sensor

consultaremos el valor más próximo almacenado en la tabla V[n] y

su valor de distancia asociado en D[n].

Page 7: El Sensor de Distancia GP2D120 Rev291110

(c) Domingo Llorente 2010 7

Interpolación lineal. Recta punto pendiente

� El método de la interpolación lineal consiste en tomar dos lecturas, parejas (Tensión,distancia). (x1,y2),(x2,y2)

� Con dos puntos se puede calcular matemáticamente la ecuación de la recta que pasa por dichos puntos:

(y-y1)=m(x-x1) donde m=(y2-y1)/(x2-x1)

� Al resolver la ecuación tendremos una función que nos devolveráel valor de la distancia en función del valor de tensión 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 rectasconocidas.

Page 8: El Sensor de Distancia GP2D120 Rev291110

(c) Domingo Llorente 2010 8

Interpolación lineal. Recta punto pendiente

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

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

Page 9: El Sensor de Distancia GP2D120 Rev291110

(c) Domingo Llorente 2010 9

Interpolación lineal. Recta punto pendiente

Aplicando la ecuación de la recta cada dos puntos obtenemos:

R1) y= 12 – 3xR2) y= 16 – 5xR3) y= 21 – 8.57xR4) y= 32.32 – 19.35xR5) y= 41.53 – 31.81xR6) y= 60.45 – 68.18x

Donde:y= Distancia en cmx= Tensión Vo del sensor GP2D120

Page 10: El Sensor de Distancia GP2D120 Rev291110

(c) Domingo Llorente 2010 10

Interpolación 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; // Tramo R1

if(voltios <=2.00 && voltios >1.40) dist=16.00-5.00*voltios; // Tramo R2

if(voltios <=1.40 && voltios >1.05) dist=21.00-8.57*voltios; // Tramo R3

if(voltios <=1.05 && voltios >0.74) dist=32.32-19.35*voltios; // Tramo R4

if(voltios <=0.74 && voltios >0.52) dist=41.53-31.81*voltios; // Tramo R5

if(voltios <=0.52 && voltios >0.30) dist=60.45-68.18*voltios; // Tramo R6

printf(lcd_putc,”\fVsal:%f”,voltios”);

printf(lcd_putc,”\nDist:%f”,dist”);

Page 11: El Sensor de Distancia GP2D120 Rev291110

(c) Domingo Llorente 2010 11

Interpolación lineal. Mínimos cuadrados

Page 12: El Sensor de Distancia GP2D120 Rev291110

(c) Domingo Llorente 2010 12

Interpolación lineal. Mínimos cuadrados (II)

Se trata de encontrar la ecuación de la recta quepase, lo más cercaposible, de todos los puntos.

Page 13: El Sensor de Distancia GP2D120 Rev291110

(c) Domingo Llorente 2010 13

Interpolación lineal. Mínimos cuadrados (III)

Completamos la tabla con los valores tomados de forma experimental

Page 14: El Sensor de Distancia GP2D120 Rev291110

(c) Domingo Llorente 2010 14

Interpolación lineal. Mínimos cuadrados (IV)

La recta buscada es:

Y=0.935x + 0.36

En nuestro caso:Podríamos fijar grupos de tres o cuatro puntos de la gráfica del sensory calcular las ecuaciones de las rectas por este método

Page 15: El Sensor de Distancia GP2D120 Rev291110

(c) Domingo Llorente 2010 15

Interpolación Polinómica.

Base matemática:Dados N puntos del plano siempre existirá un polinomio de ordenN-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 (parábola) que pasa por los tres. Y=ax2+bx+c

El método consiste en plantear las N ecuaciones con N incognitaspara calcular los valores de a,b,c,…

El método consigue polinomios que “suavizan” las curvas entre los puntos pero suelen ser inestables según vamos subiendo de ordeny el cálculo se complica.

Page 16: El Sensor de Distancia GP2D120 Rev291110

(c) Domingo Llorente 2010 16

Ejemplo de programa

Diseñar un programa que esté, constantemente, leyendo valor Vo del sensor GP2D120 conectado a la entrada analógica AN3 y mostrando en el LCD de la placa el valor de la tensión y la distancia en cm. Utilizar el método de interpolación lineal dividiendo la curvade respuesta del sensor en 6 rectas.

Page 17: El Sensor de Distancia GP2D120 Rev291110

(c) Domingo Llorente 2010 17

Solución en CCS (I)

Comenzamos utilizando elasistente “PIC Wizard”

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

Page 18: El Sensor de Distancia GP2D120 Rev291110

(c) Domingo Llorente 2010 18

Solución en CCS (II)

Elegir:Pic: PIC17F877AFrecuencia del oscilador: 4MhzFuses: Crystal osc <=4MhzMemoria de programa: No protegida

Page 19: El Sensor de Distancia GP2D120 Rev291110

(c) Domingo Llorente 2010 19

Solución en CCS (III)

En la pestaña de “Analog” configurar:• Resolución: 1024 (10bits).

• Fuente de reloj parala conversión: Internal

• La entrada analógica: A0 A1 A3

Page 20: El Sensor de Distancia GP2D120 Rev291110

(c) Domingo Llorente 2010 20

Solución en CCS (IV)

En la pestaña “Code” podemos ver el código que se añadirá en nuestro programa.

Page 21: El Sensor de Distancia GP2D120 Rev291110

(c) Domingo Llorente 2010 21

Solución completa:

Page 22: El Sensor de Distancia GP2D120 Rev291110

(c) Domingo Llorente 2010 22

Valores obtenidos