tema10 el sensor gp2d120 rev291110 - … · diagrama de bloques el sensor calculala...

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

Upload: ngokien

Post on 30-Sep-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

(c) Domingo Llorente 2010 1

EL sensor de distancias GP2D120

(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

(c) Domingo Llorente 2010 3

Diagrama de bloques

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

Diagrama de bloques

(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.

(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.

(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].

(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.

(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);

(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

(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”);

(c) Domingo Llorente 2010 11

Interpolación lineal. Mínimos cuadrados

(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.

(c) Domingo Llorente 2010 13

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

Completamos la tabla con los valores tomados de forma experimental

(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

(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.

(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.

(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

(c) Domingo Llorente 2010 18

Solución en CCS (II)

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

(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

(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.

(c) Domingo Llorente 2010 21

Solución completa:

(c) Domingo Llorente 2010 22

Valores obtenidos