Vous êtes sur la page 1sur 68

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

NDICE
! CAPTULOS
1 2 3 4 5 6 7 8 Introduccin Circuito de alimentacin Sensores Microcontrolador 68HC11 FPGA Comunicaciones Software de Aplicacin Mecnica pag. 2 pag. 6 pag. 9 pag. 27 pag. 34 pag. 46 pag. 52 pag. 64

! CONCLUSIONES Y TRABAJOS FUTUROS

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

1 INTRODUCCIN
La realizacin del proyecto Diseo y construccin de un Robot Autnomo se ha llevado a cabo con el resultado, entre otras cosas, de desarrollar y unir los dos mdulos fundamentales que lo componen. El primero para un interfaz de sensores y control central, Mdulo I: Control Central y Sensores, y un segundo mdulo para el interfaz de motores y control del movimiento denominado Mdulo II: Control de Motores y Movimiento.

Estos dos mdulos han sido desarrollados como dos proyectos de fin de carrera, el Mdulo I es del que trata este documento, y el Mdulo II que ha sido desarrollado por Bartolom Navarro Ruiz los objetivos de este proyecto conjunto son los siguientes.

Originalmente se plante el proyecto con el fin de construir un robot autnomo diseado para participar en competiciones de Robots Luchadores de Sumo, y con este propsito se eligieron unas especificaciones de diseo que se ajustaran a los requerimientos de este tipo de eventos. As, los distintos elementos que completan el Sistema han sido seleccionados para ese fin, razn sta de la decisin de disear al robot con las caractersticas que lo definen y no con otras.

Se ha completado una plataforma a partir de la que se puede continuar desarrollando nuevos sistemas. Por razones de dimensiones y peso, no ha podido realizar competicin alguna. La versatilidad que se ha logrado es debida a que se trata de un diseo robusto en la mecnica, potente en el hardware y muy flexible en lo que se refiere a su programacin.

A continuacin se describen a grandes rasgos las partes principales del robot para tener as una primera visin general del funcionamiento del conjunto.

La estructura mecnica sobre la que se apoya todo lo dems fue pensada robusta para poder soportar las condiciones de la prueba. En segundo lugar el

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

diseo se ha realizado buscando una adherencia mxima a la superficie del suelo para evitar ser empujado y para poder aprovechar la fuerza motriz al enfrentarse al oponente sin perder traccin. Como ltimo objetivo en el aspecto mecnico hay que comentar el carcter simtrico que se ide en un principio,el cual permite al robot andar sobre las bases superior e inferior y que ha dado como resultado un sistema ms gil y potente a la hora de realizar cualquier tarea ya que, tericamente, se comporta de forma similar en ambos sentidos del movimiento. Una vista general del prototipo se observa en la siguiente figura.

Para generar esa fuerza motriz se cuenta con motores tipo Paso a Paso que ofrecen unas buenas prestaciones y bajo consumo. Se caracterizan por ser unos motores de alto rendimiento en comparacin con los motores de DC, habitualmente utilizado por otros desarrolladores. En total es dos el nmero de motores empleados, uno a cada lado, para de esta forma variar la direccin del movimiento con la relacin de velocidades que exista entre ambos.

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

El control de estos motores es posible gracias a la tarjeta de motores que hace de interfaz entre el microcontrolador y los motores. Esta tarjeta se compone de dos etapas. En la primera se incluye un driver para motor de paso que recibe las seales del microcontrolador y genera una secuencia de pulsos. sta es la secuencia que entra en la segunda etapa donde se ve amplificada para dar la corriente que los motores consumen.

Las seales que el microcontrolador enva al driver, que son las que hacen que se produzca uno u otro movimiento, son el resultado de aplicar unos determinados algoritmos cuya entrada es la informacin que enva el Mdulo I despus de haber hecho un procesamiento de los datos del entorno que posee gracias a los sensores.

Se han implantado tres tipos de sensores para un mejor y ms completo anlisis del medio que rodea al robot. Para empezar se citan los de largo alcance, que miden la distancia en un rango de entre 10cm y 80cm. A continuacin se cuenta con sensores de proximidad que detectan objetos cercanos, por debajo de 10cm y que son imprescindibles para cubrir esa zona ciega que dejan los primeros. Por otro lado es necesario un tercer tipo que sea capaz de detectar el borde externo de la zona de lucha.

En la eleccin del microcontrolador 68HC11A1 de Motorola han tenido principal importancia dos aspectos. En primer lugar, es un modelo muy utilizado en estas aplicaciones, existen numerosas herramientas de desarrollo y amplia experiencia al respecto. Por otra parte, queda solucionado el problema de implantar un hardware para el microcontrolador al adquirir la tarjeta CT6811 de Microbtica, que cuenta con todo lo necesario para completar el desarrollo sin atender a fallos debidos al montaje de la supuesta placa.

Se ha obviado anteriormente la arquitectura hardware empleada en ambos sistemas microcontroladores y sus respectivos interfaces, pero no est de ms hacer aqu una referencia a ello. Dada la complejidad de los algoritmos que se requieren para el correcto funcionamiento del conjunto ha sido labor obligada

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

olvidarse de la programacin en ensamblador y desarrollarlo en lenguaje C, que conlleva necesariamente una ampliacin de memoria del sistema. Esto implica que dos de los puertos del microcontrolador hayan de ser usados para cablear el bus de direcciones y el bus de datos a la memoria externa. As, para ampliar el nmero de puertos, se ha tenido que realizar un mapeo en memoria de puertos por medio de un decodificador y de una serie de puertos de entrada salida. Todo ello ha sido programado y cargado en una FPGA.

Para poder establecer una comunicacin y que sea posible el intercambio de informacin entre ambos mdulos, se ha utilizado el puerto de comunicaciones serie sncronas, que permite una tasa de transmisin de hasta 1 Mbit/s. Esta conexin se realiza a travs de un programa Maestro Esclavo, en donde el Mdulo I: Control Central y Sensores se comporta como

Maestro, procesa la informacin sensorial y decide la accin a realizar. En el otro extremo de este enlace se encuentra el Mdulo II: Control de Motores y Movimiento que hace las veces de Esclavo, esto es, su funcin ser la de obedecer las rdenes que el Maestro le enva y seleccionar un determinado movimiento ya programado y que est en consonancia con los datos que el Maestro ha procesado. A la hora de asegurarse que los errores en la transmisin (o ruido) no afecten al entendimiento de ambos bloques se ha implementado un control de flujo que detecta cundo se ha producido un error y hace que el Maestro repita el envo del ltimo paquete hasta que el Esclavo confirme un envo correcto. .

Todo esto se conecta a una batera de 24V que, por un lado, alimenta directamente los motores a esa tensin y, por otro, alimenta la electrnica obteniendo 5V a travs de un convertidor continua continua conmutado que requiere una tensin continua a la entrada de entre 7 y 40V. Esta configuracin de la fuente de alimentacin hace que sea posible cambiar con facilidad entre distintas tensiones de alimentacin o entre motores que trabajen a diferentes tensiones.

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

2 CIRCUITO DE ALIMENTACIN
Este mdulo tiene una nica lnea de alimentacin de 5V a la que estn conectados todos los circuitos de lgica y los sensores.

La alimentacin de todo el sistema se realiza a base de una batera formada por dos pilas de 12V y 1.2Ah cada una, conectadas en serie para as conseguir una tensin de 24V. La idea era disear un robot autnomo, de esta forma no se ha tenido ms remedio que hacer uso de bateras y no de una posible alimentacin de la red.

La tensin de alimentacin de la lgica se obtiene por medio de un regulador reductor conmutado, el LM2825-5.0. Se trata de un circuito integrado con encapsulado MDIP de 24 pines que lleva incorporados todos los elementos de un regulador de estas caractersticas. Los nicos componentes externos que hay que aadir son dos condensadores y un diodo. El primer condensador es para filtrar la tensin de entrada al regulador, el otro es para configurar un arranque suave (softstart). Esta caracterstica hace que se encienda el regulador de una forma suave presentando a la salida una rampa inicial hasta llegar a la tensin de 5V, en vez de producirse un escaln. Esto ayuda a que no se produzca un exceso de corriente en el encendido, debido a que de esta manera la tensin aplicada a los condensadores de filtrado de la alimentacin de la lgica se vaya incrementando suavemente. Y por ltimo, el diodo sirve para el circuito de arranque del regulador.

Figura 2.1 Esquema de conexin del regulador

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

Cabe destacar ciertas caractersticas de este regulador; La tensin de entrada puede variar entre 7 y 40V. Suministra una corriente mxima de 1A a la salida con un rendimiento aproximado del 85%. A continuacin se exponen los resultados de un ensayo realizado con el convertidor para comprobar algunas de sus caractersticas. El ensayo se ha realizado a media carga (500 mA) a la salida del convertidor, variando la tensin de entrada y midiendo el rendimiento para comprobar los valores que asegura el fabricante;

VARIABLES MEDIDAS:

VENTRADA: tensin de entrada [V] IENTRADA: intensidad de entrada [mA] VSALIDA: tensin de salida [V] ISALIDA: : intensidad de salida [mA] rendimiento

Vin 5 5,5 6 6,5 7 7,5 8 8,5 9 9,5 10 10,5 11 11,5 12

Iin 410 mA 460 mA 520 mA 490 mA 450 mA 420 mA 390 mA 370 mA 340 mA 330 mA 310 mA 300 mA 280 mA 270 mA 260 mA

Vout 4 4,48 5 5 5 5 5 5 5 5 5 5 5 5 5

Iout 384mA 446mA 502mA 504mA 504mA 504mA 504mA 504mA 504mA 504mA 504mA 504mA 504mA 504mA 504mA

74% 78% 80% 80% 80,7% 80,7% 81,5% 80,9% 85% 81% 82% 80,7% 82% 82% 81,5%

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

Este regulador brinda una gran flexibilidad a la hora de escoger las bateras debido a su amplio rango de la tensin de entrada y su elevado rendimiento. Adems no necesita ningn tipo de disipadores, reduciendo el tamao de la fuente de alimentacin, y permitiendo una total libertad en la ubicacin de la misma.

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

3 SENSORES.
Antes de comenzar a explicar en detalle cada uno de los sensores hay que hablar sobre la especificacin que hemos asumido. En las competiciones de sumo el tamao del tatami es de 175 cm de dimetro, y hay que mantener una zona vaca de 100 cm alrededor de dicho tatami. El suelo del interior del tatami es de color negro y en el extremo hay una franja de color blanco que hay que cruzar para que se considere que se ha salido de dicho tatami. Estas especificaciones simplifican enormemente la labor de reconocer el otro robot, ya que tenemos asegurada un rea vaca de 375 cm de dimetro, por tanto, el nico objeto que podemos detectar es el otro robot. De no ser as, tendramos que recurrir a complejas tcnicas de visin artificial para reconocer el robot contrario entre otros muchos obstculos. Hay que aadir que en el diseo mecnico se ha previsto la posibilidad de que el robot contrario intente volcar al robot para que pierda la traccin y poder echarlo fuera del tatami. Para evitar esto, se ha hecho un diseo en el cual la traccin se lleva a cabo por medio de orugas que sobresalen por arriba y por debajo de tal manera que el robot pueda funcionar en ambas posiciones. Teniendo esto en cuenta, los principales elementos dentro del sistema sensorial del robot son los siguientes: Sensores para detectar el robot contrario: .- Sensores de medida de distancia por Infrarrojos. .- Sensores de proximidad por Infrarrojos. Sensor para detectar el final del tatami: .- Sensor sensible al color. Sensor para detectar la base sobre la que apoya el robot: .- Interruptor de mercurio.

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

3.1 Principio de funcionamiento de los sensores de Infrarrojos


Se han escogido sensores de infrarrojos debido a su sencillez de uso y su amplia disponibilidad, como efecto de sus numerosas aplicaciones. Adems, el alcance necesario no es muy grande ya que el dimetro del tatami es de 175cm, y si se desease usar el robot para otras tareas, el rango de deteccin que brindan los sensores de largo alcance es suficiente para la mayora de las aplicaciones. Bsicamente, el principio de operacin de los sensores de infrarrojos es el siguiente:

Figura 3.1 Principio de funcionamiento de los sensores de IR Como se puede apreciar en la figura 3.1, estos sensores funcionan con un emisor y un receptor de luz infrarroja en paralelo y sin contacto visual directo entre ellos. De tal modo que cuando se aproxima un objeto a la pareja emisor-receptor la luz emitida se ve reflejada y es entonces cuando el receptor puede verla.

10

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

Obviamente, este es el principio terico y no es directamente aplicable a un dispositivo que funcione en la practica. Hay varias perturbaciones que se deben evitar: 1.- Interferencia por luz ambiental: Este es el primer problema que se presenta a la hora de desarrollar un sensor de infrarrojos. Debido a este fenmeno, el receptor no solamente podr recibir luz del emisor, sino tambin luz infrarroja procedente de otras fuentes. Quiz la ms importante de ellas sea la luz solar, seguida por la luz artificial emitida por bombillas incandescentes y fluorescentes, e incluso por el calor producido por personas y otros elementos. Para solucionar esto hay que modular la seal de luz emitida a una frecuencia distinta de la de otras fuentes de luz, la luz emitida por el sol es prcticamente continua y por tanto casi cualquier modulacin har el sistema inmune a esta perturbacin. Pero las fuentes de luz artificiales suelen emitir a 50Hz y mltiplos cercanos a esta frecuencia. La frecuencia optima de modulacin esta en torno a los 40kHz. La seal recibida en el receptor tendr que ser demodulada para su correcta interpretacin. Otra posible solucin es aislar de las interferencias a la pareja, alojndolas en compartimentos cerrados a las emisiones de luz que provengan de otras fuentes. Sin embargo esto no es siempre posible, y en esos casos habr que recurrir a la solucin mencionada en el prrafo anterior. 2.- Interferencias causadas intencionadamente: Dentro de este tipo de perturbaciones se encuentran las que perturban la medida del sensor por causas no naturales y de manera intencionada. Algunos ejemplos pueden ser la luz de los mandos de TV que en su mayora funcionan por IR modulados, o la emisin de los sensores de otros robots que se encuentren en las cercanas. Hay que sealar que este tipo de perturbacin es especialmente importante, ya que debido al principio de funcionamiento de estos sensores la luz recibida directamente por otro emisor se recibe con mucha mas

11

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

intensidad que la recibida a travs de la reflexin del objeto detectado. Y por tanto si el alcance de deteccin del sensor es de 10cm la luz proveniente directamente de un emisor externo puede causar efectos a partir de los 50cm. La solucin es mandar algn tipo de cdigo generado internamente que el receptor pueda reconocer o que luego pueda ser interpretado por el microprocesador como correcto. Incluso, en el caso de que se mande siempre el mismo cdigo, podra ocurrir que un robot externo que quisiera perturbar la medida aprendiese el cdigo y seguidamente lo emitiese, consiguiendo su objetivo. En este ultimo caso es recomendable la generacin de un cdigo distinto para cada emisin siendo parte de su contenido aleatorio. Esto ultimo reduce drsticamente las posibilidades de perturbacin de la medida. Y en ultimo caso, ser posible conocer cuando se esta intentando perturbar el sensor y donde esta situada la fuente de la perturbacin. 3.- Influencia del color del objeto a detectar sobre la medida: Este es un factor que influye en gran medida en sistemas sin modulacin que se basan en la intensidad de la seal recibida para detectar la distancia al objeto detectado. As, en el ejemplo de la figura 3.1 si se usase el fototransistor en la zona lineal y el emisor sin modulacin, habra grandes desviaciones en la medida obtenida en funcin del color del objeto detectado. Esto no siempre es un efecto perjudicial, y ms adelante se vera como aprovechamos este efecto para detectar el color del suelo y detectar el final del tatami. Una solucin muy eficaz contra esto son los sistemas que usan triangulacin para obtener la distancia del objeto detectado. Tambin haremos una breve descripcin ms delante de cmo se puede usar esta tcnica.

12

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

3.2 Sensores de medida de distancia por Infrarrojos.


Estos constituyen el principal elemento de deteccin del robot, cubriendo el rango de los 10 a 80 cm del robot. Se han usado 4 sensores GP2D12 de Sharp. Estos sensores han demostrado una alta inmunidad a interferencias externas, y unas medidas excepcionales en situaciones criticas. El modulo de medida de distancia GP2D12 funciona por un principio similar al descrito en el apartado 3.1. Pero en vez de detectar simplemente si llega la luz del emisor o la intensidad de la misma para determinar la distancia del objeto, lo que hace es ver de donde llega la luz.

GP2D12 R

Figura 3.2 Funcionamiento del sensor GP2D12 Como se puede ver en la figura 3.2 el emisor siempre emite la mayor parte de la luz con un ngulo constante, dependiendo de la distancia al objeto el ngulo variara. Este ngulo es lo que realmente mide el sensor y es lo que hace que este sensor sea totalmente inmune al color, entre otras caractersticas del medio reflectante, puesto que, con que llegue un poco de intensidad luminosa ya es suficiente para determinar el ngulo del haz recibido. Estos sensores tienen una resolucin terica de 0.27 cm., para esta aplicacin no es necesaria dicha resolucin, y se ha comprobado que mide perfectamente con resoluciones de 1 cm.

13

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

A continuacin se exponen algunas grficas en las que se puede apreciar el excelente comportamiento de este sensor; Prueba de inclinacin de la superficie a detectar: Se coloca la superficie a detectar a un ngulo que se va desviando de la perpendicular con respecto al sensor. La superficie estar a 40cm del sensor.

Angulo 0 20 40 60

Medida 40 39 39 40

Valores del sensor: Se presentan los valores devueltos por el sensor una vez han sido digitalizados por el conversor A/D del microprocesador, en funcin de la distancia a la que se encontraba el objeto a detectar; Distancia 10 20 30 40 50 Valor digital 143 77 52 39 31 Estos valores adems coinciden con los aportados por el fabricante, en la hoja de caractersticas se puede ver que esto es as.

14

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

Test de sensibilidad al material a detectar: Se colocan distintos materiales a una distancia fija del sensor, en este caso 30cm. y medimos con el sensor, se comparan el valor devuelto por el sensor y la distancia real a la que se encuentra el objeto. Material Cartn marrn Plstico Azul Cuero Negro Papel Blanco Valor digital 52 51 50 51

Vistos estos ensayos, se puede confirmar la idoneidad de este sensor en aplicaciones de este tipo. A continuacin se ver como se han utilizado para este proyecto: Desde el punto de vista electrnico, este sensor consta nicamente de tres conexiones, dos para alimentacin y una para devolver la seal de la medida. Se puede alimentar con diferentes tensiones, en este proyecto la alimentacin ha sido de 5V. En cuanto a la seal devuelta se puede decir que es una seal analgica que guarda una relacin no lineal con la distancia a medir. Hay otros modelos de este sensor que dan el valor de la medida en formato digital en serie (GP2D02), pero el valor digital que devuelven tambin es no lineal. La relacin entre la medida y la distancia al objeto se puede ver en la grfica que se presenta en la pagina siguiente, la cual pertenece a la hoja de caractersticas del sensor:

15

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

Figura 3.3 Relacin tensin de salida del sensor y distancia al objeto Se puede apreciar perfectamente que la relacin no es lineal. La forma de la grfica se debe precisamente a que lo que el sensor mide es el ngulo con que llega el haz de luz reflejado. Sin embargo si se cambia el eje de abscisas y en vez de representar la distancia se representa el inverso de la distancia se obtiene la siguiente grfica;

16

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

Figura 3.4 Relacin tensin de salida del sensor y la inversa de la distancia al objeto Se ha aadido una lnea en color verde uniendo las observaciones de 10cm y de 70cm para poder ver la linealidad. La curva sigue sin ser exactamente lineal, pero podemos hacer una aproximacin y suponer que lo es. Con esto se puede hallar una funcin fcilmente calculable para determinar la distancia al objeto a partir de la tensin obtenida del sensor, la funcin es la siguiente:

17

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

1 = 0.04 val 0.00437 d Donde val es el valor de tensin que da el sensor y d es la distancia al objeto en cm. Sin embargo, si se observa la figura 3.3 se puede ver que si el objeto esta situado a una distancia menor de 10cm del sensor, ste da las mismas lecturas que si el objeto estuviese situado a mas distancia. Es por esto por lo que ser necesario el uso de unos sensores de proximidad que detecten si hay un objeto a 10cm del sensor. Otra manera de evitar esto es colocando los sensores de tal manera que nunca pueda haber nada ms cerca de 10cm del sensor. Sin embargo esto no ha sido posible y ha habido que usar los sensores de proximidad complementarios. La lectura de los sensores se ha tomado a travs de los cuatro conversores A/D de 8 bits que estn integrados en el microcontrolador, a partir del valor obtenido del conversor A/D se calcula la distancia mediante la funcin descrita anteriormente.

18

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

3.3 Sensores de proximidad por Infrarrojos.


Ha sido necesario usar seis de estos sensores de proximidad. 4 para cubrir la zona ciega de los GP2D12 que esta por debajo de los 10 cm y otros dos para vigilar los costados del robot. Para el diseo de estos sensores se han empleado gran parte de los principios descritos en el apartado 3.1.

3.3.1 Principio de funcionamiento de los sensores de proximidad. Los sensores utilizan modulacin de la luz emitida a una frecuencia cercana a los 38 kHz. Con esto se evitan totalmente las interferencias producidas por la luz solar y artificial. Se ha implementado a nivel de software un sistema mediante el cual emitimos un cdigo con el emisor, y se comprueba que se reciba el mismo cdigo. Hay tres tipos de cdigos(el estado 1 es aquel en el que el emisor emite luz y el 0 es el estado en el que no emite luz); El primero es el menos seguro de todos pero el ms rpido, es un cdigo de 2 bits, el primero a 1 y el segundo a 0. Este cdigo es muy vulnerable a interferencias intencionadas causadas por otros emisores de luz infrarroja modulada. El segundo es ms seguro y mantiene el tiempo de calculo requerido a un nivel bajo debido a que el cdigo emitido es fijo. El tamao del cdigo es de 8 bits y su valor es "10101010". Este cdigo es muy inmune a las interferencias causadas intencionadamente que no se adapten al cdigo emitido. De esta manera un robot externo podra aprender el cdigo, emitirlo y no se podra diferenciar si realmente hay un objeto delante del sensor o si esta siendo perturbado. El tercer cdigo es el ms seguro de todos aunque el tiempo de calculo requerido para generar el cdigo es mas grande. Se trata de un cdigo de 8 bits en el cual 4 bits tienen siempre el valor '1' y los otros 4 bits son aleatorios. De esta manera el mensaje emitido siempre es distinto y no se puede establecer una relacin entre los distintos mensajes. Es prcticamente inmune a todo tipo de interferencias.

19

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

3.3.2 Diseo hardware de los sensores de proximidad. En la emisin, se usa simplemente un LED de infrarrojos con su correspondiente resistencia en serie para limitar la corriente. La tensin aplicada al LED proviene directamente de la FPGA. Esta tensin tiene que ser una seal digital modulada. El circuito que genera dicha seal se ver ms adelante, en el apartado 4 (FPGA). Para explicar el funcionamiento del sensor es necesario aclarar que en dicha seal se puede variar la frecuencia de la portadora con el microcontrolador, y tambin se puede cambiar el estado de la seal a '0', estado en el cual la tensin aplicada al emisor es una continua de valor 0V, o a '1' donde la tensin aplicada ser una onda cuadrada de frecuencia la de la portadora. De este modo, el LED de infrarrojos o bien no emitir luz alguna, o bien emitir luz intermitente a la frecuencia de la portadora especificada por el microcontrolador. En la recepcin se ha usado el circuito integrado IS1U60, el cual se trata de un receptor de control remoto por Infrarrojos para equipos de Televisin. Este circuito nos aporta las siguientes ventajas: Incluye un filtro pasa-banda con frecuencia de mxima ganancia de 38 kHz. Podremos ajustar la sensibilidad del sensor variando la frecuencia de la portadora, ya que el circuito receptor ser menos sensible segn la frecuencia de la luz emitida se aleje de los 38 kHz. El propio circuito integrado realiza la demodulacin de la seal luminosa recibida, dando a la salida un valor constante '0' o '1' segn reciba o no reciba luz respectivamente. El receptor tiene una ganancia muy alta y es posible obtener un rango de deteccin medio (15 cm aproximadamente) con menos de 7 mW (3.4 mA) de potencia aplicada al LED.

20

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

El circuito solo requiere de dos componentes externos, una resistencia de 47 y un condensador de 47F, que forman un filtro para estabilizar la tensin de alimentacin. Sin embargo no se puede estar emitiendo continuamente, pues el circuito receptor esta hecho para recibir cdigos, que son trenes de pulsos que tengan una duracin mnima de 600 s, por lo que se ha comprobado en este proyecto si los pulsos tienen una duracin mayor de 10ms el receptor da lecturas incorrectas a la salida. Por tanto la forma de onda de la tensin que habra que aplicar al LED sera parecida a la siguiente;

Figura 3.5 Formas de onda de la seal de luz recibida y de la salida del IS1U60 La seal de salida del receptor es leda por medio de un pin de uno de los puertos creados con la FPGA. Todas estas caractersticas hacen que a nivel de hardware se pueda construir un sensor barato y con unas dimensiones muy reducidas. A continuacin se muestran algunas fotografas de uno de los prototipos:

21

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

Es necesario colocar algn elemento que haga que la luz emitida por el LED sea ms direccional, de no ser as, el reflejo de la luz sobre elementos propios del sensor y del robot hara que se tomasen lecturas falsas. En este prototipo se ha usado un trozo de aislante termoretractil colocado alrededor del LED. Como se puede apreciar en las fotografas, todos los componentes van soldados a una placa pretaladrada la cual tiene dos perforaciones de 3mm de dimetro para fijar el sensor a la estructura del robot. La conexin de los sensores a la tarjeta de la FPGA se realiza de cuatro cables por los cuales van las siguientes seales: Negro: Gnd. Rojo: Vcc. Verde: Seal modulada de emisin Azul: Seal del receptor Estos cables estn soldados al sensor y se conectan a la tarjeta de la FPGA con una tira de pines macho-macho de cinco pines. Como se ve en la siguiente fotografa el conector esta hecho de tal manera que tiene polaridad y no puede ser conectado al revs.

Por ultimo hay que mencionar el calibrado de los sensores. Hay dos opciones, la primera es usar un pequeo potencimetro que regule la luz emitida por el LED, pero esto aumentara considerablemente el tamao de los sensores, y adems no podra ser calibrado por el propio microcontrolador. La segunda es variar la frecuencia de la portadora de la tensin aplicada al LED, de tal manera que el receptor sea ms o menos sensible a la seal reflejada segn la frecuencia de la portadora de esta seal este ms o menos cerca de los 38 kHz ideales. Esto adems de brindar la posibilidad de una autocalibracin por el microprocesador tambin permite que se puedan medir distancias con este sensor, como se explica en el siguiente apartado.

22

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

3.3.3 Otras consideraciones sobre los sensores de proximidad Se ha querido realizar un sensor muy verstil. En este sentido hay que aadir que aunque en principio solo se trate de un sensor de proximidad es posible tambin realizar medidas de distancia debido a las caractersticas de la respuesta en frecuencia del receptor y a que podemos cambiar la frecuencia de la portadora con el microcontrolador. La manera de medir distancias seria la siguiente; Habr que tener previamente almacenada una tabla con la distancia limite de deteccin del sensor para cada frecuencia posible de la portadora. Una vez se tenga esto se emite a la frecuencia de mxima sensibilidad (38 kHz), si en algn momento se quiere medir una distancia a un obstculo se variara la frecuencia de la portadora alejndose, por debajo, de los 38 kHz hasta encontrar la frecuencia limite a partir de la cual se deja de detectar el objeto. Una vez se tenga esta tabla y dicha frecuencia limite de la medida tomada, podemos consultar la tabla y ver cual es la distancia de deteccin para dicha frecuencia de la medida. El objeto se encontrar seguramente a la distancia obtenida. Otro uso que se ha querido dejar abierto para este tipo de sensores es el de comunicarse con otros robots o con otros dispositivos por medio de los infrarrojos, ya que dispone de un emisor y un receptor completos de infrarrojos. As, sera posible comunicarse con el televisor a travs de un mando a distancia de un televisor de manera unidireccional, o de manera bidireccional a travs del puerto de infrarrojos de un ordenador o de una calculadora HP 48G.

23

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

3.4 Sensor Sensible al Color


Como se explic en el apartado 3.1 hay sensores que son especialmente sensibles al color, debido principalmente al mtodo empleado para la deteccin del objeto. De tal manera que los sensores que se basen en el nivel de luz recibida para determinar la distancia al objeto sern especialmente sensibles al color del objeto, pues este reflejara mas o menos luz segn su color. En este caso se ha encontrado a la pareja emisor-receptor CNY-70 especialmente sensible al color del objeto reflectante. Estos sensores son necesarios para acogerse a las especificaciones impuestas por las competiciones de sumo, en las que el tatami se compone de una zona circular negra de 175 cm de dimetro, rodeado por una franja blanca para que el robot pueda detectar el final del tatami. Estos sensores estaran destinados a detectar esa franja blanca, y por tanto el final del tatami. Aunque tambin podran usarse para detectar el suelo. Esto podra ser til para detectar escaleras o simplemente el final de una plataforma donde se esta moviendo el robot. Pero es importante que se acerquen los sensores ms al suelo y aumentar la corriente que pasa por el LED emisor para disminuir la sensibilidad al color del suelo, de tal manera que siempre que haya un suelo, sea del color que sea el receptor reciba luz y si no hay suelo por debajo no la reciba. Aun as, es ms recomendable usar unos sensores de proximidad para detectar la prdida del suelo en caso de que fuese necesario. Los sensores para detectar la lnea de fin de tatami no utilizan ningn tipo de modulacin pues se ha optado por aislarlos fsicamente del resto del entorno, excepto del suelo. Los sensores llevan un aislante termoretractil que evita que la luz proveniente de otras fuentes que no sea la del propio emisor de la pareja CNY-70 pueda incidir sobre el fototransistor de dicha pareja optoacopladora.

24

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

En la siguiente figura se puede observar el esquema de conexin del sensor;

Figura 3.6 Esquema de conexin y polarizacin del CNY-70 El LED de infrarrojos esta polarizado de tal manera que circula una intensidad de 11 mA de corriente continua. En el receptor, el fototransistor permanecer en corte mientras no reciba luz y segn el nivel de luz aumente pasara al estado de activa y finalmente a saturacin. Si el color de la superficie bajo el sensor es blanco, la luz se vera reflejada, el fototransistor recibir luz y entrar en saturacin y Vout valdr aproximadamente 0V, por el contrario, si el color es negro, el fototransistor entrara en corte y el valor de Vout ser de 5V aproximadamente.

El optoacoplador CNY-70 estar cubierto como se ha mencionado antes por un aislante termoretractil que mantendr la superficie del LED y fototransistor a una distancia mnima de 3.5 mm, el final del aislante podr estar situado a una distancia mxima del suelo de 1mm. Por ltimo queda sealar que la conexin a la tarjeta de la FPGA se realizara de la misma forma que con los sensores de proximidad. Vout se conectar a un pin de uno de los puertos de entrada creados con la FPGA, el cual nos dar un valor digital del estado de la seal Vout.

25

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

3.5 Sensor de inclinacin mediante Interruptor de Mercurio


Como se mencion al comienzo del apartado 3, se ha previsto la posibilidad de que el robot vuelque. Al sobresalir las orugas que proporcionan la traccin por arriba y por debajo no es necesario un mecanismo para que el robot recupere su posicin inicial, ya que este podr moverse cuando vuelque. Sin embargo, es necesario conocer en cual de las dos posiciones esta colocado el robot, puesto que el sentido de movimiento de las orugas ser el contrario para realizar los mismos movimientos. Es por esto por lo que se ha usado este sensor. El principio de operacin del sensor es muy sencillo, consta de un interruptor de mercurio y una resistencia. El interruptor de mercurio cierra o abre el contacto entre dos terminales segn estos estn o no mojados por el mercurio que hay encerrado en una cpsula. En la figura de abajo se puede ver el esquema de conexin del sensor;

Figura 3.7 Esquema de conexin del interruptor de mercurio Como se puede apreciar Vout solo tendr dos posibles valores 0 y 5V, este valor se lee con uno de los puertos de entrada creados con la FPGA y se decide en que posicin esta colocado el robot en funcin de dicho valor.

26

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

4 MICROCONTROLADOR 68HC11
4.1 Introduccin.
Se ha elegido el microcontrolador MC68HC11-A1 de Motorola fundamentalmente debido a dos aspectos. En primer lugar, es un modelo muy utilizado en estas aplicaciones, existen numerosas herramientas de desarrollo y amplia experiencia al respecto. Por otra parte, queda solucionado el problema de implantar un hardware para el microcontrolador al adquirir la tarjeta CT6811 de Microbtica, que cuenta con todo lo necesario para completar el desarrollo sin atender a fallos debidos al montaje de la tarjeta del microcontrolador.

Se trata de un microcontrolador de 8 bits con un bus de direcciones de 16 bits, lo que le permite direccionar hasta 64Kbytes de memoria externa y con una frecuencia de reloj de 3MHz como mximo, aunque en la CT6811 viene preparado para trabajar a una velocidad de 2MHz.

A continuacin se muestra un esquema con los principales recursos del microcontrolador 68HC11, extrado de un documento de Microbtica;

Figura 4.1 Diagrama interno del microcontrolador MC68HC11

27

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

Cuenta con cinco puertos a saber, puertos A,B,C,D y E. El puerto A puede usarse como puerto de E/S de uso general, en cuyo caso dispone de 4 pines de salidas, 3 de entradas, y uno configurable. Tambin tiene asociadas las salidas de los comparadores y las entradas de los capturadores, dispositivos que estn asociados al timer principal.

El puerto B se puede usar como un puerto de salidas de uso general y en modo extendido, en el cual esta disponible el acceso a memoria externa, sirve como parte alta del bus de datos.

El puerto C tambin es utilizable como entradas/salidas de uso general, y en modo expandido este puerto lleva la parte baja del bus de direcciones y el bus de datos de manera multiplexada.

El puerto D tiene solamente seis bits que pueden ser usados como entradas/salidas, pero hay que tener en cuenta que es este puerto el que lleva las seales necesarias para llevar a cabo las funciones de comunicaciones del microcontrolador, usando dos pines para las seales Tx y Rx de las comunicaciones asncronas, y los otros cuatro pines para las seales MISO, MOSI, SCK y SS pertenecientes al sistema de comunicaciones serie sncrono de alta velocidad.

El puerto E puede ser usado como ocho entradas digitales o bien como ocho entradas al sistema del conversor analgico/digital.

El microprocesador dispone de una UART para comunicaciones serie asncronas, un mdulo de comunicaciones serie sncronas, 5 comparadores con salida hardware, 3 capturadores de entrada, un temporizador principal de 16 bits, interrupciones en tiempo real, 2 entradas de interrupciones externas, 256 bytes de RAM y 512 bytes de EEPROM.

Se ha optado por programar el microprocesador en lenguaje C debido a la potencia de dicho lenguaje y a que es el lenguaje de alto nivel ms extendido para estas aplicaciones. Como inconveniente se puede citar el hecho de que los programas en C estn menos optimizados y ocupan ms memoria. Por tanto, no son suficientes los 512

28

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

bytes de memoria EEPROM para almacenar el programa y se ha tenido que usar el microcontrolador en modo expandido con memoria externa. Hay que hacer referencia al hecho de que se pierden dos puertos de E/S para poder llevar los buses de direcciones y datos al exterior. Debido a esto tambin ha sido necesario implementar un expansor de puertos para recuperar los dos puertos que eran necesarios para esta aplicacin. Por todo esto, en un futuro proyecto de este tipo sera ms recomendable un microcontrolador ms potente.

4.2 Hardware del microcontrolador. Tarjeta CT6811

Un microcontrolador posee una arquitectura interna que facilita la comunicacin con los perifricos o sistemas externos. Aun as, siempre es necesario un hardware adicional. Este problema se soluciona gracias a la tarjeta CT6811 de Microbtica S.L.. En la figura 4.2 se muestra una foto de la tarjeta CT6811.

Figura 4.2 Vista superior de la tarjeta de desarrollo CT6811

Se trata de una tarjeta para el desarrollo de aplicaciones hardware y software basadas en el microcontrolador 68HC11. No slo sirve para el desarrollo de prototipos, sino que tambin est pensada para funcionar en sistema terminados. Se puede emplear como:

29

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

Tarjeta entrenadora:

Conectndose a ordenadores PC a travs del puerto

serie. Es posible enviar programas desde el PC a la CT6811 para que los ejecute. De esta forma, la tarjeta es muy til para la depuracin de programas en fase de pruebas y para aprender a programar el 68HC11 desde un punto de vista prctico. Tarjeta autnoma de control: La CT6811 funciona en modo autnomo, es decir, sin conectarse al PC. Cada vez que se encienda la tarjeta, se ejecutar el programa que previamente se habr cargado en la memoria EEPROM del 68HC11 o en algn tipo de memoria externa no voltil que se conecte a la tarjeta. Perifrico inteligente del PC: Tambin es posible utilizar la tarjeta para comunicar la tarjeta con el mundo exterior. La CT6811 actuara como un perifrico conectado al PC a travs del puerto serie. Este perifrico inteligente puede recibir rdenes del PC y actuar en consecuencia.

La tarjeta cuenta con los siguientes componentes. El microcontrolador MC68HC11. Un bus de expansin dividido en 6 puertos de 10 bits cada uno ( Puerto A, Puerto B, Puerto C, Puerto D, Puerto E y CONTROL ). Desde estos puertos se tiene acceso a todos los pines del micro. Switches de configuracin: 2 de modo de arranque para seleccionar entre bootstrap, single chip, expandido y special test. Otros 2 para aplicaciones del usuario. Led de pruebas, conectable o desconectable con el jumper JP3. Pulsador de reset para inicializar la tarjeta o de propsito general conectado a la entrada de interrupciones IRQ. La eleccin se realiza con el jumper JP4. Alimentacin a travs de clemas o conector tipo Jack. Conector tipo telfono para comunicacin serie directa con el PC. Reset software y hardware de la placa. Con el jumper JP7 se anula el reset software.

30

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

4.3 Expansin de memoria. Tarjeta CT256

El microcontrolador dispone de escasa capacidad de memoria interna. Adems se decidi programar el sistema en lenguaje C con lo que se hace obligada la expansin de memoria. Para este propsito se ha adquirido la tarjeta CT256 de Microbtica.

La tarjeta CT256 es una ampliacin de memoria diseada para conectarse a la tarjeta CT6811, con las siguientes caractersticas: Tiene capacidad para cubrir todo el espacio de direccionamiento del 68HC11, en total 64 kBytes. Posee el espacio de direccionamiento dividido en dos bancos: El Banco 0, en las direcciones 8000 FFFF, y el Banco 1 entre las direcciones 0000 7FFF. Cada banco puede funcionar con memoria RAM o con EEPROM segn el estado de los jumpers JP2 y JP3. Conexin elctrica a la CT6811 por medio de tres cables planos de tipo bus. La alimentacin se toma directamente de los cables de bus, es decir, la alimentacin es la misma que la de la CT6811. La CT256 junto con la CT6811 forman la base del sistema tower al que se le aaden luego la tarjeta CTFPGA y la CTMOTOR.

La conexin elctrica se realiza por medio de tres cables planos de tipo bus, de 10 hilos. Estor cables se conectan a los puertos B, C y CONTROL de ambas tarjetas. Se han utilizado dos circuitos integrados de memoria. En el Banco 0 est ocupado por la memoria DS1230Y SRAM no-voltil, de DALLAS para almacenar el programa principal. En el Banco 1, hay una memoria SRAM voltil de la familia 65256.

En este proyecto se ha optado por utilizar la RAM no voltil DS1230AB del fabricante Dallas Semiconductor en el banco 0. Esta memoria esta destinada a albergar los programas, ya que es la zona de memoria libre ms grande, solo hay un dispositivo mapeado en este rango de memoria que es la EEPROM interna del microcontrolador.

31

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

Para evitar que esto divida dicho intervalo de memoria en dos partes lo que se ha hecho es desactivar la memoria EEPROM escribiendo el valor 0x0C en el registro config, as tenemos 32Kbytes totalmente libres. Por otra parte en un segundo banco, el banco 1, se ha usado RAM voltil para almacenar datos y variables que no sean constantes pues el contenido se borra cada vez que se desconecta la alimentacin, estas variables se almacenan a partir de la direccin $3000h para dejar espacio por debajo para mapear otros dispositivos en este rea de memoria, en este caso la FPGA.

4.4 Software de desarrollo.


En cuanto al sistema de desarrollo, se ha utilizado el compilador ICC6811 de IAR SYSTEMS, se trata de un entorno de desarrollo basado en Ms-Dos y que genera los archivos binarios casi listos para cargar en el 68HC11 a partir de las fuentes escritas en lenguaje C.

Para cargar el programa en el microcontrolador se han empleado los programas desarrollados por Microbtica, en concreto el twb2.exe el cual contiene dentro todos los programas de Microbtica entre ellos el ctdialog que es un programa cargador muy til para acceder directamente a la memoria y para cargar programas en ella.

Ha sido necesario realizar unos archivos de proceso por lotes para poder configurar el uso del compilador y del linkador de una manera cmoda(c11.bat y lnk11.bat). Tambin ha habido que realizar un archivo de proceso por lotes para adaptar el fichero de salida del compilador ya que este no se puede cargar en el microcontrolador directamente con los programas de Microbtica (s19.bat).

Tambin ha sido necesario el uso directo del programa ensamblador de Motorola (as11) para realizar algunas pruebas y depurar algunos programas.

32

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

Hay que citar el hecho de que no se ha dispuesto de un sistema de emulacin o de simulacin por lo que para depurar los programas ha sido de gran ayuda el uso de la comunicaciones serie asncronas. Gracias a este sistema se ha podido hacer una depuracin de los programas teniendo el microprocesador conectado a un PC por medio del puerto serie con un terminal de comunicaciones cargado en dicho PC. Mediante este mtodo es posible saber que bucles del programa se estn ejecutando, si el programa se queda bloqueado en algn punto de ste, aadir watches a ciertas variables mandando su valor por el puerto serie, etc. Se ver ms adelante, en el capitulo correspondiente a las comunicaciones que las rutinas utilizadas para estas labores son muy sencillas y directas de implementar.

33

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

5 FPGA
5.1 Introduccin.
Como ya se menciono en el captulo 4, ha sido necesaria la implantacin de un expansor de puertos debido a que dos de los puertos del microcontrolador han de ser usados para llevar los buses de datos y direcciones a la memoria externa. Se ha optado por usar una FPGA por ser un sistema muy flexible en el que adems del expansor de puertos es posible crear otros sistemas que liberen al microcontrolador.

En este caso adems del expansor de puertos que ser expuesto mas adelante, se ha implementado un divisor de frecuencia programable de 16 bits, cuya entrada es la seal de reloj del microcontrolador (2 MHz), este dispositivo se usa para generar la seal de la portadora de los sensores de proximidad por infrarrojos. Hay que insistir en el hecho de que el divisor de frecuencia sea programable, ya que esto permite calibrar los sensores de infrarrojos adems de poder realizar medidas de distancia con los sensores de proximidad.

La FPGA elegida ha sido la MAX7128SLC84-15, de Altera. Esta eleccin se debe principalmente a que ya existan a nuestra disposicin las herramientas de desarrollo y a que exista una experiencia previa con estas FPGAs, estos, por supuesto, fueron los motivos una vez que se comprob que dicha FPGA tenia capacidad suficiente para lo que se quera hacer.

34

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

5.2 Esquema del expansor de puertos y divisor de frecuencia.

Figura 5.1 Esquema del expansor de puertos y divisor de frecuencia programable

35

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

En este esquema se pueden ver los dos sistemas que se han implementado en la FPGA. En la parte superior del esquema se puede ver a la izquierda un latch que es usado para demultiplexar el bus de direcciones del de datos, para que al siguiente bloque, que es el decodificador de direcciones solo le lleguen las direcciones y pueda determinar qu dispositivo ha sido seleccionado. Ms a la derecha, todava en la parte superior del esquema se pueden ver dos mdulos de entradas correspondientes a los puertos 1 y 2, lo que hacen es dejar o no que las seales de el puerto en cuestin gobierne el bus de datos, en funcin de si la seal de seleccin que les manda el decodificador de direcciones esta a nivel alto o bajo. Con esto prcticamente concluye a rasgos generales lo que es el sistema del expansor de puertos.

En la parte inferior aparece el sistema del divisor de frecuencia programable, que consta de los siguientes elementos; el primero por la izquierda es el propio divisor programable, el bloque que se encuentra a la derecha de este es un modulo de salida, el cual es un latch que mantiene la salida del puerto 4 que es el puerto de salida creado con la FPGA. a su izquierda hay un bloque cuya funcin es multiplicar las seales de salida del puerto 4 por la portadora que es generada mediante el divisor de frecuencia, as es como se genera la seal modulada que se aplica a los LEDs para ser emitida en forma de luz infrarroja. Es tambin apreciable el hacho de que se introduzca el bus de datos por dos lugares simultneamente, esto es debido a que para esta aplicacin sobran pines de la FPGA, y no sobran conexiones internas del PIA para llevar dicho bus a todos los dispositivos.

5.2.1

Decodificador de direcciones

A continuacin se muestra el contenido del decodificador de direcciones, el cual ha sido descrito usando VHDL;

36

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

Figura 5.2 Descripcin VHDL del decodificador de direcciones

Se puede ver que consta sencillamente de un atabla de verdad, mediante la cual se decide que valores se asignan a cada lnea de seleccin de cada dispositivo. As, si se selecciona la posicin 2000h en el bus de direcciones, se activa la seal del puerto 1, el cual escribira en el bus de datos el valor ledo mientras su lnea de seleccin permanezca activa, las lneas de seleccin de todos los dems dispositivos permanecen inactivos, pues no pueden usar el bus de datos dos dispositivos simultneamente. As con los dems dispositivos hasta la direccin 2004h, donde se encuentra mapeado el registro alto del divisor de frecuencia. Para estos cinco casos se puede ver que al final de la lnea se asigna el valor '1' a la seal CSout , esta seal es la seal de chip select que se enva a la memoria que antes estaba usando estas posiciones de memoria, anlogamente, la seal CSin es la seal proveniente del microcontrolador, y que antes estaba conectada a la seal chip select de dicha memoria.

Lo que se hace con las lneas CSout y CSin es evitar que la memoria y la FPGA escriban al mismo tiempo en el bus de datos. De este modo, la FPGA "intercepta" la lnea del chip select que va a la memoria, y en caso de que se seleccione un dispositivo perteneciente a la FPGA, esta har que la lnea de chip select de la memoria se ponga a '1', haciendo que se deseleccione dicha RAM, y quedando el bus de datos libre para que pueda escribir la FPGA.

37

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

5.2.2

Modulo de entrada

Figura 5.3 Esquema del mdulo de entrada

Este bloque hace de interfaz entre las entradas y el bus de datos escribiendo en el nicamente cuando ha sido seleccionado y permaneciendo sus salidas en tercer estado cuando no esta siendo seleccionado. Las seales que determinan su estado son las siguientes: R/W E ! ha de estar a '1' pues este modulo solo es de lectura. ! tambin ha de valer '1', esta seal es el reloj del

microcontrolador, en este caso la utilizamos para demultiplexar los dos buses. Cuando su valor es '1', se presenta el bus de datos, cuando su valor es '0', se esta presentando el bus de direcciones. Px ! es la seal de seleccin del dispositivo, su valor ha de ser

tambin '1', para indicar que es este dispositivo el que ha sido seleccionado por el bus de direcciones. Las seales DATA son las lneas que se conectaran al bus de datos. Y las seales Px0-Px7 son las que se conectan a las entradas de la FPGA.

38

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

5.2.3

Esquema del mdulo de salida.

Figura 5.4 Esquema del mdulo de salida

De manera similar que el mdulo anterior, ste hace de interfaz entre el bus de datos y las salidas digitales de la FPGA. Este mdulo lee el bus de datos cuando se le indica y actualiza las salidas digitales con los valores correspondientes y se mantienen hasta nueva escritura gracias al latch. Las seales necesarias para su habilitacin son las siguientes; R/W E Px ! Ha de valer '0' para poder escribir. ! Al igual que en el mdulo anterior ha de valer '1'. ! Igual que en el mdulo anterior, esta es la lnea de seleccin que ! Esta seal se ha creado por si existiese la necesidad de mantener el

proviene del decodificador de direcciones. Su valor tiene que ser '1'. PxZ

puerto en tercer estado

Las seales DATA son las lneas que se conectaran al bus de datos. Y las seales Px0-Px7 son las que se conectan a las salidas de la FPGA.

39

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

5.2.4

Divisor de frecuencia programable.

Figura 5.5 Esquema del divisor de frecuencia programable.

40

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

Este bloque es el encargado de generar una seal cuadrada de frecuencia igual a la del reloj dividida por un numero de 16 bits que ser programado en dos registros de 8 bits por el propio microcontrolador. Como se ha citado anteriormente esta seal ser la portadora de la tensin aplicada a los LEDs infrarrojos de los sensores de proximidad.

El circuito consta de dos contadores en cascada, el superior lleva los 8 bits bajos de la cuenta y el que esta debajo lleva los 8 bits altos. Como se puede observar el diseo es totalmente sncrono y los dos contadores comparten el mismo reloj. Los contadores estn realimentados de tal manera que cuando se produce el final de la cuenta estos se resetean y vuelven a comenzar la cuenta desde cero.

Los siguientes dos bloques que se pueden apreciar justo a la derecha de los contadores son los registros que almacenan el valor por el cual hay que dividir la frecuencia de reloj. Una vez ms, el registro que esta arriba almacena la parte baja del valor de la divisin mientras que el inferior lleva la parte alta.

Ms a la derecha estn conectados dos comparadores cuya funcin es comparar el valor de la cuenta con el valor previamente almacenado en los registros. En caso de que la cuenta supere o iguale al valor final de la cuenta, se produce una seal que durara un ciclo de reloj que ser la que resetee los contadores, esta seal tambin esta conectada a la entrada de un Flip-Flop tipo D y la salida de este a un Flip-Flop tipo T, la misin de estos dos Flip-Flops es la de capturar la seal de fin de cuenta y cambiar de valor la salida.

Para que se produzca todo esto hay varias seales que tienen que ser usadas adecuadamente; ! Es el bus de datos, se usara para programar los dos registros ! Es la seal de enable de los contadores, si se quiere parar el

B0-B7

que almacenan el fin de cuenta. nEnable

divisor de frecuencia tendr que valer '1', si por el contrario se quiere que funcione su valor ser '0'.

41

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

resetn

! Seal de reset externa, resetea los contadores y pone el divisor ! Es la seal de reloj que marca la frecuencia a dividir. ! Lectura-Escritura, para poder programar los registros valdr '0' ! Al igual que en los mdulos anteriores se usa para ! Es una seal proveniente del decodificador de direcciones e

en el estado inicial. CLK R/W E

demultiplexar el bus de datos del de direcciones. regfrecB

indica que el valor presente en el bus de datos ha de ser almacenado en el registro que contiene la parte baja de la divisin. regfrecM ! Es una seal proveniente del decodificador de direcciones e

indica que el valor presente en el bus de datos ha de ser almacenado en el registro que contiene la parte alta de la divisin. Fout ! Se trata de la onda cuadrada de salida cuya frecuencia sera la

de CLK dividida por el valor programado.

De este modo para que se produzca un cambio en "Fout" tienen que haber transcurrido el numero de ciclos de la seal "CLK" indicados por los dos registros que almacenan el fin de cuenta, as es como se realiza la divisin de frecuencia.

42

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

5.2.5

Esquema del modulador

Figura 5.6 Esquema del modulador

Como se trata de una modulacin digital muy sencilla, el circuito tambin lo es. Px0 a Px7 son las moduladoras de cada uno de los LEDs, y CLK1 es la portadora. Como se puede ver la modulacin se realiza usando una simple puerta AND entre cada moduladora y la portadora.

5.3 Esquema de conexin de la tarjeta de la FPGA.

Esta es la tarjeta en la que esta conectada la FPGA, los conectores de las seales del microcontrolador usadas por la FPGA, y tambin estn los conectores de los sensores. En esta caso, aunque no se ha incluido en dicho esquema tambin se ha montado en la misma tarjeta el circuito de alimentacin debido a que se dispona de espacio suficiente y se ahorra una tarjeta adicional que hubiera sido necesaria en caso de no haber montado dicho circuito en esta tarjeta.

Hay que mencionar el hecho de que la FPGA se puede programar desde la propia tarjeta conectando el cable ByteBlaster MV a un conector destinado a programar la FPGA que hay en la tarjeta. Esto se puede hacer sin necesidad de quitar la FPGA del zcalo y sin tener que desconectar absolutamente ninguna seal de la FPGA. Es lo que Altera denomina ISP (In-System Programmability).

En la pagina siguiente se presenta el esquema completo;

43

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

Figura 5.7 Esquema de conexin de la tarjeta de la FPGA

44

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

A continuacin se muestran dos fotografas de esta tarjeta;

En estas fotografas se pueden ver ambas caras de la tarjeta de la FPGA. En la fotografa superior se ve el regulador en la esquina superior izquierda, en la esquina inferior izquierda las tiras de pines para conectar los sensores, a su derecha esta el conector para programar la FPGA. El chip de Altera es la FPGA, y los dems conectores son para llevar las conexiones de la FPGA al microcontrolador.

45

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

6 Comunicaciones
6.1 Introduccin.
Como ya se mencion en la introduccin este proyecto es parte de un proyecto conjunto. Para unir los dos mdulos desarrollados en ambos proyectos hace falta que se comuniquen. Adems es conveniente que el enlace sea seguro y de alta velocidad, puesto que si el intercambio de informacin se produce con retardos largos no se podrn unir los dos mdulos de manera eficiente. El microcontrolador 68HC11 dispone de un sistema de comunicaciones sncrono destinado precisamente a este fin, fusionar varios microcontroladores y dispositivos externos para implementar sistemas multiprocesador de manera eficaz.

6.2 Comunicaciones Serie Sncronas (SPI)

Este mdulo de comunicaciones sncronas tiene capacidad para establecer comunicaciones con velocidades de hasta 1 Mbit/s de manera sncrona. En estas comunicaciones existir siempre un microcontrolador Maestro y uno o varios microcontroladores o dispositivos Esclavos. Las seales que componen este sistema son las siguientes; ! Es la lnea por la cual se transfieren los datos del esclavo al ! Por esta lnea se transfieren los datos del maestro al esclavo. ! Es el reloj de las comunicaciones, lo gobierna el maestro. ! Lnea de seleccin de esclavo, se utiliza para que el maestro

MISO maestro. MOSI SCK SS'

seleccione al esclavo al que se quiere dirigir y para dar comienzo a las comunicaciones.

El maestro decide cuando quiere que se establezca la comunicacin, de tal manera que para mandar un dato a un esclavo lo hace de manera directa. Sin embargo el esclavo solo podr enviar informacin cuando el maestro lo decida, por tanto este tiene que tener preparado el dato a mandar para que este disponible cuando el maestro solicite

46

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

la informacin. En este caso, es el mdulo de Control Central y Sensores el que acta como maestro y el mdulo de Control de Motores y Movimiento el que acta como esclavo ya que la informacin se intercambia de manera unidireccional. Para esto se ha elaborado un protocolo muy elemental para asegurar que llegan los datos, este sencillo protocolo funciona de la siguiente manera, el maestro permanece enviando un dato continuamente y leyendo el carcter recibido, sigue haciendo esto mientras que este carcter sea distinto del carcter '@'. En el lado del esclavo, este lee el dato recibido y enva dicho carcter ('@') para confirmar que ha recibido el dato. De esta manera no se sobreescriben los datos enviados por el SPI, puesto que no se puede enviar un dato hasta que el anterior haya sido recibido. Esto se poda haber resuelto de una manera ms eficiente mediante el uso de interrupciones, pero hubiese complicado las rutinas del SPI.

Este modulo contiene tres registros que lo caracterizan; ! Registro de configuracin ! Registro de estado del SPI ! Registro de datos

SPCR ($1028) SPSR ($1029) SPDR ($102A)

6.2.1

Registro SPCR

El bit 6 (SPE) activa el sistema de comunicaciones serie sncrono si su valor es '1'. El bit 4 (MSTR) determina si el microcontrolador es maestro o esclavo, en este caso se selecciona como maestro, y por tanto su valor es '1'. Los bits 1 y 0 seleccionan la velocidad de las comunicaciones, se les ha asignado el valor '0' a ambos bits para obtener la velocidad mxima que es de 1Mbit/s

6.2.2

Registro SPSR

El bit 7 (SPIF) se pone a 1 cuando ha finalizado una transmisin entre el maestro y otro dispositivo. Los dems bits no son importantes.

47

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

6.2.3

Registro SPDR

Es el registro utilizado para transmitir y recibir datos por el SPI, al igual que en el SCI. Hay dos registros mapeados en esta direccin, uno de escritura y uno de lectura, cuando se escribe en este registro los datos escritos sern enviados por el SPI y cuando se accede a esta direccin como lectura se leen los datos recibidos por el SPI.

6.3 Comunicaciones Serie Asncronas (SCI)

Por otra parte tambin es necesario el uso de las comunicaciones serie asncronas para que se pueda establecer comunicacin con el PC. En este proyecto esto ha sido necesario para poder probar ciertos sistemas sensores y depurar algunos programas. En el primer caso se han elaborado algunos programas de prueba de los sensores que muestran el estado de los sensores por pantalla. Y en el segundo, como se coment en el apartado del Microcontrolador, se ha usado para comprobar el flujo del programa y el estado de ciertas variables para fines de depuracin.

El microcontrolador empleado en este proyecto dispone de una UART completa mediante la cual se pueden establecer comunicaciones serie asncronas a distintas velocidades y con paquetes de 8 o 9 bits adems del bit de start y el bit de stop. El nombre de este sistema del microcontrolador es el SCI y consta de una unidad de recepcin y una unidad de transmisin totalmente independientes, por lo que las comunicaciones son Full Duplex. Sin embargo hay que aadir que el nivel de las seales de transmisin y recepcin es de 0 y 5V, por tanto es necesario usar un conversor de niveles TTL-RS232 para poder comunicar el microcontrolador con el PC. Este circuito esta ya incorporado dentro de la propia tarjeta CT6811 de Microbtica.

Los registros asociados a este sistema y sus correspondientes direcciones son los siguientes;

48

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

BAUD ($102B)

! Registro que configura la velocidad de la comunicacin. ! Registro de control 1. ! Registro de control 2. ! Registro de estado de las comunicaciones. ! Registro de datos de las comunicaciones.

SCCR1 ($102C) SCCR2 ($102D) SCSR ($102E) SCDR ($102F) 6.3.1 Registro BAUD

Mediante este registro se selecciona la velocidad mxima de la comunicacin mediante los bits 4 y 5 (SCP0 y SCP1), usando un cristal de 8 MHz, como se ha empleado en este proyecto las posibles velocidades mximas en funcin de dichos bits son las siguientes;

SCP1 0 0 1 1

SCP0 0 1 0 1

Baudios 125000 41667 31250 9600

Se ha usado la velocidad de 9600 por ser estndar. Una vez determinada la velocidad mxima se puede dividir esta por un valor, siendo este potencia de 2 y comprendido entre 1 y 128 mediante los bits 0,1 y 2. Se han puesto estos bits a '0' para que se divida la velocidad mxima por 1, y por tanto la velocidad de la comunicacin sea de 9600 baudios.

6.3.2

Registro SCCR1

En este registro solo se ha utilizado el bit 4 (M) este bit determina si se usaran 8 o 9 bits de datos. Se ha puesto a 0 para usar 8 bits de datos. Los dems bits de este registro no se usan y no importa su valor.

49

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

6.3.3

Registro SCCR2

Este registro es el principal dentro de la configuracin de estas comunicaciones. Mediante los bits 3 y 2 se selecciona si los bits 0 y 1 del puerto D se usaran para comunicaciones o como bits de entrada y salida respectivamente. El valor asignado a estos bits es '1', para habilitar dichos bits del puerto D como los pines Rx y Tx de las comunicaciones.

Con los bits 4,5,6 y 7 de este registro se activan ciertas interrupciones asociadas a este sistema de comunicaciones. En este proyecto las comunicaciones serie se han realizado por polling y por tanto las interrupciones han permanecido desactivadas.

El bit 1 (RWU) se usa para activar el modo especial Wake-Up de la UART, se ha desactivado poniendo este bit a 0.

El bit 0 (SBK) se usa para mandar seales de BREAK indefinidamente por el puerto serie.

6.3.4

Registro SCSR

El bit 6 (TC) se pone a '1' cada vez que se ha enviado un carcter y la lnea de transmisin se halla vaca . Este bit te ofrece mayores garantas cuando se quiere saber si la transmisin ha terminado completamente. El bit 5 (RDRF) se pone a 1 cuando se ha recibido un dato nuevo en el registro de recepcin. Por tanto, cuando se reciben datos hay que esperar a que este bit se ponga a 1. El bit 4 (IDLE) se pone a 1 cuando detecta que la lnea de recepcin se ha quedado vaca . El bit 3 (OR) se pone a 1 cuando se ha recibido un carcter por el puerto serie y el anterior dato recibido todava no se ha ledo. Cuando ocurre este error el dato que se pierde es el que se acaba de recibir. El bit 2 (NF=Noise Flag) se activa cuando se ha detectado un error en el dato que se acaba de recibir.

50

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

El bit 1 (FE) se activa cuando se ha detectado un error en la trama enviada. Al recibir un dato se comprueba que el bit de stop este a nivel alto. Si esto no se cumple se pone este bit a nivel alto '1'. El bit 0 no se utiliza.

6.3.5

Registro SCDR

Es el registro de datos del SCI, en realidad hay dos registros mapeados en esta direccin, uno de lectura y otro de escritura. Cuando se accede como escritura se escribe el valor en el registro de transmisin. Y cuando se accede como lectura se lee el valor del registro de recepcin.

51

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

7 Software de Aplicacin
7.1 Introduccin.
En este capitulo se pretende explicar como funciona el software que se ha usado hasta el momento con el robot. Para probar el robot se ha decidido programarlo de tal manera que ande evitando los obstculos que se encuentre a su camino. Hay que destacar que el diseo del robot no se ha hecho teniendo como fin este tipo de actividad, pero se ha encontrado que para probar los sensores y para poder hacer demostraciones es lo ms sencillo, ya que el lugar de la demostracin no requiere preparativos especiales tales como la creacin de un tatami o tener el espacio libre caracterstico de las pruebas de sumo actuales, que es de un circulo de 3.75m de dimetro. De todas formas, la programacin cambiara muy poco, vindose modificado nicamente el programa principal, en el que habra que cambiar las acciones a tomar para una determinada situacin y aadir algunas situaciones y reacciones ms. Los distintos mdulos software que se han programado son los siguientes;

fpga.h sci.h sens.h spi.h Todos ellos se usan en el programa principal, cuyo nombre es defp.c .

52

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

7.2 Descripcin de los programas.


7.2.1 fpga.h

Este mdulo contiene las definiciones de los puertos creados con la FPGA y los registros necesarios para programar el divisor de frecuencia.
/* - FPGA.H This file #defines the fpga register addresses. Version: 1.0 Author: Pedro Perez de Ayala */ #ifndef FPGA_H

#define FPGA_H

#ifndef FP_REG_OFFSET #define FP_REG_OFFSET 0x2000 #endif

/* Direccin base de la fpga */

/*======================*/ /* I/O Port Definitions /*======================*/ /* I/O port 1 */ #define PORT1 (* (unsigned char *) (FP_REG_OFFSET + 0)) /* I/O port 2 */ #define PORT2 (* (unsigned char *) (FP_REG_OFFSET + 1)) /* I/O Port 4 */ #define PORT4 (* (unsigned char *) (FP_REG_OFFSET + 2))

*/

/* I/O Regfrec A */ #define REGFRECB (* (unsigned char *) (FP_REG_OFFSET + 3)) /* I/O Regfrec B */ #define REGFRECA (* (unsigned char *) (FP_REG_OFFSET + 4))

#endif

Se pueden apreciar los tres puertos expandidos, PORT1 y PORT2 que son los de entrada y PORT4 que es el de salida. Tambin se han definido los registros REGFRECA y REGFRECB. El tipo asignado a esto registros es el unsigned char puesto que son registros de 8 bits. Y se han definido las direcciones de estos recursos como un incremento sobre una direccin base, esto es debido a que as el compilador genera

53

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

direccionamientos indexados que son ms rpidos que los direccionamientos extendidos. Los registros se han definido como el valor de la direccin a la que apunta un puntero de tipo unsigned char, siendo el valor del puntero "(FP_REG_OFFSET + X)" donde X es el incremento en la direccin base de la FPGA. Esta direccin base es la direccin $2000h, como se apunto en el apartado del microprocesador, en esta zona de memoria esta la RAM voltil que contiene datos a partir de la direccin $3000h, es por tanto una rea libre de memoria que se puede usar libremente.

7.2.2

sci.h

/* SCI.H Rutinas de manejo del SCI mediante polling. leer_car() -----> Leer el caracter que venga por el SCI. enviar_car(c) --> Enviar un caracter por el SCI enviar(cad) ----> Enviar una cadena de caracteres por el SCI */ #include <io6811.h> #ifndef _sci_ #define _sci_ extern extern extern extern extern #endif void void char void void init_sci(void); itoa(int ival,char *cad); leer_car(void); enviar_car(char c); enviar(char *cad);

En este mdulo existen las siguientes funciones;


extern void init_sci(void);

Se encarga de iniciar el dispositivo de comunicaciones asncronas a 9600bps 8N1 sin interrupciones.


extern void itoa(int ival,char *cad);

Esta funcin convierte un numero entero en una cadena de caracteres para poder ser enviada por el SCI.
extern char leer_car(void);

54

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

Esta funcin lee un carcter del SCI por polling.


extern void enviar_car(char c);

Esta funcin enva un carcter al SCI por polling.

extern void enviar(char *cad);

Esta funcin enva una cadena de caracteres al SCI por polling. Estas funciones son bastante sencillas de utilizar y el cdigo es bastante comprensible por tanto no se explicarn en detalle. Los cdigos completos se pueden encontrar en el apndice LISTADOS EN C.

7.2.3

spi.h

/* SPI.H Rutinas de manejo del SPI mediante polling. car=spi(c) -----> Envia el caracter c y lee el caracter car del SPI. envia_spi(c) --> Enviar un caracter por el SPI car=recibe_spi() ----> Recibe un caracter por el SPI */ #ifndef _spi_ #define _spi_ #define spi_maestro() DDRD=0x38; SPCR=0x54; PORTD = 0x00 #define spi_esclavo() DDRD=0x04; SPCR=0x44 extern char spi(char c); extern char recibe_spi(void); extern envia_spi(char c);

#endif

Se puede observar que hay dos defines para spi_maestro() y spi_esclavo() de esta forma cuando en el cdigo se incluyan alguna de estas dos cadenas, se
55

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

sustituirn por las instrucciones que inician el SPI en modo maestro o esclavo respectivamente. Adems, hay tres funciones que se encargan del manejo del SPI;

extern char spi(char c);

Esta funcin se utiliza tanto en modo maestro como esclavo para acceder al SPI enviando y leyendo un carcter de manera simultanea, la nica diferencia entre usarla en modo esclavo o maestro es que cuando el maestro llama a esta funcin hace que se produzca la comunicacin, mientras que cuando es utilizada por un esclavo este ha de esperar a que el maestro la utilice para que se produzca el intercambio de datos.

extern char recibe_spi(void);

Esta otra funcin recibe un dato por el SPI, solamente puede ser llamada por un esclavo y al igual que la siguiente funcin contiene un pequeo protocolo para asegurar que los datos llegan correctamente. El cdigo de la funcin es el siguiente;

char recibe_spi(void) { return spi('@'); }

Permanece esperando a que el maestro quiera establecer una comunicacin, cuando esta se produzca enviara el carcter '@' para confirmar que el dato ha sido recibido. Devuelve el valor recibido por el puerto.

56

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.


extern envia_spi(char c);

Memoria

Esta funcin, complementaria a la anterior es usada exclusivamente por el maestro para mandar datos al esclavo, el cdigo es el siguiente;

envia_spi(char c) { char cspi;

do{ cspi=spi(c); }while(cspi != '@'); }

Lo que hace es mandar el dato al esclavo hasta recibir confirmacin de que el dato ha sido recibido, por medio del carcter '@' que mandara el esclavo al maestro con la funcin recibe_spi().

7.2.4
#ifndef _sens_ #define _sens_

sens.h

#ifndef FP_REG_OFFSET #define FP_REG_OFFSET 0x2000 #endif

/* Direccion base de la fpga */

/* sensor de proximidad 1 */ #define PROX1 (* (unsigned char *) (FP_REG_OFFSET + 0x10)) /* sensor de proximidad 2 */ #define PROX2 (* (unsigned char *) (FP_REG_OFFSET + 0x11)) /* sensor de proximidad 3 */ #define PROX3 (* (unsigned char *) (FP_REG_OFFSET + 0x12)) /* sensor de proximidad 4 */ #define PROX4 (* (unsigned char *) (FP_REG_OFFSET + 0x13)) /* sensor de proximidad 5 */ #define PROX5 (* (unsigned char *) (FP_REG_OFFSET + 0x14)) /* sensor de proximidad 6 */ #define PROX6 (* (unsigned char *) (FP_REG_OFFSET + 0x15)) /* sensor GP2D12 1 */ #define GP1 (* (unsigned char *) (FP_REG_OFFSET + 0x20)) /* sensor GP2D12 2 */ #define GP2 (* (unsigned char *) (FP_REG_OFFSET + 0x21))

57

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.


/* sensor GP2D12 3 */ #define GP3 (* (unsigned char *) (FP_REG_OFFSET + 0x22)) /* sensor GP2D12 4 */ #define GP4 (* (unsigned char *) (FP_REG_OFFSET + 0x23)) /* sensores de color de linea */ #define SENSLIN (* (unsigned char *) (FP_REG_OFFSET + 0x24)) #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define TAM_CODIGO 8 UMBRAL_GP 35 SENS1 0x40 SENS2 0x20 SENS3 0x10 SENS4 0x08 SENS5 0x04 SENS6 0x02 INTHG 0x01 LIN1 0x01 LIN2 0x02 LIN3 0x04 LIN4 0x08 LIN5 0x10 LIN6 0x20 LIN7 0x40 LIN8 0x80 T1_MS 250

Memoria

/* Funcion sprox segun el valor de modo efectua las siguientes lecturas en los sensores de proximidad, el valor devuelto contiene los sensores que hay que revisar: modo=0 -> lectura rapida no segura modo=1 -> lectura segura con codigo fijo modo=2 -> lectura segura con codigo aleatorio */ extern extern extern extern extern char char char void void lee_sprox(char modo, unsigned int divi); lee_gp2(void); lee_slin(void); init_ad(void); delay(unsigned int time);

#endif

Este es el mdulo ms complejo y hay que entrar en detalle en algunas cuestiones sobre l. Antes que nada se han definido una serie de direcciones donde estarn contenidos los valores de los sensores, as PROX1 a PROX6 sern posiciones de memoria que contendrn cierta informacin sobre el estado de cada uno de los sensores de proximidad. GP1 a GP4 sern posiciones de memoria que contienen el valor de distancia en cm que ha medido cada uno de los sensores GP2D12, y por ltimo SENSLIN contiene la informacin de los sensores de color de la lnea que han detectado alguna lnea. Por otra parte tambin se han definido el tamao del cdigo a enviar por los sensores de proximidad ("TAM_CODIGO"), el umbral de deteccin de los sensores GP2D12 ("UMBRAL_GP") y mscaras para cada uno de los sensores que corresponden

58

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

al bit que ocupa cada sensor en su puerto. Hay que recordar que los sensores de color de la lnea ocupan el puerto 2 entero, los sensores de proximidad ocupan 6 bits del puerto 1 para la recepcin y 6 bits del puerto 4 para la transmisin, el sensor de inclinacin ocupa 1 bit del puerto 1. En las definiciones de las funciones se encuentran las siguientes funciones;
extern char lee_sprox(char modo, unsigned int divi);

Esta funcin hace una medida con los sensores de proximidad por infrarrojos. Los argumentos son
char modo

que define el modo de la lectura, su valor

puede ser 0,1 o 2 como se indica en el comentario que hay antes de los prototipos de las funciones, para una lectura rpida, una lectura segura con cdigo fijo y una lectura segura con cdigo aleatorio. El segundo argumento, estos sensores. La manera de funcionar de esta funcin es la siguiente; Se inicializan los valores necesarios Se determina que tipo de lectura se quiere hacer en funcin del argumento modo, y se genera el cdigo aleatorio si as fuese especificado; a continuacin se expone el cdigo que hace esto:
tcod=TAM_CODIGO; if(modo==2){ codigo=(char)(abs((rand()/128)-1) | 0xAA); }else if(modo==1){ codigo=0xAA; }else if(modo==0){ codigo=0xAA; tcod=2; } unsigned int divi

indica cual es

el valor de divisin del divisor de frecuencia que se encarga de generar la portadora para

Si modo es igual a 2 se genera el cdigo aleatorio. La funcin rand devuelve un entero con signo el cual se divide entre 128 y se le elimina el signo con la funcin abs(), ahora ser un numero aleatorio comprendido entre el 0 y el 255, se ponen a 1 cuatro bits alternados para garantizar que se esta emitiendo un cdigo que no sea todo ceros y que sea fcilmente

59

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

identificable por el receptor y finalmente forzamos la conversin a char, as se obtiene un char generado aleatoriamente, que ser el cdigo a enviar. Se enva y se comprueba la recepcin de cada uno de los bits del cdigo. Se escriben los datos obtenidos a cada una de las posiciones de memoria designadas y se devuelve un char con la informacin de las lecturas de los sensores.
extern char lee_gp2(void);

Esta funcin lee los sensores GP2D12, las distancias medidas se almacenan en las posiciones de memoria indicadas anteriormente, y el valor que se devuelve es un char en el que esta puestos a 1 los bits correspondientes a los sensores que han dado una medida por debajo del umbral. Las posiciones de estos bits se corresponden con las de las mascaras creadas para dichos sensores. Para poder usar esta funcin correctamente el sistema de conversin A/D ha de estar activado. Funciona de la siguiente manera; Se obtienen las medidas del conversor A/D Se comprueban que sensores han dado medidas por debajo del umbral Se calculan las distancias medidas por cada uno de los sensores y se escriben en su correspondiente registro. Se devuelve un char que contiene la informacin de que sensores han dado medidas por debajo del umbral.
extern char lee_slin(void);

Esta funcin lee el estado del sensor de inclinacin, y en funcin del resultado analiza los primeros cuatro sensores de color de la lnea y los ltimos cuatro, pues hay cuatro sensores en la cara inferior del robot y otros cuatro en la cara superior. Si alguno de los cuatro sensores han encontrado la lnea se escribe el resultado de los cuatro sensores en SENSLIN para que pueda ser analizado por el programa principal o por una funcin de ms alto nivel.
extern void init_ad(void);

Se encarga de iniciar el sistema del conversor A/D de tal manera que pueda ser usado por la funcin que lee los sensores GP2D12.

60

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

extern void delay(unsigned int time);

Esta funcin es un retardo, el argumento es valor del retardo en milisegundos y pueden producirse retardos de hasta 65 segundos.

7.2.5

Programa principal defp.c

Este programa ha sido desarrollado para realizar demostraciones y lo que hace es detectar los obstculos e intentar evitarlos. No tiene un objetivo a largo plazo y su nica funcin es demostrar el funcionamiento del sistema completo integrando los sensores, motores los dos microcontroladores y sus respectivas FPGAs a travs de las comunicaciones serie sncronas. El programa aqu descrito utiliza las comunicaciones serie sncronas y los sensores de proximidad y los de distancia (GP2D12). Se ha definido una tabla de situaciones posibles en funcin de el estado de algunos sensores. Se ha aadido un filtrado de las acciones para que el comportamiento del robot sea suave y no tome decisiones bruscamente, lo que se hace es registrar la decisin tomada un numero definible de veces, solo cuando siempre se decida tomar la misma accin esta ser llevada a cabo. Hay algunas acciones que llevan un retardo asociado, este retardo se aade en una condicion if que comprueba si se ha tomado dicha decisin y se aade el retardo necesario. El listado del programa es el siguiente;
#include #include #include #include #include #include <io6811.h> <sens.h> <fpga.h> <sci.h> <spi.h> <stdlib.h>

#define N_MUES 3 /*numero de repeticiones de la decision tomada para que sea valida */ void main(void) { char lec,gp,cspi,ultorden,irprox=0,gpd=0x00; int div=0x001A,i,j; char ato[10]; char ordenes[N_MUES],ordenact;

spi_maestro();

/* Se inicia el SPI como maestro*/

61

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.


init_ad(); init_sci(); div=0x0014; while(1){ while(1){

Memoria

/* Se inicia el sistema de conversion A/D*/

/* Valor del divisor de frecuencia */

/*

Tabla con los codigos de los mensajes: '0' -> Parado. '1' -> Via libre, anda hacia adelante. '2' -> objeto acercandose, gira suavemente hacia izqda '3' -> objeto acercandose, gira suavemente hacia dcha '4' -> objeto proximo, gira a dcha '5' -> objeto proximo, gira a izda '6' -> objeto en frente, da media vuelta '7' -> Robot en un callejon, anda hacia atras.

*/ /* */ /* comienza el codigo de filtrado de decisiones */ for(i=0;i<N_MUES-1;i++){ ordenes[i]=ordenes[i+1]; } ordenes[N_MUES-1]=ordenact; for(i=0;i<N_MUES-1;i++){ if(ordenes[i]==ordenes[i+1]) j=1; else{ j=0; break; } } if(j==1 && (ultorden != ordenact)){ envia_spi(ordenact); /*enviar_car(ordenact); solo para depuracion */ ultorden=ordenact; /* acaba el codigo de filtrado y comienza el if de retardo*/ if (ordenact == '7'){ delay(4000); ordenact='6'; envia_spi(ordenact); /*enviar_car(ordenact); solo para depuracion*/ ultorden='6'; delay(1500); }else if(ordenact == '6'){ delay(1500); } } /* acaba el if de retardo */ /* lee los sensores de proximidad y los GP2D12 */ lec=lee_sprox(2,div); irprox=(lec & (SENS4 + SENS3 + SENS2 +SENS1)); gp=lee_gp2(); gpd = gp & (0x01+0x02); /* comienzan las decisiones en funcion de los sensores de proximidad, estos son los que tienen prioridad */ if(irprox!=0){ if(irprox == (SENS1 + SENS2)){ ordenact='6'; continue; }else if(irprox == SENS1){ enviar("\n\rOrden Actual= enviar_car(ordenact); "); /*solo para depuracion

62

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.


ordenact='4'; continue; }else if(irprox == SENS2){ ordenact='5'; continue; }else if(irprox == SENS3){ ordenact='4'; continue; }else if(irprox == SENS4){ ordenact='5';

Memoria

continue; }else if(irprox == (SENS3 + SENS4)){ ordenact='7'; continue; } } /* comienzan las decisiones en funcion de los sensores GP2D12*/ if(gpd != 0){ if(gpd == (0x01 +0x02)){ if(abs(GP1-GP2)<4){ ordenact='3'; continue; }else if(GP1<GP2){ ordenact='3'; continue; }else{ ordenact='2'; continue; } }else if(gpd==0x01){ ordenact='3'; continue; }else if(gpd==0x02){ ordenact='2'; continue; } } /* si se ha llegado a este punto es que no hay obstaculos y habra que seguir recto*/ ordenact='1'; continue; } } }

63

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

8 Mecnica
8.1 Introduccin.

El diseo mecnico del robot se ha pensado de tal manera que mantenga la mxima simetra posible, esto se ve reflejado en el hecho de haber escogido una traccin por orugas sobresaliendo estas por arriba y por debajo, de tal manera que siempre estn en contacto con el suelo, y en caso de vuelco del robot este pueda seguir movindose . Tambin afecta esta simetra a la distribucin de los sensores los cuales se han colocado idnticamente en las dos caras de delante y detrs del robot, as como en los laterales tambin estn colocados simtricamente. Esto aporta varias ventajas; La primera de todas es que el robot puede seguir operativo tras sufrir un golpe, sea intencionado o no, que haga que vuelque. La segunda es que se ahorran muchas maniobras ya que en muchos casos no ser necesario dar la vuelta, pues el robot no tiene parte de delante y detrs diferenciales ya que son idnticas, adems, es capaz de detectar objetos aproximndose por todos los flancos, lo cual es de agradecer para combates de sumo donde no se sabe por donde se puede aproximar el adversario.

Se han hecho unos diseos de poleas y algunas piezas para dar una traccin rgida al conjunto y una estructura robusta que pueda soportar ambientes adversos. Estos se presentan en el Anexo correspondiente a este captulo.

8.2 Poleas

Hay varias poleas, las primeras, de un dimetro de 12cm aproximadamente se usan acopladas al eje del motor para transmitir la traccin a las orugas. Estas poleas se fijan al eje del motor mediante una unidad de fijacin cnica autocentrante que garantiza la unin mecnica de dicha polea con el eje del motor. Estas poleas son de aluminio y estn mecanizadas para poder colocar la unidad de fijacin.

Las segundas son unas poleas algo ms pequeas que sirven para mantener la estructura de las orugas y para tensar la correa. Estas tambin han sido fabricadas en

64

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

aluminio y han sido mecanizadas para poder embutir un rodamiento que har de elemento de sujecin de la polea al eje.

8.3 Ejes

Para unir las poleas ms pequeas a la estructura ha sido necesaria la fabricacin de unos ejes. Se ha diseado un eje en acero que une dos poleas de ambos lados, estas poleas estn fijas y su nica funcin es la de soportar las orugas. Por otro lado hay dos ejes que nicamente unen una polea a la estructura y estos son los que se mueven para tensar cada una de las dos correas. Estos ejes tambin son de acero.

8.4 Correa Dentada

Como oruga se utiliza una correa dentada del mismo paso que las poleas, esta correa se ve tensada por una de las poleas pequeas y se asegura que no se salga de las poleas por medio de unas guas que estas llevan incorporadas. Sin embargo la superficie exterior de esta correa no es lo suficientemente adherente como para garantizar la traccin necesaria, es por ello necesario revestir el exterior de la correa con un material adherente que tenga un coeficiente de rozamiento lo ms elevado posible.

65

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

CONCLUSIONES Y TRABAJOS FUTUROS

Como primera conclusin que el autor ha obtenido de este proyecto es que el campo de la robtica, y ms concretamente el de los robots autnomos es sumamente amplio e interesante, y muy aplicable tanto para resolver problemas de la vida cotidiana como para desarrollar tareas propias de las iniciativas ms ambiciosas como por ejemplo la exploracin espacial. Es un campo muy amplio pues requiere de la coordinacin de mltiples disciplinas, desde las ms ingenieriles como por ejemplo la mecnica, hasta disciplinas tales como la inteligencia artificial, etc. Como conclusiones ms tcnicas, sobre todo en lo que se refiere a los sensores y al procesamiento de stos para conocer el ambiente, el autor esta convencido de que es imposible tomar decisiones de manera eficaz sin tener un aparato sensorial que ofrezca una informacin muy rica. De este modo est tambin convencido que los sistemas de sensores normalmente utilizados actualmente (ultrasonidos, infrarrojos, etc.) ofrecen una informacin cualitativamente pobre y su funcin quedara relegada a la de servir como sistema redundante de apoyo para otros ms complejos y que ofrecen una informacin mucho ms amplia desde el punto de vista cualitativo, como por ejemplo sistemas de visin artificial. Aun as, para llevar a cabo tareas sencillas en entornos definidos estos sensores dan unos resultados muy aceptables. El autor de este proyecto ha tenido la ocasin de comprobar que este tipo de proyectos goza de gran aceptacin entre los estudiantes de ingeniera, ofreciendo un amplio abanico de posibilidades para nuevos proyectos, pues se pueden integrar muchas de las especializaciones de la electrnica, como las comunicaciones, sistemas digitales, instrumentacin electrnica, control, electrnica de potencia, etc.

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

Como trabajos futuros, pueden citarse los siguientes; Desarrollo de un programa para poder recibir y enviar datos con los sensores de proximidad por infrarrojos. Una vez desarrollado este sistema se podra construir un sistema sencillo de balizas que enven datos al robot sobre el lugar en el que esta. Desarrollo de un programa para poder usar los sensores de proximidad de infrarrojos como sensores de medida de distancia a corto rango. Dentro de este desarrollo se puede incluir tambin un programa para tomar lecturas alternadas con varios sensores midiendo la distancia para obtener la posicin del objeto por triangulacin. Aadir comunicaciones al robot para poder darle ordenes por diversos medios, radio, Internet, GSM. Permitiendo a su vez que el robot pueda mandar informacin. Como un paso ms avanzado se podra crear otro robot con capacidades para las comunicaciones, que cooperase, o por lo menos interactuase con este. Desarrollar un sistema de carga de las bateras plenamente integrado en el robot, y una estacin de carga que suministre la corriente necesaria para la carga del robot. Esta estacin tendra capacidad para comunicarse con el robot, de tala manera que cuando el robot detecte que la carga de las bateras es baja, pueda ir a la estacin a recargarse. Esto es un avance muy grande en la autonoma del robot, pues nadie tiene que vigilar su carga y recargarlo. Creacin de un programa que se comunique con el mdulo de Control de Motores y Movimiento para obtener informacin de la posicin y poder hacer un mapa de la localizacin del robot. Dentro de este desarrollo se podran incluir varios sistemas redundantes para hacer una mejor descripcin del mapa. Otros sistemas que se pueden aadir son brjulas, un sistema basado en dos o tres acelermetros que registren la cinemtica del robot, girscopos, etc. Modificacin de la estructura mecnica para poder desarrollar otras tareas. Algunas de las capacidades podran ser subir y bajar escaleras, moverse en campo

Diseo y Construccin de un Robot Autnomo. Control Central y Sensores.

Memoria

abierto, aumentar la velocidad, moverse por tuberas o por tendidos elctricos para detectar averas, etc. Otra modificacin, y quiz esta sea la ms grande de todas, sea aumentar las capacidades sensoriales del robot aadiendo un sistema de visin artificial con una cmara digital. Este sistema tiene el inconveniente de que habra que sustituir la unidad de procesamiento por una mucho ms potente, pero podra aprovecharse la estructura creada y el mdulo de Control de Motores y Movimientos.

Vous aimerez peut-être aussi