Story Transcript
EL sensor de distancias GP2D120
(c) Domingo Llorente 2010
1
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
2
Diagrama de bloques El sensor calcula la distancia midiendo el ángulo de reflexión recibido
Diagrama de bloques
(c) Domingo Llorente 2010
3
Curva de respuesta 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.
(c) Domingo Llorente 2010
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.
(c) Domingo Llorente 2010
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. 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
6
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 rectas conocidas. (c) Domingo Llorente 2010
7
Interpolación 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 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
8
Interpolación lineal. Recta punto pendiente Aplicando la ecuación 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= Tensión Vo del sensor GP2D120
(c) Domingo Llorente 2010
9
Interpolación lineal. Recta punto pendiente Ahora ya solo queda programar las ecuaciones en CCS: voltios=5.0*valor_adc/1023; if(voltios 2.00) dist=12.00-3.00*voltios; if(voltios 1.40) dist=16.00-5.00*voltios; if(voltios 1.05) dist=21.00-8.57*voltios; if(voltios 0.74) dist=32.32-19.35*voltios; if(voltios 0.52) dist=41.53-31.81*voltios; if(voltios 0.30) dist=60.45-68.18*voltios; printf(lcd_putc,”\fVsal:%f”,voltios”); printf(lcd_putc,”\nDist:%f”,dist”);
(c) Domingo Llorente 2010
// Tramo R1 // Tramo R2 // Tramo R3 // Tramo R4 // Tramo R5 // Tramo R6
10
Interpolación lineal. Mínimos cuadrados
(c) Domingo Llorente 2010
11
Interpolación lineal. 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.
(c) Domingo Llorente 2010
12
Interpolación lineal. Mínimos cuadrados (III)
Completamos la tabla con los valores tomados de forma experimental (c) Domingo Llorente 2010
13
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 sensor y calcular las ecuaciones de las rectas por este método
(c) Domingo Llorente 2010
14
Interpolación Polinómica. 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 complica. (c) Domingo Llorente 2010
15
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 curva de respuesta del sensor en 6 rectas.
(c) Domingo Llorente 2010
16
Solución en CCS (I) Comenzamos utilizando el asistente “PIC Wizard”
Luego creamos la carpeta para nuestro proyecto y damos un nombre al archivo con extensión .pjt
(c) Domingo Llorente 2010
17
Solución en CCS (II) Elegir: Pic: PIC17F877A Frecuencia del oscilador: 4Mhz Fuses: Crystal osc