View
228
Download
0
Category
Preview:
Citation preview
1
Control de direccionamiento y navegación de vehículo a radiocontrol
Integrantes: Cassola Maximiliano Serritella Sebastián
PROYECTO FINAL TALLER DE
MICROCONTROLADORES 2010
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010
2
Introducción a los Microcontroladores
Recibe el nombre de controlador el dispositivo que se emplea para la administración de uno o
varios procesos. Por ejemplo, el controlador que regula el funcionamiento de un horno dispone de
un sensor que mide constantemente su temperatura interna y, cuando traspasa los límites
prefijados, genera las señales adecuadas que accionan los efectores que intentan llevar el valor de
la temperatura dentro del rango estipulado.
Aunque el concepto de controlador ha permanecido invariable a través del tiempo, su
implementación física ha variado frecuentemente. Hace tres décadas, los controladores se
construían exclusivamente con componentes de lógica discreta, posteriormente se emplearon los
microprocesadores, que se rodeaban con chips de memoria y E/S sobre una tarjeta de circuito
impreso. En la actualidad, todos los elementos del controlador se han podido incluirse en un chip,
el cual recibe el nombre de microcontrolador.
Hoy en día están conquistando el mundo y están presentes en nuestra vida, en general. Se pueden
encontrar controlando el funcionamiento de diversos dispositivos como teclados de
computadoras, teléfonos, hornos microondas , televisores, entre otros.
Un microcontrolador es un circuito integrado de alta escala de integración que incorpora la mayor parte de los elementos que configuran un controlador.
Dispone normalmente de los siguientes componentes:
Procesador o UCP (Unidad Central de Proceso).
Memoria RAM para Contener los datos.
Memoria para el programa tipo ROM/PROM/EPROM.
Líneas de E/S para comunicarse con el exterior.
Diversos módulos para el control de periféricos (temporizadores, Puertas Serie y Paralelo, CAD: Conversores Analógico/Digital, CDA: Conversores Digital/Analógico, etc.).
Generador de impulsos de reloj que sincronizan el funcionamiento de todo el sistema.
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010
3
Introducción al Proyecto
El proyecto que se presenta a continuación está relacionado a la Materia Optativa Taller de Microcontroladores del año 2010 de la facultad de Cs. Exactas de la UNICEN. Y como se introduce en la sección anterior, va a ser programando sobre microcontroladores. El trabajo consiste en controlar el direccionamiento y navegación de un vehículo a radiocontrol con el objetivo de que pueda marchar dado un mapa precargado, desde un punto origen a uno destino, teniendo la capacidad de poder esquivar obstáculos. La idea de ser aplicado a vehículos a radiocontrol viene dado a las limitaciones que presentan actualmente los microcontroladores, principalmente las relacionadas a la potencia de cálculo de los mismos. Se programó este trabajo sobre un microcontrolador PIC modelo 18F4550. El cual pertenece a los
microcontroladores PIC18 de gama alta. Posee una arquitectura RISC (reduced instruction set
computer) de 16 bits longitud de instrucciones y 8 bits de datos. El modelo fue elegido teniendo
en cuenta las características específicas del dispositivo como Módulos PWM, Conversores
Analógico-Digital, USART, además por sus tipos de memorias, periféricos incluidos, ancho de
palabras, etc., necesarias para el funcionamiento del proyecto.
Para esto, se programó sobre un microcontrolador, diferentes funcionalidades para controlar el direccionamiento y navegación de un vehículo a radiocontrol. Entre las principales funcionalidades implementadas se encuentran:
Calcular ángulo y sentido: dadas dos sentencias NMEAS el programa es capaz de determinar el ángulo y el sentido próximo a doblar del vehículo.
Chequear sensores de proximidad: el programa puede chequear, si existen, los sensores de proximidad del vehículo y de ser necesario toma la decisión de cambiar el ángulo a doblar por la presencia de obstáculos. Esta información es pasada a los servos.
Controlar movimiento de servos: permite controlar los diferentes servos del vehículo para moverlos según el Angulo resultante a doblar.
Para navegar, se le debe cargar al proyecto una ruta o camino de puntos (sentencias NMEAS) la cual indica el recorrido que se quiere realizar. Además el proyecto utiliza un dispositivo GPS para tomar sentencias NMEAS para determinar la posición actual del móvil y realizar los cálculos correspondientes para su movilidad y navegación. Este tipo de proyecto podría servir para (que hace y para que sirve o serviría y si hay algún proyecto como este en la web
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010
4
desventajas del MIcrocontrolador, direccionan poca memoris, son demasiado sansibles ala electrostatica, aun con una memoria externa limitan su actividad a algo basico asi como su set de instrucciones seerte y espero que esto te sirva de algo
Una idea general de que es lo que hace el vehículo-dirigido es tratar de seguir una camino de puntos GPS cargada previamente y sin chocarse con obstáculos. Para el direccionamiento se realizaron cálculos matemáticos en el que intervienen la ubicación actual y la ubicación a la que desea dirigirse. Y para esquivar los obstáculos se utilizaron varios sensores de proximidad ubicados en lugares claves del vehículo. La realización de este proyecto podría servir para distintas aplicaciones dentro de la variedad de vehículos no tripulados, en el que su utilización puede otorgar a la inteligencia militar el reconocimiento de campo enemigo tanto para vehículos terrestres como aéreos. También en un futuro se podría utilizar para transporte de personas o de objetos ya que su alto desarrollo de ir por el camino correcto y además la forma de esquivar obstáculos podría proporcionar una gran ayuda para el hombre y algo que hoy en día se valoriza mucho es la reducción de costos, por lo que se podría ahorrar en un conductor. Sería algo así como un “Piloto automático” constante. Algunos links semejantes al proyecto: http://www.buenastareas.com/ensayos/Navegador-Gps-Microcontrolado/1457467.html http://conexionelectronica.net/index.php?option=com_content&task=view&id=16&Itemid=2 http://issuu.com/todomicrostamp/docs/gps
Funcionamiento del proyecto
En un principio, se debe cargar en el PIC la ruta formada por checkpoint, por medio del RS232,
configurado con los pines xmit=PIN_C6y rcv=PIN_C7, y con el pulsador de checkpoints PIN_E0
encendido, indicando que los datos que entran por serie se almacenan como checkpoint. La
capacidad de almacenamiento máxima permitida es de 32 checkpoints, es decir, 32 valores de
latitud y 32 valores de longitud diferentes.
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010
5
Una vez que se cargan los puntos de checkpoints, se conecta un dispositivo GPS en los pines
correspondientes al RS232 (PIN_C6 y PIN_C7) para que el mismo tome los datos NMEA actuales
del vehículo. Se debe desactivar el pulsador de checkpoint PIN_E0 para indicar que el dato que se
recibe por serie es proveniente del GPS.
Los datos que se cargan por los pines PIN_C6 y PIN_C7 para cualquiera de los dos casos (ruta de
checkpoint o dispositivo GPS) son sentencias NMEA, de las cuales se interpretan como válidas las
de encabezado $GPRMC. El programa se encarga de tomar estos datos provenientes del puerto
serie, con una especie de autómata y guardarlos en forma de cadena de caracteres para que luego
se seleccionen los campos necesarios (latitud, longitud y sentido).
Una vez que se lee un dato del puerto serie proveniente del dispositivo GPS, se calcula el ángulo
entre el punto al que se debe llegar (checkpoint) y el punto obtenido recientemente por el
dispositivo GPS. Con el ángulo obtenido, se analizan los sensores del vehículo por si es necesario
cambiar el ángulo a doblar, en caso de que se detecten obstáculos. Una vez calculado esto se
procede a mover los servos. El proceso comienza nuevamente recibiendo una nueva sentencia
NMEA por el dispositivo GPS y se repite hasta que se alcanzan todos los puntos de checkpoint
guardados.
Pseudocodigo del funcionamiento del Proyecto
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010
6
Estructuras Utilizadas
Para el desarrollo de este proyecto se decidió dividir y utilizar las siguientes clases como se
muestra a continuación:
Main.c: principal, se encarga del manejo entero del proyecto.
Automata.c: máquina de estados que toma los datos NMEA del rs232 y los guarda en
forma de cadena de caracteres.
Automata.h: almacena las estructuras y variables necesarias que utiliza la clase
autómata.c.
Gps.c: encargada de interpretar, leer y devolver los datos NMEA que guarda el autómata.
Gps.h: almacena las estructuras y variables necesarias que utiliza la clase Gps.c.
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010
7
Inter.c: se encarga del manejo de interrupciones.
Lcd.c: maneja las funciones relacionadas al display.
18F4550.c: manejo del microcontrolador.
Servo.c: controla el movimiento de los servos.
Servo.h: almacena las estructuras y variables necesarias que utiliza la clase Servo.c.
Checkpoint.c: carga y verifica los puntos de checkpoints.
Checkpoint.h: almacena las estructuras y variables necesarias que utiliza la clase
Checkpointc.
Sensores.c: se encarga del manejo de movimientos de los sensores.
Sensores.h: almacena las estructuras y variables necesarias que utiliza la clase Sensores.c.
Ángulos
Referencia a la función calcular del pseudocódigo del funcionamiento del proyecto. Calcula el
ángulo a doblar entre los datos NMEA.
IMPORTANTE: Las sentencias NMEAS probadas y aceptadas tienen el
formato de latitud y longitud de la siguiente manera: GGGG.MMM.
El ángulo a doblar entre los datos de las sentencias NMEAS tomadas por el dispositivo GPS y los
tomados por el punto de checkpoint al que debemos llegar lo calculamos de la siguiente manera:
Si la latitud resultante de la diferencia entre las latitud proveniente del checkpoint y del
dispositivo GPS es positiva entonces:
Si la latitud resultante de la diferencia entre las latitud proveniente del checkpoint y del
dispositivo GPS es negativa entonces:
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010
8
Es decir que le sumamos un giro completo.
Sensores
Referencia a la función leer sensores del pseudocódigo del funcionamiento del proyecto. Dado el
ángulo a doblar y el valor de los sensores retorna el ángulo que se deben mover los servos.
El sensor de proximidad infrarrojos que simulamos en el Proteus es el sensor GP2D12. Este en
particular indica mediante una salida analógica la distancia medida. Esta salida es no lineal y
atiende a la curva siguiente:
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010
9
Si observamos detenidamente la gráfica, vemos que el sensor es eficaz en el intervalo de distancias de 10 hasta 80 cm ya que a distancias menores la curva no es homogénea y para distancias mayores el intervalo de voltaje de salida del sensor es muy pequeño. Es por ello necesario limitar el sensor a este intervalo ya sea por software o hardware.
El sensor tiene como salida un voltaje entre 0 y 3 voltios dependiendo de la distancia del obstáculo, pero este dato no es suficiente para saber a qué distancia está el objeto. Para ello hemos recogido los siguientes puntos tomados de dicho sensor:
Salida (V) Distancia (cm)
2.6 8.5
2.5 10
2.2 11.5
2 13
1.75 15
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010
10
1.4 20
1.12 25
0.96 30
0.85 35
0.75 40
0.68 45
0.62 50
0.58 55
0.52 60
0.5 65
0.47 70
0.44 75
0.41 80
Estos datos son precargados en el proyecto sobre un arreglo, por lo tanto cuando se produce la
lectura de los sensores de proximidad se determina la distancia a un objeto si existe.
En este proyecto consideramos 3 sensores de proximidad delanteros y 1 trasero, como se muestra
en la siguiente imagen:
Aunque el sensor detecte un objeto hasta en 80 cm. de distancia de proximidad, nosotros
consideramos tratarlos a partir de los 40 cm. (0.75V), es decir que desde este valor hacia menores
alertamos un objeto y se modifica el ángulo a doblar de ser necesario para esquivar el objeto.
Consideramos más apropiada la distancia de 40 cm. para alertar por un objeto ya que es una
distancia suficientemente grande para que el vehículo pueda doblar, igualmente este valor está
almacenado en una CTE y puede ser restaurado en cualquier momento de ser necesario.
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010
11
NOTA: el sensor trasero no lo utilizamos en el proyecto, pero igualmente lo agregamos en la
resolución del mismo como alternativa a una posible mejora a la movilización del vehículo.
Las técnicas que utilizamos para redireccionar el ángulo a doblar son las siguientes:
Si un objeto está a una distancia menor a 40cm. (detecta el objeto) del sensor izquierdo
(SI) o del sensor derecho (SD) y el sensor del centro(SC) no detecta objeto (mayor a 40cm.
de distancia), entonces si el ángulo a doblar es para la izquierda (de 0° a 90°) y el SI avisa
que hay un objeto, entonces se hace un cálculo para llevar el vehículo hacia la derecha (de
90° a 180°). Lo mismo pasa para el lado derecho, y se intenta llevar el auto hacia la
izquierda. En los casos cruzados, es decir, cuando el ángulo a doblar es para la izquierda y
el sensor que se activa esta sobre la derecha, y viceversa, entonces el ángulo a doblar es el
mismo que se había calculado en las funciones de ángulos.
Ahora si se detecta un objeto en el SI o en el SD, y si el SC también detecta un objeto,
entonces si el ángulo a doblar es para la izquierda (de 0° a 90°) y el SI avisa que hay un
objeto, entonces se lleva el vehículo a 135°, es decir, lo forzamos a doblar hacia la
derecha para evitar el obstáculo. Lo mismo pasa para el lado derecho, y se intenta llevar el
auto a 45° forzándolo a ir hacia la izquierda. En los casos cruzados, es decir, cuando el
ángulo a doblar es para la izquierda y el sensor que se activa esta sobre la derecha, o
viceversa, entonces el ángulo a doblar es el mismo que se había calculado en las funciones
de ángulos.
Servos
Referencia a la función mover servos del pseudocódigo del funcionamiento del proyecto. Dado el
ángulo a doblar proveniente de las funciones de los sensores, hace mover a los mismos este
ángulo.
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010
12
Los servos que simulamos tienen un radio de giro de 180°. Están conectamos directamente al PIC
en los puertos B. El control de posición de los servos lo hacemos por PWM utilizando el timer0,
soportamos hasta 8 servos, se puede ajustar a los que se necesiten.
Señal de Control
Señal PWM de 50 Hz.
El ancho de pulso varía entre 0.5ms y 2.5ms.
Cada anchura se corresponde con una posición angular del eje de salida del servo.
Trabajamos con ángulos comprendidos entre 0° (90° a IZQ) y 180° (90° a DER).
PWM y Timer0
Dividimos los 20 ms en 8 ventanas temporales de 2.5ms.
Utilizamos 75 ticks por cada ventana de 2.5ms. con divisor del Timer0 de 32.
Conversión entre grados y tiempos en ticks
El ángulo de cada servo lo expresamos en grados en el rango [0,180].
La anchura en pulso está comprendida entre 0.5 ms y 2.5ms.
La anchura en ticks (con divisor de 32) está comprendida entre 15 y 75 ticks.
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010
13
Establecemos una relación lineal entre el ángulo y la anchura (Ton).
Una vez obtenido el tick, se calcula, con una regla de 3, el valor para que el Timer0 retarde el
tiempo correspondiente a dicho valor del tick.
Moviendo 8 servos con el Timer0
En cada ventana de 2.5 ms actuamos sobre un servo.
Al terminar con la ventana 8 comenzamos nuevamente en la 1.
En cada instante hay como mucho un servo activo.
Ventajas y Desventajas
Presentamos las ventajas y desventajas de programar este tipo de proyecto en
microcontroladores,
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010
14
Ejemplo Funcionamiento
A continuación detallamos en un ejemplo los diferentes pasos y el resultado obtenido de simular
el proyecto sobre Proteus.
En el ejemplo aparecen 4 servos (de los cuales dos de arriba están conectados), un osciloscopio,
un display, 4 sensores (de los cuales el de abajo esta desconectado), el PIC y una UART con el fin
de facilitar y testear la simulación.
Suponiendo que tenemos las siguientes sentencias NMEAS:
$GPRMC,195155.00,A,3719.183,S,5411.733,W,0.660,200.0,300809,,,A*5B
$GPRMC,195155.00,A,3719.190,S,5411.760,W,0.660,200.0,300809,,,A*5B
$GPRMC,195155.00,A,3719.184,S,5411.734,W,0.660,200.0,300809,,,A*5B
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010
15
Donde vamos a utilizar la primera como punto de checkpoint y las otras 2 como provenientes del
dispositivo GPS. El campo marcado en rojo es la latitud, en verde la longitud y el azul el sentido,
notar que el sentido que se necesitan son los provenientes del dispositivo GPS.
En un principio cargamos el primer NMEA por rs232, recordar que el botón correspondiente al
pulsador de checkpoint debe estar activo para indicar que el dato que se carga en un punto de
checkpoint.
Luego desactivamos el botón correspondiente al pulsador de checkpoint para indicar que el dato
que entra por UART es de un dispositivo GPS y cargamos la segunda sentencia NMEA.
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010
16
Se puede observar que en el display aparece un grado G, que es el ángulo que sale de hacer la
función correspondiente a ángulos entre dos sentencias NMEAS, y A que corresponde al valor que
sale luego de revisar los sensores y es el ángulo que deben doblar los servos. Como se observa los
sensores están en cero, por lo tanto no tienen ningún objeto cerca y por ende el valor de A es igual
al valor de G. Se puede notar también que los servos que están funcionando (los dos de arriba) se
movieron el grado correspondiente a A. El valor que sale de 85 grados, hace referencia que el
vehiculo se mueve 5° a la izquierda.
Ahora vemos que pasa si se activa el sensor izquierdo. Recordar que para activarlo le tenemos
que poner un valor de voltaje mayor a 0.75v, es decir, le estamos indicando que se encuentra a
una distancia menor a 40 cm. Para esto cargamos nuevamente la segunda sentencia NMEA por la
UART.
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010
17
Como se observa por el display el grado G, sigue siendo igual ya que el ángulo que se calcula es
sobre las mismas sentencias NMEAS. Al cambiar el valor del sensor izquierdo, se puede ver que el
valor de A también cambió e intenta llevar al vehículo para el lado derecho. Este cambio también
se observa sobre los servos los cuales siempre van a doblar el grado correspondiente a A.
Ahora observemos que pasa si también se activa el servo de la parte frontal del vehículo.
Nuevamente cargamos la misma sentencia NMEA para ver el resultado:
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010
18
Como era de esperar, el valor de A cambió a 135° tal como habíamos detallado anteriormente en
la parte de los sensores. Y por ende los servos tomaron este valor.
Algo importante de aclarar es que la sentencia NMEA que hace referencia a que se carga por un
dispositivo GPS (todas las que aparecen en la UART menos la primera) no llega a un radio próximo
a la sentencia que hace referencia al checkpoint (la primera) y por lo tanto no se puede avanzar al
siguiente checkpoint o marcar que se llegó a destino.
La tercer sentencia NMEA que aparece en el principio del ejemplo, si cumple con esta condición de
checkpoint comparándola con el mismo punto de check, es decir que se encuentra en un radio
próximo, esto se puede observar mirando latitud y longitud de ambas sentencias.
Entonces ahora vamos a cargar dicha sentencia para que se vea que cumple el checkpoint y se
pasa al siguiente check, en nuestro caso debe finalizar ya que cargamos únicamente un punto de
check para el ejemplo.
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010
19
En el display se ve, como habíamos mencionado, que se cumple la condición de check y se intenta
pasar al siguiente check, pero como no hay más se llega al final del recorrido. Los valores de los
servos no se modificaron, están marcando los del ejemplo anterior, ya que la verificación de
checkpoint se comprueba antes de empezar a calcular el nuevo ángulo a doblar.
Si se quiere se puede seguir probando combinaciones de sentencias NMEA y ver cómo van
variando los servos, pero se muestran algunas para que se entienda principalmente su
funcionamiento.
El proyecto fue testeado con varios puntos de checkpoint y varios provenientes de GPS y anduvo a
la perfección. Se debe tener en cuenta para su buen funcionamiento que se deben cargar por
rs232 las sentencias NMEAS de a una por una para no obstruirlo.
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010
20
Conclusión
conclusión contando que es lo que se propusieron, que problemas o que sorpresas les dio al
realizarlo y que problemas se presentarían al pasarlo a un autito real.
Recommended