"diseño mecatrónico de un robot utilizado en la enseñanza de ...
-
Upload
nguyencong -
Category
Documents
-
view
221 -
download
0
Transcript of "diseño mecatrónico de un robot utilizado en la enseñanza de ...
UNIVERSIDAD CENTROAMERICANA
“JOSÉ SIMEÓN CAÑAS”
"DISEÑO MECATRÓNICO DE UN ROBOT UTILIZADO EN
LA ENSEÑANZA DE PROGRAMACIÓN
COMPUTACIONAL"
TRABAJO DE GRADUACIÓN PREPARADO PARA LA
FACULTAD DE INGENIERÍA Y ARQUITECTURA
PARA OPTAR AL GRADO DE
INGENIERO ELECTRICISTA
POR:
CARLOS ROBERTO CHÁVEZ LÓPEZ
ELÍAS MISAEL GUZMÁN FRANCO
OCTUBRE 2008
ANTIGUO CUSCATLÁN, EL SALVADOR, C.A.
RECTOR
JOSÉ MARÍA TOJEIRA, S.J.
SECRETARIO GENERAL
RENÉ ALBERTO ZELAYA
DECANO DE LA FACULTAD DE INGENIERÍA Y ARQUITECTURA
EMILIO JAVIER MORALES QUINTANILLA
COORDINADOR DE LA CARRERA DE INGENIERÍA ELÉCTRICA
OSCAR ANTONIO VALENCIA MONTERROSA
DIRECTOR DEL TRABAJO
ELMER ALEXANDER MELARA
LECTOR
OSCAR ANTONIO VALENCIA
AGRADECIMIENTOS
Se agradece a Dios todopoderoso por permitirnos recorrer este camino que nos lleva a ser
profesionales y por darnos la bendición de la educación.
A nuestros padres y hermanos, los cuales con su esfuerzo, paciencia y apoyo nos han ayudado a
recorrer este camino que no hubiéramos podido concluir sin su ayuda.
A Benjamín Guzmán y a Margarita Guzmán por el apoyo incondicional que nos brindaron durante
el desarrollo del trabajo.
A nuestros amigos de la carrera de Ing. Eléctrica que nos apoyaron dándonos animo y
brindándonos acceso al equipo que estaba bajo su cuidado.
A los integrantes del primer grupo de trabajo del proyecto Karel por compartir sus experiencias con
nosotros y por sentar las bases en las cuales soportamos nuestro trabajo.
Al Ing. Waldo Cervantes, Ing. Felipe Kobeh, Mtra. Catherine Fanning, Rocio Trujillo, Susana
Medina y en general a todos los integrantes del Departamento de Electrónica y de la Subdirección
de Intercambio Estudiantil de la Universidad Iberoamericana de México D.F. Cuyas enseñanzas,
apoyo y cariño fueron claves durante el año 2007 para uno de los integrantes del grupo y se ven
reflejadas en este trabajo de graduación.
Carlos R. Chávez y Elías M. Guzmán
DEDICATORIA
A Dios todopoderoso, sin el cual no hubiera tenido la fuerza de seguir este camino ni completarlo,
muchas gracias por estar siempre conmigo y darme la vida tan maravillosa que me regalas.
A mis padres, Roberto Chávez y Mirna de Chávez, por haberme ayudado a dar cada paso de mi
vida, por estar ahí en los momentos felices y en los tristes, por darme el ejemplo siendo personas
ejemplares y rectas, por su apoyo incondicional y por que sin ellos no sería la persona que soy. Les
dedico este trabajo porque es también suyo y porque sin ustedes nunca podría haber sido
completado.
A mi hermano, José Fernando Chávez, porque aunque seas menor que yo me enseñas muchas
cosas día con día y me apoyas tanto como papá y mamá, porque hemos pasado mucho juntos y
vamos a pasar mucho juntos también y por tener la paciencia necesaria durante todo lo que duró
este proyecto y en general porque no sos solo mi hermano sino también mi amigo.
A Carlos Bonilla y Lidia de Bonilla, a quienes llevo en mi corazón.
A mis abuelos maternos a quienes hubiera deseado conocer pero que veo reflejados en mi mamá.
A mi abuela paterna quien me enseña que la Fé es lo más importante de la vida.
A todos mis tíos y tías porque cada uno en particular me ha ayudado durante mi vida.
A todos mis amigos y amigas, por todos los momentos que hemos pasado y vamos a pasar juntos.
A todos mis profesores y profesoras que desde pequeño fueron poniendo en mi las bases que
ahora sustentan mi carrera.
A cada una de las personas que me dijeron “tu puedes”.
Carlos R. Chávez
DEDICATORIA
Hoy, con el logro de este nuevo paso, quiero dedicar este trabajo a Dios todopoderoso por darme
la vida; a todos mis seres queridos y amigos, quienes en todo momento me acompañaron a
caminar por este sendero tan duro, pero a la vez muy grato.
Especialmente dedico este gran éxito a mis padres Pedro Guzmán e Hipolita Franco de Guzmán,
quienes me dieron a conocer el mundo, y que han sabido apoyarme siempre luego de tener éxito o
fracaso, quienes me han enseñado a diferenciar lo bueno de lo malo, los que siempre están
pendientes de mí cuando estoy cerca y lejos, a ustedes, los quiero con toda mi alma.
A mis familiares que están en el cielo, por escuchar mis oraciones cada vez que hablo con ellos,
por todo lo que han hecho por mí, siempre permanecerán en mi corazón.
A mis hermanos y hermanas, amigos y compañeros de clases que han vivido día a día cada una de
mis experiencias de vida.
No tengo letras para seguir diciendo el gran regocijo que me da poder terminar esta carrera en
donde familiares, amigos, profesores y compañeros dejan parte de su vida, para dar vida a las
ilusiones de niño y que hoy en día se hacen realidad.
Solo sé que este camino es solo el comiendo de una gran historia, de virtudes y gracias para mí y
mi familia.
Mil disculpas si alguien me faltó, fue un momento muy emotivo.
Elías M. Guzmán
i
RESUMEN EJECUTIVO
El proyecto Karel ha sido desarrollado durante los últimos dos años por el Departamento de
Electrónica e Informática (DEI) de la Universidad Centroamericana José Simeón Cañas (UCA);
este proyecto nace de la idea de estimular a los estudiantes de primer año de la carrera de Lic. En
Ciencias de la Computación que comienzan a entrar en el mundo de la programación
computacional al presentarles un lenguaje de programación amigable y sencillo de aprender a la
vez que les permite ver en el mundo real lo que ellos programan en la computadora, para lograr
este paso hacia el mundo real se construyó un robot que recibía las ordenes provenientes del
software antes mencionado y las ejecutaba simulando lo que los estudiantes miraban en sus
pantallas.
Este robot fue construido por estudiantes de la carrera de Ingeniería Eléctrica en coordinación con
estudiantes de la carrera de Ingeniería Mecánica y funcionaba aceptablemente aunque tenia
ciertas características que se querían mejorar como mejor consumo de energía y un movimiento
más suave. Es por esto que en el año 2008 se asignó a un grupo multidisciplinario la elaboración
de un nuevo robot que fuera capaz de seguir las ordenes provenientes de un software
computacional y que pudiera realizar los movimientos propios del lenguaje de programación Karel.
El lenguaje Karel consta de 5 ordenes principales: mover, girar a la izquierda, recoger toquen,
depositar toquen y apagar; para el presente proyecto se fue un paso más allá y se incluyo la opción
de ejecutar estas ordenes con y sin sensores activados siendo la diferencia entre estas que las
ordenes sin sensores están basadas en tiempo y no existe corrección de los movimientos (por lo
que se depende únicamente del diseño mecánico) y las ordenes con sensores se basan en
secuencias de eventos a la vez que se tiene corrección de los movimientos gracias a sensores
instalados en el robot. El lenguaje también consta de 10 preguntas: ¿Existe comunicación con el
robot?, ¿El robot posee toquens en su bolsa de toquens?, ¿El robot esta viendo al norte, sur, este
u oeste?, ¿Existe alguna obstrucción al frente, a la derecha o izquierda del robot? Y ¿Hay algún
toquen que el robot pueda recoger en su posición actual?.
Para lograr esto se abordó el problema desde el punto de vista de la creación de nuevas
tecnologías y no de solo unir algunas ya existentes, respetando siempre que todos los elementos
utilizados estuvieran presentes en el mercado Salvadoreño. Así se logró diseñar y construir un
robot que cumplía con los requerimientos del proyecto Karel pero que a la vez posee un potencial
de desarrollo más grande que va más allá de lo que el lenguaje Karel puede explotar. Asimismo un
diseño modular permite que el mismo robot sirva como base para el desarrollo de nuevas
aplicaciones electrónicas. Al robot desarrollado se la llamó R.A.S. (Robot Autónomo Salvadoreño).
ii
El diseño requiere sin embargo del uso de microcontroladores para la coordinación de todas las
funciones, para esto se escogió un microcontrolador de vanguardia en la UCA y que nunca había
sido utilizado en ningún proyecto anterior, este es el Freescale QG08 y posee un microprocesador
Motorola C68HC08 que corre a 8Mhz. Este microcontrolador tiene los periféricos necesarios para
lograr una adecuada comunicación con la computadora a la vez que controla a través de señales
digitales diferentes dispositivos, este microcontrolador es programado usando un software
propietario llamado “CodeWarrior” y una tarjeta de programación especial con código
DEMO9S08QG8.
Para que el R.A.S. sea capaz de recibir las ordenes provenientes de la computadora se utiliza un
modulo de comunicación que posee dos microcontroladores Freescale interconectados, el
microcontrolador1 es el encargado de manejar las señales provenientes de la computadora (y
ejecutar los protocolos correspondientes) y enviarlas al microcontrolador2 que las traduce a un
lenguaje que el robot es capaz de reconocer, la comunicación es así bidireccional. El
microcontrolador1 se comunica con la computadora a través del puerto RS-232 de esta a una
velocidad de 2700 bits por segundo siguiendo los protocolos necesarios, el microcontrolador2 se
comunica con el robot a través de un sistema de transmisión y recepción infrarroja (diseñado
completamente para la aplicación) a una velocidad de 500 bits por segundo, entre ellos se
comunican a través de señales paralelas.
El robot en sí recibe las señales emitidas por este modulo de comunicación y las ejecuta haciendo
uso de dos microcontroladores Freescale interconectados. Dado que la presentación de dichos
microcontroladores nos limita a únicamente 10 salidas y entradas digitales el uso de dos era
necesario por el alto volumen de sensores y actuadores presentes en el dispositivo. Se intentó sin
embargo mantener separadas las funciones de cada microcontrolador, así el microcontrolador4 es
el encargado de controlar la mayoría de actuadores y el microcontrolador3 es el encargado de
obtener la información de la mayoría de sensores a la vez que es el que emite las señales de
respuesta hacia el modulo de comunicación. Este diseño permite tener una comunicación full
duplex y coordinar las funciones con lo que los usuarios ven en sus computadoras.
Los sensores que posee el robot están basados en reflexión óptica y se dividen en dos tipos
principales: aquellos que censan la reflexión de un haz de luz no modulado y aquellos que censan
la reflexión de un haz de luz modulado a 40khz, la diferencia entre ambos es que los primeros son
vulnerables a cualquier tipo de luz mientras que los otros pueden ser posicionados en cualquier
lugar y funcionar adecuadamente. En total el robot posee 8 sensores: sensor detector de línea
izquierdo, sensor detector de línea derecho, sensor de toquen para recoger, sensor de toquen en
iii
bolsa, sensor de posicionamiento para depositar, sensor de proximidad frontal, sensor de
proximidad derecho y sensor de proximidad izquierdo. Los sensores de proximidad son los que
están basados en un haz modulado.
Los actuadores que posee el robot están diseñados para que con las señales de los
microcontroladores se controlen motores de corriente directa posicionados para producir los
movimientos necesarios y coordinados según sea la instrucción recibida. En total el robot posee 4
de estos motores: motor de avance izquierdo, motor de avance derecho, motor de dispositivo de
recolección y motor de dispositivo de depósito.
La forma en que todo esto es coordinado en cada orden es determinado por rutinas de software
que contiene el microcontrolador y que fueron programadas dentro de este por el grupo de
Ingeniería Eléctrica, en total se posee una subrutina por cada orden o pregunta en cada uno de los
cuatro microcontroladores que posee el sistema (dos en su modulo de comunicación y dos en el
robot) así como rutinas de monitoreo, rutinas de redundancia que corrigen errores que aparezcan
en tiempo de ejecución, rutinas de comunicación y de manejo de protocolos y rutinas de
preparación de los periféricos de los microcontroladores para un total de más de 600 líneas de
código por cada microcontrolador.
Lo bueno de haber usado microcontroladores tan poderosos es que estos son capaces de ejecutar
ordenes mucho más complejas de las que el lenguaje Karel pueda enviar, así como tener
“comportamientos” como por ejemplo “buscar la ubicación con mejor recepción de señal”, se indica
a los lectores como modificar al robot para cumplir con estas funciones.
Sin embargo y aunque el robot es una pieza de tecnología compleja su utilización por parte del
usuario final es muy simple y se reduce básicamente a conectar el modulo a la computadora y
encender tanto este como el robot, una vez hecho esto todo el funcionamiento es automático y
autónomo.
Por ultimo hay que recalcar que el robot R.A.S. posee una gran eficiencia en su uso de energía,
disminuyendo su consumo en reposo a tan solo 180 miliamperios y en movimiento a 300
miliamperios por lo que como fuente de poder se usan 6 baterías de tamaño AA y se logra un
tiempo de uso de más de 6 horas continuas, asimismo el uso de baterías de tamaño estandard las
hacen fácil de conseguir y además existen en presentación recargable.
Por otro lado del modulo de comunicación posee un consumo de energía de 110 miliamperios en
reposo y 200 miliamperios al momento de transmitir por lo que se puede alimentar con una batería
iv
tipo “D” (comúnmente conocidas como baterías cuadradas) y se obtendrían alrededor de 8 horas
de uso continuo.
ÍNDICE
RESUMEN EJECUTIVO ……………………………………………………………………………......
INDICE DE TABLAS …..………………………………………………………………………………..
INDICE DE FIGURAS …………………………………………………………………………………..
SIGLAS …………………………………………………………………………………………………..
PRÓLOGO ……………………………………………………………………………………………….
CAPÍTULO 1: EL PROYECTO KAREL………………………………………….……………………
1.1.Introducción……………………………………………………..……………….……………....
1.2.El Robot Karel……………………………………………………………………………………
1.3.Funcionamiento del Robot Karel……………………..……………..………...…………........
1.4.El proyecto Karel en el año 2008……………………………………..………….……………
1.5.Futuro del proyecto Karel…………………………………………………....….……………...
CAPÍTULO 2: MÁS ALLÁ DE KAREL….…………………………………………..………….........
2.1.Introducción…………………………………………………………………..……….…………
2.2.Ordenes Básicas…………………………………………………………….…….……………
2.3.Ordenes compuestas……………………………………………………….….…….…………
2.4.Monitoreo de estado ………………………………………………….………………………..
2.5.Comportamientos …………………………………………………………..…….…………….
CAPÍTULO 3: EL MICROCONTROLADOR FREESCALE QG08….………….………………….
3.1.Introducción………………………………………………………………….…..…….………...
3.2.¿Qué es un microcontrolador?.......................................................................................
3.3.Requerimientos básicos………………………………………………………………………..
3.4.El lenguaje ensamblador……………………………………………………………………….
3.5.Iniciación de periféricos……………………………………………………………….............
3.6.Técnicas útiles………………………………………………………………………….............
3.7.Búsqueda y corrección de errores……………………………………….……………………
3.8.Errores comunes………………………………………………………….……………………..
3.9.El freescale QG08 y los circuitos impresos……………………..……………………………
3.10.Problemas con campos electromagnéticos…………………………………………………
3.11.Algunos pensamientos finales………………………………………………………………..
CAPÍTULO 4: EL MÓDULO DE COMUNICACIÓN…………………………………..……….........
4.1.Introducción………………………………………………………………………………………
4.2.Alimentación……………………………………………………………………………………..
4.3.Construcción……………………………………………………………………………...........
4.4.El protocolo RS-232 desde el punto de vista eléctrico y su implementación en el
modulo………………………………………………………………………………………….
4.5. Comunicación con el R.A.S. ………………………………………………………………….
i
ix
xi
xiii
xv
1
1
1
2
3
3
5
5
5
6
6
6
9
9
9
10
11
12
13
14
15
15
16
17
19
19
19
20
20
21
4.6.Funcionamiento del dispositivo………………………………………………………………..
4.7.Transmisión y Recepción de datos……………………………………………………………
4.8.Manejo de errores y estados anormales……………………………………………………..
4.9.Diseño modular y futuras aplicaciones……………………………………………………….
4.10.Conexión de los microcontroladores dentro del modulo de control…………….……….
4.11.Esquema eléctrico actual…………………………………………………………..…………
CAPÍTULO 5: USO DEL MICROCONTROLADOR FREESCALE QG08 EN EL ROBOT
AUTÓNOMO SALVADOREÑO….………………………………………………………………........
5.1.Introducción………………………………………………………………………………………
5.2.Conexión de los microcontroladores dentro del R.A.S. …………………………………….
5.3.La configuración de los microcontroladores dentro del R.A.S. ………………….………..
5.4.Recopilación de la información ………………………………………………………...........
5.5. Uso de la información de los sensores en las subrutinas…………………….……………
5.6.Control de motores……………………………………………………………………..………
5.7.Lógica interna del R.A.S. ………………………………………………………………………
CAPÍTULO 6: LA CIRCUITERÍA DEL R.A.S…………………….……………………...................
6.1.Introducción………………………………………………………………………………………
6.2.Requerimientos………………………………………………………………………………….
6.3.El diseño modular del R.A.S…………….…………………………………………………….
6.3.1. La tarjeta de control………………………………………………………….………….
6.3.2. Tarjeta de comunicación inalámbrica y tarjeta de sensores……………..….………
6.3.3. Módulo de control de motores……………………………………………….………….
CAPÍTULO 7: CONSTRUCCIÓN Y SISTEMAS DE CABLEADO DE LOS MÓDULOS DEL
R.A.S……………………………………………………………………...……………………………….
7.1. Creación de las PCB…………………………………………………………….……………..
7.1.1. Módulo de control del R.A.S. …………………………………………………………..
7.1.2. Módulo de sensores y de transmisión del R.A.S……………………….…………….
7.1.3. Módulo de potencia del R.A.S. …………………………………………….…………..
7.2.Ensamblado del R.A.S. …………………………………………………………….………….
7.3.Pruebas realizadas a circuitos utilizando una fuente de 9V de 500 mA ………..……….
7.4.Materiales utilizados y casa proveedora………………………………………….…………..
7.4.1. Módulo de potencia o control de motores………………………………..……………
7.4.2. Módulo de sensores y transmisión………………………………………..……………
7.4.3. Módulo de control del R.A.S. ……………………………………………….…...........
7.5.Soluciones a problemas y recomendaciones para desarrollar trabajos de electrónica…
RECOMENDACIONES………………………………………………………………………………….
CONCLUSIONES………………………………………………………………………………………..
22
23
27
29
30
31
33
33
33
34
36
37
38
38
45
45
45
46
46
50
59
61
61
62
63
64
65
69
70
70
71
72
73
75
77
REFERENCIAS ELECTRÓNICAS……………………………………………………………………..
BIBLIOGRAFÍA ………………………………………………………………………………………….
ANEXOS:
ANEXO A : Características eléctricas del QG08
ANEXO B : Conexión recomendada para el QG08
79
81
ix
ÍNDICE DE TABLAS
Tabla 4.1 – Protocolo establecido entre modulo de comunicación y computadora .................... 23
Tabla 4.2 - Ordenes iniciales ...................................................................................................... 24
Tabla 4.3 – Ordenes que especifican dirección de visión........................................................... 24
Tabla 4.4 – Protocolo de comunicación entre el microcontrolador 2 y el R.A.S. ....................... 24
Tabla 4.5 – Códigos para ordenes principales ........................................................................... 25
Tabla 4.6 – Preguntas generadas por el software Karel ............................................................ 26
Tabla 4.7 – Errores reconocidos por el software Karel ............................................................... 27
Tabla 4.8 – Códigos de ordenes reconocidos por el R.A.S. ....................................................... 30
Tabla 4.9 – Conexiones del microcontrolador1 .......................................................................... 30
Tabla 4.10 – Conexiones del microcontrolador2 ........................................................................ 31
Tabla 5.1 – Conexiones del microcontrolador3 .......................................................................... 34
Tabla 5.2 – Conexiones del microcontrolador4 .......................................................................... 34
Tabla 7.1 - Colores del sistema de cableado del modulo de sensores y transmisión del R.A.S. 66
Tabla 7.2 - Colores del sistema de cableado del modulo de control del R.A.S. ......................... 68
Tabla 7.3 - Colores del sistema de cableado del modulo de potencia del R.A.S………………... 69
Tabla 7.4 - Elementos utilizados en el modulo de Potencia ....................................................... 71
Tabla 7.5 - Elementos utilizados en el modulo de sensores y transmisión ................................ 72
Tabla 7.6 - Elementos utilizados en el modulo de Control del R.A.S. ........................................ 73
x
xi
ÍNDICE DE FIGURAS
Figura 4.1 - Bloques funcionales del modulo de comunicación ................................................ 20
Figura 4.2 - Flujo de información del sistema ............................................................................ 25
Figura 4.3 - Circuitería del modulo de comunicación ................................................................ 32
Figura 5.1 - Esquema del modulo de control en el R.A.S. ........................................................ 35
Figura 5.2 - Flujorama general de ejecución de ordenes .......................................................... 39
Figura 5.3 - Flujorama de orden “mover” ................................................................................... 40
Figura 5.4 - Flujorama de orden “depositar toquen” .................................................................. 41
Figura 5.5 - Flujorama de orden “Recoger Toquen” .................................................................. 41
Figura 5.6 - Flujorama de orden “girar” ...................................................................................... 42
Figura 5.7 - Flujorama de secuencia para contestar a preguntas ............................................. 43
Figura 6.1 - Diagrama de la tarjeta de control del R.A.S. ........................................................... 47
Figura 6.2 - Configuración de un AP como seguidor de Voltaje ................................................. 48
Figura 6.3 - Diagrama de la configuración del timer 555 como astable ..................................... 53
Figura 6.4 - Diagrama de circuitos y vista real del transmisor y receptor del R.A.S. ................. 53
Figura 6.5 ‐ Diagrama del circuito y vista real de los sensores seguidores de línea y el sensor de colocar toquen ....................................................................................................
54
Figura 6.6- Diagrama del circuito y vista real de sensor de toquen en bolsa ............................. 56
Figura 6.7- Diagrama del circuito y vista real del sensor de alineación o giro de R.A.S. ........... 57
Figura 6.8 - Diagrama de circuito y vista real de sensores de proximidad de R.A.S. ................ 58
Figura 6.9 - Diagrama de sensores del R.A.S. ........................................................................... 58
Figura 6.10 - Diagrama de potencia o control de motores de avance del R.A.S. ...................... 60
Figura 7.1 - Diagrama de pistas del módulo de control del R.A.S. ............................................ 62
Figura 7.2 - Vista real de la placa del módulo de control ........................................................... 62
Figura 7.3 - Diagrama de pistas del módulo de sensores y transmisión del R.A.S. .................. 63
Figura 7.4 - Vista real del modulo de sensores y transmisión de R.A.S. .................................. 63
Figura 7.5 - Diagrama de pistas del módulo de potencia de R.A.S. .......................................... 64
Figura 7.6 - Vista real del módulo de potencia de R.A.S. .......................................................... 64
Figura 7.7 - Identificación de las borneras en el modulo de sensores y transmisión del R.A.S. 65
Figura 7.8 - Diagrama de identificación de las borneras en el modulo de control del R.A.S. ... 67
Figura 7.9 - Diagrama de identificación de las borneras en el modulo de potencia del R.A.S. 69
xii
xiii
SIGLAS
OpAmp: BPS: CC: CI: CMOS: DC: EEPROM: IR: LED: PC: PCB: PWM: R.A.S.: TTL: USB: UV: RF:
Operational Amplifcator (Amplificador Operacional)Bits por segundo Corriente Continua Circuito Integrado Complementary Metal Oxide Semiconductor (Semiconductor Complementario de Oxido Metálico) Direct Current (Corriente Directa) Electrically‐Erasable Programmable Read Only Memory (ROM programable y borrable eléctricamente) Infra Rojo Light Emitting Diode (Diodo Emisor de Luz) Personal Computer (Computadora Personal) Printed Circuit Board (Tarjeta de Circuito Impreso) Pulse Width Modulation (Modulación por Ancho de Pulso) Robot Autónomo Salvadoreño Transistor Transistor Logic (Lógica Transistor Transistor) Universal Serial Bus (bus serial universal) Ultra Violeta Radio Frecuencia
xiv
xv
PRÓLOGO
Como parte del proyecto Karel del Departamento de Electrónica e Informática de la Universidad
Centroamericana José Simeón Cañas (UCA) se desarrolla el presente trabajo de graduación cuyo
fin es la creación de un robot autónomo que siga ordenes provenientes del programa
computacional “Karel Robot”, que sea inalámbrico, con comunicación full duplex, de eficiente uso
de energía y fácilmente utilizable.
Este trabajo de graduación, sin embargo, es la continuación de un proyecto que lleva 2 años de
desarrollo y que ya posee un “robot Karel” que es capaz de realizar las ordenes que le envía el
software “Karel Robot 1.0” pero aunque sea una continuación se abordó el problema únicamente
tomando las experiencias pasadas ya que se rediseñó completamente toda la parte eléctrica.
El punto de vista desde el que se aborda el problema es el de la innovación y diseño de
tecnologías utilizando elementos existentes en el mercado local de El Salvador y fácilmente
adquiribles. Así todos los componentes fueron diseñados y construidos exclusivamente para el
proyecto y no fueron adquiridos preensamblados o fueron fabricados por personas externas al
grupo de trabajo por lo que pueden pasar a formar parte de la propiedad intelectual de la UCA.
Los productos a entregar comprenden un robot autónomo que funciona a baterías, que es capaz
de recibir y procesar ordenes, con movimientos suaves, equipado con sensores y con un sistema
de comunicación por infrarrojos capaz de enviar y recibir datos hacia un modulo de comunicación
que se conecta a la computadora y traduce las señales de esta y del robot de tal forma que estos
puedan “hablar entre sí”.
Se utilizó por primera vez al microcontrolador Freescale QG08 dentro del proyecto esperando que
futuras generaciones lo consideren para sus aplicaciones sabiendo que supera en gran medida a
los microcontroladores PIC, tan usados en nuestro medio. Los microcontroladores fueron
programados usando lenguaje ensamblador y programas propietarios para que el producto final
pudiera ser confiable y robusto pero sin sacrificar su complejidad y aplicabilidad futura.
A lo largo de las siguientes páginas el lector o lectora conocerá todo lo relacionado a las nuevas
tecnologías desarrolladas, se enterará de los lugares donde se pueden encontrar los elementos
adecuados para la elaboración de los circuitos que componen al robot, conocerá al QG08 y tendrá
un primer acercamiento a la programación de este, asimismo tendrá la opción de crear nuevos
periféricos para utilizar al robot y la opción de añadirle nuevas funciones.
CAPÍTULO 1
EL PROYECTO KAREL
1.1 Introducción
En la UCA el proyecto Karel nace con el fin de crear un programa computacional con el cual los
estudiantes de los primeros años de Lic. en Ciencias de la Computación pudieran tener un primer
acercamiento a los lenguajes de programación, este programa computacional debía ser atractivo
para poder estimular a los estudiantes ya que seria uno de sus primeros contactos dentro de la
carrera antes mencionada.
Una vez se tenía el programa se tuvo la idea de llevar al “mundo real” lo que los estudiantes podían
ver en sus pantallas y es en este punto en el que se incluyeron a otras dos carreras: Ingeniería
Eléctrica e Ingeniería Mecánica. La tarea de estas carreras sería la de crear un robot que hiciera
exactamente lo mismo que el robot virtual que los estudiantes podían ver en la pantalla de sus
computadoras.
Así en el transcurso de los años 2006 y 2007 se fue desarrollando en conjunto tanto el software
Karel como un robot Karel obteniendo muy buenos resultados y sentando bases para el presente
trabajo de graduación.
1.2 El robot Karel
El trabajo de los estudiantes de Ingeniería Eléctrica e Ingeniería Mecánica dio como resultado al
“robot Karel”, un sistema muy completo que cumplía con las funciones básicas del lenguaje Karel
(mover, girar, recoger y depositar) y que puede ser considerado como el primer robot diseñado y
construido en la UCA (Ver carpeta “Karel 1.0” en el disco adjunto al presente trabajo).
Este robot consta de una tableta de circuitería de control, un sistema de recolección, un sistema de
depósito, un sistema de almacenamiento de toquens, sistema de recepción de datos y motores de
paso que crean los diferentes movimientos requeridos.
El sistema de recolección consta de una rueda que posee un imán, este imán debía ser
posicionado usando el motor de paso correspondiente de tal forma que atrajera a un toquen
metálico y posteriormente lo introdujera en la bolsa de toquens. Por otro lado el sistema de
depósito constaba de un disco giratorio con una abertura en la cual entraba perfectamente el
toquen a depositar (almacenado en la bolsa de toquens) y que posteriormente giraba 90° para que
el toquen pudiera ser depositado. Una característica particular es que el sistema era capaz de
1
recolectar y depositar los toquen en el mismo lugar y que los movimientos de los motores eran
secuenciales (no simples giros).
La transmisión desde la computadora se hacía a través del puerto paralelo, una vez puesto el dato
ahí un transmisor de radio frecuencia de cuatro canales lo enviaba al receptor correspondiente
situado en el robot, luego el dato se leía con un microcontrolador PIC que era el encargado de
controlar a los motores a través de un integrado diseñado para manejar los niveles de corriente
adecuados.
Las metas alcanzadas con este robot son:
– Comunicación con la computadora: La comunicación era de una sola vía pero se lograba el
objetivo de controlar a un robot a través del programa computacional que los estudiantes
utilizaban en sus clases.
– Ejecución de ordenes: La computadora manda la orden pero no manda las instrucciones para
realizarla, es por esto que se utiliza el microcontrolador PIC, lo que hay que recalcar es que el
software que hace que el microcontrolador funcione fue realizado por los estudiantes de
Ingeniería Eléctrica involucrados.
– Operación a distancia: El uso de tecnología de radio frecuencia hacía que se tuviera un
alcance de varios metros para poder enviar las ordenes al robot.
– Recolección y depósito de toquens: El diseño mecánico fue el adecuado para cumplir con
estas dos ordenes y los circuitos los adecuados para crear las secuencias que debían
seguirse.
Como se puede observar el robot “cumplía con su trabajo”.
1.3 Funcionamiento del robot Karel
El robot Karel, sin embargo, presentaba ciertas peculiaridades en su funcionamiento que aunque
no impedían que este realizara sus funciones lo limitaban en cierta manera:
– Consumo de energía: El robot tenía un alto consumo de energía por lo que no se logró que
este operara con baterías sino que debía conectarse a una fuente regulada de voltaje.
– Dependencia temporal de las ordenes de la computadora: Las ordenes eran ejecutadas
siempre que la computadora las mantuviera en su puerto, de esta forma recayó en el software
computacional la tarea de medir el tiempo necesario para la ejecución de cada orden.
– Vibración: El tipo de motores usados producía vibraciones.
– “Basura” en la comunicación: Algunas funciones dependían de una señal limpia para
ejecutarse sin problemas, sin embargo al momento de ponerlas en el puerto aparecía basura
que luego era transmitida hacia el robot.
– Ligeros desajustes mecánicos: Pequeñas fallas en el sistema mecánico causaban fricciones
2
innecesarias y situaciones similares.
1.4 El proyecto Karel en el año 2008
El proyecto siguió adelante y se plantearon nuevos retos para mejorar los productos existentes, es
así como en el año 2008 se le dio el nivel de trabajo de graduación al proyecto, asignando un
grupo multidisciplinario que incluía a las carreras de Ingeniería Eléctrica, Lic. en Ciencias de la
Computación e Ingeniería Mecánica cuya meta sería tomar como base dichos productos y obtener
unos nuevos que cumplieran con lo que ya se tenía más algunas características extras.
Estas características extras nacen de la experiencia que los usuarios tenían con el robot Karel, las
principales son:
– Uso más eficiente de la energía: se desea que el robot no posea cables externos.
– Comunicación bidireccional: para que el software pueda estar mejor sincronizado con los
movimientos del robot.
– Mayor precisión en el cumplimento de las ordenes: O una mayor inmunidad al ruido para evitar
movimientos no deseados por parte del robot.
– Un mejor “software Karel”, mayormente pensado en el usuario y que resolviera problemas
encontrados en la primera versión del software.
– Menor tamaño del robot.
– Diseño pensado en la construcción: El robot debe ser reproducible, es decir, debe poder ser
construido fácilmente en caso que se requieran hacer copias del robot.
Así durante el año 2008 se trabajó en conjunto logrando cumplir con los requerimientos anteriores
en menor o mayor medida, el presente trabajo de graduación es el resultado de este trabajo
multidisciplinario, así como también lo son los trabajos de graduación “Seguimiento a la plataforma
de aprendizaje 'Karel: el robot'” que toca toda la parte correspondiente al software Karel y “Diseño
mecánico y construcción del sistema Karel” que toca toda la parte correspondiente a las partes
mecánicas que conforman el chasis del robot.
Para tener la imagen completa de lo que conforma el sistema Karel se deben consultar los tres
trabajos de graduación y complementar lo que uno dice con el siguiente.
1.5 Futuro del proyecto Karel
El futuro del proyecto Karel sigue abierto, siempre podrá hacerse el trabajo de mejor manera
basándose en lo que ya se tiene y siempre se podrá incluso innovar en mejores formas de hacer
3
las cosas, en el presente documento se hace mención en varias secciones a esto y se dan ideas
que pueden llevarse a cabo para mejorar el funcionamiento del Robot Autónomo Salvadoreño
(R.A.S., el producto que nace del presente trabajo de graduación y el cual será desglosado durante
todo el documento).
Se invita entonces al lector o lectora interesado en continuar con el proyecto Karel a aprender de
nuestros errores y seguir adelante en el desarrollo de este proyecto tan interesante.
4
CAPÍTULO 2
MÁS ALLÁ DE KAREL
2.1 Introducción
El presente trabajo de graduación implicaba únicamente la construcción de “un robot que fuera
capaz de recibir y ejecutar ordenes provenientes del software Karel” sin embargo durante el
proceso de construcción se determinó que la construcción de un robot que exclusivamente
cumpliera con las ordenes del lenguaje Karel limitaría mucho el diseño.
Así se aborda el problema desde un punto de vista diferente: la creación de un robot que entre sus
funciones realice todas aquellas relacionadas con el lenguaje Karel pero que posee otras funciones
que aunque no sean accesibles desde el software Karel podrán ser accesibles desde otros
programas computacionales que estén diseñados para interactuar con el robot.
Gracias a la utilización de microcontroladores tan poderosos y de un diseño de circuitería que tuvo
siempre en mente la innovación se ha logrado que el robot sea capaz de ejecutar ordenes
complejas de forma automática y sin asistencia de la computadora (más allá de que esta le mande
la orden a ejecutar). Es por esto (entre otras cosas) que se le asigna al robot creado el nombre de
Robot Autónomo Salvadoreño o R.A.S. por sus siglas.
El presente capítulo expondrá funciones que el hardware es capaz de realizar y que explotan sus
capacidades más allá de lo que puede hacerlo el software Karel, así en el futuro estas funciones
podrán ser explotadas. Sin embargo para no salir del contexto del proyecto Karel en futuros
capítulos del presente trabajo ya no se hace alusión a estas funciones .
2.2 Ordenes básicas
Dos funciones básicas que el robot puede ejecutar pero que no son accesibles a través del
lenguaje Karel son las de “retroceder” y “girar a la derecha”, estas pueden ser realizadas usando
sensores y sin usarlos (esto se explicará a detalle en capítulos posteriores que expondrán las
funciones básicas que son accesibles por el lenguaje Karel).
La orden de retroceder, como su nombre lo indica, consta de poner ambos motores de avance a
girar hacia atrás, la orden de girar a la derecha implica que el motor de avance derecho gire hacia
atrás mientras que el motor del lado izquierdo gira hacia adelante y así se produzca un giro.
En total el robot es capaz de obedecer a 12 ordenes básicas, cualquier otro movimiento que este
realice será la combinación de estas. Estas son:
5
– Mover con y sin uso de sensores.
– Girar a la izquierda con y sin uso de sensores.
– Girar a la derecha con y sin uso de sensores.
– Retroceder con y sin uso de sensores.
– Recoger toquens con y sin uso de sensores.
– Depositar toquens con y sin uso de sensores.
2.3 Ordenes compuestas
Este tipo de ordenes constan de la unión de varias ordenes principales, por ejemplo, se puede
definir la orden “girar 90°” o la orden “recoger toquen en la siguiente esquina y regresar a la
posición inicial” y que estas sean accesibles desde la computadora con un solo comando.
La ganancia de esto es que no deben definirse todos los pasos desde la computadora, lo que evita
al usuario tener que programar las rutinas para que luego el robot las ejecute, asimismo el robot las
ejecutará sin pausas por lo que el tiempo total de ejecución será menor.
El único limite para el tamaño de estas ordenes completas es la memoria del microcontrolador, por
lo que en realidad el límite para el número de ordenes simples que conformarán una compleja es lo
suficientemente elevado para considerarse inexistente a este nivel. La ganancia de esto es que un
solo comando de la computadora puede desatar un movimiento extremadamente complejo.
2.4 Monitoreo de estado
El lenguaje Karel posee únicamente algunas preguntas que indican el estado del robot, sin
embargo este ultimo puede informar sobre el estado de cada uno de sus sensores a la
computadora a través de ordenes que no están comprendidas dentro del lenguaje Karel.
Así por ejemplo la pregunta “¿Cuál es el estado del sensor de línea derecho?” puede ser enviada.
Una aplicación más completa de esta funcionalidad es la creación de un sistema de monitoreo en
tiempo real de todos los sensores del robot.
2.5 Comportamientos
Se entiende por “comportamiento” aquella combinación de funciones que el robot realiza y que
emulan cierto patrón de conducta, esta función se encuentra en la mayoría de robots de nivel
universitario y da pie a la creación de robots que cumplen con tareas específicas.
Gracias a que se utilizaron microcontroladores tan poderosos se puede programar al robot para
6
que emule estos patrones de conducta dependiendo de la aplicación que se desee implementar.
Así, por ejemplo, se puede programar al robot para que este censando constantemente las señales
que le llegan, si estas corresponden a señales de referencia entonces el robot se mantendrá en su
lugar, de lo contrario comenzará a moverse hasta que encuentre un punto donde la transmisión
corresponde a la de referencia. Con esta función se tiene un robot que es capaz de buscar los
mejores puntos de recepción de señales en un campo por ejemplo.
Gracias a su diseño modular también pueden alterarse los sensores con los que actualmente
contará el R.A.S. para incluir sensores más especializados (como de detección de metales) y
programar comportamientos como por ejemplo “búsqueda y señalamiento de metales en el piso”,
en el cual el robot censará constantemente sus sensores inferiores y al momento de detectar algo
se detendrá en ese lugar y avisará a la computadora de su encuentro.
Todo esto es posible con el diseño actual del robot con ligeras modificaciones al software que
incluyen los microcontroladores. Así el R.A.S. no se limita a ser un robot que cumple con el
lenguaje Karel sino se convierte en un sistema base para el desarrollo de futuras aplicaciones.
7
8
CAPÍTULO 3
EL MICROCONTROLADOR FREESCALE QG08
3.1 Introducción
El microcontrolador Freescale MC9S08QG8 (comúnmente llamado QG08) ha sido elegido para el
presente proyecto por su gran cantidad de periféricos, fácil configuración y por que no necesita
circuitería externa para funcionar, además posee en su interior al procesador Motorola C68HC08 el
cual nos da una gran flexibilidad a la hora de programar.
Lamentablemente en el país la disponibilidad de microcontroladores es limitada a unas pocas
marcas que no incluyen a Freescale, pero en el futuro cercano y por su gran versatilidad esta
marca estará disponible si se comienza a usarla, es por esto que se ha decidido no apegarse al
mercado local en este aspecto y demostrar que con una herramienta con mayor poder podemos
desarrollar un producto con mayor versatilidad.
En el presente capítulo se presenta una introducción al microcontrolador Freescale, su utilización,
periféricos usados en el presente proyecto, forma de programar y herramientas necesarias de tal
forma que el interesado o interesada podrá comenzar a desarrollar dispositivos que involucren al
QG08 en poco tiempo.
Sin embargo se aclara que esta es solo una introducción, no algo que busque ser un curso
completo de utilización de microcontroladores, pero con esto y un poco de lectura directamente de
la hoja de datos del microcontrolador y del procesador se tiene más que suficiente para comenzar.
3.2 ¿Qué es un microcontrolador?
Un microcontrolador es un circuito integrado que comprende un microprocesador y periféricos
diferentes en un mismo encapsulado. El microprocesador es un dispositivo que ejecuta ordenes
previamente programadas, estas ordenes pueden ser operaciones matemáticas, lógicas, saltos
(conocidos como “goto” en algunos lenguajes de programación), comparaciones, manejo de
información y otras, a esto se le suman periféricos, o circuitos capaces de interactuar con el
“exterior” a través de los pines del encapsulado, estos periféricos permiten tanto recibir como
mandar información al exterior así como el control de otros dispositivos de forma digital y
analógica.
Dependiendo de las capacidades del microprocesador así será la complejidad de los programas
que podemos crear para el, y dependiendo de los periféricos así sera la flexibilidad que tendremos
9
al implementar soluciones.
Es acá donde comienza a haber diferencias entre los diferentes microcontroladores que existen,
algunos están hechos para aplicaciones sencillas y reconocen pocas ordenes, otros poseen
microprocesadores muy poderosos con cientos de ordenes, algunos incluso son desarrollados para
aplicaciones específicas. El QG08 está en algún punto intermedio de todo esto ya que posee un
microprocesador con alto poder a la vez que ofrece muchos periféricos ya instalados sin que sea
un microcontrolador de uso específico (Ver “Comparación PIC vrs Freescale” en la carpeta “Otros
documentos” del disco adjunto al presente trabajo).
3.3 Requerimientos básicos
Lo primero que se necesita para el desarrollo de los programas es conocimiento preciso del
microcontrolador ya que cada microcontrolador es diferente dependiendo de su modelo, marca,
aplicabilidad y otras características. Toda esta información es proporcionada por el fabricante en
forma de hojas de datos, se necesitan como mínimo la hoja de datos del microcontroladora que
incluye todos los periféricos y como accesar a ellos y la hoja de datos del microprocesador que
posee el microcontrolador en la cual encontraremos las ordenes que este es capaz de entender
(Una copia de cada hoja de datos puede encontrarse en la carpeta “Freescale” dentro de la carpeta
“Datasheet” en el disco adjunto al presente trabajo).
Lo segundo que hay que tener en cuenta para utilizar un microcontrolador es que se necesita un
método para acceder a su memoria interna y poder grabar cualquier programa que el usuario
diseñe, en el caso del QG08 se necesita ya sea una DEMO09S08QG8 o una USBSPYDER08 de
Freescale o que se arme un dispositivo programador propio. Para estudiantes de electrónica se
recomienda la DEMO09S08QG8 para comenzar ya que es la “de estudiante” y posee adaptadores,
botones de prueba, fotoresistencias y otras cosas que ayudan al momento de crear nuevas
aplicaciones.
Lo tercero que se necesita es donde escribir el código, Freescale tiene un programa propietario
para este fin llamado “CodeWarrior”, la licencia viene incluida al comprar la DEMO09S08QG8 o
puede conseguirse una versión “demo” de forma gratuita (Puede encontrarse una copia en la
carpeta “software” del disco adjunto al presente trabajo), este mismo programa se encarga de
comunicarse con la interfase de programación para “quemar” el programa en la memoria del
microcontrolador.
Una vez programado el microcontrolador puede retirarse de la interfase y ponerse en cualquier
circuito que se haya diseñado siempre y cuando se cumpla con sus características de voltaje y
10
corriente (Remitirse a la hoja de datos del microcontrolador mencionada anteriormente para
mayores detalles).
3.4 El lenguaje ensamblador
Los microcontroladores Freescale pueden ser programados con lenguaje C, C++ o lenguaje
ensamblador ya que “CodeWarrior” hace una “traducción” entre lo que escribimos en él y el
lenguaje propio del microcontrolador llamado “lenguaje base” o “código de máquina”; si se tienen
conocimientos sobre acceso a memorias, manejo de variables y registros en el lenguaje C se
puede usar sin problemas, pero es mucho mejor usar el lenguaje ensamblador para programar los
microcontroladores ya que toda la documentación hace referencia a este por estar más cerca del
lenguaje base.
Este lenguaje es de tipo lineal pero acepta saltos, por lo que es fácil crear subrutinas dentro del
programa principal y manejar las diferentes cosas a su tiempo, también por su estructura se tiene
un máximo control de cuando ejecutar cada instrucción, una característica que se vuelve muy útil.
Para estructurarlo es necesario poner una sola instrucción por línea, cada instrucción consta de un
operador y un operando que deben estar puestos uno a continuación de otro a menos que sea un
operador especial que no necesite operando, de ser necesario pueden especificarse una etiqueta
al inicio de la línea para los saltos aunque si se maneja muy bien el código se puede referir
directamente a la ubicación en la memoria en vez de usar etiquetas, por ultimo los comentarios
pueden ser puestos en cualquier parte de la página y comienzan con un punto y coma (;). El listado
completo de instrucciones y su función aparecen en la hoja de datos del microprocesador.
En el microcontrolador se tiene control de los periféricos a través de registros, cada registro tiene
su etiqueta asignada y una localidad de memoria específica así que se puede accesar a ellos como
mejor parezca, la mejor forma de hacerlo es a través de las etiquetas y siguiendo las indicaciones
necesarias para cada periférico, estas aparecen en la hoja de datos del microcontrolador aunque
pueden ser modificadas dentro del programa “CodeWarrior”.
Como ejemplo se presenta un trozo de código, en este ejemplo se llamará a la variable “A”, se le
sumará 2 y se guardará en la variable “B”:
;Este es un comentario.
LDA A ;LDA indica “load”, se deja un espacio y se pone el operando
SUM #%00000010 ;#%00000010 es un byte que es equivalente a 2 en binario
Etiq STA B ;STA indica “Storage”, “Etiq” es la etiqueta y sirve como referencia
11
Un detalle importante es que el microcontrolador ejecutará los ciclos sin pausa a menos que se le
indique lo contrario mandándolo a un estado de bajo consumo de energía, pero esto no es
recomendable en la ejecución normal y debe ser usado únicamente como una excepción por lo que
es usual crear ciclos que el microcontrolador ejecutará una y otra vez hasta que algún evento
suceda, un ejemplo de esto es:
Eti1 LDA A
CMP #$00 ; CMP indica “compare”, #$00 es un cero en hexagesimal
BNE Eti1 ; BNE sirve como “Si no es igual saltar a”, en este caso Eti1
En este ejemplo el microcontrolador ejecutará el ciclo hasta que la variable A sea diferente de 0, así
se puede tener control del lugar del código que se esta ejecutando en cada momento y es la forma
más recomendada de hacerlo. Algo muy importante es que se debe crear un ciclo principal dentro
del cual el microprocesador estará circulando, si no se hace esto el programa irá ejecutando línea
por línea de memoria, eventualmente llegará a espacios donde no existe más que basura y al no
reconocer la orden descrita entrará en un estado de error y parará la ejecución. Este error no es
advertido por el compilador por lo que es responsabilidad del usuario definir bien sus ciclos.
Por ultimo para acceder “al mundo exterior” a través de periféricos basta con acceder a sus
registros (previa configuración del periférico), igual que antes se puede hacer un LDA PTAD para
acceder en este caso al periférico de entradas digitales A (PTAD), así por ejemplo se puede
ejecutar un ciclo como se acaba de describir hasta que se detecte en el periférico una entrada
digital en el pin 3.
La mejor forma de aprender a usar este lenguaje es ver un código de ejemplo de los incluidos en el
programa “CodeWarrior”, con eso y la hoja de datos para interpretar las ordenes se puede
aprender muy fácilmente a programar los microcontroladores.
3.5 Iniciación de periféricos
Como es de esperarse por defecto todos los periféricos están deshabilitados en el QG08 y sus
pines se convierten en entradas digitales, es por esto que al inicio del código es necesario
inicializar cada uno de los periféricos que se van a utilizar, declarar las variables y limpiar los
registros, esto se hace de igual manera que en los ejemplos anteriores ya que dentro de cada
registro cada bit sirve para configurar una característica del periférico.
Así por ejemplo, para el periférico de comunicación digital PTAD, si se escribe en su registro de
configuración “PTADD” se determinará si el pin será usado como entrada o salida dependiendo si
12
se le escribe un uno o cero. El código sería:
LDA #%00110011
STA PTADD
y se estará indicando que los pines 8, 7, 4 y 3 serán entradas y el resto salidas.
Así cada periférico tiene una configuración especial que puede llegar a ser muy compleja
dependiendo de lo que se desee, por ejemplo el periférico de comunicación serial usado para el
presente proyecto necesita ser configurado con 4 registros diferentes y en una secuencia
específica.
3.6 Técnicas útiles:
A lo largo del camino se van desarrollando técnicas de programación que ayudan a obtener los
resultados esperados, sin embargo hay algunas que siempre se enseñan y permiten avanzar más
rápido:
– “Pooling”: Esta es una técnica de filtrado y permite enfocarse únicamente en la información que
importa en ese momento, por ejemplo si se necesita que el programa ejecute la acción
“avanzar” cuando se presione el botón 1, la acción “retroceder” cuando se presiona el botón 2
y ninguna acción cuando se presione el botón 3 se hace lo siguiente:
LDA PTAD ;Se recibe el estado de todos los botones conectados
AND #%00000011 ;Se filtra con un AND a todos menos los 2 que interesan
CMP #%00000001 ;Se compara con 1 para determinar si está presionado el botón 1
BEQ Avanzar ;BEQ significa “si es igual ir a”, en este caso ir a “avanzar”
CMP #%00000010 ;Se compara con 2 para determinar si está presionado el otro botón
BEQ Retroceder ;Si es así se va a “retroceder”
Lo que resta es definir las subrutinas “avanzar” y “retroceder” en otra ubicación.
– Crear retrasos: El microprocesador se mantiene continuamente ejecutando el ciclo que se le
programe a una velocidad de 8Mhz, a veces es necesario una ejecución más lenta.
Aunque hay maneras de bajar la velocidad del microprocesador la manera más fácil de crear
un retraso es con la subrutina siguiente:
13
Retraso LDA varaux ; Se lee la variable “varaux”, variable auxiliar
INCA ;Se le suma uno
STA varaux ;Se guarda en la misma variable
CMP #$FF ;Se compara con el número hexadecimal FF
BNE Retraso ;Si todavía no se ha llegado a FF entonces regresar a Retraso
Básicamente lo que se hace es que el microprocesador gaste tiempo en completar esta
subrutina.
– Definir “subrutinas”: Si hay alguna parte del código que se va a ejecutar varias veces es mejor
definirla una sola vez y luego saltar a ella, para esto se usan las ordenes “JSR” (Jump Sub
Rutine) y “RTS” (Return from Sub Rutine), la idea es que se salta a la subrutina con el JSR y
luego al encontrar la orden RTS el programa regresará al punto exacto desde donde saltó, así
se puede ejecutar siempre la subrutina llamándola desde nuestro código sin perder la
secuencia que se llevaba antes. La forma de usar estas ordenes es sencilla
;Acá va el código que se estaba ejecutando
JSR Subrutina1 ;Acá se salta a Subrutina1
;Acá va el código que se ejecutará después de regresar de la Subrutina1
Subrutina1 LDA varaux
INCA
STA varaux
CMP #$FF
BNE Subrutina1
RTS
La subrutina1 es un retraso como el descrito anteriormente.
3.7 Búsqueda y corrección de errores
Dado que el lenguaje se presta a errores muy pequeños que pueden hacer que todo un código no
funcione (poner un cero en vez de 1 en uno de los registros de configuración de un periférico lo
hace funcionar totalmente diferente) es bueno conocer que la DEMO09S08QG8 también sirve
para buscar errores ya que permite ejecutar paso a paso el código una vez dentro del
microcontrolador, por lo que se puede conectar la DEMO09S08QG8 al circuito que se desea
controlar y ver como este va reaccionando mientras se ejecuta el programa paso a paso. Otra
forma es que existe en el mismo programa la función de emular al microcontrolador y hacer
14
también la ejecución paso a paso.
Una vez detectado el error puede corregirse y volver a cargarse el código en el microcontrolador en
pocos segundos.
3.8 Errores comunes
– No definir las variables.
– Errores en mayúsculas y minúsculas: el microprocesador reconoce a “Avanzar” y “avanzar”
como dos etiquetas diferentes, lo mismo aplica para el nombre de las variables.
– Confundir número hexagesimales con bytes: El microprocesador reconoce a los número que
comienzan con “#$” como hexagesimales y los que comienzan con “#%” como bytes, si se
escribe “#$00001000” el compilador mandará el error “Los números deben estar reducidos a 8
bits” ya que interpretará lo que se introdujo como un número hexagesimal de 4 bytes.
– Dejar ciclos sin retorno al final: si no se define un retorno al final del ciclo el microprocesador
seguirá ejecutando las líneas siguientes y puede entrar a otro ciclo.
– Errores en un bit: se debe tener cuidado especial en esto, un bit erróneo puede hacer que todo
el programa no funcione.
– Ejecución demasiado rápida: algunas aplicaciones requieren por fuerza retrasos ya que puede
que lo que este conectado al microcontrolador no reaccione tan rápido como este, es necesario
remitirse cada vez a las hojas de datos de cada elemento para determinar los tiempos mínimos
para que estos reaccionen.
– Configuración incompleta de periféricos: Por ejemplo no es suficiente especificar cuales pines
serán entradas y cuales salidas usando el periférico de entradas y salidas paralelas, hay que
activarle a cada entrada una resistencia interna a través de un registro aparte para que pueda
leer la información. La mejor forma de configurar cada periférico es leer completamente el
capitulo correspondiente dentro de la hoja de datos del microcontrolador y una vez hecho esto
establecer todos los registros necesarios.
3.9 El Freescale QG08 y los circuitos impresos
Ya que se ha programado el microcontrolador y se lo ha probado es hora de sacarlo del
DEMO09S08QG8 y ponerlo en un circuito impreso, al hacer esto se debe tener especial cuidado
15
con el voltaje ya que el QG08 trabaja a 3.3 voltios DC y la mayoría de circuitos integrados trabajan
a 5 voltios DC, por lo que no se pueden conectar entre sí directamente.
También hay que tener especial cuidado con el pin 1 del microcontrolador ya que este es usado
para reinicio asincrónico y cada vez que es activado se ejecuta el código desde la primera línea,
este pin tiene activación negativa, es decir, cada vez que se le ponga un cero se activará, dejarlo
sin conectar no es aceptable, en cambio hay que conectarlo a través de una resistencia a Vcc (Vcc
o voltaje de alimentación debe ser de 3.3 voltios DC) y se puede poner un pulsador entre el pin y
referencia para cuando se necesite reiniciar al microcontrolador. Contrario a otros
microcontroladores este pin si puede estar conectado directamente a tierra y ser utilizado de esta
manera ya que las resistencias internas de cada pin tienen como mínimo 17.5 kiloohmios y evitan
corrientes de drenaje superiores a 1 microamperio, sin embargo esta es una característica propia
del QG08 y otros microcontroladores pueden no tenerla y ser dañados si se conectan de esta
manera.
Otro detalle a tener en cuenta es el ruido electrostático, es una buena costumbre seguir las
recomendaciones del manual y conectar entre los pines de alimentación un par de capacitores para
eliminar el ruido de alta frecuencia y los picos de voltaje.
Por ultimo es buena idea probar los circuitos ya con el Freescale instalado, hay que tener en
cuenta que la frecuencia de operación es de 8Mhz y por lo tanto el microcontrolador reaccionará
extremadamente rápido a los impulsos, si la aplicación requiere retrasos o que se haga de forma
lenta es necesario crear rutinas especiales. Por ejemplo: un control de motores de paso necesitará
una subrutina de retraso entre cada cambio de polaridad en los pines ya que si solo se ejecuta la
secuencia esta se hará tan rápido que el motor no la detectará.
3.10 Problemas con campos electromagnéticos
Cada microcontrolador (dependiendo de su fabricación) posee internamente memoria flash,
EEPROM o similares donde guardan los programas que creemos, este tipo de memoria se
caracteriza por no necesitar de alimentación eléctrica para mantener los datos, sin embargo,
aunque esto cree una falsa seguridad de que la información que contiene es imborrable a menos
que se haga a través de los programadores de cada microcontrolador, se debe recordar que toda
memoria es en final efecto de campos especiales magnetizados, por lo que un fuerte campo
electromagnético dañará los datos contenidos.
El QG08 no es la excepción y es vulnerable a estos campos, por lo que si en la aplicación se
usarán imanes, motores o cualquier otro dispositivo que sea capaz de crear un campo
16
electromagnético fuerte los microcontroladores deberán estar situados lo más lejos de estos o
debidamente protegidos ante estos campos, de no hacerlo es imposible determinar que
comportamiento tendrá el microcontrolador una vez que el programa guardado en su memoria ha
sido alterado.
3.11 Algunos pensamientos finales
Como todo dispositivo que posee programación interna los microcontroladores ejecutarán siempre
exactamente lo que se le indique pero como todo programador sabe hay varias formas de hacer las
mismas cosas, es siempre una buena idea hacer un flujorama de los procesos, probarlos
exhaustivamente y hasta crear subrutinas de control o con recursividad, optimizar el código lo más
posible puede que no presente mejorías palpables pero dejará más ordenado todo, también poner
comentarios es útil al momento de buscar errores dentro del código ya que dependiendo de la
aplicación se puede terminar con más de 1000 líneas de código.
Por ultimo puede que aunque el programa funcione a la perfección en los simuladores y que su
lógica sea la adecuada el circuito no funcione, es acá cuando hay que adecuar el código a la
circuitería fuera del microcontrolador.
17
18
CAPÍTULO 4
EL MODULO DE COMUNICACIÓN
4.1 Introducción
Uno de los productos que se entregan con el presente trabajo de graduación es un modulo de
comunicación que se conecta a la computadora a través del puerto RS-232 y con el Robot
Autónomo Salvadoreño (R.A.S.) a través de tecnología infrarroja usando dos microcontroladores
Freescale QG08 para manejar ambas señales usando los códigos necesarios en ambos casos.
Aunque los microcontroladores son los encargados de generar las señales estas no poseen las
características necesarias para una buena comunicación por lo que se hace uso de dispositivos
externos que modulen las señales de tal forma que tanto la computadora como el robot puedan
recibirlas y entenderlas.
En el presente capitulo se desglosa todo lo respectivo al modulo de comunicación, tanto su
circuitería como lógica interna de los microcontroladores, asimismo se incluyen una explicación
sobre los protocolos de comunicación utilizados y sus respectivas señales.
4.2 Alimentación
Dentro del modulo de comunicación se encuentran diferentes elementos y circuitos integrados que
necesitan de 5 Vdc como su fuente de alimentación, por otro lado los microcontroladores aceptan
un máximo de 3.3 Vdc como alimentación y hay otros elementos que trabajan mejor a niveles
superiores a los 5 Vdc.
La forma de solventar esto es alimentando todo el circuito con 9 Vdc los cuales son posteriormente
llevados a los otros niveles inferiores. La técnica para ejecutar esto es bajar el voltaje con una
resistencia en serie con un diodo zener puesto en inversa, el voltaje obtenido en el cátodo del
diodo zener se mantendrá fijo al voltaje zener pero para evitar variaciones este se conecta a la
entrada de un OpAmp (dentro del Circuito integrado LM324) que se dispone como seguidor de
voltaje, de esta forma el voltaje obtenido es fijo ya que no se varía la corriente que esta llegando al
diodo zener mientras que la corriente suministrada a los circuitos es proporcionada por el OpAmp.
Invitamos al usuario a consultar esto de forma visual en la figura 4.3 - “Circuitería del modulo de
comunicación”.
Para la alimentación de otras partes del circuito se utiliza Modulación de Ancho de Pulso (PWM)
como se explicará más adelante.
19
4.3 Construcción
El modulo de comunicación se compone de 4 elementos principales dispuestos como se indica a
continuación:
Figura 4.1 - Bloques funcionales del modulo de comunicación
Los cuatro bloques se explican a continuación:
– Interfaz de interacción con el puerto RS-232: Acondiciona la señal del Microcontrolador1 para
que pueda ser leída correctamente por la computadora y viceversa.
– Microcontrolador1: Es el encargado de manejar la comunicación con la computadora.
– Microcontrolador2: Es el encargado de manejar la comunicación con el R.A.S.
– Interfaz de comunicación con el R.A.S.: Acondiciona la señal del microcontrolador2 para que
pueda ser enviada al robot y puedan recibirse las señales de este.
Como se puede ver ver hay comunicación entre los dos microcontroladores, es en esta etapa en la
cual se separan las señales que entiende la computadora (manejadas por el microcontrolador1) y
las que entiende el robot (manejadas por el microcontrolador2), esta comunicación es de tipo
paralelo y a través de pines especiales dispuestos para este propósito. En los literales siguientes
se hace un desglose completo de cada elemento.
4.4 El protocolo RS-232 desde el punto de vista eléctrico y su implementación en el modulo
Este protocolo es el utilizado para la comunicación con la computadora, desde el punto de vista
eléctrico se trata de señales de voltaje que representan bits de información a una cierta frecuencia.
Aunque es relativamente fácil sincronizar la frecuencia y codificación de las señales (palabras de 8
bits, sin paridad y sin bit de inicio) gracias al modulo de comunicación serial ya contenido en los
microcontroladores, se tiene una incompatibilidad entre los niveles de voltaje que representan los
bits en cada dispositivo, así para la computadora un 1 lógico es representado por un nivel de
voltaje menor a -3 Vdc pero mayor a -15Vdc, un cero lógico es representado por un nivel de voltaje
mayor a 3 Vdc pero menor a 15 Vdc, en ningún caso el nivel de voltaje en la línea debe subir de los
20
20Vdc o ser más bajo de -20Vdc y en reposo la línea debe mantenerse en el voltaje establecido
para un uno lógico; por otro lado el microcontrolador representa un 1 lógico por un nivel de voltaje
de 3 Vdc y un cero lógico por un nivel de voltaje de 0 Vdc, a la vez el microcontrolador es incapaz
de generar voltajes más elevados de 3Vdc o voltajes negativos y el estado de reposo del modulo
de comunicación serial es de 3 Vdc.
Conectar el puerto RS-232 de la computadora directamente a los pines de comunicación serial del
microcontrolador nos llevaría rápidamente a dañarlo, si únicamente incluimos elementos que
limiten los voltajes a 0 Vdc y 3Vdc (como diodos y diodos zener) todavía se tiene el problema que
el protocolo representa el 1 lógico en forma inversa de lo que lo hace el microcontrolador, esto
hace imposible la comunicación.
Para solventar todos estos problemas se necesita un decodificador que transfiera los niveles de
voltaje del RS-232 a niveles de voltaje manejables por circuitos integrados normales (nivel TTL) a
la vez que codifica la señal en el voltaje adecuado, en nuestro diseño se utilizó el MAX232, un
circuito integrado diseñado especialmente para este propósito.
El MAX232 posee internamente un buffer inversor para transformar los niveles RS-232 en niveles
TTL y adecuar la señal para que el 1 lógico sea de 5Vdc y el 0 lógico sea de 0 Vdc; por otro lado
posee “bombas de voltaje” (configuraciones de capacitores que elevan el voltaje) e inversores de
tal forma que los niveles TTL sean transformados en niveles RS-232 con la codificación adecuada
para la computadora.
La señal en si misma es creada por el microcontrolador1 el cual la genera a una velocidad de 2700
bits por segundo (bps) auxiliado por un oscilador interno por cristal que mantiene estable dicha
velocidad de transmisión y recepción, la computadora es ajustada a esta misma velocidad con lo
que se logra la comunicación.
4.5 Comunicación con el R.A.S.
Para comunicarse con el robot se hace uso de tecnología infrarroja: la información es transmitida a
500 bps de forma serial siguiendo la codificación estandard utilizando una portadora de 40 Khz a
través de un LED infrarrojo. Esta señal es recibida y decodificada fácilmente por un receptor
diseñado para tal fin de la misma naturaleza de los utilizados en aplicaciones comerciales de
control por medio de infrarrojos.
El receptor es de tipo comercial por lo que dentro de el esta contenida la circuitería que filtra todas
las señales menos la que se reciba a 40 Khz, este mismo receptor decodifica la señal y así
21
obtenemos a la salida el tren de pulsos emitidos a 500 bps; la única característica peculiar de este
receptor es que la salida es la negación de la señal que se requiere, es por esto que debe
conectarse a una compuerta lógica “NOT”. En el mercado existen muchos integrados que hacen
esto, para nuestro diseño se utiliza el PL-IRM0101-3 por su sensibilidad, inmunidad al ruido y
disponibilidad en el mercado local (Consultar hoja de datos en la carpeta “IrDA” dentro de la
carpeta “Datasheet” en el disco adjunto al presente trabajo).
Por otro lado el transmisor si fue diseñado enteramente para la aplicación. Primero necesitamos
una señal cuadrada de 40Khz que nos servirá como portadora y para conseguirla se pone a oscilar
a un Timer 555 en forma astable, posteriormente para introducir la señal útil en esta portadora se
hace uso de una compuerta AND, así cuando se quiera enviar un 1 lógico se dejará pasar a la
portadora, caso contrario no se dejará pasar y con esto se logra enviar la información. La señal útil
viene directamente del transmisor serial en el microcontrolador2.
Un elemento importante de este diseño es el tipo de LED infrarrojo que se utiliza y el encapsulado
que este tenga, en nuestras pruebas se determinó que un encapsulado que concentre la luz del
LED hacia adelante no es útil para la aplicación ya que únicamente se lograba detectar la señal a
una distancia menor de 1.5 metros de la fuente, sin embargo utilizando un LED cuyo encapsulado
no concentrara la luz se logran distancias mucho mayores, estos LED que no concentran la luz son
los mismos utilizados en los controles remotos.
4.6 Funcionamiento del dispositivo
Se realizaron distintas pruebas al dispositivo para determinar su confiabilidad en la transmisión, del
lado de la computadora la transmisión es a través de un medio controlado (el cable de 9 pines que
se conecta al puerto Rs-232 de la computadora) por lo que es casi perfecta, es por esto que se
pueden garantizar velocidades de comunicación de hasta 11200bps sin perdida de datos por parte
del microcontrolador1, sin embargo para la aplicación no es necesario un gran flujo de información
por lo que la transmisión a 2700bps resulta adecuada. El alcance de esta parte del modulo de
comunicación dependerá del tipo de cable con que se conecte el módulo a la computadora, la
sensibilidad de la tarjeta electrónica que esta posea y de las perdidas por otras causas como ruido
electromagnético, nuestras pruebas indican que pueden usarse cables de hasta 15mts de cobre
para comunicaciones (calibre 22, alta pureza), sin embargo recomendamos no se utilicen cables de
más de 10 metros de longitud para realizar la conexión entre el módulo y la computadora.
Por otro lado la comunicación entre el módulo y el robot es a través de tecnología infrarroja, de
este lado la transmisión de datos es también de bajo volumen de información por lo que la
velocidad de transmisión optima es de 500bps, esto se establece por las características de cada
22
elemento en particular (en especial en las características de los receptores infrarrojos) y se ajusta
al volumen de información antes mencionado. Sin embargo acá debemos hacer una pausa para
explicar los alcances de nuestra “antena infrarroja” ya que fue totalmente diseñada y construida
para esta aplicación.
Dado que se necesita linea de vista entre el transmisor y el receptor el alcance de este dispositivo
viene dado por características ópticas únicamente, escoger el tipo de led adecuado y la ubicación
de estos es importante para obtener una comunicación adecuada; se buscaron leds en el mercado
local que cumplieran con la característica de no concentrar la luz sino que la emitieran en todas
direcciones, sin embargo fue imposible conseguir este tipo de leds tan comunes en controles
remotos comerciales.
Las pruebas de comunicación realizadas demuestran que los LED conseguidos en el mercado
local poseen un alcance frontal de 4 metros pero lateralmente solo poseen un angulo de 20° por lo
que es imposible conseguir una comunicación adecuada (sin embargo parecen aptos para
aplicaciones de control de televisores y similares), en contraste los LED que se obtuvieron al
desmantelar controles remotos tenían un alcance frontal de 4 metros y uno lateral de 120° por lo
que hubieran sido adecuados para la aplicación, sin embargo al usarlos se habría salido de los
requerimientos del proyecto.
Con los datos anteriores se determina que el diseño de antenas fijas es imposible con los
componentes encontrados en el mercado local y por lo tanto se tienen limitantes en la
comunicación con el robot. Para solventarlas se opta por diseñar un tipo de antena “portátil” que el
usuario deberá mantener sobre el robot para que la transmisión sea adecuada.
4.7 Transmisión y recepción de datos
El modulo de comunicación posee en su interior dos microcontroladores, el microcontrolador1 se
encarga de la comunicación con la computadora propiamente trabajando con comunicación serial a
2700bps (haciendo uso del integrado RS-232 para ser compatible con este puerto en la
computadora, como se mencionó anteriormente) y ejecutando el protocolo siguiente (sin importar la
dirección de comunicación):
Protocolo de comunicación entre microcontrolador1 y PC
1° El emisor de la señal envía el código respectivo
2° El receptor envía un eco del código que acaba de recibir
3° Si el emisor original recibe un eco exacto de la señal que envió envía
una señal de confirmación.
Tabla 4.1 – Protocolo establecido entre modulo de comunicación y computadora
23
Como proceso adicional se ha establecido que las primeras tres ordenes que se recibirán por parte
de la computadora son “¿existe comunicación?”, “usar sensores” o “no usar sensores” y
“establecer dirección de visión” respectivamente, esto con el fin de determinar el funcionamiento
futuro del robot. Cabe recalcar que estas ordenes no solo son reconocidas en este punto y por lo
tanto puede modificarse el comportamiento del robot en cualquier momento. A continuación se
presenta un cuadro con los códigos usados para estas ordenes que modifican el funcionamiento:
InicioPc Microcontrolador1
Enviado Confirmación Negación
Usar sensores 0xEB 0xEC NA
No usar sensores 0xDB 0xEF NA
Tabla 4.2 - Ordenes iniciales
Para establecer la dirección de visión se usa cualquiera de los siguientes códigos:
Especificar
dirección de visión
PC Microcontrolador1
Norte 0xC3 0x95
Sur 0xD3 0x95
Este 0xE3 0x95
Oeste 0xF3 0x95
Tabla 4.3 – Ordenes que especifican dirección de visión
El microcontrolador2 se encarga de la comunicación con el R.A.S., este recibe la ordenes del
microcontrolador1 de forma paralela y los envía al robot de forma serial a 500 bps haciendo uso del
transmisor descrito en otras secciones de este documento.
En este paso también se usa un protocolo de comunicación para evitar errores en la emisión y
recepción de datos, el protocolo es el siguiente:
Protocolo de comunicación entre microcontrolador2 y R.A.S.
1° El emisor envía la señal 8 veces seguidas
2° El receptor envía 8 veces un eco de la primera señal que reciba tres veces consecutivas
3° Si el eco corresponde a la señal emitida se manda 8 veces una señal de confirmación
4° El receptor envía una ultima vez una señal de confirmación 8 veces seguidas
Tabla 4.4 – Protocolo de comunicación entre el microcontrolador 2 y el R.A.S.
Por características propias de los receptores utilizados cada señal debe ser enviada 8 veces como
24
mínimo para garantizar que será bien recibida, asimismo los microcontroladores deben estar
preparados para manejar este flujo de información y diferenciar entre “señal útil” y “señal basura”,
esto se hace a través de una rutina de recepción que compara cada dato recibido con el anterior, si
se recibe tres veces el mismo dato de forma consecutiva este se considera “señal útil” y se
procesa. Sin embargo en nuestras pruebas se determinó que en algunos ambientes el ruido
infrarrojo era de tal magnitud que hacía imposible el funcionamiento del R.A.S. Por lo que se
establece una subrutina especial que se encargara de suprimir este ruido, todo lo referente a esta
subrutina puede encontrarse en el disco adjunto al presente trabajo de graduación en la carpeta
“Otros documentos”.
El flujo de información puede entenderse mejor al ver el siguiente diagrama:
Figura 4.2 – Flujo de información del sistema
Una vez explicado lo anterior se presenta una tabla que contiene todas las ordenes que la
computadora enviará al Microcontrolador1 con la respuesta que se enviará a la computadora
cuando el R.A.S. indique que ha completado la orden con éxito:
Orden Byte recibido de PCByte enviado a PC (Al
terminar)
Mover 0x10 0x15
Girar Izquierda 0x20 0x25
Recoger toquen 0x30 0x35
Poner toquen 0x40 0x45
Apagar 0x50 0x55
Tabla 4.5 – Códigos para ordenes principales
25
Gracias a sus sensores y a registros internos ubicados tanto en el modulo de control como en el
R.A.S. se puede responder a preguntas hechas por el software Karel; desde el punto de vista del
lenguaje Karel estas preguntas sirven para establecer “condiciones” dentro de los programas entre
otras cosas, sin embargo desde el punto de vista del robot podemos únicamente indican el estado
en que este se encuentra.
A continuación se presenta una tabla que engloba toda las preguntas que el software Karel es
capaz de generar:
Pregunta
PC Microcontrolador1
Pregunta
PC Microcontrolador1
Recibido Enviado si
verdadero
Enviado
si falso
Recibido Enviado si
verdadero
Enviado
si falso
¿toquen en
bolsa?
0x60 0x63 0x86 ¿Frente
Bloqueado?
0xB0 0x63 0x86
¿Viendo al
este?
0x70 0x63 0x86 ¿Izquierda
libre?
0xD0 0x63 0x86
¿Viendo al
norte?
0x80 0x63 0x86 ¿Derecha
libre?
0xE0 0x63 0x86
¿Viendo al
sur?
0x90 0x63 0x86 ¿Sobre
toquen?
0xF0 0x63 0x86
¿Viendo
oeste?
0xA0 0x63 0x86 ¿Hay Link? 0xFB 0x63 0x86
Tabla 4.6 – Preguntas generadas por el software Karel
Algunas de estas preguntas son respondidas por registros internos guardados dentro de
microcontrolador2, este posee subrutinas para responder a dichas preguntas. Las preguntas
respondidas de esta forma y sus características de funcionamiento son:
– ¿Viendo norte, sur, este u oeste?: Dentro de las ordenes iniciales se especifica la dirección
en la que está viendo el robot inicialmente, esta información es almacenada en un registro
que es actualizado cada vez que el robot completa un giro a la izquierda siguiendo la
secuencia norte, oeste, sur, este. De esta forma al recibir la pregunta correspondiente el
microcontrolador lee su registro, si la pregunta corresponde con la información ahí
contenida responderá de forma positiva y viceversa.
El R.A.S. no posee una brújula u otro dispositivo capaz de orientarlo con respecto a los
ejes cardinales, asimismo en el mundo virtual que aparece en la computadora se
establecen ejes virtuales definidos como norte, sur, este y oeste, por lo que la mejor forma
26
de mantener sincronizada la información de “dirección de visión” es usando una “dirección
de visión virtual” como se acaba de describir.
– ¿Sobre toquen?: Aunque exista un sensor cuya función es encontrar los toquen que el
robot puede recoger la forma física de este hace que los toquen no queden posicionados
exactamente en la “zona de detección” de este sensor cuando el robot esta en reposo en
una esquina, de hecho el sensor detecta los toquen antes de llegar a la esquina de destino.
Es por esto que se escoge usar un registro que indique si se ha detectado un toquen
durante la ejecución de la orden “mover”, de ser así se sabe que el robot estará sobre el y
puede recogerlo, este sensor es borrado una vez se recibe nuevamente la orden “mover”
(ya que el robot se moverá a la siguiente esquina) o se recoge el toquen detectado.
Por ultimo se ha implementado dentro del modulo de comunicación una subrutina de
“establecimiento de enlace” (Link en inglés), es decir, una subrutina que manda una señal a Karel
con la única intención de establecer si el robot recibe dicha señal y es capaz de responderla, esta
subrutina es utilizada para responder a la pregunta “¿hay link?”, en estados en los que no se haya
recibido la confirmación de la ejecución de una orden en un tiempo aceptable para establecer si
hubo un error de comunicación y en general para hacer pruebas que indiquen si los transmisores y
receptores están funcionando de forma adecuada.
4.8 Manejo de errores y estados anormales
Durante los párrafos anteriores se ha hecho mención de que el robot es capaz de informar a la
computadora sobre errores encontrados en el tiempo de ejecución que le impiden completar las
ordenes que se han recibido o sobre otros estados anormales como “orden no encontrada” y
“perdida de comunicación”.
Estos errores son enviados a la computadora usando los siguientes códigos:
Error Enviado a PC
Choque contra pared 0xCC
No hay toquen en bolsa 0xDD
No hay toquen para recoger 0xEE
Materia Baja 0xFF
Orden no válida 0xEA
Perdida de comunicación 0xFA
Imposible girar 0xFE
Tabla 4.7 – Errores reconocidos por el software Karel.
27
– Error “choque contra pared”: se envía este error cuando el sensor de proximidad frontal
interrumpe a la subrutina “mover” al detectar un obstáculo, este error es considerado “grave” y
por lo tanto si se da cualquier orden posterior que la computadora envíe será ignorada. La
única forma de salir de este estado de error es presionando el botón de reinicio, tanto en el
modulo de comunicación como en el R.A.S.
– Error “No hay toquen en la bolsa”: se envía este error cuando se recibe la orden “Depositar
toquen” y el sensor de toquen en bolsa no detecta ninguno. Este error es considerado “leve”
luego de informar sobre este el robot estará listo para ejecutar cualquier orden posterior.
– Error “No hay toquen para recoger”: se envía este error cuando se recibe la orden “Recoger
toquen” y el registro correspondiente indica que no se han detectado toquen durante la ultima
orden de “mover” ejecutada o cuando se intenta recoger el toquen pero no puede ser
detectado en el movimiento de retroceso que alinea el dispositivo de recolección con este. Este
error es considerado “leve”.
– Error “Imposible girar”: se envía este error cuando algo impida al robot completar un giro,
algunas fuentes de este error pueden ser: falla en los motores, obstrucciones físicas que
impidan que el robot gire, Etc. Se detecta la imposibilidad de girar cuando no se ha completado
la subrutina de giro en un tiempo tres veces mayor al que le tomaría normalmente. Este error
es considerado “grave”.
– Error “Orden no encontrada”: este error se da cuando la computadora ha enviado una señal no
reconocida (aunque se respete el protocolo de comunicación puede que la computadora envíe
una señal que no esté en la base de datos del microcontrolador) y cuando la computadora
envía una pregunta que no está siendo tomada en cuenta debido a que se especificó durante
la secuencia inicial que no se usarían los sensores.
– Error “Batería baja”: se envía este error cuando los microcontroladores instalados en el modulo
de comunicación o en el robot detectan un bajo voltaje de alimentación, cuando el tiempo de
ejecución de la subrutina “mover” es mayor al doble de lo normal, cuando se detecta que los
sensores de seguimiento de línea no están funcionando (dado que todos los sensores reciben
su alimentación de la misma fuente se asume que todos los demás tampoco están
funcionando) o cuando se detecta que la comunicación contiene demasiados datos basura
(indicativo que los emisores reciben poca energía). Este error es considerado “grave”.
– Error “Perdida de comunicación”: se ha establecido que cada señal debe ser enviada 8 veces
consecutivas, sin embargo de no obtener ninguna señal en respuesta se volverá enviar hasta 5
28
veces, si luego de estas 5 series de señales no se ha recibido ninguna otra se considera que
se ha perdido la comunicación entre el modulo conectado a la computadora y el robot Karel, es
entonces que este error es generado dentro del modulo de comunicación y enviado a la
computadora. Este error es considerado “grave”.
Aunque se podrían especificar subrutinas especiales que manejen estos errores de forma
automática (haciendo que el robot regrese a su posición anterior ante un choque frontal por
ejemplo) se decidió que únicamente se debería notificar de dichos errores a la computadora, esto
con el fin de mantener la coherencia entre la información presentada al usuario en la pantalla de la
computadora y el comportamiento del dispositivo en la vida real.
4.9 Diseño modular y futuras aplicaciones
En el diseño actual del modulo de comunicación se ha utilizado el puerto RS-232 para
comunicación con la computadora y transmisión con tecnología infrarroja para comunicación con el
R.A.S., sin embargo esta es una forma de solucionar el problema planteado y futuras versiones
pueden implementar sus propios diseños.
El periférico serial de los microcontroladores Freescale QG08 utilizados esta configurado para usar
la codificación estandar de palabras de 8 bits, sin bit de inicio ni paridad (sin embargo puede ser
configurado de forma diferente) y en lo que a él respecta mientras se mantengan los niveles de
voltajes adecuados y esa codificación de la señal (recordando que esta debe estar a 2700 bps) la
señal es la adecuada y puede tanto recibirla como enviarla sin que importe el puerto de la
computadora a usar, así futuras versiones podrán eliminar el bloque “interacción con RS-232” y
poner cualquier otro, por ejemplo USB, Bluetooth, Wifi, etc. Lo mismo aplica para la comunicación
con el robot donde puede eliminarse el bloque de comunicación infrarroja usado actualmente para
sustituirlo por uno de radio frecuencia por ejemplo.
Para poder hacer esto sin embargo hay que mantener las conexiones básicas de los
microcontroladores para que estos se comuniquen entre sí y puedan traducir las señales
provenientes de la computadora y enviarlas al robot, estas conexiones pueden verse en la tabla 4.9
y tabla 4.10.
Si se crea un programa computacional adecuado incluso puede eliminarse el modulo de
comunicación y pueden enviarse las ordenes directamente hacia el robot, esto quita las limitantes
propias de dicho modulo y nos darían un máximo de 256 ordenes que el robot (previa
programación) podría realizar. El único requerimiento de este programa computacional será que
pueda procesar el protocolo especificado en la tabla 4.4 y que envíe a R.A.S. los siguiente códigos
29
para las ordenes existentes o las respectivas a las nuevas ordenes programadas:
OrdenesMicro2 a Micro3
Micro3 a Micro2Con sensores Sin sensores
Mover #$40 #$43#$45, Error
o #$48 (Toquen detectado)
Girar Izquierda#$50
#$53 #$55 o Error
Recoger Toquen #$60 #$63 #$65 o Error
Depositar toquen #$70 #$73#$75, Error o #$78 (Token
en bolsa)
Tabla 4.8 – Códigos de ordenes reconocidos por el R.A.S.
4.10 Conexión de los microcontroladores dentro del modulo de control
Para referencia se presentan las tablas que indican que va conectado a cada pin de los
microcontroladores dentro del modulo de control:
Microcontrolador1
Pines
Reset 1 16 Rx paralelo (A pin 16 Mic2)
No utilizable 2 15 Rx paralelo (A pin 15 Mic2)
Vcc 3 14 Rx paralelo (A pin 14 Mic2)
Referencia 4 13 Rx paralelo (A pin 13 Mic2)
No conectado 5 12 Rx de señal de PC
Tx paralelo (A pin 6 Mic2) 6 11 Tx de señal a PC
Tx paralelo (A pin 7 Mic2) 7 10 Tx paralelo (A pin 10 Mic2)
Tx paralelo (A pin 8 Mic2) 8 9 Tx paralelo (A pin 9 Mic2)
Tabla 4.9 – Conexiones del microcontrolador1
30
Microcontrolador2
Pines
Reset 1 16 Tx paralelo (A pin 16 Mic1)
No utilizable 2 15 Tx paralelo (A pin 15 Mic1)
Vcc 3 14 Tx paralelo (A pin 14 Mic1)
Referencia 4 13 Tx paralelo (A pin 13 Mic1)
No conectado 5 12 Rx de señal de robot Karel
Rx paralelo (A pin 6 Mic1) 6 11 Tx de señal a robot Karel
Rx paralelo (A pin 7 Mic1) 7 10 Rx paralelo (A pin 10 Mic1)
Rx paralelo (A pin 8 Mic1) 8 9 Rx paralelo (A pin 9 Mic1)
Tabla 4.10 – Conexiones del microcontrolador2
4.11 Esquema eléctrico actual
En la página siguiente podemos ver el esquema eléctrico de nuestro modulo de transmisión:
31
Figura 4.3 – Circuitería del modulo de comunicación
32
CAPÍTULO 5
USO DEL MICROCONTROLADOR FREESCALE QG08 EN EL ROBOT AUTÓNOMO
SALVADOREÑO
5.1 Introducción:
El microcontrolador es “el cerebro” del robot y su modulo de comunicación, dentro de él está el
programa que controla y coordina a todas las funciones del R.A.S. (Robot Autónomo Salvadoreño)
para que este sea capaz de ejecutar las ordenes que se le indiquen a través del modulo de
comunicación conectado a la computadora, como su nombre lo indica es capaz de controlar a
través de sus pines a diferentes dispositivos, en el presente trabajo se ha hecho uso del periférico
de comunicación serial para manejar la transmisión y recepción de datos y del periférico de
entradas y salidas digitales para controlar la información proveniente de los sensores y a los
actuadores respectivamente, indirectamente se hace uso del periférico “temporizador” para
controlar la velocidad de transmisión.
Aunque existen muchos microcontroladores en el mercado se hace uso del Freescale QG08 ya
que posee los periféricos necesarios para la aplicación, así como la robustez y confiabilidad que
garantizan el funcionamiento continuo del R.A.S. al mismo tiempo que se cuenta con una interfaz
de prueba en la cual ya se tienen implementados periféricos que ayudan al momento de desarrollar
los programas e incluso poseen la característica de sincronizar un programa computacional con el
microcontrolador de tal forma que se puede tener un control total sobre la ejecución del programa
en el microcontrolador y así determinar su comportamiento ya dentro de este.
A lo largo de este capítulo se explicará el funcionamiento de cada periférico, su aplicación dentro
del robot, la forma en que se coordinan los diferentes dispositivos ante cada orden, las
características propias del proceso y sus limitantes. Con esta información y con la contenida en
posteriores capítulos se podrá modificar a R.A.S. para añadirle nuevas funcionalidades o mejorar
las actuales.
5.2 Conexión de los microcontroladores dentro del R.A.S.
En el R.A.S. se utilizan microcontroladores Freescale QG08 en su presentación PDIP-16, y como
se explicará más adelante cada uno de sus pines tiene una función específica. Es por esto que
antes de continuar se presentan dos tablas donde se pueden ver las conexiones de los
microcontroladores y se puede comenzar a tener una idea de las funciones que desempeña cada
uno dentro del robot.
33
Se hace notar que más adelante en este capítulo no se hace referencia nuevamente a los pines
específicos sino a lo que está conectado a ellos. Sin más que decir se presentan las tablas de
conexión:
Microcontrolador3
Pines
Reset 1 16 Sensor de colocación
No utilizable 2 15 Rx paralelo (a pin 15 Mic4)
Vcc 3 14 Rx paralelo (a pin 14 Mic4)
Referencia 4 13 Tx paralelo (a pin 13 Mic4)
Sensor de proximidad izquierdo 5 12 Rx serial
Sensor de proximidad derecho 6 11 Tx serial
Sensor de toquen en bolsa 7 10 Sensor de toquen inferior
Motor de deposito 8 9 Motor de recolección
Tabla 5.1 – Conexiones del microcontrolador3
Microcontrolador4
Pines
Reset 1 16 Control de sensores activables
No utilizable 2 15 Tx paralelo (a pin 15 Mic3)
Vcc 3 14 Tx paralelo (a pin 14 Mic3)
Referencia 4 13 Rx paralelo (a pin 13 Mic3)
Sensor de línea izquierdo 5 12 Rx serial
Sensor de línea derecho 6 11 Sensor de proximidad frontal
Motor derecho (Línea A) 7 10 Motor derecho (Línea B)
Motor derecho (Línea B) 8 9 Motor izquierdo (Línea A)
Tabla 5.2 – Conexiones del microcontrolador4
Se puede observar que se han utilizado todos los pines disponibles en ambos microcontroladores
lo que limita a futuras versiones del robot en la implementación de nuevos sensores, sin embargo
haciendo uso de la imaginación pueden presentarse nuevas formas de que el robot realice sus
funciones y así aprovechar aún más la configuración actual.
5.3 La configuración de los microcontroladores QG08 en el robot R.A.S.
Al referirse a R.A.S. siempre se hace una distinción entre este y el “modulo de comunicación” del
cual se ha hablado con anterioridad. Los circuitos del robot son los que han llevado más trabajo ya
que en él se incluyen diferentes tipos de sensores, circuitos reguladores de voltaje, circuitos de
potencia y circuitos de control digital donde se incluyen los microcontroladores.
34
La gran limitante de los microcontroladores no es lo que internamente pueden hacer sino su
capacidad de interactuar con el medio, los microcontroladores QG08 poseen únicamente 16 pines
que se dividen entre pines exclusivos de alimentación, pin de reset y otro pines especiales que no
pueden ser utilizados en ningún momento, es por esta razón que se solventó este problema
poniendo dentro del robot dos microcontroladores, cada uno programado de forma diferente para
que entre ambos lograran desempeñar las tareas que se le asignara al robot y que se comunican
entre sí.
En el momento de la ejecución cada microcontrolador analiza si el cumplimiento de la orden le
corresponde según los dispositivos que tenga conectado, así por ejemplo si el microcontrolador4
tiene conectado a sus pines el control de los motores de avance este reconocerá que debe ejecutar
la orden “mover”. Otras ordenes más complejas implican que ambos microcontroladores las
realicen en conjunto, es por esto que la sincronía entre ambos debe ser perfecta, de lo contrario el
robot tendría comportamientos erráticos y fuera de control.
Para comenzar a desarrollar esta idea se presenta a continuación la forma en que están
conectados ambos microcontroladores dentro del robot:
Figura 5.1 – Esquema del modulo de control en el R.A.S.
Se puede observar que únicamente el microcontrolador3 esta conectado al transmisor serial lo que
lo convierte en el encargado de monitorear todo el funcionamiento del robot para enviar su estado
al modulo de comunicación que posteriormente lo enviará a la computadora, asimismo es el
encargado de manejar los protocolos de comunicación que se describirán más adelante, por otro
lado el microcontrolador4 solo puede recibir las ordenes e informarle al primero cuando haya
completado sus funciones.
Algo más que hay que notar es que aunque se intentó que cada microcontrolador pudiera realizar
ordenes de forma independiente algunas que implican subrutinas más complejas (como por
ejemplo “recoger toquen” que implica retroceder, censar el toquen, recoger y volver a la posición
35
inicial) deben ser realizadas por ambos microcontroladores trabajando en paralelo como si fueran
uno solo, es por esto que se establecen tres pines de comunicación serial entre ellos mediante los
cuales se podrá hacer que todo el bloque se comporte adecuadamente. Para lograr que dos
microcontroladres se comporten como uno solo es necesario que las subrutinas estén coordinadas
a la perfección y que la comunicación sea lo más simple posible para lograr que sea de alta
velocidad; Así en los literales siguientes ya no se hace referencia individual a los
microcontroladores dentro del robot sino que se les trata como uno solo capaz de cumplir con las
ordenes recibidas recibiendo la información de los sensores y controlando todas las funciones a
través de los actuadores.
Para el resto de este capitulo ya no se menciona al modulo de comunicación sobreentendiendo
que cuando se mencione que “se envía una orden desde la computadora hacia el robot” y
viceversa se hará a través de este.
5.4 Recopilación de la información
Como se mencionó en capítulos anteriores el robot está equipado con los siguientes sensores de
tipo digital:
– Sensor de proximidad frontal.
– Sensor de proximidad lateral derecho
– Sensor de proximidad lateral izquierdo
– Sensores inferiores para detección de línea
– Sensor inferior para detección de toquen
– Sensor inferior para depósito
Los cuales le informan al microcontrolador el estado del mundo que lo rodea.
Para que el microcontrolador sea capaz de recibir esta información es necesario activar en él el
periférico de entradas y salidas digitales, de esta forma tendremos hasta 10 pines de entrada que
podremos usar para conectar los diferentes sensores (el microcontrolador posee 10 pines de
entrada o salida que podemos utilizar en su presentación de PDIP-16 y 5 pines en su presentación
PDIP-8).
Como es de esperarse hay que respetar ciertos requerimientos propios del microcontrolador, en
este caso las señales deben ser de menos de 3 voltios DC para no dañarlo (Para mayor
información consultar las características eléctricas del microcontrolador en el Anexo A), asimismo la
señal debe estar presente por al menos 0.3 milisegundos desde el momento en que se decide
36
leerla (Se tiene un control total sobre la forma en que el microcontrolador lee la información
proveniente del exterior a través de sus pines y aunque posee la función de reacción instantánea a
esta información se ha escogido un modelo lineal de programación que especifica que la
información solo es recibida en ciertos momentos predeterminados).
En tiempo de ejecución los sensores de proximidad son controlados con una salida digital de tal
forma que no estén activados todo el tiempo, de esta forma se evitan interferencias entre estos y
los receptores de señales; por otro lado los demás sensores funcionan de forma continua. Se
sobreentiende que un funcionamiento continuo de los sensores presenta un desperdicio de
energía, sin embargo por la gran cantidad de entradas y salidas a manejar fue imposible incluir
dentro de estas una salida que controlara a estos sensores, por otro lado si estos funcionan de
forma continua el robot es capaz de estar censando su entorno y si este cambia repentinamente
podrá enviar la información más actualizada a la computadora si esta lo requiere.
Teniendo en mente todo lo anterior se observa que existe la necesidad de filtrar las señales útiles
para la orden que se esta cumpliendo en ese momento, para esto se hace un barrido de todas las
señales de los sensores directamente en el microcontrolador y se hace un filtrado digital de
aquellas que no sean necesarias.
5.5 Uso de la información de los sensores en las subrutinas
– Sensores de línea: Los sensores de línea están ubicados en la parte inferior del robot y
funcionan de forma continua, estos están posicionados de tal forma que envíen un uno lógico
en su posición de “reposo” y un cero lógico cuando detecten la línea, su información es
utilizada en todas las subrutinas que impliquen movimientos hacia delante o atrás y con su
información el microcontrolador ajusta el movimiento de los motores de tal forma que el robot
siempre se mantenga sobre la línea, como función auxiliar estos sensores indican al
microcontrolador cuando se ha alcanzado una “esquina” (al haber una línea que cruza a la que
el robot esta “siguiendo” ambos sensores presentarán un estado lógico de cero) para que este
apague los motores y quede estático en este punto. Esta función de detección de esquina es
usada en las subrutinas de “mover” “recoger toquen” y “depositar toquen”.
– Sensor de detección de toquen: Este sensor es utilizado como su nombre lo indica para
detectar la presencia de los toquen que el robot puede recoger, si se está ejecutando la orden
“Mover” y el sensor indica la presencia de un toquen este estado se guarda en un registro
interno que es consultado al recibir la orden “recoger toquen” (si durante la orden “Mover” no
se detectó toquen alguno se envía un error al recibir la orden “recoger toquen”; este registro es
utilizado también para responder la pregunta “¿Existe toquen para recoger?”); por otro lado
37
durante la orden “Recoger toquen” este sensor es utilizado para alinear el dispositivo de
recolección del robot con el toquen a recoger.
– Sensor inferior para depósito: Por requerimientos propios del diseño del chasis del robot es
necesario que se utilice este sensor para alinear el dispositivo de depósito con las esquinas
donde debe ser depositado, su información es utilizada durante la orden “depositar toquen” y le
indica al microcontrolador cuando el dispositivo de depósito esta en la posición adecuada.
– Sensor de proximidad frontal: La información de este sensor es utilizada durante la orden
“mover” como medida de seguridad para evitar colisiones, una vez que el micro ha detectado
un uno lógico en este sensor detiene inmediatamente los motores de avance y envía la señal
de error correspondiente a la computadora. Como función alternativa se puede responder a la
pregunta “¿Frente bloqueado?” usando la información de este sensor.
– Sensores de proximidad laterales: La información de estos sensores es utilizada únicamente
para responder las preguntas “¿izquierda bloqueada?” y “¿derecha bloqueada?”, no se usa en
ninguna otra subrutina.
5.6 Control de motores
El control de motores se hace a través de circuitería capaz de manejar las corrientes necesarias
para hacer funcionar dichos motores, esta circuitería reacciona a entradas digitales de baja
corriente (señales de control enviadas por el microcontrolador) y posee salidas que pueden
manejar varios amperios, la función del microcontrolador es la de coordinar a los motores para
cumplir la orden recibida.
Como se pudo ver en el capítulo anterior la computadora solamente envía la orden, pero no envía
instrucciones de como ejecutar dicha orden, es por esto que los microcontroladores están
programados con las instrucciones específicas para ejecutarlas.
5.7 Lógica interna del R.A.S.
Se entiende por lógica interna el programa que contienen los microcontroladores que posee el
R.A.S. y que coordinan el funcionamiento de este, esta se divide en subrutinas las cuales se
ejecutan dependiendo de la orden recibida.
El proceso general a seguir consta de varias subrutinas de monitoreo que hace que el robot
regrese siempre a estados conocidos y que nunca se lleguen a ciclos en los cuales el
38
microcontrolador pierda el control de lo que esta sucediendo, asimismo las subrutinas son tales
que nunca se entra en ciclos infinitos que evitarían que el robot pudiera cumplir nuevas ordenes.
Otra característica importante es que siempre se informa a la PC del estado del robot, ya sea que
este no pueda cumplir la orden recibida o que no se reconozca la orden que se le ha enviado; a
continuación podemos ver un flujorama que explica mejor esta idea:
Figura 5.2 – Flujorama general de ejecución de ordenes
Dentro de los pasos “Recibir orden” e “Informar a PC” se ejecutan los protocolos comunicación
descritos anteriormente; dentro de paso “Ejecutar orden recibida” se encuentran las diferentes
subrutinas descritas a continuación:
– Subrutina “mover”: La subrutina mover esta diseñada para funcionar estrechamente ligada con
los sensores inferiores seguidores de línea, la dependencia de estos no pudo ser eliminada
dado que el diseño mecánico del dispositivo requiere de corrección de trayectoria para lograr ir
en línea recta; una vez recibida la orden se activan los motores de desplazamiento al mismo
tiempo, en este punto los sensores de línea se encuentran sobre la línea que va perpendicular
a la que se tiene que seguir por lo que la corrección de giro es imposible en este punto, una
vez superada está línea se activa la corrección de giro para estabilizar al robot de tal forma que
cuando un sensor detecte que esta sobre la línea a seguir se apagará el motor de ese lado
para corregir la trayectoria, una vez que el sensor deja de detectar la línea se vuelve a
encender el motor correspondiente para continuar con una trayectoria normal; al llegar a la otra
esquina los sensores se encontrarán con otra línea perpendicular a la que se está siguiendo y
39
esto indicará que se ha llegado a la siguiente esquina, terminando la subrutina, sin embargo en
cualquier momento puede encontrarse una obstrucción en el camino que obligaría a detener
toda ejecución e informar sobre el fallo a la computadora. Por ultimo se establece un tiempo
máximo de 45 segundos para ejecutar la orden, si se supera este tiempo se sobreentiende que
el robot es incapaz de desempeñar su trabajo por alguna razón y se informará a la
computadora. Se sintetiza lo anterior en el siguiente flujorama:
Figura 5.3 – Flujorama de orden “mover”
– Subrutina “depositar toquen”:El robot es capaz de alinear su sistema de depósito de tal forma
que los toquen sean depositados sobre la esquina (cruce de las líneas que el R.A.S. debe
seguir durante su movimiento), para esto se realiza un avance (que incluye corrección de giro)
hasta que el “sensor inferior para depósito” detecta la esquina, al alcanzar este punto se
apagan los motores de movimiento y se activa el motor que controla el depósito de toquens,
una vez depositado el toquen se realiza un retroceso (que incluye correción de giro) hasta que
los sensores seguidores de línea determinan que se ha alcanzado la esquina nuevamente, al
llegar a esta punto se apagan todos los motores y termina la subrutina.
En el siguiente esquema se explica el proceso de mejor manera, dentro de el se hace uso de
los bloques “avanzar” y “retroceder” haciendo referencia al movimiento controlado descrito
anteriormente que incluye muchos de los elementos de la subrutina “mover”.
40
Figura 5.4 – Flujorama de orden “depositar toquen”
– Subrutina “Recoger toquen”: La subrutina recoger toquen casi igual a la rutina “Depositar
toquen” ya que ambos dispositivos funcionan con un motor similar, por lo que el único cambio
entre ambas es que el modelo recoge el toquen en la parte frontal del dispositivo, por esto el
primer movimiento debe de ser de retroceso, para saber cuando el toquen puede ser recogido
se utiliza el sensor “detector de toquen”.
El siguiente esquema explica a su cabalidad el proceso:
Figura 5.5 – Flujorama de orden “Recoger Toquen”
– Subrutina girar: Para girar al robot los microcontroladores deben dar al motor izquierdo la orden
de retroceder y al motor derecho la orden de avanzar, de tal forma que el movimiento
resultante es un giro a la izquierda sobre el eje del robot, durante este giro los sensores de
línea siempre se mantienen sobre las líneas indicadoras de trayectoria y sobre una esquina por
lo que su información no es relevante para el giro, en cambio se cuenta con el sensor en la
parte posterior (que nos sirve para posicionar el dispositivo de depósito durante la subrutina
“depósitar toquen”), que es en realidad de la misma naturaleza de los sensores detectores de
41
línea, por lo tanto este sensor podrá darnos la información necesaria.
Una vez activados los motores el sensor de toquen comienza detectando la línea original
donde se encontraba, posteriormente detecta que ya no hay línea, al momento que este
detecte nuevamente una línea se asume que el robot ha realizado un giro de 90°. A
continuación el esquema:
Figura 5.6 – Flujorama de orden “girar”
Por otro lado el R.A.S. puede responder a ciertas preguntas que corresponden a los sensores que
posee, estas preguntas se dividen en aquellas que son respondidas “en tiempo real”, es decir,
aquellas que son respondidas por el estado del sensor correspondiente en ese momento y en
aquellas que son respondidas a través de “registros” especiales.
Al igual que las ordenes el microcontrolador hace uso de subrutinas para poder responder a las
preguntas, estas se describen a continuación:
– Subrutina para responder preguntas con sensores: Las preguntas respondidas a través de
sensores son las siguientes:
– ¿Frente bloqueado?
– ¿Izquierda libre?
– ¿Derecha libre?
Estas son respondidas por el estado de los sensores correspondientes al momento de recibir la
pregunta, sin embargo como se verá en otros capítulos los sensores que corresponden a estas
preguntas deben ser activados para obtener una lectura de ellos, es por esto que en el
siguiente esquema se incluye la activación de los sensores:
42
Figura 5.7 – Flujorama de secuencia para contestar a preguntas
Dentro del bloque “confirmar información recibida” se activa nuevamente el sensor para
confirmar que la información que este presentó originalmente es la correcta, se ejecutará este
paso tres veces, si la información no puede ser confirmada con dos lecturas iguales
consecutivas entonces se considera que la información no es válida y se enviará un código de
error a la computadora.
43
45
CAPÍTULO 6
LA CIRCUITERÍA DEL R.A.S.
6.1 Introducción
El producto principal a ser desarrollado por el presente trabajo de graduación es el robot R.A.S.,
como su nombre lo indica este debe ser un dispositivo autónomo, capaz de ejecutar ordenes en
tiempo real, con cierta capacidad de adaptación y que funcione con su propia energía.
A lo largo del proceso de desarrollo y al ir aumentando los requerimientos lógicamente se fue
aumentando la complejidad de los circuitos por lo que fue necesario adoptar un diseño modular de
los mismos, llegando a poder diferenciar exactamente las partes que conforman al robot y que
unas interactúen con las otras de forma que trabajen como una sola.
Es por este diseño que el robot R.A.S. (producto de este trabajo de graduación) podrá seguir
siendo desarrollado en el futuro, por ejemplo, cambiándole la tarjeta de sensores o cambiando la
tarjeta de control de motores, incluso en el presente capítulo se explica cómo mantener la
estructura más básica del robot de tal forma que pueden cambiarse los transmisores y receptores y
toda la configuración de la tarjeta de control por lo que R.A.S. puede usarse como una herramienta
educativa para estudiantes de electrónica.
6.2 Requerimientos
Como requerimientos mínimos que el robot debe cumplir se tienen los siguientes:
Ejecutar las cuatro órdenes principales: mover, girar, recoger toquen y depositar toquen.
Comunicación full dúplex con el software Karel: esto se logra a través del modulo de
comunicación descrito en otros capítulos.
Informar a la computadora sobre errores encontrados en tiempo de ejecución.
Facilidad de uso.
Uso continuo de al menos 1 hora sin cambio de baterías y
Uso de rutinas que no dependan del tiempo de ejecución.
Como requerimientos secundarios se tienen:
Capacidad para responder ciertas preguntas sobre el entorno que rodea al R.A.S.
Poseer puntos de control e indicativos de buen funcionamiento.
Circuitos de control adaptables a diferentes dispositivos (no dependientes del hardware actual).
46
Uso eficiente de la energía.
Estética en los circuitos y buena presentación visual.
Se puede decir que la versión actual del R.A.S. cumple a cabalidad con todos estos
requerimientos.
6.3 El diseño modular del R.A.S.
El R.A.S. se compone de 4 tarjetas (módulos) principales:
Tarjeta de control: en ella están localizados los microcontroladores que sincronizan todo el
proceso, circuitería para que estos funcionen y algunas protecciones para los mismos, esta
tarjeta es “el cerebro” del R.A.S.
Tarjeta de comunicación inalámbrica: este componente, como su nombre lo indica, incluye el
transmisor y receptor de la señal proveniente del modulo de comunicación conectado a la
computadora y está construido de tal forma que module la señal proveniente de la “Tarjeta de
control” así como demodular la señal entrante para una correcta comunicación.
Tarjeta de sensores: como se explicará más adelante el R.A.S. posee diferentes tipos de
sensores, cada uno con un control y funcionamiento particular, sin embargo sus salidas son de
tipo digital y se han ajustado para su conexión directa con la tarjeta de control. En esta tarjeta
se ha puesto la circuitería necesaria.
Control de motores: esta tarjeta fue diseñada para los requerimientos de los motores de
avance del R.A.S. (Motores de corriente directa) pero es controlada a través de señales
digitales provenientes de la tarjeta de control.
6.3.1 La tarjeta de control
La tarjeta de control es la que proporciona las señales hacia los actuadores dependiendo de las
señales obtenidas en los sensores. En esta tarjeta es donde se encuentran la alimentación del
R.A.S., el switch de encendido, los microcontroladores, los reguladores de los niveles de voltaje y
seguidores de voltaje (AO), el control de los motores de recolección y depósito, así como borneras
que nos permitirán conectar las demás tarjetas; el diagrama eléctrico se muestra en la Figura 6.1.
47
Figura 6.1- Diagrama de la tarjeta de control del R.A.S.
Los microcontroladores QG08 trabajan a un voltaje no mayor a 3.3V para ello se han colocado
diodos Zener de 3V para regular el voltaje a la entrada de estos y así evitar dañarlos con
sobrevoltajes; además como protección para los QG08 se coloca un amplificador operacional
contenido en el integrado LM324 (mayor información consultar la datasheet incluida en el CD
adjunto en el presente trabajo) con la configuración como seguidor de voltaje. En la figura 6.2 se
muestra un amplificador operacional que con la salida realimentada directamente a la entrada
inversora constituye lo que se denomina un seguidor de voltaje (la salida es igual a la entrada).
48
Figura 6.2- Configuración de un AP como seguidor de Voltaje
El único camino a tierra para el voltaje de entrada es a través de la alta resistencia de entrada del
amplificador, de modo que el seguidor de voltaje hace una buena etapa de aislamiento entre la
fuente de voltaje y la carga.
También se incluye el control de los motores de recolección y depósito de toquen, los cuales están
controlados con el integrado L293B (mayor información consultar la datasheet incluida en el CD
adjunto en el presente trabajo) el cual está conectado a 9V y es un driver para 4 canales cuyas
ventajas son las siguientes:
El control de los Drivers es compatible con señales TTL es decir con 5 voltios (se habla de
señales lógicas).
Cada canal es capaz de entregar hasta 1A de corriente.
Posee una entrada de alimentación independiente que alimenta los 4 Drivers, es decir la
que requieren los motores.
Protección contra sobretemperaturas
Protección interna contra sobretensiones producidas por cargas inductivas
Alta inmunidad al ruido.
La alimentación de los canales del driver L293B está conectada a un transistor BD140 (transistor
PNP, mayor información consultar la datasheet incluida en el CD adjunto en el presente trabajo)
el cual es controlado por otro circuito integrado (el TL494, mayor información consultar la datasheet
incluida en el CD adjunto en el presente trabajo) que sirve para el control de la velocidad de los
motores de recolección y deposito de toquen; con este integrado se hace un PWM que es un
modulador de velocidad por ancho de pulsos y que básicamente consiste en enviar a los
terminales de control un tren de pulsos los cuales varían en mayor o menor medida el tiempo en
49
que se mantiene el nivel alto de esos pulsos, manteniendo la frecuencia constante mediante el uso
de una resistencia variable o potenciómetro, con esta forma de control la cantidad de corriente
sigue siendo la misma, la tensión no varía y en consecuencia el torque del motor se mantiene, que
es justamente lo que se esta buscando.
Motores-CC (Motores de Corriente Continua)
Los dos motores utilizados son de 3 a 5V DC y su consumo es de 50mA por motor
aproximadamente.
Son los más comunes y económicos, y pueden encontrarse en las tiendas de electrónica o en la
mayoría de los juguetes a pilas, constituidos, por lo general, por dos imanes permanentes fijados
en la carcasa y una serie de bobinados de cobre ubicados en el eje del motor, que habitualmente
suelen ser tres.
El funcionamiento se basa en la interacción entre el campo magnético del imán permanente y el
generado por las bobinas, ya sea una atracción o una repulsión hacen que el eje del motor
comience su movimiento.
Se hace uso de transistores 2N2222 (transistores npn, mayor información consultar la datasheet
incluida en el CD adjunto en el presente trabajo) para alimentar los módulos restantes.
¿Porque se usan los transistores?
Un transistor funciona como amplificador cuando la corriente de base oscila entre cero y un valor
máximo. En este caso, la corriente de colector es múltiplo de la corriente de base. Si aplicamos a la
base de un transistor una señal de corriente con una forma determinada obtendremos una
corriente de colector mayor y proporcional a la señal aplicada. Y de esta manera controlamos
grandes corrientes con señales de baja corriente aplicadas a la base del transistor.
Sistema de alimentación:
¿Cuál será su fuente de energía principal?
Al rescate vienen toda una gama de baterías que se pueden usar, casi cualquier batería recargable
ya sea de gel, NiCad, NiH, ion de litio como las usadas en los teléfonos celulares, etc., hoy en día
su costo ha disminuido tanto que podemos esforzarnos y comprar aquella que cumpla con las
expectativas de durabilidad y costo, pero como la finalidad es la simplicidad se hará uso del
clásico porta pilas para seis unidades “AA” de 1.5V, esto nos dará en total los 9 V necesarios para
50
alimentar al R.A.S., si se elige cualquier otra procuraremos que los voltajes que entreguen sean
cercanos a éste ya que se usa lógica TTL y algunos otros dispositivo que son poco tolerantes a
variaciones de voltaje cercanos al indicado, si se diera el caso de usar alguna batería de mayor
voltaje lo indicado es utilizar un regulador de voltaje de 9 Voltios.
6.3.2 Tarjeta de comunicación inalámbrica y Tarjeta de sensores
Como se puede ver estos dos módulos han sido impresos en la misma tarjeta para hacer uso
apropiado del espacio y así reducir el tamaño de la circuitería.
Esta etapa es la que se encarga de informarle al modulo de control lo que sucede a su alrededor,
así como también de comunicarlo con el modulo de control que se encuentra en la PC.
Aquí se encuentra el módulo de comunicación (recepción y transmisión), así como también el
circuito del Timer 555 (mayor información consultar la datasheet incluida en el CD adjunto en el
presente trabajo) con su configuración como astable que se usa para generar la señal a 40KHz
para la transmisión; además se encuentran todos los circuitos que controlan los 8 sensores que
posee el R.A.S. los cuales se mencionan a continuación:
Dos sensores seguidores de línea o detectores de esquina
Un sensor de toquen en bolsa
Un sensor de toquen inferior
Un sensor de alineación o giro del R.A.S.
Tres sensores de proximidad (frontal, derecha e izquierda).
51
COMUNICACIÓN INALAMBRICA
Transmisión y Recepción.
TECNOLOGIA INFRARROJA (IR)
Para hacer una breve descripción de lo que es una radiación infrarroja, imaginemos la luz del sol,
pues esta contiene todas las bandas de colores con las cuales se compone la luz blanca (conocido
como espectro de emisión de luz), ahora, en los extremos del espectro se encuentra la radiación
infrarroja (IR) y la ultravioleta (UV), ambas son imposibles de ver, es decir son invisibles, pero
están presentes y nosotros las vamos a poner en evidencia. En algunos casos una vez
establecida la comunicación entre emisor y receptor, es posible realizar una transmisión de datos.
Las comunicaciones inalámbricas son interesantes desde todos los puntos de vista y en todos los
ámbitos tecnológicos. El fin principal que persigue la Robótica Móvil es la creación de sistemas
completamente autónomos y un grado de autonomía puede ser la comunicación entendida en un
sentido amplio. Existen varias tecnologías que nos van a permitir el establecimiento de
comunicaciones inalámbricas del tipo de las mencionadas pero en este documento nos vamos a
centrar en las comunicaciones mediante infrarrojos que, por ejemplo, van a servir para enviar y
recibir señales al R.A.S. Las ideas que aquí se comentan también pueden utilizarse para la
construcción de sensores de detección de obstáculos sin más que cambiar la disposición y
colocación de los elementos emisor y receptor.
Recepción
Vamos a comenzar por definir y comentar la parte de la recepción de la señal infrarroja ya que, por
un lado, es sumamente sencilla de conectar a un micro controlador y, por otro, es la que nos va a
obligar a diseñar y ajustar los circuitos que necesitamos en la parte de la emisión.
Para la recepción vamos a utilizar un dispositivo que unifica en el mismo encapsulado el receptor
de luz infrarroja, una lente y toda la lógica necesaria para distinguir señales moduladas a una
determinada frecuencia. Concretamente, en este montaje utilizaremos los receptores
PL-IRM0101-3 (mayor información consultar la datasheet incluida en el CD adjunto en el presente
trabajo) que se activan cuando reciben una luz infrarroja modulada a una frecuencia de 40 kHz (el
haz infrarrojo se apaga y enciende 38000 veces por segundo). Esto los hace compatibles con un
gran número de mandos a distancia de electrodomésticos.
Sus características principales son:
1.-Se alimentan con un voltaje de 5 Volts.
2.-Incorporan un filtro óptico que sólo permite el paso de la radiación infrarroja centrada en el rango
de 900 NM.
52
3.-Incorporan a su vez un filtro electrónico lo cual permite la detección de un determinado ancho de
banda, la cual está centrada de 38 a 40kHz.
4.-Su tamaño es pequeño en comparación del circuito que tendríamos que realizar y por
consiguiente, sólo tres terminales de conexión.
5.- Presenta a su salida un estado alto si no hay presencia de señal, en caso de haber señal y que
ésta sea modulada su estado cambia a bajo.
6.- Su salida nos proporciona una señal sin ruido alternando entre estado alto y bajo, lo que lo hace
ideal para conectarla directamente a dispositivos de lógica TTL o CMOS.
Aunque el patillaje es diferente entre los distintos fabricantes y deberá consultarse en el datasheet
correspondiente antes de realizar cualquier conexión, en todos los casos nos vamos a encontrar
tres patas: una que conectaremos a Vcc, otra que lo haremos a tierra y una tercera, Vout, por la
que obtendremos diferentes niveles si se recibe o no la señal infrarroja.
El receptor infrarrojo se colocó viendo hacia arriba en la antena porque de esta forma podía captar
las señales infrarrojas provenientes desde arriba en cualquier dirección, con un ángulo no mayor a
30°, colocada a su alrededor. Cuando el receptor y el emisor están colocados de frente
directamente se midió que la señal se captaba desde una distancia de 3 a 4 metros y con un
ángulo de aproximadamente 30º. Para el emisor infrarrojo sólo tenemos que usar un modulador
que podemos implementarlo con un astable con 555 a una frecuencia cercana a 40 kHz.
Transmisión
Una vez resuelto el problema de la recepción, vamos a centrarnos en la otra parte del sistema: la
emisión. Ya hemos mencionado que los receptores utilizados son sensibles a la mayor parte de los
mandos de infrarrojos de electrodomésticos. Eso nos puede ayudar en la fase de pruebas de la
recepción e incluso utilizar el mando para enviar órdenes al robot.
Como se dijo antes, el objetivo es establecer una comunicación entre dos dispositivos, un robot
(R.A.S.) y un ordenador. Por lo tanto, vamos a utilizar un montaje basado en un circuito integrado
muy conocido y utilizado: el 555 en su configuración como astable (ver figura 6.3) para hacer que
el circuito funcione a una frecuencia de 40KHz. A continuación se muestra el circuito de
transmisión y recepción en la figura 6.4
53
Figura 6.3- Diagrama de la configuración del timer 555 como astable
Figura 6.4- Diagrama de circuitos y vista real del transmisor y receptor del R.A.S.
54
Seguidores de Línea
Colocar Toquen
Sensores.
Seguidores de línea:
Es el módulo más sencillo de implementar, su función principal es seguir una línea dibujada en una
mesa o el piso y que sea de algún color contrastante con el área circundante la cual puede ser una
línea negra sobre fondo blanco y puede presentar curvas o trayectos rectos que el R.A.S. deberá
seguir sin salir de la misma. La sencillez del mismo radica en que se necesita sólo dos sensores
para poder discernir hacia dónde es la orientación de avance con respecto de la línea y así el móvil
retorne a la ruta en caso de que se desvíe.
Los motores tienen que ser de corriente continua y habrá que fabricarles una reductora si no
disponen de ella para mover las ruedas, contra más grandes sean las ruedas, mas velocidad
alcanzara el robot, aunque no hay que pasarse con el diámetro de estas porque si no en las curvas
se saldrá de trayectoria, unos 6 cm. es lo ideal.
Los sensores están en la parte de debajo del R.A.S. e irán dispuestos mirando al suelo y a unos 3
o 4 mm de separación desde el suelo a la superficie del sensor y la separación entre ambos
sensores será para que quede dentro de la línea negra que vayamos a usar como trayectoria. Para
este caso se ha utilizado dos servos trucados de manera que queden solo los motores CC con la
reductora osea sin circuito de control pero se puede usar cualquier motor de CC de unos 5 o 6
voltios y que no consuma demasiado para no agotar las pilas o baterías demasiado deprisa. El
trazado lo podremos hacer sobre una cartulina blanca y para trazar las líneas usar cinta aislante
negra. La PCB de los sensores se muestra en la figura 6.5
Figura 6.5. Diagrama del circuito y vista real de los sensores seguidores de línea y el sensor de
colocar toquen.
55
FUNCIONAMIENTO
El funcionamiento es el siguiente, los “ojos ” de nuestro móvil serán el sensor EE-SY201 (mayor
información consultar la datasheet incluida en el CD adjunto en el presente trabajo) que aparte de
ser barato, en el mismo encapsulado se encuentra un emisor y un fototransistor el emisor se
polariza a través de una resistencia de 680 Ohmios y en el receptor el fototransistor se conecta vía
una resistencia y un diodo Zener para lograr los 3V que van al micro controlador, cuando el
receptor capte reflexión circulará a través de él una corriente proporcional al nivel de radiación
incidente, ese flujo de corriente provocará en el resistor una caída de voltaje donde el nivel de éste
dependerá si la reflexión la provoca una superficie clara u oscura.
Lógicamente, la mayor reflexión será presente cuando el sensor cruce por alguna área clara y en
donde se presente la línea oscura será menor, de esta manera podremos diferenciar cuando esté
sobre la línea y cuando se desvíe de su camino a seguir. Cuando tenga los dos sensores viendo
claro, los 2 motores estarán en marcha con lo que el robot avanzara en línea recta, ahora bien si el
llega a una curva y supongamos que el sensor izquierdo entra en la línea negra entonces
provocara que el motor izquierdo se desactiva con lo cual el robot girara a izquierda (como un
tanque) sacando de este modo el sensor izquierdo de la línea negra para el caso contrario pasa lo
mismo pero con el otro motor y sensor.
Calculo de la resistencia limitadora de corriente:
¿Por qué es necesaria la resistencia en serie con el LED?
Los LED por construcción soportan una determinada corriente a través de ellos, al añadir la
resistencia disminuimos la corriente que circula por ellos, adecuándola en cada caso a lo
especificado por el fabricante.
¿Cómo se calcula la resistencia?
Para calcular la resistencia nos basamos en la ley de Ohm y en que todos los componentes de
una misma rama (agrupación de componentes en serie), circula la misma corriente. Si colocamos
en serie una resistencia, esta limitará el paso de corriente, es decir, la corriente que pase por la
resistencia será la que pase por el LED.
56
Además hay que tener en cuenta que toda la tensión “sobrante” a de caer en la resistencia. Como
tenemos estos dos datos, la corriente que ha de circular por la rama y la tensión que ha de caer en
la resistencia, podemos utilizar la ley de Ohm, que nos dice la relación entre ambos valores, la
resistencia:
V=I*R => R=V/I
Siendo I la corriente que queremos que pase por el LED y V la diferencia de tensión entre la
alimentación y la tensión umbral del LED.
Para ello es necesario saber las tensiones umbrales típicas de los LED según su color:
Rojos = 1.8V
Verdes= 2.3V
Azules = 3.8V
Amarillos = 2.4V
Infrarrojos = 1.5V
Para nuestro caso se necesita de 1,8V a 4V y una corriente de 5mA a 15mA máximo por lo tanto
se utiliza el mínimo consumo en los LED y se toma 5mA para calcular la resistencia a utilizar, y el
voltaje oscila entre 3V y 3,5V entonces asumimos un promedio de 3,3V y al hacer el cálculo de la
resistencia nos da un valor de 660 Ohmios pero en el mercado la que mas se aproxima a esta es la
de 680Ohmios por lo tanto para los LED se ha utilizado resistencias de este valor.
Sensor de Toquen en bolsa
La ubicación de este sensor es en parte donde se acumulan los toquen en el R.A.S. y la función de
este es de informar al micro controlador la existencia de toquen en la bolsa o depósito del R.A.S.
(ver figura 6.6), el sensor es el mismo usado en los seguidores de línea por lo tanto los toquen
deben ser color blanco o de un material reflectivo para que este pueda detectar la presencia o
ausencia de estos.
Figura 6.6- Diagrama del circuito y vista real de sensor de toquen en bolsa
57
Sensor de Colocar toquen
Este se encuentra ubicado en la parte de abajo del robot al igual que los seguidores de línea (Ver
figura 6.5) con la diferencia que esta al centro del R.A.S. y sirve para detectar la presencia de
toquen si los hay en las esquinas del mundo Karel y así informar al micro controlador para que
este pueda recoger o depositar un toquen si no se encuentra ninguno en la esquina, debido a que
en el mundo físico del R.A.S. no puede depositarse toquen sobre toquen.
Sensor de alineación o giro de R.A.S.
Este sensor se encuentra ubicado en la parte de atrás del R.A.S. y está viendo hacia abajo a una
distancia de 3 o 4 mm y es el que se encarga de detener al robot a la hora de hacer giros a la
izquierda en las esquinas (ver figura 6.7). Cuando este detecta la cinta negra a la hora de un giro,
envía la señal al micro controlador para que este desconecte los motores y así se detenga
exactamente a los 90° en la esquina y luego quede alineado para seguir la línea a la hora de dar
un mover o un nuevo giro.
Figura 6.7- Diagrama del circuito y vista real del sensor de alineación o giro de R.A.S.
Sensores de proximidad
El propósito es detectar obstáculos sin la necesidad de tener un contacto físico con ellos, para eso
recurrimos a sensores infrarrojos por reflexión ( ver figura 6.8), llamados también Bumpers, para
referirnos a ellos lo haremos de la manera más sencilla y práctica, si bien se puede implementarse
con dispositivos de fácil adquisición la problemática es el ajuste de los mismos. En estos sensores
se ha usado el SHARP GP1U7 (mayor información consultar la datasheet incluida en el CD adjunto
en el presente trabajo) que es un receptor de IR el cual viene modulado a 40KHz y como emisor se
ha usado un IR que se ha modulado a una frecuencia de 40KHz.
La colocación es simple, lo recomendable es un emisor por cada sensor, colocarles cables para
que lleguen a los sensores y deben colocarse a su costado para que no tengan funcionamiento
58
errático, pueden intentarse colocarse con un ligero ángulo para poder restringir un poco más la
distancia. Para eso pueden hacer pruebas variando el ángulo y llegar a la colocación mas idónea,
en caso de colocarlos en paralelo la distancia de detección es alrededor de 15 a 20 cm, esto puede
variar por el tipo de sensor y emisor a usar.
Se Deben colocar en algún lugar estratégico del móvil, en la parte frontal del móvil con el detector
o “ventana” del sensor apuntando hacia el frente, y los otros dos uno a la izquierda y otro a la
derecha. Como el emisor está modulado cuando la señal se refleje en algún obstáculo el sensor
entregará una señal modulada como respuesta.
Figura 6.8- Diagrama de circuito y vista real de sensores de proximidad de R.A.S.
El circuito donde van conectados todos los sensores y que el controla el voltaje y corriente de
todos los sensores, también incluye la recepción de señales de todos los sensores para luego
enviarlas al circuito de control, donde se encuentran los microcontroladores se muestra a
continuación en la figura 6.9:
Figura 6.9- Diagrama de sensores del R.A.S.
GP1U7
LEDIR
59
6.3.3 Modulo de control de motores
En esta oportunidad se presenta la unidad de potencia, necesaria para poder traducir las señales
provenientes de los sensores en señales eléctricas que tengan la potencia suficiente como para
poder mover los motores de nuestro prototipo.
La mayor parte de los motores que se utilizan en un robot giran demasiado rápido y no tiene el
torque suficiente, es por eso que es recomendable o casi imprescindible utilizar una caja de
piñones reductora. Esta permite transformar un pequeño motor rápido, pero poco potente, en un
motor mas lento pero con mejor torque.
En esta etapa no sólo necesitamos que active a nuestros motores y proporcione la corriente
necesaria, también necesitamos las prestaciones para que pueda invertir el sentido de circulación
de corriente a través de nuestros motores y que pueda avanzar en ambos sentidos, para ello
recurrimos a las prestaciones del puente “H”
FUNCIONAMIENTO DE UN PUENTE “H”
El armar el circuito completo del puente “H” necesita algo más que cuatro transistores, necesita
resistencias limitadoras, también necesita diodos de protección puesto que los motores en sí son
una carga inductiva que provoca regresiones de voltaje que pueden dañar a algunos circuitos,
además de que los transistores deben estar debidamente seleccionados para el monto de corriente
necesaria, eso sin contar el espacio que ocuparán, el costo, etc.
Lo importante es simplificar el trabajo y no convertir al R.A.S. en un auténtico “Frankestein”, para
ello se recurre al CI L293B cuyo uso se ha extendido debido a su bajo costo y su ahora facilidad de
conseguirse en el mercado electrónico. En un único encapsulado doble en línea tiene dos circuitos
puente “H” completos, con la capacidad de poder manejar cargas de hasta 2 A, entrada de
habilitación (enable) de cada puente “H” que es útil para manejar PWM, diodos de protección
integrados, además de que acepta a su entrada niveles lógicos TTL de hasta 7V máximos de
amplitud.
Dependiendo de la configuración, es capaz de manejar dos motores independientes con su
respectivo control de inversión de sentido o hasta cuatro motores en un solo sentido de giro, como
podrán apreciar no sólo es versátil, sino que reduce en gran medida a nuestra etapa de potencia y
es simple de usar, y su costo es una fracción de lo que gastaríamos en armar a su contraparte de
manera discreta, prácticamente conéctese y úsese. Aquí se incluye el CI TL494 que se usa para la
modulación de velocidad por pulsos (PWM).
60
A continuación se presenta el diagrama de conexión del circuito de control en la figura 6.10:
Figura 6.10- Diagrama de potencia o control de motores de avance del R.A.S.
61
CAPÍTULO 7
CONSTRUCCIÓN Y SISTEMA DE CABLEADO DE LOS MODULOS DEL R.A.S.
7.1 Creación de las PCB (Printed Circuit Board)
Para esta parte del proyecto se utiliza el programa “PCB Wizard” el cual es un programa
diseñado para el ámbito educativo que permite crear esquemas de circuitos electrónicos y a partir
de estos obtener, de una manera sencilla, el diseño del circuito impreso a una o dos caras.
Además, es compatible con archivos generados con Crocodile Clips.
Pasos para el diseño de las PCB:
- Después de hacer las pruebas en las protoboard y cuando se tiene la seguridad del buen
funcionamiento del circuito se crean los diagramas en el programa LIVEWIRE tomando en
cuenta la potencia de las resistencias (ya que estas cambian el tamaño según su
potencia), al igual que los diodos Zener, transistores y todo elemento que incluya el
circuito.
- Al haber diseñado por completo el diagrama se hace uso del programa PCB Wizard, en
este se de la el tamaño de la placa (si se requiere doble cara también se puede hacer),
luego se ordenan los elementos dependiendo las necesidades y la ubicación que se
requiera para cada elemento; el siguiente paso es uno de los mas complicados que es el
“enrutar” las líneas en la placa.
- Luego de haber terminador el enrutamiento de líneas y el ordenamiento de todos los
elementos que se incluirán en la placa se procede a la impresión del circuito para
posteriormente transferirlo a las placas donde se diseñará y se soldaran los elementos
finales.
- Para hacer la transferencia haremos uso del método conocido como "Método de la
plancha", pues se utiliza una plancha convencional (de las empleadas para planchar la
ropa) para transferir el tóner de una impresión láser o fotocopia a una placa de circuito
impreso virgen. El papel utilizado para la transferencia fue el papel Couché que es el
utilizado para hacer revistas y es un papel blanco brillante.
Al finalizar el proceso se obtienen circuitos impresos de gran calidad; para el proyecto se
obtuvieron diferentes módulos de circuitos independientes que actúan en conjunto.
62
7.1.1 Modulo de control del R.A.S.
Como se menciono antes aquí es donde esta el control o “cerebro” del Robot Autónomo
Salvadoreño (R.A.S.).
Figura 7.1- Diagrama de pistas del módulo de control del R.A.S.
Para los módulos se utilizaron placas a dos caras, en la figura 7.1 las líneas verdes van en el lado
de arriba en la placa donde van los elementos y las líneas rojas van en la parte de abajo.
Después de haber soldado y colocado cada elemento en su lugar se obtiene como resultado la
siguiente placa con la dimensiones de 4,5 x2,5” (ver figura 7.2):
Figura 7.2- vista real de la placa del módulo de control
63
7.1.2 Modulo de sensores y transmisión del R.A.S.
Este es el modulo donde se encuentran los seguidores de línea, sensores de toquen, de giro, de
proximidad y la parte de transmisión y recepción del R.AS (ver figura 7.3). En él las borneras o
conectores están ubicadas de tal manera que al colocar esta placa sobre la placa de control estas
quedan en la misma dirección, esto se hace para evitar desordenes de cableado y facilitar el
armado a la hora de ensamblar los módulos.
Figura 7.3-Diagrama de pistas del módulo de sensores y transmisión del R.A.S.
La PCB final con todos sus elementes ordenados y terminada se muestra a continuación en la
figura 7.4 y sus dimensiones son 4,5 x2,5”:
Figura 7.4- Vista real del modulo de sensores y transmisión de R.A.S.
64
7.1.3 Modulo de potencia del R.A.S.
Esta es la parte de control de potencia donde se controla el movimiento de los motores ya sea
avance o giro, también se usa para desplazar el robot a la hora de recoger o depositar para alinear
los respectivos sistemas con las esquinas del “mundo”.
El diagrama del circuito impreso es el de la figura 7.5 y al igual que los anteriores las rutas verdes
son las que van en la parte de arriba de la placa (donde están los elementos) y las rutas rojas son
las que esta en la parte de abajo de la PCB.
Figura 7.5- Diagrama de pistas del módulo de potencia de R.A.S.
En esta placa se puede apreciar la diferencia del grosor de las rutas y esto se debe a que las rutas
de mayor espesor son las de mayor potencia, es decir, es donde circula mayor cantidad de
corriente y por lo tanto se necesita una mayor área de cobre.
La presentación final o real de este modulo es el de la figura 7.6 cuyas dimensiones son 4,5 x2,5”:
Figura 7.6- Vista real del módulo de potencia de R.A.S.
65
+5V
-Ref
PTA0
ColTok
LinIzq
Pfron
TokInf
Pizq
Pder
TokBolsa
LinDer
+5V
SeñalLed+5V
SeñalLed+5V
SeñalLed
+5V
Señal Led+5V
Señal Led +5V
Ref+
5VRef
+5V
SeñalProx
RefRxTx
IRPfron
IRPizq
IRPder
SeñalProx
SeñalProx
7.2 Ensamblado del R.A.S.
R.A.S. consta de tres módulos los cuales deben interactuar entre ellos de forma que trabajen como
un solo módulo. Para hacer el ensamblado de estos se siguen los siguientes pasos:
1. Se debe identificar y diferenciar claramente entre los tres módulos para poder comenzar el
ensamblado, después de tener claro y haber identificado cada placa o módulo se irán
armando uno después del otro como se indica en los siguiente pasos, también se incluye
una tabla con los colores de los cables; estos pueden cambiarse pero respetando el lugar
donde van a ir conectados.
2. El primer modulo es el “modulo de sensores” (ver figura 7.7), aquí es donde se debe
conectar el circuito de transmisión y recepción con el de control a través de las tres
primeras líneas que se encuentran a la derecha de la placa, luego se conectan los ochos
sensores que posee el R.A.S. (los conectores correspondientes a los sensores son todos
los que se encuentran a la derecha e izquierda del robot), cada sensor tiene diferentes
colores de cables para diferenciarlos entre ellos y a la vez están numerados los pines para
conectarlos adecuadamente, también se deben conectar los cables que se encuentran en
el centro de este que son con los que se alimenta desde el modulo de control.
Asimismo se deben conectar los cables que envían las señales de cada sensor a los
microcontroladores que se encuentran el en modulo de control; para facilitar las
conexiones el lector o lectora puede hacer uso del diagrama de conexión que se muestra
a continuación:
Figura 7.7 - Identificación de las borneras en el modulo de sensores y transmisión del R.A.S.
66
El cable utilizado para hacer la conexión es muy flexible y delgado, además se puede adquirir en
cualquier tienda electrónica de el país; este puede sustituirse por cualquier otro tipo de cable con
diferente color pero de preferencia que sea flexible ya que es mas fácil de manejar y tiene mayor
inmunidad a cortes por fatiga. En la tabla 7.1 se muestra el color correspondiente a cada conector.
CONECTOR COLOR DE CABLE
Tx Naranja con blanco
Rx Naranja con blanco
+5V de sensores Rojo con blanco
Led Blanco
Señal Verde claro
IR Pder, IR Pizq, IR Pfron Blanco con negro
Señal Prox naranja
Ref Café
PTA 0 Morado
+5V Rojo
-Ref Negro
Col Tok, Lin izq, Pfron, Tok inf, Pizq, Pder,
Tok bolsa, Lin der Verde oscuro
Tabla 7.1- Colores del sistema de cableado del modulo de sensores y transmisión del R.A.S.
3. Después de haber terminado las conexiones de los cables en el modulo de sensores el
siguiente paso es colocar el modulo de control del robot (ver figura 7.8) sobre el de
sensores; para evitar el contacto directo entre las placas y evitar cortocircuitos se hace uso
de pequeños tubos plásticos que se encuentran espaciados a una distancia de 2.2cm.
Las partes que comunican esta placa con la de sensores se encuentran ubicados en la
parte de atrás del robot, ahí se encuentran siete líneas que transmiten las señales de siete
sensores desde la placa correspondiente, la alimentación y otros dos cables que se
encuentran en el lado derecho van conectadas a las borneras del centro de la placa de
sensores, los tres conectores que se encuentran al principio de la fila derecha son los de
comunicación con la PC y vienen de la placa de sensores, por último los conectores de la
izquierda de esta placa son lo que van a ir conectados a la placa de potencia ( ver figura
7.9) o control de motores que es la última placa que se coloca en el R.A.S.
67
Para no cometer errores a la hora de conectar se deben verificar los colores de los cables
y números que corresponden a cada conector y además hacer uso del diagrama de control
y recordar que todos los conectores se encuentran en la misma dirección excepto el de
línea derecha y el de toquen inferior que se encuentran cruzados, es decir, el de línea esta
en dirección de el de toquen inferior y viceversa y los que alimentan la placa de sensores
que son los de la derecha de la placa de control.
En esta placa se encuentra el control de los motores de recolección y deposito, por lo que
los conectores correspondientes se encuentran uno a la derecha y el otro a la izquierda.
Para facilitar la conexión se hace uso del siguiente sistema de cableado que posee la
misma lógica que los otros módulos:
Figura 7.8- Diagrama de identificación de las borneras en el modulo de control del R.A.S.
+9V+ - PT
B2 PTB3
PTB5
PTB4
-Ref
LinIzq
Pfron
TokInf
Pizq
Pder
TokBolsa
LinDer
+5V+- -
Ref PTA0
ColTokRxTx
+9V
-
68
La siguiente tabla 7.2 muestra los colores de los cables utilizados actualmente y el conector en el
que deben colocarse:
CONECTOR COLOR DE CABLE
Tx Naranja con blanco
Rx Naranja con blanco
+9V Rojo
- (negativo) Negro
PTA 0, PTB2, PTB3, PTB4, PTB5 morado
+ motores (positivo) rojo
- motores (negativo) negro
+5V Rojo
-Ref Negro
Col Tok, Lin izq, Pfron, Tok inf, Pizq, Pder,
Tok bolsa, Lin der Verde oscuro
Tabla 7.2- Colores del sistema de cableado del modulo de control del R.A.S.
4. Finalmente se coloca la placa de potencia o control de motores, esta es la mas simple y la
menos confusa a la hora de conectar ya que solo se debe conectar las borneras de la parte
izquierda con el modulo de control, aquí es donde se encuentra la alimentación del circuito
y el control de los motores de avance.
5. Las borneras restantes que se encuentran en la parte de atrás son las que se utilizan para
conectar los dos motores de avance de R.A.S. y por ultimo las dos borneras que se
encuentran al centro de esta placa son las que alimentan a los motores a la hora de
ejecutar una acción. A continuación se muestra el diagrama de conexión en la figura 7.9:
69
+9V
PTB2
PTB3
PTB5
PTB4
-Ref
+9V
- +
-+
-
Figura 7.9- Diagrama de identificación de las borneras en el modulo de potencia del R.A.S.
La tabla de conexión de los cables para el circuito de potencia o control de motores es la
siguiente:
CONECTOR COLOR DE CABLE
+9V Rojo
- (negativo) Negro
PTB2, PTB3, PTB4, PTB5 morado
+ motores (positivo) rojo
- Motores (negativo) negro
- Ref Negro
Tabla 7.3- Colores del sistema de cableado del modulo de potencia del R.A.S.
7.3 Pruebas realizadas a circuitos utilizando una fuente de 9V con capacidad de 500mA:
- La corriente que consume el circuito de control sin sensores y sin el circuito de control de
los motores de avance es de 120 mA y el voltaje cae de 9V a 8.8V
- La corriente con el circuito de control de motores es de 160mA y el voltaje cae de 8.8V a
7.8V por lo tanto el consumo del circuito de control es de 40mA. Al poner carga al circuito
70
de control de los motores no afecta al circuito que lo alimenta, la corriente se mantiene en
160mA, esto se debe a que las fuentes del circuito de control y la de los motores, son
independientes.
- Al colocar tres sensores (toquen en bolsa, colocar toquen y toquen inferior) la corriente
aumenta hasta 170mA.
- Después de colocar los tres sensores de proximidad el consumo de corriente se
incrementa a 180mA
- Finalmente al colocar los dos últimos sensores que son los seguidores de línea, la
corriente que consume el circuito con todos los sensores conectados es de 190mA.
- Los motores solo funcionan a la hora de que el robot ejecuta ordenes y el consumo de
estos es de 30mA para cada motor de recolección y depósito y el de los motores de
movimiento es de 80mA por cada uno.
- Los Led infrarrojos que lleva la antena del robot solo funcionan al comunicarse con la
computadora de lo contrario estos se encuentran apagados, pero al entrar en
funcionamiento estos tienen un consumo de 140mA.
- Por lo tanto la corriente máxima que consume el R.A.S. se da a la hora de mover ya que
los dos motores de avance consumen en conjunto una corriente de 160mA; si a esto se le
añade el consumo de la circuitería del R.A.S. nos da un consumo total de 350mA, de lo
contrario el robot tiene un consumo mínimo de 190mA.
- El circuito que va en el lado de la computadora consume una corriente total de 60mA.
7.4 Materiales utilizados y casa proveedora
7.4.1 Modulo de potencia o control de motores:
Los elementos utilizados en este modulo, su cantidad, y la casa proveedora donde se adquirieron
se muestran en la tabla siguiente:
71
NOMBRE CASA PROVEEDORA CANT.
Resistencia 100Ohmios Casa Rivas 1
Capacitos de 10nF Casa Rivas 1
Conectores de 3 Casa Rivas 5
Transistor pnp BD140 Casa Rivas 1
Resistencia de 51 KOhmios Casa Rivas 2
Capacitor electrolítico 1microF Casa Rivas 2
Resistencia de 330Ohmios Casa Rivas 3
Potenciometro de 10KOhmios Casa Rivas 1
CI PWM TL494 Casa Rivas 1
CI L293B Casa Rivas 1
Placa de 2,5 x 4,5 “ Radio Parts 1
Estaño (yardas) Casa Rivas 10
Bases de 16 pines Casa Rivas 2
Percloruro(bolsita) Josnab 1
Papel couché (pliegos) Papelisa 3
Tabla 7.4 - Elementos utilizados en el modulo de Potencia
7.4. 2 Modulo de sensores y transmisión:
Los elementos utilizados en este modulo, su cantidad, y la casa proveedora donde se adquirieron
son los siguientes en la tabla siguiente:
NOMBRE CASA PROVEEDORA CANT.
Resistencia 1.3Kohmios Casa Rivas 1
Resistencia 100Ohmios Casa Rivas 6
Capacitos de 10nF Casa Rivas 2
Resistencia de 1Kohmios Casa Rivas 1
Conectores de 3 Casa Rivas 16
Transistor npn 2222A Casa Rivas 1
Capacitor electrolítico 47microF Casa Rivas 1
Capacitor electrolítico 1microF Casa Rivas 2
Resistencia de 330Ohmios Casa Rivas 10
Resistencia de 680Ohmios Casa Rivas 9
CI inversos 74LS04 Casa Rivas 1
72
CI AND 74LS08 Casa Rivas 1
Diodos Zener 3V Casa Rivas 8
Diodos 1N4007 Casa Rivas 3
Led Casa Rivas 1
Led Infrarrojo Electrónica 2001 1
Timer 555 Casa Rivas 1
Placa de 2,5 x 4,5 “ Radio Parts 1
Estaño (yardas) Casa Rivas 10
Receptor de IR Electrónica 2001 1
Bases de 14 pines Casa Rivas 2
Bases de 8 pines Casa Rivas 1
Percloruro(bolsita) Josnab 1
Tabla 7.5 - Elementos utilizados en el modulo de sensores y transmisión
7.4.3 Módulo de control del R.A.S.:
Los elementos utilizados en este modulo, su cantidad, y la casa proveedora donde se adquirieron,
se presentan en la tabla siguiente:
NOMBRE CASA PROVEEDORA CANT.
Resistencia 51Kohmios Casa Rivas 2
Resistencia 100Ohmios Casa Rivas 2
Capacitos de 10nF Casa Rivas 1
Resistencia de 1Kohmios Casa Rivas 3
Potenciometro de 10Kohmios Casa Rivas 1
Conectores de 3 Casa Rivas 10
Transistor npn 2222A Casa Rivas 1
Transistor pnp BD140 Casa Rivas 1
Resistencia de 51 Ohmios Casa Rivas 1
Capacitor electrolítico 1microF Casa Rivas 2
Resistencia de 330Ohmios Casa Rivas 6
Switch de encendido Casa Rivas 1
Switch Reset Casa Rivas 1
Microprocesador QG08 Importado 2
CI OPAM LM324 Casa Rivas 1
73
CI PWM TL494 Casa Rivas 1
CI L293B Casa Rivas 1
Diodos Zener 3V Casa Rivas 2
Diodos Zener 5V Casa Rivas 1
Placa de 2,5 x 4,5 “ Radio Parts 1
Estaño (yardas) Casa Rivas 10
Bases de 14 pines Casa Rivas 1
Bases de16 pines Casa Rivas 4
Percloruro(bolsita) Josnab 1
Cables (yardas) Casa Rivas 7
Tabla 7.6 - Elementos utilizados en el modulo de Control del R.A.S.
7.5 Soluciones a problemas y recomendaciones para desarrollar trabajos de electrónica
- Problema mecánico a la hora de recoger toquen debido a que el imán quedaba en posición
de recoger, la solución fue sugerir al grupo de mecánica que colocaran una contrapesa a
180 grados para que esto haga que el imán que en la posición de arriba y así evitar
recoger toquen innecesariamente.
- Falta de torque en los motores para poder mover al R.A.S. y alto consumo de corriente
(3A).
Solución: Primero se diseño una placa capaz de alimentar motores de hasta 4A haciendo
uso de transistores de potencia y diseñando un puente H para poder realizar la inversión
de giro de motores a la hora de los giros a la izquierda del robot, pero surgió el problema
de que las baterías debido al alto consumo de corriente debían ser demasiado grandes,
por otro lado si se colocaban baterías pequeñas estas durarían no más de 20 minutos en
uso; por lo tanto se opto por cambiar los motores por unos de bajo consumo de corriente
(60 mA) y agregar engranes para aumentar el torque y disminuir la velocidad de este. La
forma más practica de hacer eso fue comprar dos servomotores y modificarlos, eliminando
el circuito de control y dejando solo los motores DC así mismo fue modificado el sistema
de engranes eliminando el truncado ya que los servomotores tienen limite de giro y al
eliminar el “tope” este se vuelve con giro indefinido.
- Un problema que se presento al utilizar el PCB Wizard fue a la hora de imprimir las dos
caras de las PCB: para imprimir el lado de arriba de estas (donde van los elementos), el
programa manda la impresión invertida y no hay forma de resolver este problema utilizando
PCB Wizard; por lo tanto se hace uso de programas auxiliares ya sean de diseño grafico o
74
cualquier programa en el que se pueda invertir la imagen, y haciendo uso del “print screen”
o imprimir pantalla (para obtener el máximo tamaño de la imagen y no perder la calidad de
las rutas) se pega en el nuevo programa, se recorta la imagen y se lleva al tamaño original
para poder imprimirla y así quede del mismo tamaño que la cara del lado de debajo de la
PCB.
- Interferencia entre transmisión de la PC y el R.A.S. debido a que siempre estaban
encendidos los LED Infrarrojos ya que el estado de reposo para el protocolo RS-232 es de
uno y se producían fallos en la comunicación debido a que las señales siempre se
sobreponían una a la otra perdiendo los datos contenidos; para resolver este problema se
tuvo que hacer uso de los microprocesadores QG08, haciendo encender los led IR solo a
la hora de transmitir y que estén apagados a la hora de que estén recibiendo las señales
los receptores Sharp GP1U7.
- A la hora de quemar las PCB se debe usar suficiente percloruro para obtener un mejor
resultado de las PCB; esto ayuda a que las placas se quemen rápidamente ya que al estar
mucho tiempo sumergidas tienden a desgastarse demasiado y las pistas o rutas se
empiezan a adelgazar y es posible que se corten, además de que la corrosión continúa
después de quemadas las placas y dado que el percloruro se impregna demasiado en ellas
y continua haciendo su efecto de oxidación.
- Después de que las placas están completamente quemadas, la mejor forma de quitar el
tóner o tinta es usando un poco de gasolina ya que esta disuelve fácilmente el tóner, así
como la tinta permanente de los plumones que se utilizan para corregir o hacer pistas.
75
RECOMENDACIONES
- Hacer uso de tecnologías como la tecnología de montaje superficial. El montaje superficial
se presta para un alto grado de miniaturización de los circuitos, los elementos utilizados
están mecánicamente rediseñados para ser soldados directamente a la superficie de los
circuitos impresos y son mucho más pequeños que los elementos comunes, asimismo el
uso de componentes en ambos lados de las tarjetas permite una densidad de
componentes mucho mayor reduciendo el costo en materia prima y aumentando las tasas
de producción. Estos dispositivos pueden reducir su tamaño entre una cuarta a un décima
parte y su costo entre la mitad y la cuarta parte a la vez que su potencia disipada
disminuye muchísimo comparada con componentes comunes.
- Es recomendable hacer uso de baterías recargables para evitar el gasto continuo en las
baterías comunes, incluso puede agregarse al robot un paquete de baterías recargables y
un circuito que las sea capaz de cargarlas sin moverlas del robot
- Diseñar placas que utilicen otros métodos de conexión y que usen menos cables, ya que
el método utilizado en este proyecto, aunque permita la expansión posterior, implica
demasiados cables y los conectores tienen que conectarse uno a uno existiendo la
posibilidad de confundir las borneras o equivocarse a la hora de hacer las conexiones entre
placas, a la vez que es posible que existan falsos en los conectores al no apretar bien los
pernos o que estos se desconecten fácilmente por el movimiento.
- Actualmente los microcontroladores trabajan individualmente aunque se mantienen
coordinados entre sí, esto es deseable ya que así se logran mayores velocidades de
ejecución, se evita la falla generalizada del sistema y la flexibilidad es mayor, sin embargo
esto implica una programación más compleja de las rutinas y de la sincronización. Si el
objetivo es una programación más sencilla se recomienda el uso de un esquema de
“master y esclavo” al momento de programar los microcontroladores.
- Se recomienda un sistema de acceso al equipo de laboratorio diferente al actual ya que se
encontró que se puede pasar más tiempo buscando al encargado que el que pueda
considerarse aceptable a la vez que no existe una lista accesible a los estudiantes que
diga quien es el encargado de cada laboratorio. Un mejor acceso a los equipos permitiría
que los estudiantes se enfocarán más en sus pruebas que en acceder a los equipos para
realizarlas.
76
- Se recomienda que las tesis multidisciplinarias sean coordinadas por una solo director al
cual todos los grupos deban entregarle sus resultados, esto mejoraría la coordinación
intergrupal, aumentaría la velocidad del proyecto y se descubrirían los errores mucho más
rápido.
- Se debe considerar que para que un grupo funcione adecuadamente los integrantes de
este deben poseer conocimientos complementarios, sin embargo el nivel académico de
dichos integrantes debe ser similar para que ningún grupo entregue resultados inferiores
en su rama comparados con los de los demás grupos, haciendo que todo el proyecto se
vea de calidad inferior. Dado que la suma de las partes crea un producto la idea sería que
la creación de dichas partes sea de calidad equitativa entre todos los grupos.
- Diseñar y agregar los circuitos que indiquen si el RAS tiene batería baja para
reemplazarlas; así como también LED que indiquen y enciendan a la hora de transmitir o
recibir señales el robot.
77
CONCLUSIONES
Con todo lo trabajado en el proyecto se observó que el campo de aplicación de los robots
ya sean móviles o no, es muy extenso y un solo proyecto puede crecer tanto como la
creatividad, el conocimiento, el tiempo y el recurso económico lo permita, dejando el
presente proyecto como base para futuros proyectos de mayor complejidad y aplicabilidad
dentro la propia facultad.
La orientación del proyecto demostró que es posible la creación de nuevas tecnologías
utilizando elementos disponibles en el mercado local, así queda demostrado que no hay
excusa para ser un país que únicamente importa tecnología sino que se posee el potencial
necesario para desarrollarla.
El Robot Autónomo Salvadoreño se considera como la base para la creación de un
sistema complejo capaz de realizar funciones mucho más avanzadas que las que el
lenguaje Karel puede acceder, a la vez que su diseño modular lo posiciona como un
sistema flexible y adaptable a diferentes situaciones y no únicamente al entorno didáctico.
El sistema de transmisión por infrarrojos fue totalmente diseñado para la aplicación, sin
embargo puede aplicarse para transmisión de datos de forma serial a velocidades de 500
bits por segundo a distancias de hasta 5 metros. Su costo lo hace una opción a considerar
dado que otros sistemas de transmisión pueden ofrecer distancias similares a mucho
mayor precio.
78
79
REFERENCIAS ELECTRÓNICAS
http://es.wikipedia.org/wiki/Regulador_de_tensi%C3%B3n
http://www.unicrom.com/Tut_reg_con_zener.asp
http://www.doctronics.co.uk/555.htm
http://www.ucontrol.com.ar/wiki/index.php?title=Como_construir_tus_propios_PCB
http://es.wikipedia.org/wiki/Circuito_impreso#Serigraf.C3.ADa
http://www.x-robotics.com/robots_simples.htm
80
81
BIBLIOGRAFíA
Malvino Albert Paul [2000] Principios de Electrónica, 6ª Ed., Cap 5, pag 155 – 169; Cap. 6,7,8;
Cap. 18,pag. 712 – 716 y Cap 23, Pág. 973-985.
ANEXO ACARACTERÍSITICAS ELÉCTRICAS DEL QG08
CARACTERÍSITICAS ELÉCTRICAS DEL QG08
En la hoja de datos del microcontrolador QG08 se detalla a mayor profundidad cuales son las
características eléctricas del microcontrolador (puede consultarse dicha hoja de datos en el disco
adjunto al presente trabajo, en la carpeta “Freescale” dentro de la carpeta “datasheet”), sin
embargo se considera pertinente dejar constancia de aquellas más importantes.
Parámetro Símbolo Mínimo Típico Máximo Unidad
Voltaje de alimentación Vdd 1.8 3.6 Voltios DC
Temperatura -40 85 °CTabla A1 – Rango de operación del QG08
Parámetro Símbolo Mínimo Típico Máximo Unidad
Voltaje de rearmado (reset) Vpor 1.4 Voltios DC
Entrada 1 Lógico (Con Vdd mayor a2.3 Vdc)
Vih 0.7 x Vdd Voltios DC
Entrada 1 Lógico (Con Vdd entre 1.8y 2.3 Vdc)
Vih 0.85 x Vdd Voltios DC
Entrada 0 Lógico (Con Vdd mayor a2.3 Vdc)
Vil 0.35 xVdd
Voltios DC
Entrada 0 Lógico (Con Vdd entre 1.8y 2.3 Vdc)
Vil 0.30 xVdd
Voltios DC
Histéresis de entrada Vhys 0.06 x Vdd Voltios DC
Corriente de fuga Iln 0.025 1.0 Micro Amperios
Salida 1 Lógico Voh Vdd – 0.5 Voltios DC
Corriente de salida por pin Ioh 3 6 10 Mili Amperios
Corriente de salida total Ioht 60 Mili AmperiosTabla A2 – Voltajes y corrientes de operación del QG08
El usuario debe tener en cuenta todos estos datos al momento de utilizar el QG08 dentro de sus circuitos
respetando tanto mínimos como máximos de voltaje y corriente; de no hacer esto el microcontrolador puede
autoprotegerse hasta cierto límite, pero incluso esta protección no es infalible y puede dañarse.
A - 1
ANEXO BCONEXIÓN RECOMENDADA PARA EL QG08
CONEXIÓN RECOMENDADA PARA EL QG08
Aunque no es necesario conectar al microcontrolador QG08 de la forma descrita a continuación
esta es la que se recomienda en la hoja de datos (consultable en el disco adjunto al presente
trabajo en la carpeta “Freescale” dentro de la carpeta “Datasheet”) y evita muchos problemas a la
hora de poner a trabajar al microcontrolador.
Una explicación completa de cada elemento y el por qué de su ubicación debe buscarse
directamente en la hoja de datos.
Figura B1 – Conexiones recomendadas para el QG08
En la figura se puede observar que solo se mencionan los nombres de cada pin del QG08, a
continuación se presenta la ubicación física de cada uno de estos pines en la presentación DIP16
del microcontrolador:
B - 1
Figura B2 – Pines del QG08
B - 2