Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PercyD Escobar
http://www.fing.edu.uy/~pgconrob
pgconrob@fing.edu.uy
Tutores
Ing. Gonzalo Tejera.
Ing. Carlos Martinez.
Resumen
El documento muestra cmo construir un robot a bajo costo que sea capaz de moverse en
forma autnoma, recibiendo rdenes desde un PC, de modo que todo el procesamiento
referente al comportamiento se realice remoto. El proyecto incluye estado del arte, la
confeccin de un modelo, el diseo y construccin de un robot prototipo que pueda
evolucionar en un jugador de ftbol de robots segn las reglamentaciones de la categora
MiroSot de FIRA. Los principios seguidos por el diseo son: la modularidad, la extensibilidad
y la implementacin a travs de una electrnica simple. El robot se compone de un mdulo
de comunicaciones que recibe mensajes provenientes de un sistema de control y los reenva
por un bus I2C al mdulo destino. Los mdulos son comandados por microcontroladores de
la empresa Microchip. El sistema de control est compuesto por un PC y un circuito emisorreceptor de radio frecuencia, stos se comunican va RS-232. Debido al diseo extensible y
modular alcanzado, es posible incorporar nuevos mdulos (ejemplo: brazo robot) con poco
esfuerzo ms que la propia construccin del mismo y los agregados al software del PC.
Pgina 2 de 73
Tabla de Contenido
1
INTRODUCCIN
1.1
1.2
2
TRABAJOS RELACIONADOS
GUA DE CAPTULOS
7
8
2.1
2.2
2.3
2.4
3
OBJETIVOS
ALCANCE
UN PROYECTO DE INFORMTICA
RESUMEN DEL PLANTEO DEL PROBLEMA
11
INVESTIGACIN
MOTORES
SENSORES
INVESTIGACIN SOBRE MICROCONTROLADORES
FORMAS DE COMUNICACIN
BATERAS
REUTILIZACIN DE COMPONENTES E INVESTIGACIN DE MERCADO
REUTILIZACIN DE COMPONENTES 0 COSTO
INVESTIGACIN DEL MERCADO LOCAL Y EXTERIOR
RESULTADOS DE LA INVESTIGACIN
MICROCONTROLADORES
COMUNICACIN
MOTORES Y SENSORES
ANLISIS Y DISEO
4.1
4.2
4.2.1
4.2.2
4.2.3
4.3
4.4
4.4.1
4.4.2
5
9
9
10
10
3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.7.1
3.7.2
3.8
3.8.1
3.8.2
3.8.3
4
11
11
11
12
12
13
13
14
14
15
15
15
16
17
MODELO DE PROCESO
PLAN DE ARQUITECTURA Y DISEO
CMO SE DISE EL SISTEMA
DISEO Y MODELADO
COMPOSICIN Y JUSTIFICACIONES DE CARA A LA IMPLEMENTACIN
ARQUITECTURA DEL SISTEMA
MDULOS
MDULOS QUE SE PLANEARON INICIALMENTE
DESCRIPCIN DE LOS MDULOS PARA LA IMPLEMENTACIN
COMUNICACIONES
17
17
17
18
19
21
21
21
21
26
26
27
28
28
30
30
30
31
31
32
32
32
33
34
35
36
37
38
38
39
41
COSTOS
7.1
7.2
7.3
COSTOS DE MATERIALES
COSTO DE UNA UNIDAD
COSTO DEL PROYECTO
PARA
APRENDER
41
41
43
PGINA WEB
44
CONCLUSIONES
46
9.1
9.2
9.3
CONCLUSIONES GENERALES
CONCLUSIONES SOBRE LA EXTENSIBILIDAD
TRABAJOS FUTUROS
46
47
48
10
GLOSARIO
49
11
BIBLIOGRAFA Y REFERENCIAS
52
Apndices
I.
PROTOCOLOS DE COMUNICACIN
54
54
55
55
56
56
56
57
58
II.
59
PROGRAMACIN DE MICROCONTROLADORES
II.1
II.2
II.3
BIBLIOTECAS
SEUDOCDIGOS DE LOS MDULOS DEL SISTEMA
SOFTWARE UTILIZADO
59
60
65
III.
CIRCUITOS Y MATERIALES
67
III.1
III.1.1
III.1.2
III.2
III.2.1
III.2.2
III.3
III.3.1
III.3.2
III.4
III.4.1
III.4.2
III.5
III.5.1
MDULO ER
DISEO DEL CIRCUITO DEL MDULO ER
LISTA DE MATERIALES DEL MDULO ER
ETAPA DE POTENCIA
DISEO DEL CIRCUITO DE LA ETAPA DE POTENCIA
LISTA DE MATERIALES DE LA ETAPA DE POTENCIA
MDULO COMM
DISEO DEL CIRCUITO DEL MDULO COMM
LISTA DE MATERIALES DEL MDULO COMM
MDULO MOTOR
DISEO DEL CIRCUITO DEL MDULO MOTOR
LISTA DE MATERIALES DEL MDULO MOTOR
MDULO SENSOR
DISEO DEL CIRCUITO DEL MDULO SENSOR
Pgina 4 de 73
67
67
68
69
69
69
70
70
70
71
71
71
72
72
72
73
73
73
ndice de Figuras
FIGURA 1 MODELO DEL ROBOT.
FIGURA 2 ARQUITECTURA DEL SISTEMA.
FIGURA 3 DISEO DEL MDULO ER.
FIGURA 4 DISEO DEL MDULO COMM.
FIGURA 5 DISEO DEL MDULO MOTOR.
FIGURA 6 DISEO DEL MDULO SENSOR.
FIGURA 7 FORMATO DEL MENSAJE.
FIGURA 8 VISTA COLABORATIVA DEL CAMINO DE UN MENSAJE.
FIGURA 9 ELIMINADOR DE PILA.
FIGURA 10 BATERA DE LA UNIDAD.
FIGURA 11 IMAGEN DEL CIRCUITO PROGRAMADOR DE MICROCONTROLADORES JDM.
FIGURA 12 IMAGEN DEL CIRCUITO ER.
FIGURA 13 IMAGEN DEL CIRCUITO DE ALIMENTACIN Y EL CARGADOR DE BATERA.
FIGURA 14 IMAGEN DEL MDULO COMM.
FIGURA 15 IMAGEN DEL MDULO MOTOR Y MDULO SENSOR.
FIGURA 16 IMAGEN DEL MDULO MOTOR Y SENSOR CON LOS MOTORES Y SENSORES CONECTADOS.
FIGURA 17 SECUENCIA DE ARMADO DEL PROTOTIPO
FIGURA 18 FOTO DE PERFIL DEL PROTOTIPO.
FIGURA 19 FOTO DEL SISTEMA COMPLETO.
FIGURA 20 MAPA DEL SITIO WEB.
FIGURA 21 MENSAJE ENTRE EL MDULO PC Y EL MDULO COMM.
FIGURA 22 BYTE DE DIRECCIN Y MODO DE FUNCIONAMIENTO PARA I2C.
FIGURA 23 BYTES CON CARGA TIL DEL MENSAJE I2C.
FIGURA 24 CIRCUITO DEL MDULO ER.
FIGURA 25 CIRCUITO DE ALIMENTACIN DE LA UNIDAD Y CARGADOR DE BATERA.
FIGURA 26 CIRCUITO DEL MDULO COMM.
FIGURA 27 CIRCUITO DEL MDULO MOTOR.
FIGURA 28 CIRCUITO DEL MDULO SENSOR.
FIGURA 29 CIRCUITO DEL PROGRAMADOR DE MICROCONTROLADORES JDM.
18
21
22
23
24
24
26
27
31
31
32
33
34
35
36
37
37
38
38
44
54
57
57
67
69
70
71
72
73
ndice de Tablas
TABLA 1 TABLA DE PARTES REUTILIZABLES POR EQUIPAMIENTO.
TABLA 2 TABLA DE CONSUMO DE LOS MOTORES DE PASO SEGN EL TIPO DE SECUENCIA.
TABLA 3 HERRAMIENTAS Y MATERIALES PARA APRENDIZAJE
TABLA 4 COSTO DE LOS MATERIALES DE UNA UNIDAD Y EL MDULO ER.
TABLA 5 PROTOCOLO DE SINCRONIZACIN BASADO EN RTS/CTS
TABLA 6 COMPONENTES DEL MDULO ER.
TABLA 7 COMPONENTES DEL CIRCUITO DE ALIMENTACIN DE LA UNIDAD Y CARGADOR DE BATERA.
TABLA 8 COMPONENTES DEL MDULO COMM.
TABLA 9 COMPONENTES DEL MDULO MOTOR.
TABLA 10 COMPONENTES DEL MDULO SENSOR.
TABLA 11 COMPONENTES DEL CIRCUITO PROGRAMADOR DE MICROCONTROLADORES JDM.
Pgina 5 de 73
14
31
41
42
55
68
69
70
71
72
73
ndice de Algoritmos
ALGORITMO 1 ENVO Y RECEPCIN DE MENSAJES POR UART.
ALGORITMO 2 ENVO Y RECEPCIN DE TRES BYTES POR UART.
ALGORITMO 3 SEUDO DEL MDULO ER.
ALGORITMO 4 SEUDO DEL MDULO COMM.
ALGORITMO 5 SEUDO PRINCIPAL DEL MDULO MOTOR.
ALGORITMO 6 RUTINA DE CONTROL DE VELOCIDAD.
ALGORITMO 7 RUTINA DE CONTROL DE ACELERACIN.
ALGORITMO 8 SEUDO DEL MDULO SENSOR.
ALGORITMO 9 SEUDO DEL ALGORITMO DE CLCULO DEL CRC.
Pgina 6 de 73
61
61
62
63
64
64
64
65
65
Captulo
1 Introduccin
Pgina 7 de 73
Pgina 8 de 73
Captulo
2.1 Objetivos
El principal objetivo del proyecto es la investigacin, el diseo y la construccin de un robot
prototipo que pueda evolucionar en un jugador de ftbol de robots segn las
reglamentaciones de la FIRA.
Tras este objetivo se destacan varios otros como:
Disear un modelo de robot que sea flexible y extensible.
Obtener una aproximacin al estado del arte en componentes que podran integrar
un robot mvil.
Adquirir conocimiento en tecnologas de comunicacin, gestin de motores, armado
de circuitos, controladores y otros componentes.
Mantener la electrnica lo ms sencilla posible y llevar los problemas al campo del
software siempre que esto sea posible.
Las caractersticas del robot debern ser:
Un jugador de ftbol tiene como lmites de tamao un cubo de 7.5 cm de lado como
mximo. Un objetivo de construccin del prototipo es mantener el orden de magnitud
de estas medidas.
El prototipo debe ser construido con la mayor cantidad de elementos o componentes
reciclados posible (sacados de mquinas en desuso o funcionales pero obsoletas
debido a su antigedad como impresoras, lectoras de CD-ROM, discos duros,
tarjetas de red, etc.), esto es fundamental para bajar los costos.
El robot debe tener la inteligencia remota, tiene que existir un procesador de
comportamiento (un programa en un PC), que enve ordenes al robot de modo que
ste se mueva o reaccione de acuerdo a estas ordenes. Por lo tanto debe haber una
forma de comunicacin inalmbrica entre el robot y el procesador de
comportamiento.
Para trasladarse el robot debe tener 2 ruedas, con un motor por cada rueda y una
tercera rueda de apoyo para la sustentacin.
Se debe construir una biblioteca que ejecute en un PC y que sea capaz de enviar
rdenes al robot del tipo velocidad motor izquierdo y velocidad motor derecho.
La comunicacin entre el procesador de comportamiento y el robot debe ser
bidireccional, el robot debe responder cuando recibe rdenes.
Estos objetivos, as como las caractersticas del sistema, han sido discutidas con los tutores
y se fundamentan tanto en obtener las bases para las funcionalidades que un jugador de
ftbol requiere, como tambin en razones de corte ms acadmico. Por lo tanto las
soluciones propuestas tambin intentarn responder a las dos visiones del problema.
2.2 Alcance
Este proyecto naci como el estudio del estado del arte en construccin de robots a bajo
costo, materiales tiles para este tipo de construccin, etc. Del intercambio inicial de ideas
con los tutores, surgi la intencin de construir un prototipo de un robot que se asemeje a un
jugador de ftbol.
Pgina 9 de 73
Pgina 10 de 73
Captulo
3.2 Motores
Bsicamente existen dos tipos de micromotores que se utilizan en robtica. Los motores de
corriente continua y motores paso a paso.
Los motores de corriente continua existen en distintos tamaos, formas y potencias, pero
todos se basan en el mismo principio de funcionamiento. Accionar un motor de corriente
continua requiere aplicar la tensin de alimentacin entre sus bornes. Para invertir el sentido
de giro basta con invertir la alimentacin y el motor comenzar a girar en sentido opuesto.
Estos motores no pueden ser posicionados o enclavados en una posicin especfica,
simplemente giran a la mxima velocidad y en el sentido que la alimentacin aplicada les
permite.
Los motores de paso poseen como caracterstica principal el hecho de poder moverlos un
paso a la vez por cada forma en que se energicen sus lneas de entrada. El paso puede
variar desde 90 hasta pequeos movimientos de tan solo 1.8, es decir, que se necesitarn
4 pasos en el primer caso (90) y 200 para el segundo caso (1.8), para completar un giro
completo de 360. Estos motores tienen la habilidad de poder quedar enclavados en una
posicin o bien totalmente libres. Si una o ms de sus bobinas est energizada, el motor
estar enclavado en la posicin correspondiente y quedar libre si no circula corriente por
ninguna de sus bobinas.
Por ms informacin ver documento Motores y Sensores [LM2004A]
3.3 Sensores
Los sensores ayudan a trasladar los atributos del mundo fsico a valores que la controladora
de un robot puede usar.
En general, la mayora de los sensores pueden ser divididos en dos grandes grupos:
Sensores analgicos
Sensores digitales
Un sensor analgico es aquel que puede entregar una salida variable dentro de un
determinado rango. Un ejemplo de sensor analgico es una Fotorresistencia (estos
componentes miden intensidad de luz), sta puede ser cableada en un circuito que
Pgina 11 de 73
interprete sus variaciones y entregue una salida variable con valores entre 0 y 5 volt (en el
resto del documento se abrevia V).
Un sensor digital es aquel que entrega una salida del tipo discreta. Es decir, que el sensor
posee una salida que vara dentro de un determinado rango de valores, pero a diferencia de
los sensores analgicos, esta seal vara de a pequeos pasos preestablecidos.
Por ms informacin ver documento Motores y Sensores [LM2004A]
Pgina 12 de 73
Para la comunicacin a travs de un bus se analizaron las formas I 2C y SPI que presentan
en forma integrada algunos de los microcontroladores investigados. Adems fue investigada
la arquitectura Blackboard en la que todos los microcontroladores escriben y leen en una
zona de memoria comn llamada blackboard (pizarra), tomando el rol de fuentes de
conocimiento. A travs de la escritura y lectura en la pizarra se genera el intercambio de
informacin.
Para la tercer lnea se investigaron comunicacin va infrarrojo y seales de radio. Se intent
sin xito reutilizar piezas de telfonos inalmbricos, controles remotos, etc. Fueron
realizadas pruebas con LEDs infrarrojos y fototransistores con xito relativo, es decir se
logr transmitir y recibir informacin correctamente, pero ante los mnimos desequilibrios
lumnicos en el entorno, la tasa de error impidi la transferencia de datos. En las pruebas
realizadas con radio frecuencia, se constataron muchas ventajas como alcance, calidad y
facilidad de uso gracias a los componentes utilizados.
Por ms informacin ver documento Comunicacin [LM2004B].
3.6 Bateras
As como los objetivos referentes a movilidad y autonoma del robot implican una forma de
comunicacin inalmbrica entre entidades, tambin derivan en la existencia de una fuente
de energa elctrica transportable y de autonoma razonable; en definitiva una batera.
Si bien el tipo y los requerimientos de voltaje y carga no estaban claros al principio del
proyecto, se realiz un relevamiento de bateras de celulares nuevos y en desuso, bateras
de alarmas de hogares, bateras de telfonos inalmbricos y pilas recargables de pequeo
porte.
Los valores de voltaje y amperaje de las bateras de celular se encuentran alrededor de los
3.6 V y entre los 300 y 1100 micro ampere hora (en el resto del documento se abrevia mAh).
Los telfonos inalmbricos utilizan bateras de nquel cadmio de 3.6 V y 300 mAh. Las pilas
o bateras recargables comunes de mayor carga halladas entregan 9 V con 300 mAh. En
cuanto a las bateras de alarmas de hogares, existen de distintos voltajes y amperajes,
como por ejemplo 12 V, 4.5 ampere hora (en el resto del documento se abrevia Ah), siendo
stas las de mayor voltaje y carga pero teniendo como desventaja su mayor tamao y peso.
Pgina 13 de 73
Telfono inalmbrico
CD-ROM
Mouse
Tarjeta de Red
Tarjeta de Sonido
Tarjeta Controladora
Floppy 3
Disco Duro
Fuentes de PC
Floppy 5
Motores de paso
Servo Motores
Motores de corriente continua
Reguladores de voltaje
Condensadores
Diodos
Conectores varios
Pulsadores
Switches On/Off
Correas dentadas
Correas
Resortes
Engranajes
Sensores de tacto
Sensores infrarrojos
Resistencias de 1/4W a menor
Resistencias 1W a 3.3W
Resistencias variables
Carcasas
Disipadores de calor
Cristales (20 44 Mhz)
LED
Conector BNC
Conector RJ45
Conector RJ11
Zcalos
Jumpers
Componente
puntoImpresoras matriz de
Equipamiento
Pgina 14 de 73
3.8.1 Microcontroladores
Se decidi utilizar los PICs de Microchip fundamentado en las siguientes razones:
Fueron los primeros de los que se tuvo informacin.
Existe documentacin disponible (hojas de datos) e inicialmente result atractiva la
idea de que estos microcontroladores se puedan programar en Assembler y C.
Tienen velocidades de reloj de entre 4 MHz (reloj interno) hasta 20 MHz (cristal
externo), por dems suficientes para los requerimientos planteados.
Son los ms vendidos en el mundo.
La empresa Microchip proporciona muestras gratis de sus PIC y solo hay que pagar
el envo desde Estados Unidos.
Es posible adquirirlos en plaza.
Se pudo obtener un microcontrolador, el software de programacin y el circuito
programador con el cual se construy un programador de PICs poco tiempo despus
de iniciado el proyecto.
De la investigacin surgen como fuertes candidatos para integrar el prototipo los siguientes
modelos de PIC:
16F628 un PIC de la gama media con 18 pines, que tiene muchas caractersticas
funcionales automatizadas, mdulos que facilitan el uso de USART, 3 timers,
interrupciones, comparadores analgico-digitales, estado de reposo en bajo
consumo y otras.
16F877A de 40 pines, que tiene las mismas caractersticas del 16F628 y agrega ms
memoria flash RAM (Random Access Memory), EEPROM (Electrically Eraseable
Programable Read Only Memory), data RAM y gestin de un bus tipo I2C, tanto en
modo MASTER como en modo SLAVE.
16F876A de 28 pines, con las mismas caractersticas del 16F877A siendo una
versin ms econmica.
16F84 un modelo de una generacin anterior que los antes descriptos pero muy
comn y econmico.
3.8.2 Comunicacin
En cuanto a la comunicacin punto a punto, de un microcontrolador y el PC, se decidi entre
la comunicacin a travs del puerto PARALELO y el puerto SERIE, usar el puerto SERIE en
un intento de minimizar la cantidad de pines a utilizar en el microcontrolador. A su vez, por
facilidad de uso se opt por implementar dicha comunicacin utilizando el mdulo USART
del microcontrolador.
Pgina 15 de 73
Para la comunicacin a travs de un bus se descart la forma SPI por presentar pocas
facilidades frente a la extensibilidad. Las formas de comunicacin a travs de memorias se
descartaron porque las memorias estticas de las que se tuvo conocimiento y acceso son
caras, lentas y difciles de conseguir. Por otro lado, el bus I 2C, se perfil como el mejor
candidato, siendo una forma de comunicacin fcil de implementar, tanto en software como
en hardware y es adems, muy extensible.
Respecto a la comunicacin inalmbrica, la solucin de comunicacin va infrarrojo, fue
descartada, porque la comunicacin por radio es ms confiable, tiene mayor alcance y es
menos afectada por obstculos. Ms an, es la solucin que utilizan los equipos de ftbol ya
establecidos. Emitir y recibir por radio frecuencia a travs de los componentes TWS 434 y
RWS 434 [REY2001], es bastante transparente en lo que refiere a la programacin de los
microcontroladores, dado que el problema se soluciona por medio de electrnica con los
componentes de codificacin, decodificacin, emisin y recepcin de radio frecuencia que
se utilizaron en prototipos.
Pgina 16 de 73
Captulo
4 Anlisis y Diseo
4.1 Modelo de Proceso
El modelo de proceso para el desarrollo del sistema que se utiliz fue iterativo incremental
centrado en la arquitectura.
Se eligi este tipo de proceso por los siguientes motivos:
Se adapta a la forma prevista de desarrollo, que estableca prototipos de partes
importantes de la arquitectura y luego propona integrar estas partes.
Se realizan anlisis de riesgos tempranos en cada etapa del desarrollo, esta
caracterstica es particularmente importante cuando no se tiene experiencia fluida en
el temario que el proyecto incluye.
Se tiene experiencia previa en este tipo de proceso gracias al Proyecto de Ingeniera
de Software.
Si bien este tipo de proceso fue pensado para construccin de software, es otro
punto del actual proyecto en el que se aplican ideas relacionadas con software en
temas de electrnica.
Aplicar el modelo de proceso en forma estricta no pareci viable al comienzo del proyecto.
La experiencia con que se contaba a este respecto indicaba que, como en la aplicacin
desarrollada en el Proyecto de Ingeniera de Software, la documentacin lleva tiempos
imposibles de afrontar para un grupo con 2 integrantes. Por lo tanto la decisin tomada fue
relajar el modelo disminuyendo la cantidad de documentacin sin perder de vista sus
principios. Se decidi mantener la cronologa de los sucesos en los documentos, de forma
tal que fueran evidentes las iteraciones. Se resolvi construir prototipos que fueran partes
reales de la arquitectura como prueba y validacin del proyecto. Iterando sobre estos
prototipos se buscaba llegar a la integracin final del sistema. Por ltimo se mantuvieron los
anlisis de riesgos para mitigar en forma temprana posibles problemas de implantacin.
Unidad
<<procesador>>
: PC
<<procesador>>
: microcontrolador
moduloPC
moduloCOMM
<<comunicacion>>
INALAMBRICA
<<comunicacion>>
CABLE
<<comunicacion>>
BUS
<<procesador>>
: microcontrolador
<<procesador>>
: microcontrolador
moduloER
moduloMOTOR
<<procesador>>
: microcontrolador
moduloAGREGADO
Pgina 18 de 73
Pgina 20 de 73
4.4 Mdulos
4.4.1 Mdulos que se Planearon Inicialmente
Inicialmente se plantearon los mdulos imprescindibles para la construccin de una
implementacin bsica del modelo propuesto, estos son mdulo PC, mdulo ER, mdulo
COMM y mdulo MOTOR.
Esta implementacin es suficiente para validar el modelo y construir el prototipo del jugador
de ftbol, pero no es suficiente para testear la extensibilidad. En funcin de establecer la
capacidad de crecimiento y encontrar los problemas no evidentes de la idea de
extensibilidad propuesta, se agreg el mdulo SENSOR.
Este mdulo se agregar una vez que estn construidos los dems, aunque se tratar en el
resto del documento como un integrante ms del plan de construccin.
El mdulo PC es en su totalidad software, est compuesto de una biblioteca que deber ser
linkeditada por un programa externo para comandar el robot, la biblioteca es capaz de recibir
rdenes de este programa, las cuales traduce en mensajes, y los enva a la Unidad
Pgina 21 de 73
correspondiente a travs de un puerto SERIE. Una vez que la Unidad responde, procesar
el mensaje recibido y lo entregar al programa cliente de la biblioteca.
Para el envo como recepcin de mensajes, las rutinas de la biblioteca requieren datos de
Unidad Destino del mensaje, Tipo del mensaje, Dato y Mdulo Destino dentro de la Unidad.
Por ms informacin ver captulo 5 Comunicaciones.
Responsabilidad
Por ltimo el mdulo incluye tres LEDs, representados como un semforo en el esquema,
para diagnstico, prueba y depuracin del circuito.
Responsabilidad
Pgina 22 de 73
protocolo Store and Fordward, sin modificar el mensaje, se encarga de cambiar el medio de
transmisin del mismo.
El mdulo COMM
Composicin
La labor principal del mdulo COMM es hacer de interfase entre el mdulo ER y los
diferentes mdulos de una Unidad. Cuando el mdulo COMM recibe un mensaje del mdulo
ER, el microcontrolador del COMM se encarga de desarmar el paquete, chequear su
correctitud y verificar que la Unidad en la que se encuentra el mdulo sea la destinataria del
mensaje. Para lograrlo compara el identificador de Unidad en el mensaje con la
configuracin establecida por hardware en el propio mdulo.
Otra de las tareas principales del mdulo es cumplir el rol de MASTER [HOJ2001B] del bus
I2C por el que se comunica con el resto de los mdulos de la Unidad.
Una vez procesado el mensaje, el COMM se encarga de colocar dicho mensaje en el bus y
solicitar respuesta, al mdulo correspondiente. Todas las respuestas de la Unidad dirigidas
al mdulo PC, son armadas (clculo del cdigo de redundancia cclica incluido) por el propio
mdulo COMM. Dentro de las caractersticas del mdulo COMM, ste puede ser
configurado va mensajes para solicitar o no respuesta a un mdulo determinado. Por ms
detalles ver apndice Protocolos de Comunicacin.
El mdulo MOTOR
Composicin
El mdulo motor se implementa como el circuito al que estn conectados los motores. Para
esta implementacin se utilizaron 2 motores de paso extrados de impresoras matriz de
punto en desuso. El circuito est comandado por un microcontrolador PIC 16F876A
[HOJ2001B].
Pgina 23 de 73
Con el fin de mejorar la velocidad y torque de los motores de paso, se elev el voltaje al
valor de 10 V. Para esta tarea fueron necesarios dos arrays de transistores Darlington
implementados en los componentes ULN2003A [ULN2003]. A cada uno de los ULN2003A,
se conectan 4 lneas provenientes del microcontrolador, quienes transportan las secuencias
de pasos al motor correspondiente.
Responsabilidad
El mdulo sensor se implementa como el circuito al que estn conectados los sensores.
Para esta implementacin se utilizan 5 sensores de cierre extrados de impresoras matriz de
punto en desuso. El circuito es comandado por un microcontrolador PIC 16F876A
[HOJ2001B].
Pgina 24 de 73
Responsabilidad
Pgina 25 de 73
Captulo
5 Comunicaciones
5.1 Formato del Mensaje
5 bits
8 bits
3 bits
5 bits
Id. Destino
Tipo de Mensaje
Dato
Id. Mdulo
CRC
Pgina 26 de 73
Control
Unidad
Mdulo PC
COMM
5
6
3
radio
frecuencia
usart
MOTOR
3
4
SENSOR
4
6
bus i2c
Mdulo ER
Pgina 27 de 73
Una vez que el mdulo COMM recibe el mensaje, desarma el paquete y verifica tanto el Id.
Destino como el CRC. Cuando la verificacin resulta correcta, el Id. Mdulo es utilizado
como direccin para enviar mensajes I2C con la carga til del paquete recibido, es decir el
tipo de mensaje y el dato.
El mdulo COMM contesta al mdulo ER con un paquete que mantiene el formato anterior.
Esta respuesta puede o no tener carga til. Depender de la configuracin del propio
mdulo COMM si consulta algn mdulo de la unidad para agregar datos a la respuesta.
En tiempo de ejecucin, es posible indicar al mdulo COMM a travs de mensajes, si debe
responder sin datos o si debe integrar datos a las respuestas y de qu mdulo deben ser
stos. Esta caracterstica tiene como objetivo permitir la completa comunicacin con un
mdulo en particular, aunque no beneficia ninguna funcionalidad del ftbol de robots, deja
abierta la posibilidad de extender una Unidad con algn mdulo que requiera comunicacin
bidireccional con el PC.
I2C es un bus de comunicaciones, un canal al que se pueden conectar entidades que hablen
el protocolo. Esta sola caracterstica hace que los sistemas que lo utilizan sean
inherentemente extensibles. Su implementacin elctrica es sencilla, es necesario conectar
2 cables a resistencias pull-up y todas las entidades que pretendan utilizar el bus debern
estar conectadas a los 2 cables, en un cable el microcontrolador con el rol de MASTER
(master) de la comunicacin pondr el reloj y el segundo cable se dedicar al intercambio de
banderas y datos.
Existe un ambiente multimaster con deteccin de colisiones (modo de funcionamiento en el
que pueden haber varios master, aunque no a la vez) y otro ambiente en que existe un solo
master. Siempre est presente la relacin maestro esclavo entre las entidades conectadas y
un solo master controla el bus en un momento dado. Se permite un direccionamiento de 7 o
10 bits y se transmiten palabras de 8 bits en todos los casos. Las frecuencias de
funcionamiento varan de 100 Khz a 1Mhz para los PIC. Las frecuencias I 2C estndar para el
bus son 100, 312.5 y 308 Khz.
En general el funcionamiento es el siguiente: todos los dispositivos conectados al bus tienen
una direccin, el master pone una direccin y el modo, transmisin o recepcin; en el bus, si
una entidad conectada tiene esa direccin le contesta, si el modo es de transmisin el
master comienza a enviar datos, si es de recepcin el esclavo enva datos, cuando el envo
de datos se termina el master pone en el bus un fin de transmisin.
Para la presente implementacin se estableci direccionamiento de 7 bits, interrupciones por
llegada y envo de un byte, una frecuencia de reloj de 100 Khz, lo que permite un ancho de
banda en el canal de aproximadamente 1200 bps.
Pgina 29 de 73
Captulo
Pgina 30 de 73
Tipo de
Secuencia
Normal
Wave drive
Normal
Wave drive
Consumo x
Bobina (mA)
75
40
95
55
Bobinas activadas
simultneamente
2
1
2
1
Consumo total
(mA)
150
40
190
55
Por una descripcin detallada de los tipos de secuencia referirse al documento Motores y
Sensores [LM2004A].
Como puede apreciarse en la Figura 9, fue elegido un eliminador de pila regulable entre un
rango de voltajes de 3 V a 12 V.
Por otro lado, una vez calculado el consumo de la Unidad (aproximadamente 850 mAh) y
teniendo en cuenta los requisitos en cuanto a los niveles de voltaje de cada mdulo (5 y 10
V), fue necesario realizar un relevamiento en el mercado en busca de una batera que
cumpliera con dichos requerimientos mnimos y que brindara a su vez, un tiempo
considerable de autonoma.
Pgina 31 de 73
Si bien fue evaluado armar una batera colocando en serie y/o paralelo varias ms
pequeas, el costo de obtener dichas bateras as como la complejidad del circuito de carga
era mayor. Esto ltimo deriv en la adquisicin de una batera recargable sellada de 12 V
1.3 Ah como puede apreciarse en la Figura 10.
6.2 Construccin
6.2.1 Programador de Microcontroladores JDM
Para comenzar a trabajar con los microcontroladores PIC de la empresa Microchip, se hizo
indispensable contar con un programador de microcontroladores, es decir un circuito que
enve el programa objeto a ser ejecutado desde el PC al microcontrolador. Debido al costo
elevado de los programadores que se encuentran disponibles en plaza, se opt por construir
uno. Tambin fue necesario conseguir un software cargador compatible con el programador
JDM (Jens Dyekjr Madsen).
En la bsqueda en Internet, se encontr un circuito del programador JDM (ver III.6
Programador JDM) junto con el software de carga IC-Prog (ver II.3 Software utilizado) con el
que fue construido el programador de la Figura 11.
6.2.2 Mdulo ER
El primer mdulo construido fuera del protoboard fue el mdulo ER. Con la poca experiencia
que contaba el grupo del proyecto, fue todo un desafo integrar en una misma plancha de
pertinax, el microcontrolador PIC16F877A, la pareja codificador-decodificador HT640 y
HT648L, el componente ICL232, el par transmisor receptor RF TWS-434 y RWS-434,
ambas antenas, el conector del cable de comunicacin con el PC y el regulador de voltaje
L7805CV [L781997]. Fueron elegidas las planchas de pertinax universal para armar los
circuitos de cada mdulo por su semejanza y practicidad en cuanto al uso con un
protoboard, evitando tcnicas ms complejas.
Para resolver qu tipo de cable utilizar entre el PC y el mdulo ER fue tenida en cuenta la
disponibilidad de un conector hembra RJ45, un conector hembra DB9 y de un patchcord de
Pgina 32 de 73
UTP. El patchcord se cort en un extremo donde fue soldado el conector DB9 y sobre la
placa se mont el conector RJ45 como puede apreciarse en la Figura 12. Por el detalle de
los pines de conexin, referirse al apndice III.1.1 Diseo del Circuito del mdulo ER.
La primera decisin tomada con respecto a la placa, fue si el regulador de voltaje a 5 V
debera incluirse o no dentro de la misma. En busca de un diseo compacto y porttil, se
prefiri incluirlo dentro de la placa junto con un conector de dos pines para el eliminador de
pilas, un interruptor bipolar y un LED rojo testigo.
La segunda decisin relevante fue la de utilizar zcalos en todos lo componentes (ver Figura
12), para lograr intercambiar fcilmente cualquier elemento ya sea tanto para su
programacin en el caso de los microcontroladores, regulacin en caso de los receptores de
radio frecuencia o reposicin en caso de averas. Con el mismo criterio se opt por colocar
antenas desmontables aprovechando los conectores RG58 de las antiguas tarjetas de red
con BNC. Una vez fijadas las bases de los conectores hembra RG58 con silicona, se tuvo
especial cuidado en conectar a tierra los extremos de los cables que llevan la seal desde el
transmisor o receptor hasta la antena correspondiente.
Por ltimo, tanto para este mdulo como en el resto, se colocaron los tres LEDs testigos
(verde, amarillo y rojo) del microcontrolador con lgica invertida (5 V 1 apaga, 0 V 0
prende).
Por detalles referentes al diseo del circuito y la lista de materiales del mdulo, referirse al
apndice III.1.1 Diseo del Circuito del mdulo ER.
Pgina 33 de 73
Como se puede apreciar en la Figura 13, se busc un diseo compacto del circuito ya que
debe incluirse dentro de la unidad. El circuito de alimentacin incluye un LED testigo que
indica que se encuentra entregando corriente, un conector de dos pines para la batera, una
llave bipolar de encendido y apagado, un regulador de voltaje de 10 V (L7810CV), un
regulador de voltaje de 5 V (L7805CV), varios condensadores y un conector de 4 pines para
alimentar al robot. Para distribuir la alimentacin dentro de la Unidad se utilizaron los cables
de audio que van desde las tarjetas de sonido a las unidades de CDROM. El ltimo detalle
del circuito de alimentacin es el disipador de calor que fue necesario agregar al regulador
de voltaje de 10 V, debido al alto consumo de los motores de paso.
El circuito de alimentacin se convirti en parte vital del proyecto en lo que refiere a la
integracin de los mdulos ya que los transmisores y receptores por radio frecuencia son
extremadamente sensibles a las variacin en el valor del voltaje que utilizan.
En la Figura 13 puede observarse tambin, el circuito cargador de batera. El mismo cuenta
con dos conectores BOSH, un conector macho de fuente de PC, una resistencia de 2 WJ de
150 y un diodo.
Por detalles referentes al diseo de los circuitos y las listas de materiales, referirse al
apndice III.2.1 Diseo del Circuito de la Etapa de Potencia.
Pgina 34 de 73
Pgina 35 de 73
Pgina 36 de 73
Por detalles referentes al diseo del circuito y la lista de materiales del mdulo, referirse al
apndice III.5.1 Diseo del Circuito del mdulo SENSOR.
de los motores, colocando un eje roscado con una rueda en cada extremo, montada sobre
un rulemn. Se agreg un o-ring entre la rueda y el motor en forma de correa como puede
apreciarse en la Figura 18. De esta forma no solo se super el problema sino que el robot
logr subir rampas con aproximadamente 20 grados de inclinacin.
Por ltimo, para sustentacin fue colocada una tercer rueda giratoria en la parte posterior de
la Unidad.
6.3 Programacin
6.3.1 La Programacin, su Evolucin y las Alternativas
Una Unidad tiene distintos microcontroladores, stos trabajan en paralelo e intercambian
mensajes, desde este punto de vista, la Unidad es un sistema distribuido en el que varios
procesadores colaboran, sin embargo desde el exterior sigue vindose como un todo.
La programacin de la Unidad, es decir, la programacin de cada microcontrolador est
determinada, ms all de mantener la funcionalidad propia del mdulo, por la atencin a los
otros microcontroladores a travs del intercambio de mensajes. Para cumplir con los
requerimientos funcionales de un mdulo y la mensajera se utilizaron distintas
funcionalidades de los PIC, tanto timers, como USART, I2C e interrupciones.
En cuanto a la programacin de los microcontroladores, inicialmente se us como lenguaje
el Assembler de Microchip MPASM; luego en la bsqueda de una alternativa con mayor
flexibilidad y facilidad de uso, se encontr el Hi Tech C Compiler; un compilador C para PIC,
que salvo por algunos detalles cumple con la norma ANSI C.
Utilizar el compilador signific un crecimiento significativo en la productividad de la
programacin, as como en la investigacin de las distintas formas de comunicacin y
funcionalidades que posteriormente se integraron.
El compilador C incluye bibliotecas que son de gran utilidad, aunque en la mayora de los
casos fueron destinadas solo a pruebas. Por otro lado, se construyeron bibliotecas propias
para facilitar por ejemplo la integracin de controles de tiempos en rutinas bloqueantes.
La programacin realizada en C es similar a la realizada utilizando Assembler en el sentido
de que se usaron registros para controlar las funcionalidades del microcontrolador ms que
las bibliotecas provistas por Hi Tech, aprovechado la independencia del manejo de las
estructuras de control, asignaciones, tipos, etc. que brinda el lenguaje.
Pgina 38 de 73
Es de considerar que al subir el nivel del lenguaje aparecen nuevos puntos de atencin, por
ejemplo el compilador genera ms cdigo que el esperado, siendo esto muy notorio en
algunos casos. Fueron necesarias estas nuevas consideraciones a la hora de escribir los
programas para controlar la generacin de cdigo objeto. Adems se perdi el detalle exacto
de cuntas y cules instrucciones se ejecutan, por lo tanto dej de existir el control de
tiempos utilizado inicialmente (contando instrucciones, dado que en un PIC se conoce
cuntos ciclos de reloj demora la ejecucin de una instruccin). Lo que signific redisear el
mdulo MOTOR, ya no en funcin de contar instrucciones sino de depender de
interrupciones y de timers para la espera de un perodo entre un paso y el siguiente.
En el resto de los mdulos, el cambio a C no fue dramtico dadas la caractersticas
asincrnicas de los mismos, en general todos esperan recibir un mensaje y hacer algo con
l, sin depender de un reloj que condicione el cumplimento de sus responsabilidades como
sucede con el mdulo MOTOR.
El assembler utilizado, MPASM, es de libre distribucin, lo provee Microchip con el MPLAB,
la IDE para desarrollar los programas que ejecutan los microcontroladores de esta marca
que tambin es gratis. El compilador C se integra al MPLAB como plug-in.
La empresa Hi Tech proporciona sin costo una versin limitada del compilador Hi Tech PICC
compiler, la versin PICC Lite, estas limitaciones confinan su uso a 2 bancos de memoria,
menos de 2K instrucciones, restringiendo as el largo del cdigo y la cantidad de variables
que se pueden usar.
Dado que estaba fuera de discusin la compra de la versin completa del compilador, la
versin demo fue una muy buena opcin, pudindose integrar tambin al MPLAB.
De los puntos anteriores, se desprende que es necesario tener Ms. Windows como sistema
operativo para utilizar los programas mencionados y lo propone como punto de partida. No
es atractiva la idea de compilar los programas relacionados con los PIC en un sistema
operativo y tener el mdulo PC en otro sistema u otro PC. La comodidad, productividad y la
disponibilidad de recursos fueron condicionantes fuertes que definieron las decisiones.
Por otro lado, el CRC se desarroll en los inicios del proyecto en MPASM y luego se migr a
PICC. Se pretendi mantener el cdigo lo ms posible dada su estabilidad, esta fue una
premisa por lo que se hizo necesario utilizar alguna versin del lenguaje C para PC.
Hacer toda la interfase en un C tradicional se consider como inviable, sobre todo porque no
se requiere un extremo poder de cmputo (que es donde C puede hacer la diferencia dado
que los PIC son notoriamente ms lentos que un PC) y la poca amigabilidad del lenguaje
podra pesar.
Utilizar Ms. Visual Basic fue una opcin desde que es amigable, fcil de aprender (en los
primeros pasos), interacta bien con DLL y tiene componentes predefinidos para la gestin
del puerto SERIE y timers.
Los conceptos anteriores llevaron a la decisin de escribir una biblioteca de nombre CRC
que exporte funciones para el clculo en 5 bits para un mensaje de 3 bytes y escribir un
componente RobotBC2.ocx en Ms. Visual Basic que fuera capaz de intercambiar mensajes
con una o varias Unidades.
En tiempos de construccin el foco del proyecto fue la electrnica y la programacin de los
microcontroladores, siendo menos prioritario el desarrollo del mdulo PC. Esta razn influy
fuertemente en la eleccin de lenguajes comerciales, de fcil uso debido a los componentes
encontrados, por sobre alternativas ms flexibles como puede ser Java sobre el sistema
operativo Linux. De todas formas queda como siguiente paso en la evolucin del proyecto
migrar el desarrollo del mdulo PC a Java sobre Linux restando conseguir una versin del
programador de microcontroladores para este sistema operativo junto con clases que
permitan gestionar timers y comunicacin serial.
Pgina 40 de 73
Captulo
7 Costos
7.1 Costos de Materiales para Aprender
Tanto para aprender como para poder disear y validar los prototipos implementados fueron
necesarias varias herramientas y materiales. En la Tabla 3 se listan en detalle las mismas
junto con una columna con el precio en pesos uruguayos para aquellos items que fueron
necesarios adquirir.
Tabla 3
materiales para
Como puede
costo
total
asciende
a
Descripcin
Morsa pequea
Destornilladores varios
Alicate
Pinza de punta
Soldador 40Watt
Eliminador de Pilas
Taladro de mano
Pistola de silicona
Pinza para conectores BNC
Multimetro o tester
Osciloscopio
Marcador indeleble
Bandas elsticas
Tornillos y arandelas
Caja y conector RJ11
Cable RG 6 y UTP
Silicona
Pilas
Conectores DB9 hembra
Estao 60/40
Maya desoldadora 3,00 mm x 1,5 mm
Protoboard
Precio $U
--------------------------------------25,00
58,00
268,00
Herramientas y
aprendizaje
apreciarse, el
incurrido
$U
351.-;
Si bien es difcil llegar al costo exacto, en la Tabla 4 se muestra un detalle de los elementos
que fueron necesarios adquirir para lograr la construccin del prototipo. Por un detalle
minucioso de los componentes de cada mdulo referirse al apndice Circuitos y Materiales.
Descripcin
Malla desoldadora 3,00 mm x 1,5 mm
Estao 60/40
HT640 codificador 10 direcciones
HT648L decodificador 10 direcciones
ICL232 driver / receptor 232
TWS 434 transmisor 315 Mhz
RWS 434 receptor 315 Mhz
Plancha universal de pertinax
Batera 12V 1.3 Ah
ULN2003AN array transistores darlington
Rueda giratoria
Switch On / Off
Cant.
1
1
2
2
1
2
2
3
1
2
1
2
Precio $U
58,00
25,00
89,00
81,00
105,00
300,00
300,00
164,00
214,00
28,00
25,00
20,00
SubTotal $U
58,00
25,00
178,00
162,00
105,00
600,00
600,00
492,00
214,00
56,00
25,00
40,00
El costo total aproximado de una Unidad junto con el mdulo ER es de $U 2555.- ; alrededor
de U$S 85.- El mismo puede verse incrementado en caso de que no se consigan de
equipamiento obsoleto, los componentes necesarios. (Ver 3.7.1 Reutilizacin de
Componentes 0 Costo)
Pgina 42 de 73
Pgina 43 de 73
Captulo
8 Pgina Web
La construccin de una pgina Web para el proyecto fue motivada por las siguientes
razones:
Lograr un seguimiento cronolgico del proyecto.
Generar un repositorio de informacin para este proyecto y para proyectos de
generaciones futuras.
Mantener una fluida comunicacin con los tutores y con los integrantes de los
proyectos relacionados (ver 1.1 Trabajos Relacionados).
La pgina Web rene informacin referente a los prototipos intermedios construidos desde
los inicios hasta el propio prototipo final. Es posible descargar las hojas de datos de todos
los componentes utilizados as como documentos relacionados con el estado del arte del
Pgina 44 de 73
proyecto, documentos propios del diseo y construccin del sistema, programas escritos en
etapa de investigacin, programas incluidos en el prototipo final, utilitarios, circuitos, fotos y
videos.
La direccin es www.fing.edu.uy/~pgconrob
Pgina 45 de 73
Captulo
9 Conclusiones
9.1 Conclusiones Generales
Pgina 46 de 73
Pgina 47 de 73
Pgina 48 de 73
Captulo
10
10
Glosario
Fira
Es un circuito interfase para transmisin y recepcin RS232 que cumple con las
especificaciones EIA RS-232C y V.28 [ICL1997].
JDM
Micro Robot World Cup Soccer Tournament, Torneo Mundial de Ftbol de Micro Robots.
OCX
OLE Control Extension, es un programa independiente que puede ser accedido por otros
programas en un ambiente Windows. Los controles OCX terminan con la extensin ocx y
representan la segunda generacin en la arquitectura de controles de Microsoft (la primera
es VBX, es decir controles escritos en Visual Basic).
Osciloscopio
Los osciloscopios son de los instrumentos ms verstiles que existen y lo utilizan desde
tcnicos de reparacin de televisores a mdicos. Un osciloscopio puede medir un gran
nmero de fenmenos, provisto del transductor adecuado (un elemento que convierte una
magnitud fsica en seal elctrica) ser capaz de dar el valor de una presin, ritmo cardaco,
potencia de sonido, nivel de vibraciones en un coche, etc.
Por ltimo, los equipos electrnicos se dividen en dos tipos: Analgicos y Digitales. Los
primeros trabajan con variables continuas mientras que los segundos lo hacen con variables
discretas.
PIC
Segn la empresa General Instruments (creadora del primer chip llamado PIC1650), la sigla
significa Programmable Intelligent Computer (computador programable inteligente). Por otro
lado, cuando se cre el 16C54, se concibi como un perifrico para el microprocesador
CP1600, por esta razn muchas personas piensan que PIC significa Peripherical Interface
Controller (control de interfase perifrica). Sin embargo la empresa Microchip nunca us el
nombre PIC como una abreviacin, sino como un nombre propio.
Protoboard
Receptor de radio frecuencia con modulacin por amplitud operando a una frecuencia entre
300 433 MHz con una sensibilidad de 3uVrms [REY2001].
SDA
Transmisor de radio frecuencia con modulacin por amplitud operando a una frecuencia de
315 MHz con una potencia de 8mW [REY2001].
TTL
han aparecido diferentes versiones de TTL como FAST, SL, S, etc y ltimamente los TTL:
HC, HCT y HCTLS. En algunos casos puede alcanzar poco ms de los 250Mhz.
UART
Unshielded Twisted Pair, Par Trenzado sin Malla o Proteccin, es un tipo de cable popular
que consiste en 4 pares de dos cables sin malla enroscados en s mismo. Debido a su bajo
costo, el cable UTP est siendo usado extensamente en redes de rea local y conexiones
telefnicas.
Pgina 51 de 73
Captulo
11 Bibliografa y Referencias
[MID2004]
[IMP1998]
[KUP2001]
[MMP2003]
[MIC2004]
[HOJ1999A]
[HOJ2001B]
[MAN2004]
[FIN2004]
[MEL2004]
[PAR2004]
[MSE2004]
[K-T2004]
[LEG2004]
[REN2004]
[PAP1999]
[SCH1997]
[ANG2000]
[TAN1996]
[AND1997]
[HEY1996]
11
[CEB1997]
[TAN1997]
[HOL2004]
[ICL1997]
[HOL1999]
[REY2001]
[HOL1997]
[ULN2003]
[L781997]
[UML2001]
[FIR2004]
[PGV2004]
[PGF2004]
[LM2004A]
[LM2004B]
[LM2004C]
[LM2004D]
[LM2004E]
[LM2004F]
[LM2004G]
Hall, 1996.
Francisco Javier Ceballos, Enciclopedia de Visual Basic 4, 1a. edicin, 1997.
Andrew S. Tanenbaum, Redes de Computadoras, 3ra. edicin, Prentice Hall,
1997.
PAGINA DE HOLTEC
ICL232 +5V Powered, Dual RS-232 Transmitter/Receiver, Intersil Corporation
(1997)
HOLTEC 318 Series of Encoders Data Sheet, Holtek Semiconductor Inc
(1999)
TWS-434 TRANSMITTER RWS-434 RECEIVER, Reynolds Electronics
(2001)
HOLTEC 318 Series of Decoders Data Sheet, Holtek Semiconductor Inc
(1997)
ULN2001A, ULN2002A, ULN2003A, ULN2004A, ULQ2003A, ULQ2004A
HIGH-VOLTAGE HIGH-CURRENT DARLINGTON TRANSISTOR ARRAY,
Texas Instruments Incorporated (2003)
L7800 Series Positive Voltage Regulator
SGS THOMSON MICROELETRONICS (1997)
OMG-Unified Modeling Language, v1.4
Setiembre 2001
http://www.fira.net Federation of International Robot-soccer Association.
Confirmada la existencia de la pgina al 05/06/2004
http://www.fing.edu.uy/~pgvisrob, Proyecto de Grado Visin de Robots,
Facultad de Ingeniera. Universidad de la Repblica Oriental de Uruguay
(2004). Confirmada la existencia de la pgina al 30/05/2004
http://www.fing.edu.uy/~pgfutrob, Proyecto de Grado Ftbol de Robots,
Facultad de Ingeniera. Universidad de la Repblica Oriental de Uruguay
(2004). Confirmada la existencia de la pgina al 30/05/2004
Motores y Sensores en Robtica. Documentacin asociada al proyecto,
descripcin de funcionamiento de motores y sensores. Santiago Margni
Germn Lpez (2004)
Comunicacin. Documentacin asociada al proyecto, descripcin de formas
de comunicacin. Santiago Margni Germn Lpez (2004)
Funcionamiento de microcontroladores. Documentacin asociada al
proyecto, descripcin de funcionamiento de microcontroladores PIC. Germn
Lpez - Santiago Margni (2004)
Movimiento de motores. Documentacin asociada al proyecto, descripcin
cronolgica del anlisis y diseo del mdulo MOTOR. Germn Lpez Santiago Margni (2004)
Protocolos de comunicacin. Documentacin asociada al proyecto,
descripcin cronolgica del anlisis y diseo de los protocolos utilizados.
Germn Lpez - Santiago Margni (2004)
Funcionamiento. Documentacin asociada al proyecto, descripcin
cronolgica del funcionamiento de cada mdulo. Germn Lpez - Santiago
Margni (2004)
Programacin de microcontroladores. Documentacin asociada al proyecto,
resea de puntos importantes en la programacin de microcontroladores
PIC. Germn Lpez - Santiago Margni (2004)
Pgina 53 de 73
Apndice
I. Protocolos de Comunicacin
I.1
5 bits
8 bits
3 bits
5 bits
Id. Destino
Tipo de Mensaje
Dato
Id. Mdulo
CRC
Id. Mdulo
El identificador de Mdulo es la direccin en el bus I 2C del mdulo al que se le est enviando
el mensaje. Esta forma de direccionamiento baja el acoplamiento de los dems mdulos con
el mdulo COMM, sin importar de qu mdulo se trate y permite agregar o quitar mdulos
en una Unidad sin hacer cambios en el mdulo COMM. El campo tiene 3 bits de largo.
Acepta valores entre 0 y 7.
Id. Destino
Identificacin nica de la Unidad. El campo tiene 3 bits de largo. Los valores aceptados son
de 0 a 7, se deja el 0 para broadcast, es decir todas las Unidades.
Tipo de Mensaje
Indica de qu tipo es el mensaje. El campo tiene 5 bits de largo. Los valores que pueden ser
interpretados dependen de cada mdulo (ver documento Protocolo [LM2004E]).
Dato
Es el dato asociado al Tipo de Mensaje. El campo tiene 8 bits de largo. Los valores que
pueden ser interpretados dependen de cada mdulo (ver documento Protocolo [LM2004E]).
CRC
El Cdigo de Redundancia Cclica que se usa es generado por el polinomio:
x5 + x4 + x + 1
Tiene las siguientes caractersticas:
El resultado de los clculos de CRC ocupan 5 bits.
Detecta rfagas de errores de hasta 5 errores de largo, a consecuencia del item
anterior.
Detecta cantidad impar de errores, dado que (x+1) es factor del polinomio generador
en aritmtica polinmica.
Detecta errores simples, porque tiene ms de un trmino.
Detecta errores dobles, dado que el polinomio generador no es divisor de x K + 1 para
K<=24.
Pgina 54 de 73
I.2
I.2.1
Sincronizacin
Se comprob que el PC cuenta con un buffer suficientemente grande como para que un PIC
enve bytes sin saturarlo, tambin se observ que un PIC solo tiene un byte de buffer, y esto
depende de cmo se use. Dado que un mensaje tiene 3 bytes, el buffer del PIC no alcanza
para un mensaje. Por lo que fue necesario detener el envo de bytes del PC de modo que
sea el PIC quien regule la transmisin de datos.
El problema es que si bien el PIC implementa el intercambio de informacin por USART no
provee de ningn protocolo de sincronizacin en forma nativa.
Se encontr que existe un protocolo RTS/CTS basado en las lneas del puerto SERIE
Request to Send y Clear to Send que hace el trabajo. Lo que no se encontr fue una
especificacin de cmo funciona. As que se gener una solucin de sincronizacin a partir
de estas lneas.
Se cont con los siguientes recursos para realizar la sincronizacin:
Una forma de levantar (1 binario) la lnea RTS desde el PC.
Una forma de monitorear la lnea CTS desde el PC.
Dos pines del PIC para realizar la misma tarea desde el microcontrolador.
Conocimiento de la distribucin de los pines en los conectores seriales.
Protocolo de Sincronizacin
El protocolo implementado para el proyecto sincroniza el PIC y el PC haciendo que el hilo de
ejecucin del PC se detenga 2 veces antes de enviar cada byte y el PIC lo pueda controlar
levantando y bajando una lnea (CTS).
PC
RTS = 1
Mientras (CTS=0)
Nada
RTS = 0
Mientras (CTS=1)
Nada
RTS = 1
Envio()
...
PIC
CTS = 1
Mientras (RTS=1)
Nada
CTS = 0
Recibo()
...
Es de hacer notar que la funcin Recibido() del PIC es bloqueante mientras que la funcin
Envio() del PC no lo es.
Pgina 55 de 73
I.2.2
Bloqueo Mutuo
I.3
I.3.1
Cuando el mdulo COMM recibe un mensaje, es decir recibe 3 bytes por RF dentro de un
timeout preestablecido, lo primero que hace es identificar las partes del mensaje, verifica
que el mensaje sea para la Unidad a la que el COMM pertenece (la identificacin de la
Unidad est seteada en el hardware de este mdulo, se recoge de un grupo de jumpers
cuando se inicia el microcontrolador). Si no es para la Unidad descarta el mensaje y vuelve
a escuchar. Si el mensaje es para esta Unidad, verifica el CRC. Si el CRC falla descarta el
mensaje y vuelve a escuchar.
Luego de las verificaciones se determina si el mensaje es para el mdulo COMM o para otro
mdulo de la Unidad. Si es para el COMM se procesa segn el tipo de mensaje. Si no es
para este mdulo entonces se pone en el bus I 2C la direccin de mdulo que vino en el
Pgina 56 de 73
I.3.2
4 bits
0000
dir I2C
1 bit
modo
En la Figura 22 se describe el primer byte que se debe enviar para iniciar una transmisin
I2C, el byte est integrado por la direccin del mdulo al que se le enva el mensaje en los 7
bits ms significativos, y en el bit menos significativo se indica el modo, en este caso para
TRANSMISIN del master se escribe un 0. La direccin del mdulo es obtenida por el
mdulo COMM al desarmar el mensaje recibido del mdulo ER.
Luego de que el mdulo COMM, ha recibido el ACK de la direccin, est habilitado para
enviar el resto de la transmisin, esto significa enviar 2 bytes segn se indica en la Figura
23.
3 bits
5 bits
8 bits
000
Tipo de Mensaje
Dato
El segundo byte de la transmisin I2C del COMM contiene el tipo del mensaje en los 5 bits
menos significativos, mientras que el tercer byte contiene el dato del mensaje.
Pgina 57 de 73
I.3.3
Para que un nuevo mdulo integre una unidad debe tener las siguientes caractersticas
respecto de la comunicacin I2C:
Debe tener un controlador que implemente comunicacin a travs de un bus I2C.
Tiene que estar seteado en modo SLAVE.
Tiene que tener seteada una direccin que no est siendo utilizada en otro mdulo.
La direccin tiene que ser un nmero par entre 2 y 14 (para la actual
implementacin), y desde fuera del sistema el mdulo se identificar como su
direccin dividido 2.
Cuando recibe una direccin en modo TRANSMISIN, debe recibir del master 2
bytes de modo de generar los ACK correspondientes.
Cuando recibe una direccin en modo RECEPCIN, debe enviarle al master 2 bytes
que sern integrados a un mensaje para el mdulo ER.
Debe respetar la forma de mensaje dispuesta en la seccin Formato del mensaje
para I2C.
Pgina 58 de 73
Apndice
II
II.1 Bibliotecas
Durante la programacin de los mdulos se fueron usando y creando bibliotecas, en general
se parti de bibliotecas hechas que se obtuvieron junto con el compilador de C, y luego se
fueron adaptando a las necesidades de los programas.
Es importante tener en cuenta que en muchos casos fue necesario relegar los conceptos de
encapsulacin que la buena programacin procura debido a la necesidad de eficiencia y de
obtener cdigos cortos. Se irn describiendo situaciones en las que se podra mejorar el
cdigo utilizando funciones o procedimientos y esto no se hizo por alguna razn marcada,
en general las funcionalidades se dejaron en el programa principal o en funciones locales.
Delay.h
Esta es la nica biblioteca de Hi Tech [MAN2004] que sobrevivi casi tal como fue hallada
(solo se cambi la definicin de la frecuencia de funcionamiento del microcontrolador). Se
utiliza para esperar tiempos, por ejemplo en casos en que se debe tener un LED indicador
prendido. Luego de revisarla, no se consider una biblioteca que gestiona tiempos con
mucha precisin debido a como est programada, se basa en contar instrucciones C para
determinar tiempos, sin embargo es til cuando se deben esperar tiempos aproximados, no
crticos.
Al programar en Assembler se puede llevar un control estricto de cuntas instrucciones se
ejecutan y dado que el tiempo de ejecucin de una instruccin es conocido se pueden
determinar tiempos con tanta precisin como permita el reloj del PIC, pero cuando el conteo
se basa en instrucciones C, no est claro qu hace el PICC Lite [MAN2004] al compilar
estas instrucciones y por ende cunto demoran; en principio se pudo constatar que
compilando con distintos grados de optimizacin, la biblioteca provoca demoras distintas.
I2C.h
En el paquete de software de Hi Tech est incluida una biblioteca I2C.h, la biblioteca
implementa el bus I2C en base a 2 pines cualesquiera del microcontrolador y gestiona el
protocolo a nivel de capa 1, levanta y baja los pines creando de esta forma las condiciones
de START, STOP y el envo serial de los datos. No utiliza las funcionalidades incorporadas
de los microcontroladores an cuando se trate de un microcontrolador que tenga
implementado en hardware la gestin del bus I2C.
Esto pudo ser una solucin cuando se usaba el PIC 16F628 que no incorpora
funcionalidades para la gestin de I2C. Sin embargo existe un detalle que cuestiona la
estabilidad de esta solucin, usa la biblioteca delay.h.
Segn se coment en la seccin anterior, la consecuencia directa de estos detalles es la
poca confianza en el funcionamiento del I2C implementado de esta forma. No significa que
no funcione, el problema es que ante cualquier falla siempre estar la idea de que el error
puede estar en los tiempos, sobre todo cuando son tiempos pequeos como por ejemplo el
tiempo en que se forma una condicin de START.
Como consecuencia de los posibles problemas antes mencionados, se implement una
nueva biblioteca I2C.h que aprovecha las funcionalidades incorporadas de los PIC que
tienen el mdulo MSSP, esta es la biblioteca que se utiliz para la comunicacin I 2C. Las
Pgina 59 de 73
Pgina 60 de 73
Enviar_Mensaje() {
Recibir_Mensaje() {
Setea el timer.
Setea el timer.
Uart_Sincroniza_y_envia_byte1()
Uart_recibe_byte1()
Si (error o time out)
Si (error o time out)
return Error.
return Error.
Uart_Sincroniza_y_envia_byte2()
Uart_recibe_byte2()
Si (error o time out)
Si (error o time out)
return Error.
return Error.
Uart_Sincroniza_y_envia_byte3()
Uart_recibe_byte3()
Si (error o time out)
Si (error o time out)
return Error.
Return Error.
return OK }
return OK }
Algoritmo 2 Envo y recepcin de tres bytes por UART.
Pgina 61 de 73
Mdulo ER
Incluye: delay.h, delay.c, usart.h, usart.c, ER.c.
El mdulo ER es el encargado de hacer de puente entre el PC y el emisor de radio
frecuencia, recibiendo mensajes por USART (puerto serial) y envindolos al COMM va RF,
luego recibe del COMM va RF mensajes y los pasa al mdulo ER va USART.
Seudo del funcionamiento del mdulo
Inicializa_Usart(9600,8)
Mientras (true){
// RECEPCIN USART.
Usart_Sinc_recibe_3_bytes()
Si (error)
Continue;
// TRANSMISION RF.
RF_trans_3_byte()
// RECEPCIN RF
Inicio_timer()
RF_recep_3_bytes()
Si (timeout)
Arma_Resp_Error_Usart()
// TRANSMISIN USART
Usart_envia_3_byte()
Si (timeout)
Continue
Fin timer()
}
Algoritmo 3 Seudo del mdulo ER.
Pgina 62 de 73
Mdulo COMM
Incluye:delay.h, delay.c, i2C.h, i2C.c, crc.h, crc.c, COMM.c
El mdulo COMM es el encargado de hacer de interfase entre un emisor de radio frecuencia
y los diferentes mdulos de una unidad; recibe del mdulo ER va RF un mensaje, chequea
su correctitud y lo pone en el bus I2C. Recibe respuestas del I2C (si debe hacerlo) y
responde al ER va RF.
Seudo del funcionamiento del mdulo
dirCOMM = Get_Id_Unidad()
Inicializa_i2C()
Mientras (true){
// RECEPCIN POR RF.
RF_recepcin_byte_1()
IniciarTimer()
RF_recepcin_bytes_2_3()
Si (timeout)
Continue
ApagarTimer()
// PROCESA MENSAJE
Controla_unidad_y_CRC()
Si (error)
Continue
Si (dirMensaje()==dirCOMM)
Procesa_msj_COMM()
Sino {
Trans_Master_i2C()
Si (error_i2C){
Arma_resp_err_RF()
RF_trans_3_bytes()
Continue
}
Si (con_respuesta){
Recep_Master_i2C()
Si (error_i2C){
Arma_resp_err_RF()
RF_trans_3_bytes()
Continue
}
}
Arma_respuesta()
RF_trans_3_bytes()
}
}
Algoritmo 4 Seudo del mdulo COMM.
Pgina 63 de 73
CtrlYDoyPaso() {
TiempoPaso-Si (TiempoPaso==0){
TiempoPaso=VelActual
Si (VelActual != VELZERO)
DoyPaso()
Sino
Si (VelObj != VELZERO){
DirActual =DirObj;
VelNueva = VelObj;
}
}
}
Algoritmo 6 Rutina de Control de velocidad.
CtrlYActVel()
Si (VelActual<>VelNueva)
Si (TiempoAcel == 0){
VelActual=SetNuevaVel()
Si (VelActual<>VelNueva)
TiempoAcel=ACEL
}
Sino
TiempoAcel-SetNuevaVel()
Si (VelActual>VelNueva)
VelActual-Sino
VelActual++
Algoritmo 7 Rutina de Control de aceleracin.
En la rutina de interrupcin se controlan tanto los timers para desbloquear el principal como
la gestin de la comunicacin I2C para actualizar valores de velObj y dirObj o cumplir con las
rdenes que indiquen los mensajes.
Mdulo SENSOR
Incluye: delay.h, delay.c, i2c.h, i2c.c, SENSOR.c.
El mdulo SENSOR es el encargado de mantener y administrar la informacin recabada por
los sensores de la unidad, recibe peticiones de informacin por intermedio de un bus I2C en
el que es esclavo. La rutina de interrupcin gestiona la recepcin de mensajes y envo de
respuestas por I2C, las respuestas son generadas en el programa principal.
Pgina 64 de 73
Versin de MPLab:
MPLAB IDE 6.30, Release v1.10
Descripcin:
Es la IDE de desarrollo de los programas para PIC, integra compilador de C,
ensamblador, simulador y editor.
Todas las herramientas de Microchip que integran la IDE por defecto son sin costo.
Versin de C:
HI-TECH PICC Lite Compiler v8.02
Suit_HITEC16 v1.22.3.1 (pluggin para MPLab).
Descripcin:
Compilador de C de la empresa Hi Tech y pluggin para el MPLAB.
Programador de PICs:
Ic-Prog versin 1.05A de Bonny Gijzen.
Descripcin:
Aplicacin que descarga el programa ensamblado en un PIC. Es de libre distribucin,
siendo compatible con Ms. Windows 98, XP, NT o 2000. Utiliza un puerto SERIE del
PC y puede programar tanto microcontroladores como memorias EEPROM.
Pgina 66 de 73
Apndice
III.
Circuitos y Materiales
III.1 Mdulo ER
III.1.1
Pgina 67 de 73
III
III.1.2
Cant.
2
2
1
4
1
5
3
1
3
1
1
1
1
1
1
1
1
1
1
1
1
Pgina 68 de 73
Comp.
C3, C5
C1, C2
C4
C6, C7, C8, C9
U1
R3, R4, R5, R6, R7
R1, R2, R8
LED1
LED2, LED3, LED4
XTAL2
U1
U5
U6
U3
U4
CON1
DSUB9F
L1
L2
III.2.2
Cant.
3
3
1
1
1
1
1
1
1
1
3
1
Descripcin
Condensador de 100 uF / 16 V
Condensador de 100 nF / 63 V
Regulador de voltaje LM7805CT
Regulador de voltaje LM7812CT
Llave bipolar ON / OFF
LED amarillo
Resistencia de 1 Kohms
Resistencia de 150 Ohms 2 WJ
Diodo
Conector de 4 pines macho
Conector de 2 pines macho
Plancha universal de pertinax
Comp.
C1, C2, C3
C4, C5, C6
U1
U2
R1
R2
D1
CON1
CON2, CON3, CON4
Pgina 69 de 73
III.3.2
Cant.
2
1
4
2
3
3
1
1
1
1
1
1
2
2
3
1
1
1
Pgina 70 de 73
Comp.
C3, C5
C4
R4, R5, R6, R7
R8, R9
R1, R2, R3
LED2, LED3, LED4
XTAL2
U2
U5
U6
U3
U4
CON1, CON2
CON3, CON4
S1, S2, S3
L1
L2
III.4.2
Cant.
2
1
4
Descripcin
Condensador de 22 pF
Condensador de 0.1 uF
Resistencia de 1 Kohms
Resistencia de 1 Ohms
3
1
1
2
1
1
1
1
Comp.
C1, C2
C3
R1, R2, R3, R4
R5, R6, R7, R8, R9, R10,
R11, R12
LED1, LED2, LED3
XTAL1
U1
U2, U3
CON1
CON2
CON3
Pgina 71 de 73
III.5.2
Cant.
2
1
4
5
3
1
1
1
Conector de 2 pines
Comp.
C1, C2
C3
R1, R7, R8, R9
R2, R3, R4, R5, R6
LED1, LED2, LED3
XTAL1
U4
CON1
CON2, CON3, CON4, CON5,
CON6, CON7
Pgina 72 de 73
III.6.2
Cant.
4
1
1
2
1
1
2
1
1
2
1
1
Comp.
D1, D4, D5, D6
D2
D3
Q1, Q2
C1
C2
R1, R4
R3
R2
CON1, CON2
DSUB9F
Pgina 73 de 73