PIC 18F45XX - IES LUIS DE LUCENA...6. Interpolación lineal. Método de la recta punto-pendiente (I)...
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