PIC 18F45XX - IES LUIS DE LUCENA...6. Interpolación lineal. Método de la recta punto-pendiente (I)...

Post on 21-Feb-2021

3 views 0 download

Transcript of PIC 18F45XX - IES LUIS DE LUCENA...6. Interpolación lineal. Método de la recta punto-pendiente (I)...

PIC 18F45XX

El sensor de distancias(GP2D120)

1. Características generales

➔ 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

2. Diagrama de bloques del sensor

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

recibido

3. Curva de respuestaGP2D120

:Observaciones➔ La respuesta NO es lineal.

➔ Es necesario utilizar algún método de interpolación.

➔ El sensor NO da lecturas fiables por debajo de 4cm.

4. 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. (Polinomio de Lagrange)

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

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

6. Interpolación lineal. Método de la recta punto-pendiente (I)

➔ El método de la interpolación lineal consiste en tomar dos puntos de la curva de respuesta (tensión,distancia). (x1,y2) y (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 la función f(x) de una recta que nos devolverá el valor de la distancia en función del valor de tensión leído del 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.

6. Interpolación lineal. Método de la recta punto-pendiente (II)

➔ 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 tensión y como eje Y el valor de distancia para sacar las ecuaciones y=f(x), es decir, distancia=f(tensión);

➔ 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 en voltios del sensor GP2D120

6. Interpolación lineal. Método de la recta punto-pendiente (III)

➔ Ahora ya solo queda programar las ecuaciones en C18:

voltios=(5.0*valor_adc)/1023.0;if(voltios <=3.00 && voltios >2.00) dist=12.00-3.00*voltios; // R1else if(voltios <=2.00 && voltios >1.40) dist=16.00-5.00*voltios; // R2else if(voltios <=1.40 && voltios >1.05) dist=21.00-8.57*voltios; // R3else if(voltios <=1.05 && voltios >0.74) dist=32.32-19.35*voltios; // R4else if(voltios <=0.74 && voltios >0.52) dist=41.53-31.81*voltios; // R5else if(voltios <=0.52 && voltios >0.30) dist=60.45-68.18*voltios; // R6else dist=88; // Fuera de rango

➔ Una vez calculada la distancia solo queda mostrar el valor en el lcd.gotoxy(0,0);escribe_cadena(“Distancia: “);escribe_float(dist);escribe_cadena(“cm“);

6. Interpolación lineal. Método de la recta punto-pendiente (IV)

7. Interpolación lineal. Método de los mínimos cuadrados (I)

7. Interpolación lineal. Método de los mínimos cuadrados (II)

➔ Se trata de encontrar la ecuación de la recta que pase, lo más cerca posible, de todos los puntos.

7. Interpolación lineal. Método de los mínimos cuadrados (III)

➔ Completamos la tabla con los valores tomados de forma experimental

7. Interpolación lineal. Método de los 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 sensor y calcular las ecuaciones de las rectas por este método

8. Interpolación polinómica. Polinomio de Lagrange

➔ Base matemática

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 (parábola) que pasa por los tres. y=ax2+bx+c

➔ El método consiste en plantear las N ecuaciones con N incognitas para 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 orden y el cálculo se puede complicar en exceso.

Mas info en: http://www.iafe.uba.ar/e2e/metodosnumericos/lagrange/lagrange.html

9. Simulación en Proteus

(1) Elegir el componente

(2) Editarlo para cambiar ajustes

(3) Conectar a una entrada analógica

10. Programa de ejemplo

Diseñar un programa que configure como entrada analógica el pin RA0 y muestre en el lcd el valor leído del sensor GP2D120 en voltios y la distancia equivalente.

Solución en C18 (l)

Solución en C18 (II)

Solución en C18 (III)

Simulación en Proteus