Professional Documents
Culture Documents
Memoria
Control Central y Sensores.
NDICE
! CAPTULOS
1 Introduccin pag. 2
2 Circuito de alimentacin pag. 6
3 Sensores pag. 9
4 Microcontrolador 68HC11 pag. 27
5 FPGA pag. 34
6 Comunicaciones pag. 46
7 Software de Aplicacin pag. 52
8 Mecnica pag. 64
1
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
1 INTRODUCCIN
2
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
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.
3
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
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.
4
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
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.
5
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
2 CIRCUITO DE ALIMENTACIN
6
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
VARIABLES MEDIDAS:
7
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
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.
8
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
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.
9
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
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. Memoria
Control Central y Sensores.
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.
11
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
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.
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.
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. Memoria
Control Central y Sensores.
GP2D12
R E
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. Memoria
Control Central y Sensores.
Angulo Medida
0 40
20 39
40 39
60 40
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. Memoria
Control Central y Sensores.
15
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
16
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
17
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
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.
18
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
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. Memoria
Control Central y Sensores.
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.
20
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
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.
21
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
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
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. Memoria
Control Central y Sensores.
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.
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. Memoria
Control Central y Sensores.
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. Memoria
Control Central y Sensores.
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.
25
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
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. Memoria
Control Central y Sensores.
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.
27
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
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 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.
28
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
29
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
30
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
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.
31
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
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.
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).
32
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
33
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
5 FPGA
5.1 Introduccin.
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.
34
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
35
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
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.
36
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
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. Memoria
Control Central y Sensores.
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 ! ha de estar a '1' pues este modulo solo es de lectura.
E ! 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. Memoria
Control Central y Sensores.
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 ! Ha de valer '0' para poder escribir.
E ! Al igual que en el mdulo anterior ha de valer '1'.
Px ! Igual que en el mdulo anterior, esta es la lnea de seleccin que
proviene del decodificador de direcciones. Su valor tiene que ser '1'.
PxZ ! Esta seal se ha creado por si existiese la necesidad de mantener el
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. Memoria
Control Central y Sensores.
40
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
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.
Para que se produzca todo esto hay varias seales que tienen que ser usadas
adecuadamente;
41
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
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. Memoria
Control Central y Sensores.
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.
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.
43
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
44
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
45
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
6 Comunicaciones
6.1 Introduccin.
46
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
47
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
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.
Los registros asociados a este sistema y sus correspondientes direcciones son los
siguientes;
48
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
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. Memoria
Control Central y Sensores.
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 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. Memoria
Control Central y Sensores.
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. Memoria
Control Central y Sensores.
7 Software de Aplicacin
7.1 Introduccin.
Los distintos mdulos software que se han programado son los siguientes;
fpga.h
sci.h
sens.h
spi.h
52
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
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 -
Version: 1.0
#ifndef FP_REG_OFFSET
#define FP_REG_OFFSET 0x2000 /* Direccin base de la fpga */
#endif
/*======================*/
/* 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. Memoria
Control Central y Sensores.
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_
#endif
54
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
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_
#endif
55
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
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;
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.
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('@');
}
56
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
envia_spi(char c)
{
char cspi;
do{
cspi=spi(c);
}while(cspi != '@');
}
7.2.4 sens.h
#ifndef _sens_
#define _sens_
#ifndef FP_REG_OFFSET
#define FP_REG_OFFSET 0x2000 /* Direccion base de la fpga */
#endif
/* 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. Memoria
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))
#define TAM_CODIGO 8
#define UMBRAL_GP 35
#define SENS1 0x40
#define SENS2 0x20
#define SENS3 0x10
#define SENS4 0x08
#define SENS5 0x04
#define SENS6 0x02
#define INTHG 0x01
#define LIN1 0x01
#define LIN2 0x02
#define LIN3 0x04
#define LIN4 0x08
#define LIN5 0x10
#define LIN6 0x20
#define LIN7 0x40
#define LIN8 0x80
#define T1_MS 250
/* 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:
#endif
58
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
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;
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, unsigned int divi indica cual es
el valor de divisin del divisor de frecuencia que se encarga de generar la portadora para
estos sensores.
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;
}
59
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
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.
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. Memoria
Control Central y Sensores.
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;
61
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
while(1){
while(1){
if(irprox!=0){
if(irprox == (SENS1 + SENS2)){
ordenact='6';
continue;
}else if(irprox == SENS1){
62
Diseo y Construccin de un Robot Autnomo. Memoria
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';
continue;
}else if(irprox == (SENS3 + SENS4)){
ordenact='7';
continue;
}
}
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;
}
}
ordenact='1';
continue;
}
}
}
63
Diseo y Construccin de un Robot Autnomo. Memoria
Control Central y Sensores.
8 Mecnica
8.1 Introduccin.
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
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. Memoria
Control Central y Sensores.
aluminio y han sido mecanizadas para poder embutir un rodamiento que har de
elemento de sujecin de la polea al eje.
8.3 Ejes
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. Memoria
Control Central y Sensores.
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.
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.
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.