Sie sind auf Seite 1von 20

PROYECTO FINAL TALLER DE

MICROCONTROLADORES 2010

Control de direccionamiento y navegacin de


vehculo a radiocontrol

Integrantes:
Cassola Maximiliano
Serritella Sebastin
1
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010

Introduccin a los Microcontroladores

Recibe el nombre de controlador el dispositivo que se emplea para la administracin 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 lmites
prefijados, genera las seales 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 travs del tiempo, su


implementacin fsica ha variado frecuentemente. Hace tres dcadas, los controladores se
construan exclusivamente con componentes de lgica 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 da estn conquistando el mundo y estn presentes en nuestra vida, en general. Se pueden
encontrar controlando el funcionamiento de diversos dispositivos como teclados de
computadoras, telfonos, hornos microondas , televisores, entre otros.

Un microcontrolador es un circuito integrado de alta escala de integracin 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.
Lneas de E/S para comunicarse con el exterior.
Diversos mdulos para el control de perifricos (temporizadores, Puertas Serie y Paralelo,
CAD: Conversores Analgico/Digital, CDA: Conversores Digital/Analgico, etc.).
Generador de impulsos de reloj que sincronizan el funcionamiento de todo el sistema.

2
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010

Introduccin al Proyecto
El proyecto que se presenta a continuacin est relacionado a la Materia Optativa Taller de
Microcontroladores del ao 2010 de la facultad de Cs. Exactas de la UNICEN. Y como se introduce
en la seccin anterior, va a ser programando sobre microcontroladores.

El trabajo consiste en controlar el direccionamiento y navegacin de un vehculo 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 obstculos.

La idea de ser aplicado a vehculos a radiocontrol viene dado a las limitaciones que presentan
actualmente los microcontroladores, principalmente las relacionadas a la potencia de clculo 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 caractersticas especficas del dispositivo como Mdulos PWM, Conversores
Analgico-Digital, USART, adems por sus tipos de memorias, perifricos 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 navegacin de un vehculo 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 prximo a doblar del vehculo.

Chequear sensores de proximidad: el programa puede chequear, si existen, los sensores de


proximidad del vehculo y de ser necesario toma la decisin de cambiar el ngulo a doblar
por la presencia de obstculos. Esta informacin es pasada a los servos.

Controlar movimiento de servos: permite controlar los diferentes servos del vehculo para
moverlos segn 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. Adems el proyecto utiliza un dispositivo GPS para
tomar sentencias NMEAS para determinar la posicin actual del mvil y realizar los clculos
correspondientes para su movilidad y navegacin.

Este tipo de proyecto podra servir para

(que hace y para que sirve o servira y si hay algn proyecto como este en la web
3
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010

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 vehculo-dirigido es tratar de seguir una camino de
puntos GPS cargada previamente y sin chocarse con obstculos.
Para el direccionamiento se realizaron clculos matemticos en el que intervienen la ubicacin
actual y la ubicacin a la que desea dirigirse.
Y para esquivar los obstculos se utilizaron varios sensores de proximidad ubicados en lugares
claves del vehculo.

La realizacin de este proyecto podra servir para distintas aplicaciones dentro de la variedad de
vehculos no tripulados, en el que su utilizacin puede otorgar a la inteligencia militar el
reconocimiento de campo enemigo tanto para vehculos terrestres como areos.
Tambin en un futuro se podra utilizar para transporte de personas o de objetos ya que su alto
desarrollo de ir por el camino correcto y adems la forma de esquivar obstculos podra
proporcionar una gran ayuda para el hombre y algo que hoy en da se valoriza mucho es la
reduccin de costos, por lo que se podra ahorrar en un conductor. Sera algo as como un Piloto
automtico 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 mxima permitida es de 32 checkpoints, es decir, 32 valores de
latitud y 32 valores de longitud diferentes.

4
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010

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 vehculo. 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 vlidas las
de encabezado $GPRMC. El programa se encarga de tomar estos datos provenientes del puerto
serie, con una especie de autmata 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 vehculo por si es necesario
cambiar el ngulo a doblar, en caso de que se detecten obstculos. 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

5
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010

Estructuras Utilizadas
Para el desarrollo de este proyecto se decidi dividir y utilizar las siguientes clases como se
muestra a continuacin:

Main.c: principal, se encarga del manejo entero del proyecto.

Automata.c: mquina 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
autmata.c.

Gps.c: encargada de interpretar, leer y devolver los datos NMEA que guarda el autmata.
Gps.h: almacena las estructuras y variables necesarias que utiliza la clase Gps.c.

6
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010

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 funcin calcular del pseudocdigo 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:

7
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010

Es decir que le sumamos un giro completo.

Sensores
Referencia a la funcin leer sensores del pseudocdigo 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 analgica la distancia medida. Esta salida es no lineal y
atiende a la curva siguiente:

8
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010

Si observamos detenidamente la grfica, 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 homognea y para
distancias mayores el intervalo de voltaje de salida del sensor es muy pequeo. 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
obstculo, 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

9
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010

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 ms apropiada la distancia de 40 cm. para alertar por un objeto ya que es una
distancia suficientemente grande para que el vehculo pueda doblar, igualmente este valor est
almacenado en una CTE y puede ser restaurado en cualquier momento de ser necesario.

10
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010

NOTA: el sensor trasero no lo utilizamos en el proyecto, pero igualmente lo agregamos en la


resolucin del mismo como alternativa a una posible mejora a la movilizacin del vehculo.

Las tcnicas 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 clculo para llevar el vehculo 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 haba calculado en las funciones de ngulos.

Ahora si se detecta un objeto en el SI o en el SD, y si el SC tambin 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 vehculo a 135, es decir, lo forzamos a doblar hacia la
derecha para evitar el obstculo. Lo mismo pasa para el lado derecho, y se intenta llevar el
auto a 45 forzndolo 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 haba calculado en las funciones
de ngulos.

Servos
Referencia a la funcin mover servos del pseudocdigo del funcionamiento del proyecto. Dado el
ngulo a doblar proveniente de las funciones de los sensores, hace mover a los mismos este
ngulo.

11
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010

Los servos que simulamos tienen un radio de giro de 180. Estn conectamos directamente al PIC
en los puertos B. El control de posicin de los servos lo hacemos por PWM utilizando el timer0,
soportamos hasta 8 servos, se puede ajustar a los que se necesiten.

Seal de Control

Seal PWM de 50 Hz.


El ancho de pulso vara entre 0.5ms y 2.5ms.
Cada anchura se corresponde con una posicin 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.

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

12
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010

Establecemos una relacin 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,
13
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010

Ejemplo Funcionamiento
A continuacin 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 estn 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 simulacin.

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

14
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010

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 botn correspondiente al
pulsador de checkpoint debe estar activo para indicar que el dato que se carga en un punto de
checkpoint.

Luego desactivamos el botn 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.

15
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010

Se puede observar que en el display aparece un grado G, que es el ngulo que sale de hacer la
funcin 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 estn en cero, por lo tanto no tienen ningn objeto cerca y por ende el valor de A es igual
al valor de G. Se puede notar tambin que los servos que estn 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.

16
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010

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 tambin cambi e intenta llevar al vehculo para el lado derecho. Este cambio tambin
se observa sobre los servos los cuales siempre van a doblar el grado correspondiente a A.

Ahora observemos que pasa si tambin se activa el servo de la parte frontal del vehculo.
Nuevamente cargamos la misma sentencia NMEA para ver el resultado:

17
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010

Como era de esperar, el valor de A cambi a 135 tal como habamos 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 prximo
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 condicin de
checkpoint comparndola con el mismo punto de check, es decir que se encuentra en un radio
prximo, 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.

18
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010

En el display se ve, como habamos mencionado, que se cumple la condicin de check y se intenta
pasar al siguiente check, pero como no hay ms se llega al final del recorrido. Los valores de los
servos no se modificaron, estn marcando los del ejemplo anterior, ya que la verificacin 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 cmo 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 perfeccin. 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.

19
PROYECTO FINAL TALLER DE MICROCONTROLADORES 2010

Conclusin
conclusin contando que es lo que se propusieron, que problemas o que sorpresas les dio al
realizarlo y que problemas se presentaran al pasarlo a un autito real.

20

Das könnte Ihnen auch gefallen