el sensor de distancia gp2d120 rev291110
TRANSCRIPT
![Page 1: El Sensor de Distancia GP2D120 Rev291110](https://reader034.vdocuments.net/reader034/viewer/2022050801/54866f74b4795984178b4db5/html5/thumbnails/1.jpg)
(c) Domingo Llorente 2010 1
EL sensor de distancias GP2D120
![Page 2: El Sensor de Distancia GP2D120 Rev291110](https://reader034.vdocuments.net/reader034/viewer/2022050801/54866f74b4795984178b4db5/html5/thumbnails/2.jpg)
(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](https://reader034.vdocuments.net/reader034/viewer/2022050801/54866f74b4795984178b4db5/html5/thumbnails/3.jpg)
(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](https://reader034.vdocuments.net/reader034/viewer/2022050801/54866f74b4795984178b4db5/html5/thumbnails/4.jpg)
(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](https://reader034.vdocuments.net/reader034/viewer/2022050801/54866f74b4795984178b4db5/html5/thumbnails/5.jpg)
(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](https://reader034.vdocuments.net/reader034/viewer/2022050801/54866f74b4795984178b4db5/html5/thumbnails/6.jpg)
(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](https://reader034.vdocuments.net/reader034/viewer/2022050801/54866f74b4795984178b4db5/html5/thumbnails/7.jpg)
(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](https://reader034.vdocuments.net/reader034/viewer/2022050801/54866f74b4795984178b4db5/html5/thumbnails/8.jpg)
(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](https://reader034.vdocuments.net/reader034/viewer/2022050801/54866f74b4795984178b4db5/html5/thumbnails/9.jpg)
(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](https://reader034.vdocuments.net/reader034/viewer/2022050801/54866f74b4795984178b4db5/html5/thumbnails/10.jpg)
(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](https://reader034.vdocuments.net/reader034/viewer/2022050801/54866f74b4795984178b4db5/html5/thumbnails/11.jpg)
(c) Domingo Llorente 2010 11
Interpolación lineal. Mínimos cuadrados
![Page 12: El Sensor de Distancia GP2D120 Rev291110](https://reader034.vdocuments.net/reader034/viewer/2022050801/54866f74b4795984178b4db5/html5/thumbnails/12.jpg)
(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](https://reader034.vdocuments.net/reader034/viewer/2022050801/54866f74b4795984178b4db5/html5/thumbnails/13.jpg)
(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](https://reader034.vdocuments.net/reader034/viewer/2022050801/54866f74b4795984178b4db5/html5/thumbnails/14.jpg)
(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](https://reader034.vdocuments.net/reader034/viewer/2022050801/54866f74b4795984178b4db5/html5/thumbnails/15.jpg)
(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](https://reader034.vdocuments.net/reader034/viewer/2022050801/54866f74b4795984178b4db5/html5/thumbnails/16.jpg)
(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](https://reader034.vdocuments.net/reader034/viewer/2022050801/54866f74b4795984178b4db5/html5/thumbnails/17.jpg)
(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](https://reader034.vdocuments.net/reader034/viewer/2022050801/54866f74b4795984178b4db5/html5/thumbnails/18.jpg)
(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](https://reader034.vdocuments.net/reader034/viewer/2022050801/54866f74b4795984178b4db5/html5/thumbnails/19.jpg)
(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](https://reader034.vdocuments.net/reader034/viewer/2022050801/54866f74b4795984178b4db5/html5/thumbnails/20.jpg)
(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](https://reader034.vdocuments.net/reader034/viewer/2022050801/54866f74b4795984178b4db5/html5/thumbnails/21.jpg)
(c) Domingo Llorente 2010 21
Solución completa:
![Page 22: El Sensor de Distancia GP2D120 Rev291110](https://reader034.vdocuments.net/reader034/viewer/2022050801/54866f74b4795984178b4db5/html5/thumbnails/22.jpg)
(c) Domingo Llorente 2010 22
Valores obtenidos