REPUBLICA DE VENEZUELA
UNIVERSIDAD "RAFAEL BELLOSO CHACIN"
FACULTAD DE INGENIERIA
ESCUELA DE ELECTRONICA
DESARROLLO DE UN SISTEMA ROBOTICO
PARA ELUDIR OBSTACULOS
TRABAJO ESPECIAL DE GRADO PARA OPTAR AL TITULO DE INGENIERO EN ELECTRÓNICA.
PRESENTADO POR:
CHACIN, MARCO C.I. 13.609.650
SOCORRO, ROSELI C.I. 13.471.435
ASESORADO POR:
MGS. HERMELINDA CAMACHO
ING. ANGEL VILLALOBOS
MARACAIBO, AGOSTO 1999
UNIVERSIDAD
Dr. Rafael Belloso Chacín
FACULTAD DE INGENIERIA ESCUELA DE ELECTRONICA
VEREDICTO
Nosotros los profesores, HERMELINDA CAMACHO, ANGEL VILLALOBOS y
PEDRO ROMERO, designados como Jurados Examinadores del proyecto de investigación:
"DESARROLLO DE UN SISTEMA ROBÓTICO PARA ELUDIR OBSTÁCULOS",
que presenta el bachiller: CHACIN, MARCO, titular de la Cédula de Identidad No. V-
13.609.650, nos hemos reunido para revisar dicho trabajo y después del interrogatorio
correspondiente, lo hemos APROBADO con la calificación de Veinte (20) puntos,
asignándole la mención Honorífica-Publicación, de acuerdo con las normas vigentes
aprobadas por el Consejo Académico de la Universidad Rafael Belloso Chacín, para la
evaluación de los trabajos Especiales de Grado, para el obtener el Titulo de: INGENIERO
EN ELECTRÓNICA.
En fe de lo cual firmamos, en Maracaibo, 13 de Agosto de 1999.
MGS. HERMELINDA CAMACHO ING. ANGEL VILLALOBOS
C.I. 3.328.682 C.I. 8.500.248
ING. PEDRO ROMERO C.I. 9.193.258
ING. PLACIDO MARTINEZ Decano de la facultad de Ingeniería
ii
UNIVERSIDAD
Dr. Rafael Belloso Chacín
FACULTAD DE INGENIERIA ESCUELA DE ELECTRONICA
VEREDICTO
Nosotros los profesores, HERMELINDA CAMACHO, ANGEL VILLALOBOS y
PEDRO ROMERO, designados como jurados de Examinadores del proyecto de
investigación: "DESARROLLO DE UN SISTEMA ROBÓTICO PARA ELUDIR
OBSTÁCULOS", que presenta el bachiller: SOCORRO, ROSELI, titular de la Cédula de
Identidad No. V-13.471.435, nos hemos reunido para revisar dicho trabajo y después del
interrogatorio correspondiente, lo hemos APROBADO con la calificación de Veinte (20)
puntos, asignándole la mención Honorífica-Publicación, de acuerdo con las normas vigentes
aprobadas por el Consejo Académico de la Universidad Rafael Belloso Chacín, para la
evaluación de los trabajos Especiales de Grado, para el obtener el Titulo de: INGENIERO
EN ELECTRÓNICA.
En fe de lo cual firmamos, en Maracaibo, 13 de Agosto de 1999.
MGS. HERMELINDA CAMACHO ING. ANGEL VILLALOBOS
C.I. 3.328.682 C.I. 8.500.248
ING. PEDRO ROMERO C.I. 9.193.258
ING. PLACIDO MARTINEZ Decano de la facultad de Ingeniería
iii
DEDICATORIA
Dedico este esfuerzo sobrehumano y sacrificio a mis Padres Ramón y
Camelia que siempre me han apoyado en los buenos y malos momentos de mi vida,
así como en mis más difíciles decisiones. De la misma manera a Mama Rosa y a
Patty igualmente por apoyarme y ayudarme siempre. Los quiero mucho a todos.
A mis abuelos Mama Alicia y Abuelo Arquímedes que siempre han creído
en mí.
A Tío Arsacio que me ha enseñado lo que verdaderamente valemos como
Venezolanos. Al resto de mi Familia que siempre está conmigo y pendiente de mí…
Especialmente a quien probablemente nunca lea esta dedicatoria, y que le
debo la persona que soy, porque me ayudó a crecer y a madurar antes de tiempo para
enfrentar los, hasta ahora, problemas más grandes de mi vida.
A mis amigos Roseli, María y Hector que me acompañaron en el final de mi
carrera y me hicieron una mejor persona.
A todos mis amigos, que me aguantaron muchas ausencias y faltas, todas por
la tesis, cuando muchas veces necesitaban a un amigo, a Juan Carlos "JMX", Ruben,
Sherry, David "Chepa", la Sra. Ana, Carlos "El Che", Jenny "La Doctora", Luis
"El Guachiman", Michel "Galápago", Javier, Cesar "El Cachi Rodríguez", Zalo
"se sale solo", Poin "El Pollo", Hanns "Humatruco", Juan José "el Doblado Livin'
La Vida Loca", Oscar Luis "Pescaderiux", Walfredo, Wendy, Daniel y
finalmente pero no menos importante a Yose que estuvo conmigo mucho tiempo
iv
durante la tesis y lamentablemente no pudimos estar juntos hasta el final para ver el
fruto de tanto esfuerzo y tiempo sacrificado. Todos están conmigo siempre…
Este es por ustedes…
Marco Antonio
v
A mi Fortaleza y Escudo,
En quien confió mi corazón,
Y fui ayudada,
Dios,
Quien me ha dado la Victoria.
Roseli
vi
AGRADECIMIENTO
Principalmente a Dios por traerme hasta a este punto de mi vida y permitir
que todas las personas que quiero estén conmigo en este momento de realización.
A mis Padres Ramón y Camelia que siempre me apoyaron en mi carrera, a
ellos les debo el estar donde estoy ahora…sin comentarios…Los quiero mucho a los
dos. A Mama Rosa, después de 20 años aún no existen palabras para expresar mi
agradecimiento.
A mi Tío Orlando por confiar en mí y ayudarme desinteresadamente.
A la Familia Socorro González por aceptarme durante este duro proceso y
especialmente a la Sra. Elida por estar siempre pendiente de nosotros en los buenos
y malos momentos. Gracias.
A mi compañera y amiga Roseli sin la cual nada hubiera sido posible. Gracias
por aguantarme todo este tiempo, dándome ánimo cuando ya no lo tenía y servirme
como pilar cuando las cosas no salían bien…Rochi si algo me enseñaste fue a confiar
en Dios y en mi mismo cuando la situación es adversa y no hay ninguna salida
aparente.
Especialmente a mis amigos Hector y María con quienes aprendí a vivir en
comunidad sin estorbarnos unos a otros, así como a ayudarnos mutuamente. Al
"Grand Swift Cherokee" por llevarnos y traernos fielmente, a Fermín que me
enseñó que el valor se lleva por dentro y no es necesario demostrárselo a nadie
mientras se mantienen claras las perspectivas del individuo.
vii
A Angel por confiar en nosotros ciegamente al principio y siempre aportar
ideas que en la mayoría de los casos sirvieron de inspiración para continuar con
nuestro trabajo. A Carlos por ayudarnos en la mayor medida posible siempre
atendiendo a nuestras ideas y muchas veces sacrificando su propio tiempo. A Maxy
Velazco por tratar siempre de facilitarnos las cosas sobretodo al principio. A la Prof.
Hermelinda que siempre nos guió por el buen camino queriendo siempre lo mejor
para nosotros, poniéndonos a trabajar y mostrándonos nuestros errores y horrores.
A todas las personas que de una manera u otra aportaron un granito de arena a
esta investigación, a todos muchas gracias.
Marco Antonio
viii
AGRADECIMIENTO
Principalmente a Dios, por ser mi Fuerza, Ayuda y Sustento siempre, por
mostrarnos la salida cuando no parecía haberla y por haberme concedido contar con
personas tan especiales para mí, quienes me apoyaron durante todo este tiempo.
A mis padres Elida y Eudoro, quienes me han brindado cariño, apoyo,
seguridad y amistad durante toda mi vida.
A mis hermanos, Susana, Giovanni, Lisbeth y especialmente a Eudo por
ayudarme siempre y de una u otra forma darme confianza en cada una de las metas
que emprendo.
A Marco, por compartir conmigo este trabajo con abnegación y constancia,
por soportarme durante este proceso impartiéndome seguridad y confianza, en fin por
ser el Mejor de los Mejores: Amigo y Compañero de Tesis. Gracias porque sin Ti
nada de esto hubiese sido posible y porque juntos hicimos que todo el esfuerzo
valiera la pena.
A mis amigos: Hector, mi amigo incondicional durante los últimos 5 años,
quien estuvo de aquí para allá conmigo Siempre. A María, por estar cuando la
necesito o no y por no dejarme desesperar. A Fermín, por preocuparse por mí y tener
siempre una palabra de apoyo. A Rina, por ser mi amiga y compañera estos cinco
años. Y por supuesto al "Grand Swift Cherokee", por llevarnos y traernos,
incondicionalmente. A todos ellos porque juntos llegamos hasta el final, unos
primeros que otros, pero siempre manteniendo la unión y confianza que nos
caracteriza. LOS QUIERO MUCHO.
ix
A la Sra. Camelia, por estar pendiente siempre de nosotros, a la hora que sea.
A Tío Jorge, por ayudarme desinteresadamente siempre que lo necesito.
A Angel, por confiar en nosotros y ofrecernos la oportunidad de desarrollar
está investigación.
A la Prof. Hermelinda, por motivarnos a dar lo mejor de nosotros y
ayudarnos a hacer de esta investigación lo que deseábamos.
A Carlos PIC, por prestarnos sus conocimientos en la mayor medida posible.
Finalmente a todos los que hicieron posible esta investigación. GRACIAS.
Roseli
x
Chacín, Marco; Socorro, Roseli. DESARROLLO DE UN SISTEMA ROBÓTICO PARA ELUDIR OBSTÁCULOS. Universidad Rafael Belloso Chacín. Facultad de Ingeniería. Escuela de Electrónica. Ingeniería en Electrónica. Maracaibo. 1999.
RESUMEN
Esta investigación tiene como finalidad el desarrollo de un Sistema Robótico semi-autónomo, construido a partir de un Carro Radio-Control adaptado, que basándose en estímulos del entorno es capaz de movilizarse evadiendo los posibles obstáculos del medio. Teóricamente el estudio se fundamenta en las áreas de Robótica sustentada en McKerrow (1991) y Craig (1989), Sistemas de Control respaldado en Maloney (1997) y Dorf (1989) y en Técnicas de Programación de Joyanes (1995) entre otros. Las acciones realizadas se enfocan al estudio y generación de nuevo conocimiento en la creación de Sistemas Robóticos, considerándose una investigación Tecnológica y Descriptiva para cuyo desarrollo se utilizó la metodología de Angulo (1992). El Hardware del Sistema Robótico está constituido por un conjunto de dispositivos que conforman un Sonar el cual recaba información de los obstáculos del entorno y la transmite vía FM a un PC para ser analizada por un Software de Control y Monitoreo, realizado en lenguaje de alto nivel, donde se obtiene un diagrama representativo al entorno del Robot y se generan las órdenes de acción, como es el movimiento o autopreservación mediante la alteración de diferentes variables internas del sistema. Los resultados de la investigación permiten concluir que un Robot semi-autónomo construido a partir de dispositivos adaptados puede movilizarse en entornos no controlados y desconocidos sin intervención de un operador.
xi
Chacín, Marco; Socorro, Roseli. A ROBOTIC SYSTEM DEVELOPMENT TO AVOID OBSTACLES. University Rafael Belloso Chacín. Engineering Faculty. Electronics School. Electronics Engineering. Maracaibo. 1999.
ABSTRACT This research has as purpose a semi-autonomous Robotic System Development, built from an adapted RC Car, which based on environment stimulus could be capable of move avoiding the possible environment obstacles. Theorically, this study is founded in the fields of Robotics sustained by McKerrow (1991) and Craig (1989), Control Systems supported by Maloney (1997) and Dorf (1989) and in Programming techniques by Joyanes (1995), and others. The actions are focused to the study and generation of new knowledge in the Robotics Systems creation, considering a technological and descriptive research for which development the Ángulo method was used. The Robotics System Hardware is made of a group of devices that conform a Sonar that gets information form the environment obstacles and then transmits the information via FM to a PC to be analyzed by a Control and Monitoring Software, made on a high level language, where a Robot's surrounding representative diagram is obtained and the action orders, like movement or self-preservation through different internal variables changes, are generated. The research results lead to conclusion that a semi-autonomous Robot built form adapted devices can move in non-controlled and unknown environments without an operator intervention.
xii
INDICE GENERAL
VEREDICTO ................................................................................................................ii
DEDICATORIA .......................................................................................................... iv
AGRADECIMIENTOS ..............................................................................................vii
RESUMEN...................................................................................................................xi
ABSTRACT................................................................................................................xii
INDICE DE FIGURAS..............................................................................................xiii
INDICE DE TABLAS ................................................................................................ xv
INTRODUCCION ........................................................................................................ 1
CAPÍTULO I: EL PROBLEMA.
A. PLANTEAMIENTO DEL PROBLEMA ............................................................... 4
B. OBJETIVOS DE LA INVESTIGACIÓN............................................................... 7
B.1. OBJETIVO GENERAL .................................................................................. 7
B.2. OBJETIVOS ESPECÍFICOS .......................................................................... 7
C. JUSTIFICACIÓN DE LA INVESTIGACIÓN....................................................... 8
D. DELIMITACIÓN DE LA INVESTIGACIÓN....................................................... 9
CAPITULO II: MARCO TEÓRICO.
A. FUNDAMENTACION TEÓRICA....................................................................... 11
1. ROBÓTICA. ......................................................................................................... 11
1.1.ESTRUCTURA DEL ROBOT ....................................................................... 13
1.2.CINEMÁTICA Y DINÁMICA ...................................................................... 31
1.3.TRAYECTORIAS .......................................................................................... 34
1.4.VISIÓN DEL ROBOT.................................................................................... 36
xiii
1.5.INTELIGENCIA ARTIFICIAL...................................................................... 42
2. MICROCONTROLADORES............................................................................... 43
2.1.MICROCONTROLADOR PIC16C84 .............................................................. 45
2.1.1 ARQUITECTURA................................................................................... 46
2.1.2 REGISTROS ............................................................................................ 52
2.1.3 TIPOS DE RESET ................................................................................... 57
2.1.4 INTERRUPCIONES. ............................................................................... 60
2.1.5 INSTRUCCIONES DEL PIC16C84........................................................ 62
2.2.MICROCONTROLADOR PIC16F84............................................................... 64
3. SOFTWARE ......................................................................................................... 65
3.1.PROGRAMACIÓN ........................................................................................ 70
3.2.PROGRAMACIÓN ESTRUCTURADA ....................................................... 73
3.3.LENGUAJES PASCAL Y TURBO PASCAL............................................... 75
4. SISTEMAS DE CONTROL ................................................................................. 80
4.1.MODOS DE CONTROL ................................................................................ 84
B. REVISIÓN DE LA LITERATURA ..................................................................... 89
C. DEFINICIÓN DE TÉRMINOS BÁSICOS .......................................................... 94
D. SISTEMAS DE VARIABLES.............................................................................. 98
CAPÍTULO III: MARCO METODOLÓGICO.
A. RECOLECCIÓN DE INFORMACIÓN ............................................................. 102
B. INSTRUMENTOS.............................................................................................. 103
C. TIPO DE INVESTIGACIÓN ............................................................................. 103
D. FASES DEL DESARROLLO. ........................................................................... 104
xiv
E. MATERIALES Y EQUIPOS.............................................................................. 107
CAPÍTULO IV: RESULTADOS DE LA INVESTIGACIÓN.
FASE 1: DEFINICIÓN DE LAS ESPECIFICACIONES ........................................ 113
FASE 2: ESQUEMA GENERAL DEL HARDWARE............................................ 114
FASE 3: ORDINOGRAMA GENERAL.................................................................. 120
FASE 4: ADAPTACIÓN ENTRE HARDWARE Y SOFTWARE ......................... 129
FASE 5: ORDINOGRAMAS MODULARES Y CODIFICACIÓN DEL............... 138
FASE 6: IMPLEMENTACIÓN DEL HARDWARE............................................... 138
FASE 7: DEPURACIÓN DEL SOFTWARE........................................................... 187
FASE 8: INTEGRACIÓN DEL HARDWARE Y SOFTWARE ............................. 189
FASE 9: CONSTRUCCIÓN DEL MODELO DEFINITIVO Y PRUEBAS FINALES
............................................................................................................................... 192
DISCUSION DE LOS RESULTADOS ................................................................... 194
CONCLUSIONES .................................................................................................... 197
RECOMENDACIONES........................................................................................... 201
BIBLIOGRAFÍA ...................................................................................................... 204
ANEXOS .................................................................................................................. 209
ANEXO A Fotografias del Sistema Robótico.................................................... 210
ANEXO B Diagramas de los Circuitos Implementados .................................... 218
ANEXO C Programas de los Microcontroladores ............................................ 221
ANEXO D Programa del Software de Control .................................................. 244
xv
INDICE DE FIGURAS
FIGURA No. 1: Marvin (Robot con Ruedas) ............................................................. 14
FIGURA No. 2: Ariel (Robot con Piernas)................................................................. 15
FIGURA No. 3: Curva Velocidad Vs. Voltaje de Control ......................................... 19
FIGURA No. 4: Diagrama Esquemático de un Motor DC ......................................... 21
FIGURA No. 5: Curva Velocidad Vs. Voltaje de Armadura ..................................... 23
FIGURA No. 6: Distribución y Denominación de Pines del PIC16C84 .................... 45
FIGURA No. 7: Memoria de Programa y Pila............................................................ 51
FIGURA No. 8: Proceso a Controlar .......................................................................... 81
FIGURA No. 9: Sistema de Control de Lazo Abierto ................................................ 82
FIGURA No. 10: Sistema de Control de Lazo Cerrado.............................................. 83
FIGURA No. 11: Jet Propulsion Lab's Sojourner....................................................... 89
FIGURA No. 12: Marvin ............................................................................................ 90
FIGURA No. 13: Smart-V .......................................................................................... 91
FIGURA No. 14: Pocketbot........................................................................................ 92
FIGURA No. 15: The Spirit of Bolivia....................................................................... 93
FIGURA No. 16: Diagrama General del Sistema..................................................... 115
FIGURA No. 17: Interface........................................................................................ 121
FIGURA No. 18: Diagrama del Direccionador ........................................................ 122
FIGURA No. 19: Diagrama del Posicionador .......................................................... 123
FIGURA No. 20: Diagrama del Selector de Variables A ......................................... 124
FIGURA No. 21: Diagrama del Selector de Variables B ......................................... 127
FIGURA No. 22: Diagrama del Microcontrolador del ADC.................................... 128
xiii
FIGURA No. 23: Software de Control ..................................................................... 129
FIGURA No. 24: Tarjeta Interna .............................................................................. 139
FIGURA No. 25: Distribución de Pines del PPI 8255.............................................. 140
FIGURA No. 26: Red Escalera................................................................................. 148
FIGURA No. 27: Amplificadores ............................................................................. 149
FIGURA No. 28: Transmisor FUTABA de 75 MHz................................................ 150
FIGURA No. 29: Interface Serial con el PC............................................................. 153
FIGURA No. 30: Transmisor y Receptor ................................................................. 156
FIGURA No. 31: Servomotor FUTABA S3003....................................................... 165
FIGURA No. 32: Multiplexor Analógico CMOS 4067............................................ 172
FIGURA No. 33: Celda Fotoconductiva................................................................... 173
FIGURA No. 34: Sensores de Distancia Montados en el Servomotor ..................... 174
FIGURA No. 35: Distribución de Pines del ADC0804 ............................................ 178
FIGURA No. 36: Transmisor de 418 MHz............................................................... 182
FIGURA No. 37: Control Electrónico de Velocidad ROOSTER............................. 183
FIGURA No. 38: Motor DC con los Capacitores ..................................................... 185
FIGURA No. 39: Conexiones del Sistema de Movimiento...................................... 186
xiv
INDICE DE TABLAS
TABLA No. 1: Instrucciones del PIC16C84 .............................................................. 62
TABLA No. 2: Configuración de Puertos del 8255.................................................. 131
TABLA No. 3: Puerto Serial COM1 ........................................................................ 132
TABLA No. 4: Configuración de bits del Transmisor y Receptor del PC ............... 132
TABLA No. 5: Configuración de bits del Direccionador ......................................... 133
TABLA No. 6: Configuración de bits del Posicionador ........................................... 134
TABLA No. 7: Configuración del PIC Selector A ................................................... 135
TABLA No. 8: Configuración del PIC Selector B ................................................... 136
TABLA No. 9: Configuración del PIC del Convertidor ........................................... 137
TABLA No. 10: Transferencia de Información entre el CPU y el PPI 8255............ 142
TABLA No. 11: Palabra de Control ......................................................................... 143
TABLA No. 12: Valores de Salidas Analógicas....................................................... 148
TABLA No. 13: Instrucciones del Robot ................................................................. 159
TABLA No. 14: Instrucciones del Posicionador ...................................................... 167
TABLA No. 15: Instrucciones del Módulo Accionador........................................... 169
TABLA No. 16: Relación Voltaje-Distancia de los Sensores .................................. 174
TABLA No. 17: Variación del Rango Analógico de Entrada .................................. 181
xv
INTRODUCCION
El aumento de la popularidad de los microprocesadores y microcontroladores
además de su drástica reducción de tamaño y costo en los años recientes han abierto
una gran cantidad de áreas para crear Robots inteligentes, lo que ha llevado a la
Robótica al estudio de la construcción de Robots capaces de realizar tareas precisas y
tomar decisiones adecuadas en distintas situaciones, comenzando con sistemas
manipulados hasta Robots autocontrolados y realizando estudios sobre capacidades
de desplazamiento para adaptarse a las necesidades de cada operación, bien sea en
ambientes controlados o un mundo real que cambia dinámicamente.
Por lo tanto para diseñar un Robot se debe poseer un compendio de
habilidades básicas en campos como la ingeniería electrónica, eléctrica, mecánica,
computación e inteligencia Artificial, debido a que los Sistemas Robóticos requieren
una combinación de elementos para ser efectivos como la sofisticación de la
inteligencia, el movimiento, movilidad, navegación y propósito.
Para atender la necesidad de conseguir este comportamiento sofisticado y
complejo, así como realizar una tarea determinada por medio de operaciones simples,
la presente investigación estudia los procesos concernientes al diseño y construcción
de un Robot semi-autónomo, el cual basándose en los estímulos de su entorno es
capaz de evadir los posibles obstáculos del medio. Radicando su importancia en la
posibilidad de establecer un sistema de navegación reactivo a estímulos del entorno
2
paralelamente a los sistemas de visión convencionales y un acercamiento a la
interacción de los sistemas de control digital basados en estímulos analógicos reales
con situaciones cambiantes que puede conducir al desarrollo de una mejor estructura
de programas que tomen decisiones acertadas en un mundo real.
Para lograr el objetivo planteado la investigación se estructura en cuatro
capítulos. El Capítulo I, El Problema, donde se trata el Planteamiento del Problema,
los Objetivos, la Justificación y la Delimitación de la Investigación.
El Capítulo II, Marco Teórico, comprende la Fundamentación Teórica
referente a Robótica, Microcontroladores, Programación y Sistemas de Control,
además de la Revisión de la Literatura, la Definición de Términos Básicos y el
Sistema de Variables.
En Capítulo III, Marco Metodológico, se describen los métodos, técnicas y
procedimientos aplicados en el desarrollo y diseño del Sistema Robótico.
Finalmente, El Capítulo IV, Resultados de la Investigación, expone el análisis
descriptivo de los pasos realizados en el diseño y construcción del hardware y
software, así como el funcionamiento del dispositivo.
De esta manera se presenta el trabajo especial de grado "Desarrollo de un
Sistema Robótico para eludir obstáculos".
CAPITULO I_______________________________________ EL PROBLEMA
A. PLANTEAMIENTO DEL PROBLEMA
El desarrollo de la tecnología le ha permitido al hombre mejorar su calidad de
vida mediante la construcción de sistemas que le dotan de comodidades, o bien le
disminuyen su carga de trabajo. Así mismo, la creciente adquisición de
conocimientos y técnicas le han llevado al desarrollo de mecanismos o dispositivos
que imiten su comportamiento para realizar actividades dentro de un proceso de
producción, así se manifestaron los primeros Robots.
Este proceso de imitación o replicación no solo significa copiar los
movimientos físicos de una criatura, puede también significar la emulación del
comportamiento, lo que implica el desarrollo de sistemas organizados entre sí que
permitan coordinar estos movimientos y funciones en una forma inteligente.
Para tal efecto surge la Robótica como una rama multidisciplinal de la
ingeniería que estudia la construcción de máquinas automáticas capaces de realizar
tareas precisas y tomar decisiones adecuadas en distintas situaciones. En un principio,
la Robótica, se centró en el desarrollo de manipuladores mecánicos para reproducir
los movimientos de manos y brazos realizados por un operario. Estos manipuladores
fueron seguidos por sistemas más sofisticados, capaces de realizar operaciones
repetitivas autónomas a partir de la sustitución del operador por un programa de
5
computador. Los investigadores y especialistas en el campo de la electrónica aplicada
a la Robótica, no estaban conformes con tener Robots que actuaran como brazos y
manos, así las investigaciones avanzaron, realizando estudios sobre Robots con
capacidades de desplazamiento que se adaptaran a las necesidades específicas de una
operación determinada.
Sin embargo, las acciones de estos Robots seguían siendo controladas por un
operador, por lo tanto se continuaron desarrollando investigaciones para lograr dotar
a los Robots de suficiente cerebro y autonomía para cumplir órdenes sin una
supervisión constante.
En consecuencia y recientemente, la atención ha sido dirigida a técnicas de
control basadas en el comportamiento, para lo cual es necesario la integración de
diversos elementos que no solo deben basarse en su apariencia física, sino en todo lo
que le permita relacionarse con su entorno, como lo es un sistema apropiado de visión
dotado por sensores, por medio del cual pueda disponer de la información sobre el
espacio que lo rodea, para percibir y responder al entorno en forma inteligente y
flexible a través del software adecuado, y una inteligencia artificial propia para que
piense y planifique sus movimientos para resolver la tarea y ejecute las órdenes.
Basados en estos principios han surgido los llamados Robots errantes o
Robots exploradores (Wandering Robots), los cuales son capaces de llevar ojos y
oídos a lugares desconocidos para el hombre, Robots que se han convertido en la
6
alternativa para la búsqueda de información o conocimientos. Cualquier dispositivo
como los Robots errantes, diseñado para moverse en un entorno no estructurado o
desconocido, necesita múltiples sensores y controles para evitar obstáculos y la
acción de un computador para procesar la información que les permite moverse.
Lo anteriormente expuesto revela que aún hay áreas por estudiar y mejorar en
cuanto a Robots se refiere, por lo cual es importante tomar en cuenta cada una de las
partes que conforman el Robot, tanto en hardware como en software y explotarlas al
máximo.
En cuanto al hardware cabe destacar que las dimensiones de un Robot le
pueden otorgar ventajas, ya que les permite accesar a sitios donde los humanos no son
capaces, sin embargo la reducción excesiva de tamaño le puede limitar en la acción
que ha de realizar, lo que ha llevado al estudio para el desarrollo de comunidades de
Robots, siendo entonces necesaria la elaboración de algoritmos de programación
complejos para que exista una coordinación entre ellos.
En este mismo orden de ideas, es usual tratar de buscar un hardware más
poderoso, programas más complejos y sensores más precisos en el intento de generar
un comportamiento robótico más sofisticado. Resulta factible creer que la clave para
el éxito en tal exhaustiva tarea reside en la filosofía de tratar de explotar todas las
posibilidades de los sistemas más simples. Así, no solo se obtiene lo mejor de hasta
7
los Robots más sencillos, sino que igualmente la experiencia ha mostrado que en
muchos casos, los más precisos y "mejores" Robots son los más difíciles de controlar.
Para atender la necesidad de conseguir este comportamiento sofisticado y
complejo, así como realizar una tarea determinada por medio de operaciones simples,
la presente investigación pretende estudiar los procesos concernientes al diseño y
construcción de un Robot semi-autónomo, el cual basándose en los estímulos de su
entorno sea capaz de responder adecuadamente, de manera que pueda evadir los
posibles obstáculos del medio. Fundamentado en el desarrollo de un sistema de visión
propio de los autores, creado a partir de dispositivos que serán adaptados para tal fin.
B. OBJETIVOS DE LA INVESTIGACIÓN
B.1. Objetivo General:
Desarrollar un Sistema Robótico para eludir obstáculos.
B.2. Objetivos Específicos:
• Analizar las diferentes teorías que conforman un Sistema Robótico con el fin de
seleccionar la alternativa a utilizar en su diseño.
8
• Definir las especificaciones del sistema de visión del Sistema Robótico para
lograr que interactúe con el entorno.
• Diseñar el sistema de visión del Sistema Robótico basándose en las
especificaciones previamente establecidas.
• Elegir los componentes que conforman el Sistema Robótico de acuerdo al diseño.
• Elaborar los circuitos de interfaz para manejar los puertos de salida del PC que
controlará el sistema.
• Armar el módulo de visión del Sistema Robótico sobre la base del diseño
realizado.
• Desarrollar el programa para los Microcontroladores y el PC para controlar el
Sistema Robótico.
• Construir el prototipo del Sistema Robótico para eludir obstáculos.
• Evaluar el Sistema Robótico para corregir las fallas que se presenten en su
funcionamiento.
C. JUSTIFICACION DE LA INVESTIGACIÓN
El desarrollo de un sistema Robótico para eludir obstáculos se justifica por las
siguientes razones:
9
A través de este sistema el Robot es capaz de interactuar con el entorno y
adaptarse al medio donde se encuentra sin la necesidad de un operador o controlador
y sin estar limitado a un ambiente controlado.
Además puede realizar diferentes operaciones por estar dotado de un software
flexible que puede ser adaptado para que el sistema tenga diferentes tipos de
comportamiento.
Implica el desarrollo de un nuevo sistema de visión o reconocimiento de masa
que ofrece una alternativa a las microcámaras de alto costo y al difícil procesamiento
de las imágenes en el computador.
Aporta una base a futuras investigaciones en busca de nuevas alternativas a
los inasequibles sistemas de visión convencionales ya implementados en el mercado
en Sistemas Robóticos.
D. DELIMITACION DE LA INVESTIGACIÓN
Esta investigación se desarrolló de manera genérica en el campo de la
Electrónica y Computación, específicamente en las áreas de: Robótica, Sistemas de
Control y Programación. La misma se llevó a cabo en el periodo comprendido desde
Septiembre de 1998 hasta Julio de 1999, en la Universidad Rafael Belloso Chacín.
CAPITULO II_____________________________________ MARCO TEÓRICO
A. FUNDAMENTACION TEÓRICA
1. ROBÓTICA
El vocablo Robot proviene del término checo robota (trabajo) y es utilizado
comúnmente para definir cualquier máquina o dispositivo (mecánico, eléctrico o
electrónico) capaz de realizar automáticamente diversas operaciones. Sin embargo, el
desarrollo de la robótica permite profundizar más en el empleo de este término
enfocando otras características como la precisión al realizar sus operaciones o al
tomar decisiones adecuadas en diversas situaciones, aún así no es fácil establecer una
definición formal ya que basados en estas mismas características diversos autores han
expuesto diferentes criterios, algunos más limitados que otros como Soska (1985) que
describe Robot como cualquier dispositivo que reemplaza la labor humana, en una
opinión más amplia McKerrow (1986) define Robot como una máquina que puede
ser programada para realizar una variedad de tareas.
Para obtener una explicación técnica de Robot los autores de esta
investigación consideran conveniente fusionar los conceptos expuestos por The
Robot Institute Of America (1986) y Lexis22 (1980:5040), definiendo Robot como el
nombre que se da a ciertos aparatos que son capaces de ejecutar movimientos
coordinados con apariencia automática de adaptación al ambiente, autocontrolados,
12
reprogramables, multifuncionales, diseñados para desplazar materiales, piezas,
herramientas o dispositivos especiales mediante movimientos programados variables
para el desempeño de diversas tareas.
Desde la perspectiva de la inteligencia artificial clásica y de acuerdo a lo
señalado por Brady (1985), la Robótica es la conexión inteligente de la percepción
para la acción; es una amplia especialidad con significante contenido
interdisciplinario participando en ella teorías de control, física, electricidad,
electrónica, mecánica, matemática, álgebra e informática. De igual manera envuelve
el diseño, la manufactura, programación de Robots, uso de Robots para resolver
problemas, el estudio del control de procesos, sensores, los algoritmos usados en
humanos, animales, máquinas y la aplicación de ese control de procesos y algoritmos
para el diseño de Robots.
En una manera más general la robótica comprende un conjunto de estudios y
técnicas destinadas a fabricar sistemas capaces de desempeñar funciones motrices o
intelectuales en sustitución del hombre.
Tal como se expone en los párrafos anteriores, la principal diferencia entre el
Robot y otras máquinas es su carácter multifuncional, es decir, un mismo Robot
puede realizar diferentes tareas dentro de una determinada región del espacio,
destacándose por la autonomía operativa y el parecido de las tareas realizadas con las
propias de los seres humanos.
13
1.1. ESTRUCTURA DEL ROBOT
Un Robot requiere la combinación de varias piezas integradas para
desempeñar sus funciones, por su parte autores como Barrientos, Peñín, Balaguer y
Aracil (1996); McKerrow (1991); Craig (1989); Angulo y Avilés (1989); Groover,
Weiss, Nagel y Odrey (1989); Fu, González y Lee (1988), dividen la estructura de los
Robots en: configuración mecánica, transmisiones y reductores, fuentes de
movimiento, sensores y efectores finales.
Atendiendo a estas consideraciones, Mecánicamente un Robot está formado
por una serie de elementos unidos mediante articulaciones que permiten un
movimiento relativo entre cada dos elementos consecutivos. El empleo de diferentes
combinaciones de articulaciones da lugar a diferentes configuraciones, con
características a tener en cuenta tanto en el diseño y construcción del Robot como en
su aplicación, la estructura mecánica de un Robot debe estar diseñada para darle la
forma y sostener a los demás componentes que necesita para su funcionamiento y
puede estar construida con materiales tales como cartón, madera, plástico, algún
metal o la combinación entre ellos.
La forma de los Robots son tan variadas como la imaginación lo permita,
como las plataformas, humanoides, insectoides y con ruedas, estos en su mayoría, son
aparatos que se desplazan de un sitio a otro para lo cual pueden existir diferentes
14
medios de locomoción. El más utilizado es el de las ruedas (Figura No.1) y le siguen
en importancia las piernas y las orugas o bandas. Las ruedas empleadas en los Robots
pueden tener varias formas y se fabrican de caucho o de plástico, estas se pueden unir
directamente a los motores si estos tienen el mecanismo reductor incorporado o por
medio de poleas, bandas o cadenas.
Figura No. 1: Marvin (Robot con Ruedas)
Fuente: www.-robotics.usc.edu (1998-11-02)
Con referencia a los Robots con piernas, como el que se muestra en la Figura
No.2, se puede inferir que pueden recorrer áreas complejas. En suelos suaves las
piernas son más eficientes que las ruedas, ya que éstas pueden transferir mayor
potencia a la superficie por caballo de fuerza que un vehículo con ruedas, dichas
piernas se pueden fabricar de metal, madera o plástico. Las orugas proporcionan otra
forma de locomoción diferente a las antes mencionadas, estas permiten al Robot
15
adaptarse a cierto tipo de superficies o a lograr un mejor agarre en ellas y se fabrican
generalmente de caucho.
Figura No. 2: Ariel (Robot con Piernas)
Fuente: www.isr.com (1998-11-02)
En algunos casos las fuentes de movimiento manejan directamente los medios
de locomoción de los Robots. Pero en muchos otros, hay una interface o Medio de
Transmisión entre estos dos elementos que se utiliza para aumentar la fuerza o para
cambiar la naturaleza del movimiento, por ejemplo para convertir movimiento
giratorio en movimiento lineal o viceversa, o para cambiar el ángulo de giro de
horizontal a vertical, el sistema de transmisión no debe afectar al movimiento que
transmite y debe ser capaz de soportar un funcionamiento continuo a un par elevado,
a ser posible en grandes distancias. Uno de los sistemas más utilizados es el de los
engranajes o piñones que reducen la velocidad y aumentan la fuerza o torque, de estos
sistemas hay diferentes tipos, desde el mínimo con dos engranajes hasta las cajas de
16
transmisión o cajas de engranaje. También está el sistema de transmisión por fricción,
en el cual las dos partes se unen directamente logrando un efecto similar al de los
engranajes pero con la posibilidad de fallar en el agarre en un momento dado.
El sistema de engranajes, básicamente reduce el número de vueltas o de
revoluciones que entrega el motor hacia una rueda, por ejemplo este mecanismo,
además de reducir la velocidad, aumenta la fuerza otorgándole a las ruedas y por lo
tanto al Robot, una mayor potencia que depende del peso que se deba manejar; en la
mayoría de los casos un solo engranaje no es suficiente para obtener la baja velocidad
y la fuerza que se requiere. Por lo tanto, se utiliza un conjunto de varios engranajes
llamado caja de reducciones.
Así mismo existen Reductores capaces de ajustar el torque y la velocidad de
la salida de las fuentes de movimiento a los valores adecuados para el movimiento de
los elementos del Robot, hay casos en el que el eje del actuador se conecta
directamente con la carga o articulación, sin la utilización de un reductor intermedio,
a este proceso se le llama accionamiento directo.
De acuerdo a Barrientos, Peñín y otros (1997:24), los Reductores tienen sus
inconvenientes como el juego angular, rozamiento o disminución de rigidez del
accionador, que puede impedir la precisión y velocidad requeridas, mientras que el
accionamiento directo permite un posicionamiento rápido y preciso, aumento de la
controlabilidad del sistema y simplificación del sistema mecánico.
17
Las Fuentes de Movimiento son unas de las principales partes de los Robots,
la más utilizada es el motor eléctrico en sus diferentes variedades. Estos, en general,
son aparatos que convierten la energía eléctrica en energía mecánica rotacional que se
utiliza para darle movimiento a ruedas y otros medios de locomoción. En robótica se
utilizan diferentes tipos de motores tales como los motores comunes de corriente
continua (CC o DC), los servomotores y los motores paso a paso.
Los Motores de Corriente Continua o de imán permanente vienen en
muchas formas y tamaños, estos se seleccionan dependiendo de las necesidades del
Robot en cuanto a fuerza y velocidad. Las principales características que tiene un
motor de este tipo son su voltaje de trabajo (3V, 6V, 9V, 12V, etc.), su velocidad
expresada en revoluciones por minuto (RPM) y su fuerza o torque. Dependiendo de
esto se deriva también su tamaño y su consumo de corriente en amperios o
miliamperios.
Hay otro tipo de motores llamados Servomotores que utilizan el principio de
la realimentación para lograr el control sobre el ángulo de giro del eje, esto es muy
importante ya que en muchos casos no se requiere que los motores de un Robot giren
continuamente sino que puedan girar constantemente algunos grados hacia atrás o
hacia delante, para ello se detecta la posición por medio de un sensor de giro
conectado mecánicamente al eje el cual trasmite la información a un circuito que
controla el movimiento.
18
En concreto, un Servomotor es un motor auxiliar que se emplea para
amplificar un esfuerzo relativamente pequeño y obtener un trabajo considerable, en
esta clase de motores pueden distinguirse tres tipos diferentes: los servomotores AC,
los servomotores DC y los servomotores controlados digitalmente.
Los Servomotores AC son motores que poseen barras conductoras delgadas
en el rotor, por lo que la resistencia del conductor es mayor, y están constituidos por
un devanado principal y un devanado de control. En la gran mayoría de los sistemas
de seguimiento (cuando la variable que está siendo monitoreada y corregida es la
posición física de un objeto), el servomotor AC no es conmutado entre el encendido y
el apagado, en su lugar se trabaja de la siguiente forma: el voltaje aplicado al
devanado de control, VC, es tomado de la salida de un amplificador, la entrada de este
es el voltaje de error, Ve, que depende de la distancia del objeto de su posición
deseada.
El devanado fijo siempre tiene potencia aplicada por una fuente de AC de
voltaje fijo, en este caso, hay un capacitor introducido en serie con el devanado fijo
para desfasar su corriente unos 90 grados. Si la diferencia entre la posición real y la
deseada es grande, Ve es grande y en consecuencia VC será grande, y la corriente del
devanado de control será grande también, esto ocasionará que el servomotor funcione
a alta velocidad. La relación entre la velocidad de rotación y el voltaje de control se
muestra a continuación:
19
Figura No. 3: Curva Velocidad Vs. Voltaje de Control
Velocidad de Estado Estable (r/min)
Para un torque constante
VC
Fuente: Maloney, T (1997:432)
Como se observa, a medida que disminuye la diferencia entre la posición real
y la posición deseada, el voltaje de error Ve también disminuye, por tanto VC
disminuye, reduciendo así la corriente del devanado de control y haciendo que el
motor funcione a menor velocidad.
Cuando la posición del objeto es precisamente correcta, el voltaje de error Ve
disminuirá a cero y el amplificador no tendrá señal de entrada, por lo que VC también
ira a cero.
20
La curva del motor muestra que el motor se detiene cuando VC=0, por lo que
el objeto detendrá su movimiento cuando llegue a la posición deseada, por supuesto
el servomotor debe detenerse cuando VC llegue a cero.
En el control de seguimiento, se desea producir mucho torque a bajas
velocidades para que el motor pueda acelerar con rapidez el objeto que se va a
posicionar. Por otra parte, es mejor que la capacidad de producción de torque de
motor se reduzca a bajas velocidades, pues hace menos posible que el motor
sobrepase su marcha. En pocas palabras, es menos posible que el objeto controlado
rebase el punto deseado y tenga que retroceder.
A pequeños voltajes de control (significando que el objeto controlado se
acerca a la posición deseada) el servomotor puede ejercer de hecho un torque
invertido en su eje. Esto es útil en la prevención del sobrepaso, porque si el objeto
tiene una inercia grande, puede tender a deslizarse más allá de la posición deseada
aún cuando el servomecanismo no ejerce fuerza motriz en absoluto. Es decir, en un
caso que comprenda una alta inercia y una baja fricción, el servomotor podría estar
completamente desconectado de las líneas de potencia cuando el objeto controlado
aún estuviera a alguna distancia de la posición deseada, y el objeto no sería capaz de
detenerse a tiempo.
Sin embargo, hay algunos sistemas de seguimiento que requieren un motor
DC como dispositivo corrector final. Esto generalmente ocurre cuando el objeto en
21
posición es muy grande. Al posicionar un objeto de gran masa, el motor
necesariamente debe tener un régimen de potencia alto. Los Servomotores AC de alta
potencia presentan problemas de sobrecalentamiento de los conductores del rotor,
dada la necesidad de hacer alta la resistencia de los mismos, por tanto, los sistemas de
seguimiento que suministran grandes cantidades de potencia normalmente usan
motores DC.
Un Servomotor DC tiene dos devanados independientes que son el devanado
de campo, colocado en el estator de la máquina, y el devanado de armadura, colocado
en el rotor de la máquina. Ambos devanados están colocados en un suministro de
voltaje de DC. En muchas aplicaciones de motor en derivación de DC, los devanados
pueden estar conectados en paralelo (derivación) y ser manejados por la misma fuente
de DC, pero en una aplicación de seguimiento, los devanados son manejados por
fuentes de DC separadas. Esta situación se ilustra en la figura:
Figura No. 4: Diagrama Esquemático de un Motor DC
Fuente: Maloney, T (1997:447)
22
El devanado de campo está conectado al suministro de voltaje etiquetado VF y
el devanado de la armadura está conectado a la fuente de voltaje de DC etiquetado
como VA. La velocidad de estado estable puede ser controlada variando VF o VA. De
allí que en muchos sistemas de seguimiento modernos, el ajuste se hace a VA, el
voltaje de alimentación de la armadura.
La capacidad de producción de torque de un servomotor de DC es mayor a
bajas velocidades que a altas velocidades para un determinado voltaje de armadura
VA aplicado, esto permite que el motor acelere la carga (el objeto a posicionar)
rápidamente de su posición estática.
La curva torque - velocidad de la figura, muestra que, a medida que el objeto
se acerca a la posición deseada y VA se reduce, el motor de DC es capaz de entregar
un torque invertido para desacelerar la carga si la velocidad de aproximación es alta,
esto es posible, porque los devanados de la armadura del motor comienzan a actuar
como un generador bajo esta condición, la corriente en los conductores de la
armadura interviene la dirección (suponiendo que el suministro de voltaje en la
armadura es capaz de disipar corriente), y la corriente invertida crea un torque
invertido.
23
Figura No. 5: Curva Velocidad Vs. Voltaje de Armadura
Velocidad de Estado Estable (r/min)
Para un torque constante
VA
Fuente: Maloney, T (1997:447)
Por tanto el motor de DC en derivación satisface los requisitos de un buen
servomotor. Tiene un torque alto a bajas velocidades, y tiene un efecto de
amortiguación integrado, en el que una velocidad de aproximación alta produce una
tendencia de frenado automático.
Los Servomotores Controlados Digitalmente se caracterizan por su alta
eficiencia y pequeño tamaño, por lo cual han sido tomados como una de las
herramientas más aplicadas a la robótica. Estos compactos, resistentes y duraderos
motores, internamente están constituidos por un tren de engranajes, un engranaje
principal de salida y un potenciómetro posicionador, estos elementos los hacen
perfectos para Robots pequeños, ya que su sistema electrónico y de control mecánico
están construidos en su interior. Una línea de salida proveniente de un
24
microcontrolador puede manejar a los servomotores en cualquier dirección, el alto
torque y baja velocidad de estos servomotores hace que las aplicaciones robóticas
sean más exactas.
Una de las marcas mas reconocidas en estos servomotores, es FUTABA, estos
servomotores son controlados por PWM (Pulse Width Modulation) o Modulación
por Ancho de Pulso. Los pulsos de control necesarios para su enclavamiento son 50.
El ciclo de trabajo y ancho de pulso puede variar desde 0.35 ms hasta 2.25 ms. La
posición del servomotor se corresponde a la duración del pulso. En estos
servomotores los ángulos rotatorios están limitados, es decir, su giro es de
únicamente 180°.
El Motor Paso a Paso ha ido ganando popularidad en aplicaciones de
robótica, debido a su propiedad de poder mover el eje, con un movimiento angular
preciso. Si además de su movimiento o giro parcial, se agrega un engranaje reductor,
se logran avances exactos del orden de décimas o centésimas de grado lo que los
hacen adecuados para aplicaciones de precisión. Estos motores se encuentran
normalmente en diferentes partes de los sistemas de cómputo tales como impresoras,
unidades de discos duros y flexibles, plotters, scanners, etc.
Hay otras fuentes de movimientos que se pueden utilizar en los Robots como
los cilindros neumáticos e hidráulicos a pequeña escala y los músculos eléctricos. Los
25
primeros son dispositivos que se alimentan con aire o algún fluido, para lograr un
movimiento lineal de gran poder basado en el principio mecánico del pistón, el
segundo se basa en un metal especial llamado Nitinol, desarrollado en el U.S. Naval
Ordnance Laboratory por un equipo dirigido por W.J. Buehler. Este material, similar
en apariencia a un alambre de acero o una cuerda metálica de guitarra, se contrae con
gran fuerza cuando se le aplica un voltaje y luego vuelve a la posición original lo que
le da un efecto de memoria llamado Shape Memory Effect (SME).
Una vez que se logran integrar todas las piezas mencionadas en los párrafos
anteriores, es necesario conseguir que el Robot realice su tarea con la adecuada
precisión, velocidad e inteligencia, para esto será preciso que tenga conocimiento
tanto de su propio estado como de su entorno, esta información la obtiene utilizando
transductores que transforman una variable física de interés en otra, estos dispositivos
son llamados Sensores, los cuales, paralelamente, se utilizan como componentes
integrales del sistema de control de realimentación de posiciones del Robot.
Los datos relacionados con su estado los consigue con los sensores internos,
mientras los que se refieren al entorno (alcance, proximidad, contacto), se adquieren
con los sensores externos. El empleo de mecanismos de detección exteriores permite
a un Robot interaccionar con su ambiente de una manera flexible, un Robot que
puede ver y sentir es más fácil de entrenar en la ejecución de tareas complejas
mientras que, al mismo tiempo, exige mecanismos de control menos estrictos que las
máquinas preprogramadas.
26
Los Sensores de Proximidad son capaces de detectar la presencia de un
objeto dentro de un radio de acción determinado, esta detección puede hacerse con o
sin contacto del objeto, estos sensores son utilizados como auxiliares de los
detectores de posición, para indicar la presencia de un objeto dentro de un intervalo
de distancia especificado. En condiciones normales, los sensores de proximidad se
utilizan en robótica para un trabajo en campo cercano en relación con la forma de
agarrar o de evitar un objeto.
Un tipo de sensor que se emplea en la Robótica para la detección de objetos y
cálculo de distancias es el Sensor Ultrasónico, cuyo elemento básico es un
transductor electroacústico, y se basa en la emisión de un pulso de ultrasonido cuyo
lóbulo, o campo de acción, es de forma cónica. Midiendo el tiempo que transcurre
entre la emisión del sonido y la percepción del eco se puede establecer la distancia a
la que se encuentra el obstáculo que ha producido la reflexión de la onda sonora,
mediante la fórmula:
2Vxtd =
Donde V es la velocidad del sonido en el aire y t es el tiempo transcurrido
entre la emisión y recepción del pulso. Numerosos Robots móviles han utilizado estos
sensores para realizar tareas de navegación como, por ejemplo, evitar obstáculos,
seguir paredes, atravesar puertas, etc. Las razones de su utilización son numerosas y
27
entre ellas cabe destacar su bajo coste, velocidad de procesamiento y una aceptable
precisión. Sin embargo, la navegación de un Robot móvil basada en la información
suministrada por un conjunto de sensores de ultrasonidos presenta una serie de
inconvenientes debidos, sobre todo, a los numerosos errores que cometen estos
sensores en sus medidas.
Entre los diversos factores que alteran las lecturas que se realizan con los
sensores de ultrasonido cabe destacar:
• El campo de actuación del pulso que se emite desde un transductor de
ultrasonido tiene forma cónica. El eco que se recibe como respuesta a la
reflexión del sonido indica la presencia del objeto más cercano que se
encuentra dentro del cono acústico y no especifica en ningún momento la
localización angular del mismo. Aunque la máxima probabilidad es que el
objeto detectado esté sobre el eje central del cono acústico, la probabilidad
de que el eco se haya producido por un objeto presente en la periferia del
eje central no es en absoluto despreciable y debe tomarse en cuenta para
tratarse convenientemente.
• La cantidad de energía acústica reflejada por el obstáculo depende en gran
medida de la estructura de su superficie. Para obtener una reflexión
altamente difusa del obstáculo, el tamaño de las irregularidades sobre la
superficie reflectora debe ser comparable a la longitud de onda de la onda
de ultrasonido incidente.
28
• En los sensores de ultrasonido de bajo coste se utiliza el mismo
transductor como emisor y receptor. Tras la emisión del ultrasonido se
espera un determinado tiempo a que las vibraciones en el sensor
desaparezcan y esté preparado para recibir el eco producido por el
obstáculo. Esto implica que existe una distancia mínima (proporcional al
tiempo de relajación del transductor) a partir de la cual el sensor mide con
precisión. Por lo general, todos los objetos que se encuentren por debajo
de esta distancia, serán interpretados por el sistema como que están a una
distancia igual a la distancia mínima.
• Los factores ambientales tienen una gran repercusión sobre las medidas:
Las ondas de ultrasonido se mueven por un medio material que es el aire.
La densidad del aire depende de la temperatura, influyendo este factor
sobre la velocidad de propagación de la onda según la expresión velocidad
de propagación de la onda según la expresión:
2731 TVV SOS +=
Por otro lado, los sensores de ultrasonido móviles (como, por ejemplo, los
embarcados en Robot móvil) experimentarán un efecto perturbador debido
a las pequeñas turbulencias de aire que se producen delante del
transductor. En este caso, y al contrario del efecto de la temperatura, la
influencia de las turbulencias sobre la señal ultrasónica es muy difícil de
ser cuantificada.
29
• Un factor de error muy común es el conocido como falsos ecos. Estos
falsos ecos se pueden producir por razones diferentes: Puede darse el caso
en que la onda emitida por el transductor se refleje varias veces en
diversas superficies antes de que vuelva a incidir en el transductor (si es
que incide). Este fenómeno, conocido como reflexiones múltiples, implica
que la lectura del sensor evidencia la presencia de un obstáculo a una
distancia proporcional al tiempo transcurrido en el viaje de la onda; es
decir, una distancia mucho mayor que a la que está en realidad el
obstáculo más cercano, que pudo producir la primera reflexión de la onda.
Otra fuente más común de falsos ecos, conocida como crosstalk, se
produce cuando se emplea un cinturón de ultrasonidos donde una serie de
sensores están trabajando al mismo tiempo. En este caso puede ocurrir (y
ocurre con una frecuencia relativamente alta) que un sensor emita un pulso
y sea recibido por otro sensor que estuviese esperando el eco del pulso que
él había enviado con anterioridad (o viceversa).
• Las ondas de ultrasonido obedecen a las leyes de reflexión de las ondas,
por lo que una onda de ultrasonido tiene el mismo ángulo de incidencia y
reflexión respecto a la normal a la superficie. Esto implica que si la
orientación relativa de la superficie reflectora con respecto al eje del
sensor de ultrasonido es mayor que un cierto umbral, el sensor nunca
reciba el pulso de sonido que emitió.
30
• Para emitir un pulso de ultrasonido hay que excitar la membrana del
transductor con una señal en forma de delta de Dirac. Sin embargo, en los
sensores de bajo coste, la señal excitadora es en la práctica un pulso
cuadrado por lo que el efecto resultante es el de la emisión de todo un tren
de ondas de ultrasonidos que emergen de la membrana del sensor. El
momento en el que se emite la onda se suele considerar como el momento
en el que se emitió la onda excitadora. La dificultad estriba en determinar
el momento en que se recibe el eco de la señal emitida: Tanto la forma de
la envolvente de tren de ondas de la señal emitida como la recibida, crece
desde cero hasta alcanzar un valor máximo y vuelve a decrecer hasta cero.
En definitiva, la incertidumbre en la determinación del tiempo transcurrido
entre la emisión y la recepción se traduce en un error en la medida.
De esta manera para evitar interferencias los generadores emiten varias ondas
de diferentes frecuencias, realizándose la detección en el mismo orden y
consiguiendo al mismo tiempo exactitud, la posibilidad de montar los sistemas
ultrasónicos en plataformas giratorias supone la exploración de todo el entorno,
utilizando dos o más sistemas colocados en diferentes puntos y combinando sus
resultados se puede obtener un mapa general del entorno con los obstáculos que
rodean al Robot.
Como se puede inferir de lo expuesto anteriormente, una única medida
proporciona poca información acerca del entorno, así que mediante la acumulación de
31
la evidencia de una serie de medidas, se incrementa la precisión de la localización de
los diversos obstáculos que hay en el entorno. Por tanto, una forma de reducir la
incertidumbre intrínseca a los sensores de ultrasonido es la utilización de mapas del
entorno donde sucesivamente se vayan plasmando y actualizando las medidas
realizadas. Por otro lado, al moverse el Robot por el entorno, la incertidumbre en la
generación del mapa y su actualización se va acrecentando con el tiempo, debido a
que el error en la estimación de la posición del Robot respecto a un sistema de
referencia general es acumulativo y va creciendo con el tiempo. Por tanto, se debe
contar con un procedimiento que permita reducir la incertidumbre de la posición del
Robot para mantener la coherencia espacial de las diferentes medidas.
Finalmente, para que el Robot realice las diferentes funciones para las cuales
ha sido diseñado e interactue con su entorno, existen dispositivos llamados Efectores
Finales que le permiten sostener, agarrar, o manipular objetos. Estos efectores están
situados en el extremo del Robot, confiriéndoles versatilidad, así como la posibilidad
de realizar labores muy diversas. Usualmente son pinzas que se escogen según el tipo
de objeto y la manipulación a realizar, tomándose en cuenta la forma, tamaño y peso
del objeto, así como la fuerza necesaria para sujetarlo, también son utilizadas las
herramientas para la realización de tareas específicas, en las que no se trata
únicamente de la manipulación de objetos.
1.2. CINEMATICA Y DINAMICA
32
Para que un Robot pueda moverse y manipular objetos, es necesario una
adecuada localización de las configuraciones espaciales por las que se pretende que el
Robot pase, de esta misma manera es necesario manejar adecuadamente una serie de
herramientas que permitan situar en posición y orientación un objeto.
El estudio de la Cinemática del Robot permite relacionar la posición de sus
actuadores con la posición y orientación del extremo. Así mismo, la Dinámica se
ocupa de la relación entre el movimiento del Robot y las fuerzas implicadas en el
mismo. La cinemática del Robot se interesa por la descripción analítica del
movimiento espacial del Robot como una función del tiempo, y en particular por las
relaciones entre la posición y la orientación del extremo final del Robot con los
valores que toman sus coordenadas articulares, para ello se estudia el movimiento del
mismo con respecto a un sistema de referencia. En torno a lo anterior Fu, González y
Lee (1988) afirman que la cinemática trata con el estudio analítico de la geometría del
movimiento de un Robot con respecto a un sistema de coordenadas de referencia fijo
sin considerar las fuerzas o momentos que originan el movimiento.
Hay dos problemas fundamentales a resolver en la cinemática del Robot, el
primero de ellos se conoce como el problema cinemático directo, y consiste en
determinar cual es la posición y orientación del extremo final del Robot, con respecto
a un sistema de coordenadas que se toma como referencia, conocidos los valores de
las articulaciones y los parámetros geométricos de los elementos del Robot. El
segundo problema denominado problema cinemático inverso, resuelve la
33
configuración que debe adoptar el Robot para una posición y orientación del extremo
conocidas. Como las variables independientes en un Robot son las variables de
articulaciones, y una tarea se suele dar en términos del sistema de coordenadas de
referencia, se utiliza de manera mas frecuente el problema cinemático inverso.
Denavit y Hartenberg (1955) propusieron un enfoque sistemático y
generalizado de utilizar álgebra matricial para describir y representar la geometría
espacial de los elementos del Robot con respecto a un sistema de referencia fijo. Este
método utiliza una matriz de transformación homogénea 4x4 para describir la
relación espacial entre dos elementos mecánicos rígidos adyacentes y reduce el
problema cinemático directo a encontrar una matriz de transformación homogénea
4x4 que relaciona el desplazamiento espacial del extremo del Robot con respecto al
sistema de coordenadas de su base.
Como se expuso anteriormente, la dinámica se ocupa de la relación entre las
fuerzas que actúan sobre un cuerpo y el movimiento que en el se origina. Esta
relación se obtiene mediante el modelo dinámico que relaciona matemáticamente: la
localización del Robot por sus variables articulares o por las coordenadas de
localización de su extremo, y sus derivadas: velocidad y aceleración; las fuerzas y
pares aplicados en las articulaciones; y los parámetros dimensionales del Robot,
como la longitud, masas e inercias de sus elementos.
34
El modelo dinámico es imprescindible para conseguir la simulación del
movimiento del Robot, diseño y evaluación de la estructura mecánica,
dimensionamiento de los actuadores y el diseño y evaluación del control dinámico del
Robot. Es importante hacer notar que el modelo dinámico completo de un Robot debe
incluir no solo la dinámica de sus elementos (barras o eslabones) sino también la
propia de su sistema de transmisión, de los actuadores y sus equipos electrónicos de
mando. Estos elementos incorporan al modelo dinámico nuevas inercias,
razonamientos, saturación de los circuitos electrónicos, etc. aumentando aún mas su
complejidad.
El modelo dinámico real de un Robot se puede obtener de leyes físicas
conocidas tales como las leyes de Newton y la mecánica lagrangiana. Esto conduce al
desarrollo de las ecuaciones dinámicas de movimiento para las distintas
articulaciones del dispositivo en términos de los parámetros geométricos e inerciales
especificados para los distintos elementos. Se pueden aplicar sistemáticamente
enfoques convencionales como las formulaciones de Lagrange-Euler y de Newton-
Euler para desarrollar las ecuaciones de movimientos del Robot.
1.3. TRAYECTORIAS
Con el conocimiento de la cinemática y la dinámica de un Robot con
elementos series, seria interesante mover los actuadores de sus articulaciones para
cumplir una tarea deseada controlando al Robot para que siga un camino previsto.
35
Antes de mover un Robot, es de interés saber si hay algún obstáculo presente en la
trayectoria que el Robot tiene que atravesar. Para realizar una tarea determinada el
Robot debe moverse desde un punto inicial a un punto final, este movimiento puede
ser realizado según infinitas trayectorias espaciales de este modo pueden encontrarse
que los Robots dispongan de trayectorias punto a punto, coordinadas y continuas.
En las Trayectorias Punto a Punto cada articulación evoluciona desde su
posición inicial a la final sin considerar el estado o evolución de las demás
articulaciones, estas trayectorias no están implementadas salvo en Robots simples o
con unidades de control limitadas.
En las Trayectorias Coordinadas o Isocronas todas las articulaciones se
coordinan comenzando y acabando su movimiento a la vez, adaptándose todas a la
más lenta, con esto se evita que algunos actuadores trabajen forzando sus velocidades
y aceleraciones, teniendo que esperar después la conclusión del movimiento de la
articulación más lenta, para ello se hace un cálculo previo averiguando cual es esta
articulación y que tiempo invertirá.
Cuando se pretende que la trayectoria que sigue el extremo del Robot sea
conocida por el usuario (trayectoria en el espacio cartesiano o de la tarea) es preciso
calcular de manera Continua las trayectorias articulares. Típicamente las trayectorias
que el usuario pretende que el Robot describa son trayectorias en recta o en arco de
36
circulo. Para conseguirlo hay que seguir los pasos de funcionamiento del Control
Cinemático:
1. Convertir la especificación del movimiento dado en el programa en una
trayectoria analítica en el espacio cartesiano.
2. Hacer un muestreo de la trayectoria cartesiana obteniendo un número
finito de puntos de dicha trayectoria.
3. Utilizando la transformación homogénea inversa, convertir cada uno de
estos puntos en sus correspondientes coordenadas articulares.
4. Interpolar los puntos articulares obtenidos, generando para cada variable
articular una expresión que pase o se aproxime a ellos de modo que,
siendo una trayectoria realizable por los actuadores, se trasforme en una
trayectoria cartesiana lo más próximo a la especificada por el programa
del usuario.
5. Hacer un muestreo de la trayectoria articular para generar referencias al
control dinámico.
La planificación de la trayectoria interpola y/o aproxima la trayectoria deseada
por una clase de funciones polinomiales y genera una secuencia de puntos de
consignas de control en función del tiempo para el control del Robot desde la
posición inicial hasta el destino.
1.4. VISIÓN DEL ROBOT
37
La información más completa que el Robot puede disponer, para adaptarse a
su entorno y llevar a cabo su misión con el máximo rigor, consiste en la propia
imagen del espacio que le rodea, así la capacidad de visión dota al Robot de un
sofisticado mecanismo de percepción que le permite responder a su entorno de una
forma inteligente y flexible, el uso de la visión y de otros esquemas de percepción,
tales como los diferentes sensores, están motivados por la constante necesidad de
aumentar la flexibilidad y campos de aplicación de los sistemas robóticos. Así como
la percepción de la proximidad del contacto, la visión se considera como una potente
capacidad sensorial del Robot, jugando un papel significativo en su comportamiento.
Como señalan Fu, González y Lee (1988), la visión artificial puede ser
definida como los procesos de obtención caracterización e interpretación de
información de imágenes tomadas de un mundo tridimensional, estos procesos
pueden dividirse en cinco áreas principales:
• Percepción.
• Preprocesamiento de la información.
• Segmentación.
• Reconocimiento.
• Interpretación.
Durante la Percepción la información visual se convierte en señales eléctricas
por los sensores visuales, cuando estas señales eléctricas se muestrean espacialmente,
38
y se cuantifican en amplitud se obtienen de ellas una imagen digital. Dicha imagen se
denomina un campo de datos de visión y se suele capturar mediante un dispositivo de
hardware denominado captador de trama, estos dispositivos son capaces de digitalizar
imágenes a una velocidad de 30 cuadros por segundo. Los cuadros están constituidos
por una matriz de proyecciones de representación de datos de la imagen, los
elementos de la matriz se denominan elementos de imagen o Pixeles. El número de
pixeles se determina mediante un proceso de muestreo realizado en cada cuadro de
imagen. Un pixel individual es la proyección de una pequeña parte de la imagen, que
reduce esa parte a un valor único, este valor es una medida de intensidad de luz para
ese elemento de la imagen, así la intensidad de cada pixel se convierte en un valor
digital.
Conocidas las características del sistema de visión y la forma de conseguir la
digitalización de la imagen la siguiente fase consiste en el Preproceso, en el que se
incluyen técnicas tales como la reducción de ruido y el realce de detalles. Como
seguimiento de esta actividad durante la Segmentación se divide la imagen percibida
en sus partes constituyentes u objetos para su posterior reconocimiento y análisis. Los
algoritmos de segmentación se basan en uno de los dos siguientes principios básicos:
• Discontinuidad o Detección de Bordes.
Esta considera el cambio de intensidad que se produce en los pixeles en el
contorno o bordes de un objeto, dada una región con atributos similares, pero
39
desconociendo la forma del contorno, este último se puede determinar mediante un
procedimiento de seguimiento de borde. Para ello se detectan discontinuidades de
intensidad en la imagen, el procedimiento es el de explorar la imagen hasta que se
encuentre un pixel diferente al inicial dentro de la región de la figura, una vez
encontrado se cruza hacia la izquierda o a la derecha y se avanza, este procedimiento
se detiene cuando se atraviesa el contorno de la figura y el siguiente pixel es igual al
pixel inicial.
• Similitud o Crecimiento por Región.
Es un conjunto de técnicas de segmentación en las que los pixeles se agrupan
en regiones llamadas elementos de cuadrícula basadas en similitudes de atributos. Las
regiones definidas se podrán examinar en cuanto a si son independientes o se pueden
fusionar a otras regiones por medio de un análisis de la diferencia en sus propiedades,
medias y su conectividad espacial.
En las aplicaciones de la visión del Robot, con frecuencia es necesario
distinguir un objeto de otro. Esto se puede realizar mediante las características
particulares del objeto, tales como el área, el diámetro y el perímetro; una
característica es un parámetro único que permite la facilidad de comparación e
identificación, Groover, Weiss, Nagel y Odrey (1990) afirman que las técnicas
disponibles para la extracción de valores de características para los casos
bidimensionales se pueden categorizar aproximadamente como las que se refieren a
40
las características de contorno y de área. Las diversas características se pueden
utilizar para identificar el objeto o parte del mismo y para determinar su localización
y orientación.
En consecuencia los procedimientos de crecimiento de región, se pueden
utilizar para determinar el área de una imagen u objeto, así mismo el perímetro o el
contorno que encierra un área específica se puede determinar indicando la diferencia
en la intensidad de pixel en el contorno y contando simplemente los pixeles de la
región segmentada que son adyacentes a los pixeles que no pertenecen a la región; es
decir, al otro lado del contorno. Un objetivo importante en la selección de estas
características es que las características no dependan de la posición ni de la
orientación.
El próximo paso en el procesamiento de los datos de la imagen es el
Reconocimiento que consiste en identificar el objeto que la imagen representa. El
reconocimiento es un proceso de etiquetado, siendo la función de los algoritmos de
reconocimiento identificar a cada objeto segmentado de una imagen y asignarle una
etiqueta, además deben ser lo suficientemente potente para identificar unívocamente
un objeto. Las técnicas de reconocimiento de objetos se pueden dividir en dos
categorías:
• Técnicas de Coincidencia de Plantillas.
41
Son un subconjunto de técnicas estadísticas de reconocimientos de modelos,
que sirven para clasificar los objetos en una imagen dentro de categorías
predeterminadas; su problema básico es comparar el elemento con un conjunto de
características de un modelo almacenado, definido como modelo de plantilla, el cual
se obtiene durante el proceso de adiestramiento en el que el sistema de visión se
programa para reconocer los elementos prototipos conocidos. Estas técnicas son
aplicables si no existen requerimientos de un gran número de plantillas de modelos.
El procedimiento está basado en el uso de un número suficiente de características
para minimizar la frecuencia de errores en el proceso de clasificación, las
características del elemento en la imagen se comparan con los valores
correspondientes almacenados, cuando se encuentra una coincidencia (permitiéndose
determinadas variaciones estadísticas en el proceso de comparación) el elemento ha
sido clasificado de forma adecuada.
• Técnicas Estructurales.
Estas consideran las relaciones entre las características o bordes de un objeto,
su principio es descomponer al objeto en patrones básicos. Al detectar la frontera de
un objeto se recorre la misma en el sentido de las agujas del reloj, identificando las
apariciones de los elementos básicos, la longitud y dirección de estos elementos,
junto con el orden en que aparecen, establecen la estructura del objeto.
42
Las técnicas estructurales difieren de las técnicas de decisión teórica o de
detección de plantillas, en que estas últimas tratan un modelo sobre una base
cuantitativa y se ignoran las relaciones geométricas inherentes a la forma del objeto.
Los métodos estructurales por el contrario, realizan la discriminación de objetos
utilizando estas relaciones.
Finalmente es necesario asociar un significado al conjunto de objetos
reconocidos, esto se realiza mediante en proceso de Interpretación, en este proceso
se dota al sistema de visión con un nivel de conocimiento sobre su entorno, aquí se
incluyen todos aquellos métodos que tengan que ver con la comprensión de una
imagen visual.
1.5. INTELIGENCIA ARTIFICIAL
Los conceptos modernos de control de Robots tienen sus raíces en la
investigación en inteligencia artificial, la cual se esfuerza en intentar desarrollar
sistemas que parezcan que se comportan de forma inteligente. A menudo esto se
describe como desarrollar máquinas que piensen y planifiquen los movimientos
necesarios para resolver alguna tarea preespecificada y luego ejecuten las órdenes
necesarias para conseguir esas acciones.
Sobre la base de las ideas expuestas anteriormente podemos definir
Inteligencia Artificial como la capacidad de una máquina de realizar los mismos
43
tipos de funciones que caracterizan al pensamiento humano. La posibilidad de
desarrollar una máquina así ha despertado la curiosidad del ser humano desde la
antigüedad. Con el avance de la ciencia moderna la búsqueda de la IA (Inteligencia
Artificial) ha tomado dos caminos fundamentales: la investigación psicológica y
fisiológica de la naturaleza del pensamiento humano, y el desarrollo tecnológico de
sistemas informáticos cada vez más complejos.
En este sentido, el término IA se ha aplicado a sistemas y programas
informáticos capaces de realizar tareas complejas, simulando el funcionamiento del
pensamiento humano, aunque todavía muy lejos de éste. En esta esfera las teorías de
investigación más importantes son las de procesamiento de la información,
reconocimiento de modelos, juegos y las áreas aplicadas como el diagnóstico médico.
Actualmente existen dos tendencias en cuanto al desarrollo de sistemas de IA:
los sistemas expertos y las redes neuronales. Los sistemas expertos intentan
reproducir el razonamiento humano de forma simbólica. Las redes neuronales lo
hacen desde una perspectiva más biológica (recrean la estructura de un cerebro
humano mediante algoritmos genéticos). A pesar de la complejidad de ambos
sistemas los resultados distan mucho de un auténtico pensamiento inteligente.
2. MICROCONTROLADORES
44
La fundamentación teórica presentada a continuación fue traducida y extraída
de los manuales operativos del Sistema de Desarrollo PICSTART PLUS (1994),
Datasheets de Internet (www.microchip.com) y del libro Microcontroladores PIC:
Diseño Práctico de Aplicaciones (Angulo y Angulo: 1997).
Los Microcontroladores son dispositivos digitales integrados, programables
y de actuación secuencial. Funcionalmente, es un dispositivo lógico que permite el
tratamiento de la información almacenada en forma de “Programa de Instrucciones”,
este es capaz de interpretar estas instrucciones y ejecutarlas controlando las unidades
implicadas en su composición. Básicamente está conformado por la Unidad de
Procesamiento Central (CPU), la Unidad de Control, la Unidad Aritmética-Logica
(ALU), Puertos y dispositivos de memoria (RAM, ROM, EPROM, etc.).
Los Microcontroladores PIC16/17 de MICROCHIP, combinan alta ejecución,
bajo costo y pequeño tamaño, ofreciendo la mejor relación precio/ejecución utilizado
en la industria. Existen tres familias de microcontroladores de 8 bits, los cuales se
ajustan a las necesidades del usuario, ellas son: la gama básica de 8-bits PIC16C5X,
la gama media de 8-bits PIC16CXX y la gama alta de 8-bits PIC17CXX.
Destacándose y especificando para esta investigación los microcontroladores
PIC16C84 y PIC16F84 de la familia PIC 16CXX, por ser los que más se adaptan a
los requerimientos de aplicación a utilizar. Los PIC16CXX son microcontroladores
que constan de 8 bits, son de alto rendimiento y construidos bajo tecnología CMOS,
45
estos dispositivos poseen un núcleo ensamblado, 8 niveles de pila e interrupciones
internas y externas. La separación del bus de datos y el bus de dirección de la
arquitectura HARVARD permite una palabra de instrucción de 14 bits y un bus de
datos de 8 bits. Las estaciones de instrucciones permiten ejecutar todas las
instrucciones en un solo ciclo, excepto para las ramificaciones que requieren dos
ciclos. Este tipo de microcontroladores disponen de 35 instrucciones y un registro
extenso para ejecutar programas de alto nivel.
2.1. MICROCONTROLADOR PIC16C84
Figura No. 6: Distribución y Denominación de Pines del PIC16C84
Fuente: 8-bit CMOS EEPROM Microcontroller Datasheet (1998:1)
Como se muestra en la figura, el PIC16C84 posee 36 bytes de memoria
RAM, 64 bytes de memoria EEPROM y 13 pines de puertos I/O. Esta familia posee
características especiales para reducir los componentes externos haciéndolo útil para
las aplicaciones donde se limita el espacio de trabajo, con la tecnología EEPROM, se
46
reducen los costos, se aumenta la compatibilidad y eficiencia del equipo, así como
también reduce el consumo de potencia ajustándose perfectamente para aplicaciones
como el manejo de motores, controles automáticos de alta velocidad, cerrojos
electrónicos, tarjetas inteligentes, sensado remoto y dispositivos de seguridad, el fácil
uso y la flexibilidad de los puertos pueden ser atribuidos a características especiales
de su arquitectura, comúnmente encontrada en los microprocesadores RISC.
2.1.1 ARQUITECTURA
La Arquitectura interna del PIC16C84 consta de 7 bloques fundamentales:
• Memoria de Programa EEPROM de 1Kx14bits.
• Direccionamiento de la memoria de programa, basándose en el contador
del programa ligado a una pila de 8 niveles de profundidad.
• Memoria de Datos formada por dos áreas: una RAM donde se alojan 22
registros de propósito específico o especial (SFR) y 36 de propósito
general (GPR), y otra del tipo EEPROM de 64 bytes.
• Direccionado directo e indirecto de la memoria RAM.
• Camino de Datos con una ALU de 8 bits y un registro de trabajo o
acumulador W.
• Diversos recursos conectados al bus de datos, tales como: puertas de I/O,
temporizador TMRO, etc.
• Base de Tiempos y circuitos auxiliares.
47
Como se expuso anteriormente hay dos Bloques de Memoria en el
PIC16C84, estos son la Memoria del Programa y la Memoria de Datos. Cada bloque
tiene su propio bus, por lo que el acceso para cada bloque puede ocurrir durante el
mismo ciclo del oscilador.
La Memoria de Programa posee un Contador de Programa (PC) de 13 bits
capaz de direccionar un espacio de memoria de programa de 8Kx14, pero solamente
las primeras 1Kx14 (0000h-03FFh) localidades están físicamente implementadas. El
tratar de accesar una localidad por encima de 3FFh causará que se caiga dentro del
primer 1Kx14 de memoria. El vector de puesta a Cero o Reset está ubicado en la
dirección 0000h y el Vector de Interrupción está en la dirección 0004h. Por otra
parte la Memoria del Programa (Figura No. 7) contiene la memoria de datos
EEPROM, esta memoria no está mapeada directamente sobre la memoria de datos,
pero puede ser mapeada indirectamente.
El Contador del Programa (PC) está implementado sobre un par de
posiciones de la memoria RAM. Cuando se escribe el contador de programa como
resultado de una operación de la ALU, los 8 bits de menos peso residen en el registro
PCL, que ocupa la posición 2 de los bancos de la memoria de datos. Los bits de más
peso, PC<12:8>, residen en los 5 bits de menos peso del registro PCLATH, que
ocupa la posición 0Ah de los bancos de la memoria RAM. El Registro PCLATH es
para la parte alta de la dirección y no es directamente accesible.
48
Igualmente la Memoria de Datos (RAM) está particionada en dos áreas: la
primera el área de los Registros de Funciones Especiales (SFR), mientras la
segunda área corresponde a los Registros de Propósito General (GPR). Las
porciones de la memoria de Datos están ubicadas en Bancos, esto es para ambas áreas
(SFR y GPR). El área de los GPR está en un banco para permitir valores superiores a
los 116 bytes de RAM para propósito general, las áreas del banco de los SFR son
para los registros que controlan las funciones periféricas. El salto de un banco a otro
requiere del uso de bits de control para su selección, que están ubicados en el registro
STATUS.
Los GPR están ubicados en el Banco 0, y los SFR en el Banco 1. El Banco 0
es seleccionado mediante la puesta a cero del bit RP0 (STATUS<5>), por el
contrario, la puesta a 1 del bit RP0 selecciona al Banco 1.
BSF STATUS, RP0; Orden de cambio al Banco 1
BCF STATUS, RP0; Orden de cambio al Banco 0
Cada Banco se extiende hasta los 128 bytes. Las primeras 12 locaciones de
memoria de cada banco están reservadas para los SFR, y las locaciones restantes son
GPR implementados en una RAM estática (SRAM). Todos los dispositivos poseen
cierta cantidad de área para los Registros de Propósito General (GPR), cada GPR es
de 8 bits y pueden ser accesados directa o indirectamente mediante los registros de
49
funciones especiales (SFR). Los GPR direccionados en el Banco 1 son mapeados a
las direcciones del Banco 0.
Toda la Memoria de Datos puede ser accesada directamente con el uso de la
dirección absoluta de registro de archivo o indirectamente a través de la selección de
registro de archivo correspondiente. El direccionamiento indirecto utiliza el valor
actual de los bits RP1: RP0 dentro del registro STATUS.
En los PICs de la gama media la memoria de datos está organizada para alojar
un máximo de 4 bancos de 128 bytes cada uno. El PIC16C84 solo tiene
implementados los 48 primeros bytes de los bancos 0 y 1. Mediante el
Direccionamiento Directo, el operando que utiliza la instrucción en curso se
referencia mediante su dirección, que viene incluida en el código OP de la misma,
concretamente en los 7 bits de menos peso.
Por otra parte el modo de Direccionamiento Indirecto se usa cuando se
utiliza como operando el registro INDF, que ocupa la dirección 0 de ambos bancos.
En realidad el registro INDF no está implementado físicamente y cuando se le hace
referencia se accede la dirección de un banco especificada con los 7 bits de menos
peso del registro SFR. El bit de más peso del SFR junto al bit IRP del registro
STATUS selecciona el banco a acceder y los siete bits de menos peso apuntan la
posición.
50
El último tipo de Memoria de Datos es la EEPROM, que puede ser leída y
escrita durante la operación normal (rango completo de VDD), donde se pueden
almacenar datos y variables que interesan que no se pierdan cuando se desconecta la
alimentación al sistema. Soporta hasta un millón de ciclos de escritura y borrado y es
capaz de guardar la información por más de 40 años sin alterarla. La Memoria
EEPROM no está mapeada en la zona de la memoria de datos donde se ubican los
SFR y los GPR, sin embargo, para poder leerla y escribirla durante el funcionamiento
normal del microcontrolador hay que utilizar 4 registros del Banco SFR, estos
registros son: EECON1, EECON2, EEDATA y EEADR.
Reconsiderando lo concerniente a la arquitectura interna, se destaca la Unidad
lógico-aritmética o ALU, que está encargada de realizar la operación lógico-
aritmética que implica la instrucción decodificada, consta de 8 bits de ancho y es
capaz de realizar operaciones de adición, substracción, rotación y lógicas. En las
instrucciones de dos operandos uno de ellos lo recibe desde el registro W o
acumulador y el otro desde un registro o desde la propia instrucción.
El Registro W o Acumulador es un registro de trabajo de 8 bits usado para
las operaciones de la ALU y no se encuentra en la memoria de datos.
La Pila o Stack (Figura No. 7) es una zona aislada de las memorias de
instrucciones y datos, tiene una estructura LIFO (Last-In-First-Out), en la que el
último valor guardado es el primero que sale. Tiene 8 niveles de profundidad cada
51
uno con trece bits. Funciona como un buffer circular, de manera que el valor que se
obtiene al realizar el noveno desempilado es igual al que se obtuvo en el primero.
Entre sus características no se puede leer ni escribir, el PC se coloca en el stack
cuando se ejecuta una instrucción CALL o cuando se reconoce una interrupción, y se
sale de la interrupción con RETURN, RETLW o RETFIE.
Figura No. 7: Memoria de Programa y Pila
Fuente: 8-bit CMOS EEPROM Microcontroller Datasheet (1998:11)
El PIC16C84 tiene trece pines de I/O organizados como dos puertos, el Puerto
A de 5 bits y el Puerto B de 8 bits.
52
El PIC posee un temporizador-contador de propósito general TMRO, el cual
es de 8 bits de ancho para encargarse de las funciones de control de tiempos. Este
módulo posee características tales como: es de lectura y escritura, tiene la posibilidad
de hacer uso de un preescalador programable en software de 8 bits, puede
incrementarse mediante un reloj interno o externo, posee capacidad para generar una
interrupción por rebosamiento al pasar de FFh a 00h y por último cuando se usa con
reloj externo puede seleccionarse el flanco para el incremento.
El modo temporizador se selecciona colocan el bit RTS del registro OPTION
a cero, incrementándose cada ciclo de instrucción, si está escribiendo en el TMR0, el
incremento se inhibe para los dos ciclos e instrucción siguientes. Así mismo el modo
de contador se selecciona colocando el bit RTS a 1 en el registro OPTION, en este
modo el TMR0 se incrementa cada vez que haya un flanco de subida o de bajada en
el pin RA4/TOCKI, esto es determinado por el bit de control RTE en el registro
OPTION (RTE=0 selecciona el flanco de subida).
Finalmente hay unos circuitos auxiliares que dotan al procesador de
posibilidades de seguridad, reducción de consumo y reinicialización.
2.1.2 REGISTROS
53
El PIC16C84 posee varios registros de funciones especiales o especificas
(SFR), separados en dos bancos y direccionados de manera directa o indirecta, entre
los cuales están:
El Registro STATUS, que contiene el estado aritmético de la ALU (Z), el
estado de RESET y el bit de selección de banco para la memoria de datos (RP0).
Como cualquier registro, el registro STATUS puede ser el destino para cualquier
instrucción, si este registro es el destino para una instrucción que afecte a los bits Z, C
(Carry) o DC (Digital Carry), la escritura a estos registros es automáticamente
desactivada. Estos bits son puestos a cero o uno según la lógica del dispositivo, no
obstante, los bits TO y PD no se pueden escribir. Por otro lado, el resultado de una
instrucción con destino al registro STATUS, podría ser diferente a lo pensado.
Únicamente las instrucciones BCF, BSF y MOVWF deben ser utilizadas para
alterar el registro STATUS, porque ninguna de estas funciones modifican los bits
internos de dicho registro. Los bits IRP y PR1 (STATUS<7: >6) no son utilizados por
el PIC 16C84 y deben ser programados como cero. El uso de estos bits como bits de
propósito general R/W no son recomendados, ya que podría afectar a la comunicación
entre otros dispositivos. Para la resta, los bits C y DC, operan como BORROW y
DIGIT BORROW respectivamente.
54
El Registro OPTION es un registro que puede ser leído y escrito, contiene
varios bits de control para configurar el pre-escalador TMR0/WDT, seleccionar el
flanco de interrupción externa INT, el TMR0 y los Pull-Ups en el puerto B (PORTB).
El Registro INTCON es un registro de control de interrupción, que incluye
las banderas que registran las peticiones individuales de interrupción y contiene
además los bits tanto como para la habilitación global (GIE) como individual. La
única excepción es la bandera de interrupción por culminación de escritura de datos
en la EEPROM (EEIF), la cual reside en el registro EECON1.
El PORTA es un puerto de 5 bits, donde el pin RA4 es una entrada tipo
disparo Schmitt y salida de drenador abierto y está multiplexado con la entrada
TMR0. Los demás pines RA del puerto poseen niveles de entrada TTL y manejadores
de salida CMOS. Todos los pines tienen bits de dirección de datos (registros TRIS),
los cuales pueden configurar los pines como entradas o salidas de forma
independiente.
El Registro TRISA controla el Puerto A y su dirección está mapeada en la
página uno de la memoria de datos. Es un registro de 5 bits de ancho, en donde,
poniendo a uno (1) algún bit, colocará el pin correspondiente al bit seleccionado
como una entrada, si algún bit es puesto a cero (0), luego el pin es colocado como
salida.
55
Cuando se lee el registro PORTA, éste lee el estado de los pines, mientras que
escribe información en los “latch” del puerto. Todos las operaciones de escritura son
operaciones de Lectura-Modificación-Escritura, por lo tanto, el escribir en un puerto
implica que los pines del puerto son leídos primero, luego estos valores son
modificados y escritos en el “latch” del puerto de datos.
El Registro TRISB, es el registro correspondiente al Puerto B o PORTB,
donde un “1” en cualquier bit de él, coloca el correspondiente manejador de salida en
un modo de alta impedancia. Un "0” en cualquier bit del registro TRISB coloca el
contenido del “lacth” de salida en el pin seleccionado.
El Registro PORTB es un puerto bidireccional de 8 bits, los datos de dicho
puerto le corresponden al TRISB. Cada pin del PORTB posee un “Weak Pull-Up”
interno. Un solo bit de control puede activar todos los “weak pull-ups”. Esto es
realizado poniendo en cero el bit 7 del registro OPTION. Los “weak pull-ups” son
automáticamente apagados cuando los pines del puerto se configuran como salida,
también son desactivados cuando ocurre un “Power-On Reset”.
Los cuatro pines del PORTB, RB7 a RB4, están multiplexados con funciones
especiales de interrupción. Únicamente los pines que se configuren como entrada,
serán capaces de ejecutar dichas interrupciones (cualquier pin de RB7 a RB4 que esté
configurado como salida, es excluido de la ejecución de una interrupción). El valor de
los pines en el modo de entrada es comparado con el antiguo valor transferido en la
56
última lectura del PORTB. Las salidas desiguales de los pines del PORTB son
sumadas en forma lógica (OR) y conjuntamente para generar el cambio del PORTB
como una interrupción.
La característica de condición de desigualdad en las interrupciones, junto con
la programación configurable para el “pull-ups” de estos cuatro pines permite realizar
una sencilla comunicación con un teclado.
Un cambio podría ocurrir en el pin I/O cuando el PORTB es leído, y el bit
RBIF no debe ser puesto a “1”, por lo que se recomienda hacer una verificación del
PORTB cuando este sea utilizado como sistema de interrupciones. Los pines
restantes, de RB3 a RB0 son líneas de I/O de características comunes.
El Registro EECON1 es un registro de control que maneja operaciones de
lectura/escritura en la EEPROM de Datos, posee los cinco bits de orden inferior
físicamente implementados, los tres bits de orden superior no existen y se leen como
cero.
Los bits de control RD y WR inician la lectura y escritura respectivamente.
Mediante software estos bits solo pueden ser seteados (puestos a uno) y se resetea en
hardware una vez completada la operación de lectura o escritura. Cuando el bit
WREN se coloca a uno se permite una operación de escritura. El bit EIFF es la
57
bandera de interrupción que se coloca a uno cuando la escritura se ha completado,
este debe ser limpiado en software.
El Registro EECON2 aunque no es un registro físico cuando se intenta leerlo
se obtiene el valor de 00h, sin embargo es necesario para la escritura, ya que solo se
emplea como un dispositivo de seguridad durante el proceso de escritura en la
EEPROM, para evitar las interferencias en el largo intervalo de tiempo que precise su
desarrollo.
Para leer en una localidad de la memoria de datos EEPROM el programador
debe escribir en el Registro EEADR y entonces colocar el bit de control RD a 1.
EEADR está ubicado en la dirección 9 del banco 0, se carga la dirección a acceder de
la EEPROM de datos, las 64 posiciones de un byte cada una ocupan las direcciones
de un mapa que comienza en 00h y termina en 3Fh, por eso los dos bits de más peso
siempre valen cero.
Una vez ubicado el dato con EEADR, este estará disponible en el próximo
ciclo en el Registro EEDATA, por lo tanto puede ser leído en la próxima
instrucción. EEDATA mantiene el valor hasta que se realice otra lectura o hasta que
el usuario realice una operación de escritura sobre él.
2.1.3 TIPOS DE RESET
58
El PIC16C84 admite diferentes tipos de Reset: Power-On Reset (POR) al
encendido, MCLR durante la operación normal y durante la operación SLEEP, el
rebase del conteo del temporizador WDT durante la operación normal y la operación
SLEEP.
Dentro del microcontrolador se genera un pulso de Power-On Reset cuando
se detecta una caída de tensión en VDD (dentro del rango de 1.2Volts-1.7Volts). Para
tener la ventaja del POR, se conecta el pin MCLR directamente a VDD a través de un
resistor, esto elimina las componentes RC externas que usualmente activan el POR,
este circuito de protección no produce una condición de Reset interna cuando el valor
de VDD disminuye. Para lograr el reset al encendido se utilizan dos temporizadores:
el Power-Up Timer (PWRT) y el Oscillator Start-Up Timer (OST).
El PWRT provee 72ms arreglados nominales de Time-Out para el POR,
opera en un oscilador RC interno, el dispositivo se mantiene en Reset el tiempo que
dura la operación del PWRT. Por otro lado, el PWRT ocasiona un tiempo de retardo,
el cual, permite que el nivel de VDD disminuya hasta un nivel aceptable de
operación. El OST es orientado a mantener al microcontrolador en reset hasta que el
oscilador del cristal es estable, provee 1024 ciclos de retardo provenientes del
oscilador (OSC1/CLKIN) después de que el tiempo de retardo del PWRT culmine; lo
que indica al oscilador de cristal o resonador que comience y estabilice. El Time-Out
del OST (Tost) es invocado solo para los módulos XT, LP y HS y únicamente en un
POR o en un despertar del SLEEP.
59
Cuando el nivel de VDD disminuye muy lentamente, es posible que el Time-
Out del PWRT (Tpwrt) y el Tost expiren antes de que el VDD haya alcanzado su
valor final, en este caso es recomendable un circuito externo para el MCLR.
En el Power-Up la secuencia Time-Out es de la siguiente manera: el time-out
del PWRT es invocado después que el POR haya expirado, luego el OST es activado,
el time-out final variará basado en la configuración del oscilador y el bit de
configuración de estado PWRT.
Desde que el Time-Out proveniente del pulso de reset del POR ocurre y si el
tiempo de permanencia del MCLR en estado bajo es muy prolongado, entonces, el
time-out expirará, y si el MCLR se mantiene en estado alto la ejecución del time-out
será inmediata. Esto es muy útil para realizar pruebas en la sincronización de dos o
más PIC16CXX cuando operen en paralelo.
El Watchdog Timer WDT es un oscilador libre que se ejecuta internamente,
el cual no requiere ningún componente externo. Este oscilador RC está separado del
oscilador RC del pin OSC1/CLKIN, esto significa que el WDT no comenzará hasta
que el oscilador RC de los pines OSC1/CLKIN y OSC2/CLKOUT se haya detenido
por completo.
60
Durante la operación normal, el WDT genera un Time-Out que genera una
condición de Reset para el dispositivo. Si el dispositivo está en modalidad SLEEP, un
WDT wake-up causará el despertar y así continuar con la operación normal.
El PIC16C84 puede ser apagado momentáneamente, es decir, puesto a dormir
(SLEEP) y luego levantarlo (Wake-Up). El modo SLEEP se activa mediante la
utilización de la instrucción SLEEP, si está habilitada, el WDT es puesto a cero (pero
sigue trabajando), el bit 4 del registro STATUS es puesto a “1”, y el manejador del
oscilador es apagado. Los puertos I/O mantienen el mismo estado que tenían antes de
que se ejecutara el modo SLEEP.
Para el menor consumo de corriente en el modo SLEEP, se deben colocar
todos los pines de I/O a VDD o Vss sin circuitería externa. Si los puertos están
manejados por altas impedancias, entonces se debe manejar en estado bajo o alto para
evitar fluctuaciones de corriente causadas por las entradas flotantes. El pin T0CKI
también debe ir a VDD o Vss. El pin MCLR debe conectarse directamente a VDD.
2.1.4 INTERRUPCIONES
El PIC16C84 posee cuatro fuentes de Interrupciones: interrupción externa,
finalización del temporizador, finalización en la escritura EEPROM de datos y
cambios en PORTB.
61
El registro de control de las interrupciones (INTCON) almacena los
requerimientos de interrupciones individuales en los bits de bandera, también posee
los bits para la habilitación de las interrupciones globales o individuales. Por otro
lado las interrupciones individuales pueden ser habilitadas o deshabilitadas por los
mismos bits, es importante mencionar que el bit GEI es puesto a cero cuando ocurre
una condición de Reset.
La instrucción para retornar de una interrupción (RETFIE) realiza la
operación de poner a “1” el bit GIE, para así rehabilitar todas las interrupciones. Los
bits banderas de interrupción del pin RB0/INT, el cambio RB del PORTB y el
rebosamiento del TMR0, están incluidos en el registro INTCON.
La Interrupción Externa que ocurre en el pin RB0/INT es disparada por
flanco: si el bit INTEDG (OPTION<6>) es puesto a “1”, el flanco es de subida; y si
es puesto a “0”, el flanco es de bajada. Cuando un flanco válido aparece en el pin
RB0/INT, el bit INTF (INTCON<1>) es puesto a “1”, esta interrupción puede ser
deshabilitada poniendo a “0” el bit de control INTE (INTCON<4>). El bit bandera
INTF debe ser puesto a cero por el software dentro de la sub-rutina designada para las
interrupciones, estas interrupciones pueden despertar al dispositivo de su modo
SLEEP.
62
Un rebosamiento (FFh → 00h) en el TMR0, pondrá un “1” en bit bandera
T0IF (INTCON<2>). Esta interrupción puede ser activada o desactivada poniendo a
“1” o “0” el bit T0IE (INTCON<5>).
Un cambio de entrada en PORTB<7:4> colocan en “1” el bit bandera RBIF
(INTCON<0>). Esta interrupción puede ser activada o desactivada poniendo a “1” o
“0” el bit RBIE (INTCON<3>).
Cuando la escritura de un dato en la EEPROM finaliza, se coloca en 1 el bit
EEIF (EECON1<4>), el bit de control respectivo es EEIE (INTCON<6>).
2.1.5 INSTRUCCIONES DEL PIC16C84
Tabla No. 1: Tabla de Instrucciones del PIC16C84
INSTRUCCIONES QUE MANEJAN REGISTROS
SINTAXIS OPERACIÓN CICLOS
ADDWF F, D Suma W y F 1
ANDWF F, D AND W con F 1
CLRF F Borra F 1
CLRW Borra W 1
COMF F, D Complementa F 1
DECF F, D Decrementa F 1
63
INCF F, D Incrementa F 1
IORWF F, D OR entre W y F 1
MOVF F, D Mueve F 1
MOVWF F Mueve W a F 1
NOP No Opera 1
RLF F, D Rota F a la izquierda 1
RRF F, D Rota F a la derecha 1
SUBWF F, D Resta W a F 1
SWAPF F, D Intercambia cuartetos 1
XORWF F, D XOR de W con F 1
INSTRUCCIONES QUE MANEJAN BITS
BCF F, B Borra bit de F 1
BSF F, B Pone a uno el bit F 1
INSTRUCCIONES DE BRINCO
BTFSC F, D Si bit de F=0 brincar 1(2)
BTFSS F, D Si bit de F=1 brincar 1(2)
DECFSZ F, D Decremento si=0 brincar 1(2)
INCFSZ F, D Incremento si=1 brincar 1(2)
INSTRUCCIONES QUE MANEJAN OPERANDOS INMEDIATOS
ADDLW K Suma literal con W 1
ANDLW K AND literal con W 1
64
IORLW K OR literal con W 1
MOVLW K Mueve a W un literal 1
SUBLW K Resta W de un literal 1
XORLW K XOR con W 1
INSTRUCCIONES DE CONTROL Y ESPECIALES
CALL K Llamada a subrutina 2
CLRWDT Borra WDT 1
GOTO K Salto incondicional 2
RETFIE Retorno de interrupción 2
RETLW K Retorno con literal 2
RETURN Retorno de subrutina 2
SLEEP Pasa a modo de reposo 1
K=Constante F=Registro B=Bit D=Dirección de la operación. Si D=0 la operación se efectúa alterando solo el acumulador, si D=1 la operación se efectúa alterando el acumulador y el registro.
Fuente: Ángulo y Ángulo (1997:190)
2.2. MICROCONTROLADOR 16F84.
El PIC16F84 es funcionalmente igual al PIC16C84, sólo se diferencian en que
la memoria de programa de este último, como se explicó en el apartado anterior, es
EEPROM y la del primero es FLASH.
65
La memoria tipo FLASH, es no volátil, de bajo consumo, que se puede
escribir y borrar en circuito al igual que la EEPROM, pero suelen disponer de mayor
capacidad que estas últimas. El borrado sólo es posible con bloques completos y no
se puede realizar sobre posiciones concretas. Son recomendables en aplicaciones en
las que sea necesario modificar el programa a lo largo de la vida del producto, como
consecuencia del desgaste o cambios de piezas.
Para sus mejores prestaciones está sustituyendo a la memoria EEPROM para
contener instrucciones. Así, por contar con está memoria el PICF84 tiene la
peculiaridad de disponer de 68 registros de propósito general que ocupan las
direcciones comprendidas entre 0X0C y la 0X4F en hexadecimal. Por esta razón tiene
mayor capacidad de memoria RAM de datos, ya que disponen de 68 bytes en lugar de
los 36 del PIC16C84.
3. SOFTWARE
Un Programa o Software, es el conjunto de instrucciones que ejecuta un
ordenador o computadora. El término Programa puede referirse al código fuente
original o a la versión ejecutable (en lenguaje máquina) de un componente de
software. Cuando se habla de un programa se supone un cierto grado de terminación,
o sea, se da por hecho que están presentes todas las instrucciones y archivos
necesarios para la interpretación o compilación del programa. Por otro lado, se
entiende por Programa Ejecutable, un programa que ha sido traducido a código
66
máquina en un formato que puede cargarse en la memoria y ejecutarse. Sin embargo,
en los lenguajes interpretados puede referirse simplemente al código fuente en su
formato apropiado.
El Software puede dividirse en varias categorías basadas en el tipo de trabajo
realizado. Las dos categorías primarias de software son: el software de aplicación,
que dirige las distintas tareas para las que se utilizan las computadoras, y el software
del sistema (los sistemas operativos), que controlan los trabajos del ordenador o
computadora. Según Bores y Rosales (1993) los Software de Aplicación son
aquellos que tienen un propósito específico y el Software del Sistema auxilia en la
creación, modificación y ejecución del software de aplicación.
Los Sistemas Operativos fueron desarrollados sobre todo para coordinar y
trasladar los flujos de datos que procedían de fuentes distintas, como las unidades de
disco o los coprocesadores (chips de procesamiento que ejecutan operaciones
simultáneamente con la unidad central, aunque son diferentes). Un sistema operativo
es un programa de control principal, almacenado de forma permanente en la
memoria, que interpreta los comandos del usuario que solicita diversos tipos de
servicios, como visualización, impresión o copia de un archivo de datos; presenta una
lista de todos los archivos existentes en un directorio o ejecuta un determinado
programa.
67
Para crear el Software de Aplicación se utilizan un conjunto de vocablos y
reglas proporcionados por un software llamado Lenguaje, este consta de
instrucciones que deben darse en una determinada configuración de información
digital binaria. En las primeras computadoras, la programación era una tarea difícil y
laboriosa ya que los conmutadores ON-OFF de las válvulas de vacío debían
configurarse a mano. Programar tareas tan sencillas como ordenar una lista de
nombres requería varios días de trabajo de equipos de programadores. Desde
entonces se han inventado varios lenguajes informáticos como: el Lenguaje de Bajo
Nivel y el Lenguaje de Alto Nivel, ellos están orientados hacia funciones específicas
y centrados en la facilidad de uso.
Los Lenguajes de Bajo Nivel permiten crear programas muy rápidos, pero
que son a menudo difíciles de aprender. Más importante es el hecho de que los
programas escritos en un bajo nivel sean altamente específicos de cada procesador,
esto es porque vistos a muy bajo nivel, los microprocesadores procesan
exclusivamente señales electrónicas binarias. Dar una instrucción a un
microprocesador supone en realidad enviar series de unos y ceros espaciadas en el
tiempo de una forma determinada. Esta secuencia de señales se denomina código
máquina. El código representa normalmente datos, números e instrucciones para
manipular los microprocesadores, Código es, en realidad, un término genérico para
nombrar las instrucciones del programa, utilizadas en dos sentidos generales. El
primero se refiere al código fuente, legible a simple vista, que son las instrucciones
escritas por el programador en un lenguaje de programación. El segundo se refiere al
68
código máquina ejecutable, que son las instrucciones convertidas de código fuente a
instrucciones que el ordenador o computadora puede comprender.
Un modo más fácil de comprender el código máquina es dando a cada
instrucción un mnemónico, como por ejemplo STORE, ADD o JUMP. Esta
abstracción da como resultado el ensamblador, un lenguaje de muy bajo nivel que es
específico de cada microprocesador.
El Lenguaje de Máquina es propio del ordenador, basado en el sistema
binario, o código máquina, resulta difícil de utilizar para las personas. El programador
debe introducir todos y cada uno de los comandos y datos en forma binaria, y una
operación sencilla como comparar el contenido de un registro con los datos situados
en una ubicación del chip de memoria puede tener el siguiente formato: 11001010
00010111 11110101 00101011.
Uno de los métodos inventados por los programadores para reducir y
simplificar el proceso es la denominada programación con Lenguaje Ensamblador.
Al asignar un código mnemotécnico (por lo general de tres letras) a cada comando en
lenguaje máquina, es posible escribir y depurar o eliminar los errores lógicos y de
datos en los programas escritos en lenguaje ensamblador, empleando para ello sólo
una fracción del tiempo necesario para programar en lenguaje máquina. En el
lenguaje ensamblador, cada comando mnemotécnico y sus operadores simbólicos
equivalen a una instrucción de máquina. Un programa ensamblador traduce el código
69
fuente, una lista de códigos de operación mnemotécnicos y de operadores simbólicos,
a código objeto (es decir, a lenguaje máquina) y, a continuación, ejecuta el programa.
Sin embargo, el lenguaje ensamblador puede utilizarse con un solo tipo de
chip de CPU o microprocesador. Los programadores que dedicaron tanto tiempo y
esfuerzo al aprendizaje de la programación de un ordenador, se veían obligados a
aprender un nuevo estilo de programación cada vez que trabajaban con otra máquina.
Lo que se necesitaba era un método abreviado en el que un enunciado simbólico
pudiera representar una secuencia de numerosas instrucciones en lenguaje máquina, y
un método que permitiera que el mismo programa pudiera ejecutarse en varios tipos
de máquinas. Estas necesidades llevaron al desarrollo de lenguajes de alto nivel.
Los Lenguajes de Alto Nivel suelen utilizar términos ingleses del tipo LIST,
PRINT u OPEN como comandos que representan una secuencia de decenas o de
centenares de instrucciones en lenguaje máquina. Los comandos se introducen desde
el teclado, desde un programa residente en la memoria o desde un dispositivo de
almacenamiento, y son interceptados por un programa que los traduce a una serie de
instrucciones en lenguaje máquina.
La traducción de esta serie de instrucciones en lenguaje ensamblador (el
código fuente) a un código máquina (o código objeto) no es un proceso muy
complicado y se realiza normalmente por un programa especial llamado Compilador.
La traducción de un código fuente de alto nivel a un código máquina también se
70
realiza con un compilador, en este caso más complejo, o mediante un intérprete. Un
compilador crea una lista de instrucciones de código máquina y el código objeto,
basándose en un código fuente. El código objeto resultante es un programa rápido y
listo para funcionar, pero que puede hacer que falle el ordenador si no está bien
diseñado.
Los Intérpretes, por otro lado, son más lentos que los compiladores ya que no
producen un código objeto, sino que recorren el código fuente una línea cada vez.
Cada línea se traduce a código máquina y se ejecuta. Cuando la línea se lee por
segunda vez, como en el caso de los programas en que se reutilizan partes del código,
debe compilarse de nuevo. Aunque este proceso es más lento, es menos susceptible
de provocar fallos en la computadora.
3.1. PROGRAMACIÓN
Según Joyanes, Hermoso y Zahonero (1995), generalmente la principal razón
para que las personas aprendan lenguajes de programación es utilizar la computadora
como una herramienta para la resolución de problemas, para ello se pueden identificar
dos fases:
• Fase de resolución del problema.
• Fase de implementación en la computadora.
71
El resultado de la primera fase es el desarrollo de un algoritmo para resolver el
problema. Un Algoritmo es un conjunto de instrucciones que conducen a la solución
de un problema, se desarrolla en un lenguaje de programación que la computadora
pueda entender y expresado en cualquier lenguaje de programación de computadora
se denomina Programa, cuya ejecución y verificación es el objetivo final de la fase de
implementación.
El diseño de programas es una tarea difícil y es un proceso creativo, no existe
un conjunto completo de reglas o algoritmos para indicar como escribir programas,
así las fases mencionadas anteriormente disponen de una serie de pasos que conducen
a la solución del problema, tales como:
• Análisis del problema.
• Diseño del algoritmo.
• Codificación.
• Compilación y ejecución.
• Verificación.
• Depuración.
• Documentación.
Las dos primeras fases conducen a un diseño detallado en forma de algoritmo,
durante la Codificación simplemente el algoritmo es un código escrito en un lenguaje
de programación, seguidamente en la fase de compilación se traduce el código fuente
72
a código máquina mediante intérpretes o compiladores y en la fase de ejecución se
corre el programa sobre la computadora, finalmente en las fases de verificación y
depuración se buscan los errores de las etapas anteriores y se eliminan, para así
documentar el programa para saber que hace y como lo hace.
Para lograr un adecuado grado de confiabilidad en los programas se debe
partir de diagramas correctos, para ello se utilizan herramientas tales como diagramas
de flujo, pseudocódigos y diagramas de Nassi-Schneiderman. Usualmente los
Diagramas de Flujo son la base para la codificación del programa, en estos se
describe el algoritmo o solución del problema de una manera clara y explícita
utilizando de manera combinada una serie de símbolos gráficos, bloques y figuras de
control que incluyen una breve descripción de las operaciones o procedimientos
involucrados, denominadas pseudoinstrucciones. Adicionalmente se establecen
gráficamente la secuencia y el orden de ejecución de cada una de las operaciones,
mediante las líneas de flujo que apuntan siempre hacia la siguiente operación a ser
efectuada, sin embargo, tiene sus desventajas ya que es difícil de modificar por su
carácter gráfico; para superar esto surge el Pseudocódigo como alternativa, de
manera que se pueda programar utilizando como medio básico de expresión la lengua
nativa del programador.
Así mismo, para mejorar la productividad de un programa se utiliza la
Programación Modular, en el cual el programa se divide en módulos, cada uno de
los cuales ejecuta una única actividad y se codifica independientemente de otros
73
módulos. Cada programa contiene un módulo principal que controla todo lo que
sucede, transfiriendo el control a submódulos o subprogramas, de modo que puedan
ejecutar sus funciones. Dado que los módulos son independientes diferentes
programadores pueden trabajar simultáneamente en diferentes partes del programa, lo
que reduce el tiempo de diseño y codificación del programa, además cada módulo se
puede modificar radicalmente a los demás.
La descomposición de los programas en módulos independientes más simples
se conoce también como el método de "Dividir y Vencer" (Divide & Conquer). Se
diseña cada módulo con independencia de los demás, y siguiendo un método
ascendente y descendente se llegará hasta la descomposición final del problema en
módulos de forma jerárquica.
Seguidamente cada submódulo devuelve le control al módulo principal
cuando haya completado su actividad, que en el caso de ser muy compleja deberá
distribuirse en módulos más pequeños.
3.2. PROGRAMACIÓN ESTRUCTURADA
Es un término general que se refiere a un tipo de programación que produce
código con un flujo limpio, un diseño claro y un cierto grado de modularidad o de
estructura jerárquica. En concreto, la Programación Estructurada significa escribir
un programa de acuerdo a las siguientes reglas:
74
• El programa tiene un diseño modular.
• Los módulos son diseñados de modo descendente.
• Cada módulo se codifica utilizando las tres estructuras de control básicas:
Secuencia, Selección y Repetición. Las Estructuras de Control indican
el orden, alternancia y repetición de las distintas instrucciones que
componen un programa.
Entre los beneficios de la programación estructurada se encuentran la facilidad
de mantenimiento y la legibilidad por parte de otros programadores. La idea central
de la programación estructurada es darle al programador una herramienta y una
metodología para que pueda enfrentar la solución de cualquier problema de manera
exitosa sin tener que recurrir al procedimiento de ensayo y error.
El principio fundamental en el cual se basa la programación estructurada parte
de la idea lógica de que la mejor manera de obtener programas correctos (libres de
errores) es la de no introducir estos errores desde el comienzo. Al desarrollar un
programa se dedica tiempo en el chequeo y corrección de los errores introducidos
fundamentalmente en las primeras etapas del proceso, principalmente en el análisis
lógico y diseño del programa, es importante reducir estos errores para así minimizar
el tiempo de corrección del programa, con una ganancia en confiabilidad y seguridad
sobre su correcto funcionamiento (Marquez, J. 1992:62).
75
3.3. LENGUAJES PASCAL Y TURBO PASCAL
El lenguaje de programación PASCAL es un lenguaje de alto nivel y
propósito general, diseñado a finales de los 60s por Niklaus Wirth en el Instituto
Federal de Tecnología (Federal Institute of Technology) de Zurich, para enseñar la
programación de forma disciplinada y sistemática. Su nombre se debe al famoso
matemático francés Blaise PASCAL, diseñador de una de las primeras máquinas de
calcular mecánicas y precursora de las modernas computadoras digitales.
Este lenguaje ha adquirido aceptación y uso en las empresas, industrias y
computadoras personales, ya que es sencillo de aprender, aunque incluye un amplio
rango de conceptos de programación. Este programa fomenta entre los programadores
el escribir programas claros y que son fácilmente comprendidos por otros
programadores.
Muchos compiladores para PASCAL han sido construidos y están disponibles
para diferentes máquinas, los cuales ofrecen interpretaciones ligeramente diferentes
impidiendo la compatibilidad entre ellos, por ello The International Standards
Organization (ISO) y The American National Standard Institute (ANSI) en conjunto
con The Institute of Electrical and Electronics Engineers (IEEE), establecieron
definiciones estándares y oficiales del lenguaje de programación PASCAL conocidas
como: ISO PASCAL y ANSI/IEEE PASCAL, que difieren en algunos aspectos no
76
significativos. Sin embargo, dos versiones no estándar se han popularizado
considerablemente: UCSD PASCAL y TURBO PASCAL.
El Lenguaje TURBO PASCAL es la versión más popular y difundida debido
a su facilidad de edición, compilación y ejecución. La última mejora de TURBO
PASCAL corresponde a la versión 7.0, la cual posee las siguientes herramientas de
programación:
• Un entorno de desarrollo integrado.
• Punteros.
• Gestión Dinámica de Memoria.
• Introducción a la programación con funciones del DOS y el BIOS.
• El uso del lenguaje ensamblador y programas residentes en memoria.
• Programación orientada a objetos (OOP).
• Turbo Visión.
Este lenguaje de programación está desarrollado a partir del lenguaje
algorítmico y actualmente forma parte de las herramientas de trabajo informativo
disponible en cualquier mercado software. Sus características fundamentales según
autores como Joyanes, Hermoso y Zahonero (1995) y Lozano, P (1994) son las
siguientes:
• Constituye una herramienta excelente para el aprendizaje de la
programación.
77
• Es un lenguaje de propósito general.
• Es un lenguaje procedural (imperativo orientado a órdenes).
• Es un lenguaje estructurado (soporta las estructuras básicas while, for y
repeat, no necesita el empleo de la sentencia goto).
• En un lenguaje recursivo, es decir permite que sus módulos o
subprogramas (procedimientos y funciones) se llamen a sí mismos.
• Tiene riqueza de tipos de datos, con una gran cantidad de tipos tanto
predefinidos como definidos por el usuario.
• Producción por los compiladores de códigos ejecutables rápidos y
eficientes.
En PASCAL existen varios tipos de estructuras que se refieren a la forma en
como están dispuestas las instrucciones. Entre ellas se tienen Estructuras Simples,
formadas por una sola instrucción, y Estructuras Compuestas, conformadas por dos
o más instrucciones, en el caso de TURBO PASCAL delimitadas por un "Begin" y un
"End".
De esta misma manera existe una estructura para un programa en TURBO
PASCAL, compuesta por tres partes claramente diferenciadas que son:
• Cabecera del programa.
• Sección de declaraciones.
• Cuerpo del programa.
78
La Cabecera del Programa consta de tres partes: La palabra reservada
"program", el nombre del programa (un identificador) y un punto y coma (;). En
PASCAL estándar deben declararse, entre paréntesis y separados por comas todos los
ficheros que intervienen en la ejecución del programa.
La Sección de Declaraciones está compuesta por:
• Declaración de unidades (USES)(sólo en TURBO PASCAL).
• Declaración de etiquetas (LABEL).
• Declaración de constantes (CONST).
• Definición de tipos (TYPE).
• Declaración de Variables (VAR).
• Declaración de procedimientos y funciones (PROCEDURE, FUNCTION).
Cada una de estas secciones son opcionales, y aunque en PASCAL estándar
deben estar situadas en este orden y cada sección no puede aparecer más que una sola
vez, en TURBO PASCAL las secciones pueden aparecer más de una vez y en un
orden cualquiera.
Tras la sección de declaraciones comienza el programa principal que
constituye el Cuerpo del Programa donde están todas las sentencias que pertenecen
al programa en sí.
79
Así mismo TURBO PASCAL consta de una serie de elementos que se
combinan entre sí de acuerdo a las reglas de sintaxis propias del lenguaje. Entre los
elementos básicos se pueden resaltar: las Palabras Reservadas las cuales tienen un
significado específico para el compilador y que no pueden cambiarse, a diferencia de
ellas están los Identificadores Estándar, los cuales pueden ser redefinidos por el
usuario (aunque esta práctica no es recomendable) y representan constantes,
variables, tipos de datos, procedimientos, funciones, etc. También están los
Identificadores Definidos por el Usuario que designan los distintos elementos del
programa: tipos de datos, constantes, variables, procedimientos, funciones, etc. Están
formados por secuencias de caracteres alfabéticos y dígitos de cualquier longitud
(hasta 127) siendo significativos sólo los 63 primeros y construidos de acuerdo a las
siguientes reglas:
• Comienzan obligatoriamente por una letra. Excepcionalmente se admite
el carácter subrayado como componente (_) de un identificador.
• Los identificadores no pueden ser palabras reservadas.
• En PASCAL no existen diferencias entre mayúsculas y minúsculas en el
nombre de un identificador.
Además en un programa es importante tomar en cuenta los Comentarios, que
no son más que textos situados en el código fuente y que tienen como objetivo aclarar
el papel o función que determinadas sentencias desempeñan en el programa. Los
80
comentarios no generan un código ejecutable por el compilador. En PASCAL existen
dos formas de especificar comentarios: poner el texto entre los caracteres '(*' y'*)' o
bien entre llaves '' y ''. Pueden incluirse comentarios en cualquier parte del
programa.
Cabe destacar que un programa en PASCAL no se interpreta siempre se
compila, una vez efectuada la compilación, y si no se ha detectado algún error, el
programa está listo para ser efectuado.
4. SISTEMAS DE CONTROL
El uso de la palabra Sistema tiene muchos significados, se puede definir como
un conjunto, arreglo o colección de piezas unidas o relacionadas de tal manera que
forman una entidad o un todo (DiStefano, Stubberud y Williams, 1992:1). En una
manera más específica se puede decir que un sistema es un ordenamiento de
componente físicos unidos o relacionados que forman y actúan como una unidad
completa.
Del mismo modo la palabra Control se toma en el sentido de regular dirigir o
mandar, así como de mantener o modificar, según un criterio previamente fijado, los
valores de las variables de un cuerpo, máquina o proceso.
81
Combinando las definiciones anteriores se tiene que un Sistema de Control
es un ordenamiento de componentes físicos o relacionados de tal manera que mandan,
dirigen o regulan al mismo sistema o a otro. Según Richard Dorf (1989) un sistema
de control es una interconexión de componentes que forman una configuración del
sistema que proporcionará una respuesta deseada del sistema. La base para el análisis
de un sistema es el fundamento proporcionado por la teoría de los sistemas lineales la
cual supone una relación causa-efecto para los componentes de un sistema.
En un componente o proceso que vaya a ser controlado deben tomarse en
cuenta las entradas y salidas, las cuales representan la relación causa y efecto del
proceso. Como se aprecia en la Figura No. 7 la Entrada es el estímulo, excitación o
el mandato aplicado a un sistema de control, generalmente desde una fuente externa
de energía, para producir una respuesta específica en el sistema. Por otro lado, la
Salida es la respuesta real que se obtiene de un sistema de control la cual puede ser
igual o no a la respuesta implícita especificada por la entrada.
Figura No. 8: Proceso a Controlar
ProcesoEntrada Salida
Fuente: Dorf, R (1989:2)
Usualmente el propósito del sistema de control es identificar o definir la
entrada y la salida, y por consiguiente la naturaleza de los componentes del sistema.
Así se puede procesar la señal de entrada para proporcionar una variable de señal de
salida, frecuentemente con una amplificación de potencia.
82
Los sistemas de control, se clasifican en dos categorías generales, que se
distinguen por la acción de control, que es la cantidad responsable de activar el
sistema para producir la salida. Estas categorías son: Sistemas de Control de Lazo
Abierto y Sistemas de Control de lazo Cerrado.
Los Sistemas de Control de Lazo Abierto son aquellos en los cuales la
acción de control es independiente de la salida, es decir, las salidas del sistema son
controladas solamente por las entradas del mismo y no toma en cuenta la verdadera
salida del sistema. Un sistema de control de lazo abierto utiliza un regulador o
actuador de control a fin de obtener la respuesta deseada, como se muestra en la
figura:
Figura No. 9: Sistema de Control de Lazo Abierto
Respuesta de Salida Deseada ProcesoRegulador Salida
Fuente: Dorf, R (1989:2)
Dos características de los sistemas de control de lazo abierto son: la precisión
del sistema que está determinada por la calibración, que no es más que establecer o
restablecer la relación entrada-salida para obtener una exactitud deseada del sistema y
usualmente no presentan problemas de inestabilidad.
83
De acuerdo a Ogata (1993) un sistema de lazo abierto solo se puede utilizar si
la relación entre la entrada y la salida es conocida y si no se presentan perturbaciones
tanto internas como externas.
En contraste con un sistema de control de lazo abierto, el Sistema de Control
de Lazo Cerrado utiliza una medición adicional para compararla con la respuesta de
salida deseada, con frecuencia también se les llama sistema de control
Retroalimentado. La Retroalimentación es la característica que distingue a los
sistemas de control de lazo cerrado y es una propiedad que permite que la salida se
compare con la entrada de manera que la acción de control apropiada se pueda formar
como alguna función de la entrada y la salida. En concreto, un sistema de control
retroalimentado es un sistema en el cual el valor de alguna magnitud de salida es
controlado mediante la retroalimentación del valor de la magnitud controlada, la cual
es utilizada para manipular una magnitud de entrada de modo que la magnitud
controlada sea llevada a un valor más próximo al deseado. Este proceso se muestra en
la figura:
Figura No. 10: Sistema de Control de Lazo Cerrado
Respuesta de Salida Deseada
Medición
Proceso ReguladorComparador Salida
Fuente: Dorf, R (1989:3)
84
El uso de la acción de control retroalimentado es para reducir el error del
sistema, esto se da cuando la señal de error actuante, que es la diferencia entre la
señal de entrada y la de retroalimentación entre al controlador, reduce el error y lleva
la salida al valor deseado.
La presencia de retroalimentación imparte varias propiedades al sistema: se
aumenta la exactitud, hay una tendencia hacia la oscilación o inestabilidad, se reduce
la sensitividad de la razón salida/entrada frente a las variaciones en los parámetros del
sistema, se reducen los efectos de las no linealidades y de las distorsiones externas o
ruido y el ancho de banda es aumentado, el ancho de banda es una medida de la
respuesta de frecuencia de qué tan bien responde (o filtra) el sistema a las variaciones
(o frecuencias) de la señal de entrada.
Hasta el momento se ha expuesto que la principal diferencia entre los sistemas
de control de lazo cerrado y los de lazo abierto es la generación y utilización de la
señal de error, esta le otorga al sistema la capacidad de llevar a cabo una acción de
autocorrección. La Autocorrección se refiere a la capacidad del sistema para
monitorear o revisar una variable del proceso y automáticamente corregirlo si no es
aceptable.
4.1. MODOS DE CONTROL
85
La relación entre la señal de salida del controlador y la señal de error depende
del diseño y del ajuste de este, la manera como reacciona el controlador a la señal de
error indica el modo de control, estos se pueden clasificar de acuerdo a la
complejidad de los mecanismos y de los circuitos involucrados en: Control On-Off,
Proporcional, Proporcional-Integral y Proporcional-Integral-Derivativo.
En el modo de Control On-Off, el dispositivo o efector final solo tiene dos
posiciones o estados de operación. Si la señal de error es positiva el controlador envía
el dispositivo corrector final a una de sus dos posiciones, si la señal es negativa, el
controlador envía el dispositivo corrector final a la otra posición.
Según Maloney (1997) existe una característica importante en el control On-
Off, esta es la sobrecorrección que ocurre cuando el proceso no puede responder
instantáneamente a los cambios de la variable monitoreada, la sobrecorrección
depende de la naturaleza completa del sistema y puede ser diferente en las direcciones
positivas y negativas.
Ningún controlador On-Off puede exhibir la operación ideal, ya que estos
poseen una zona de actuación. La zona de actuación está definida como el más
pequeño rango de valores medidos que debe atravesar para hacer que el dispositivo
corrector vaya de una posición a la otra.
86
La zona de actuación es una expresión del hecho que el valor medido debe
pasar por encima del valor deseado y así alcanzar un valor positivo en la señal de
error, con el efecto de llevar al efector a una de las dos posiciones. Igualmente, el
valor medido debe caer por debajo del valor deseado para obtener una señal de error
negativa, y así llevar a la otra posición al efector. En muchos controladores On-Off, la
zona de actuación es fija, posiblemente de un 2%.
Todos los controladores On-Off tienen una Brecha Diferencial, esta se define
como el rango menor de valores que debe atravesar el valor medido para hacer que el
dispositivo corrector pase de una posición a otra. La brecha diferencial puede
expresarse como un porcentaje del rango completo del controlador. La brecha
diferencial tiene su ventaja en que se reduce el desgaste del dispositivo corrector y su
desventaja está en que el valor instantáneo medido puede desviarse del punto de
ajuste.
En el modo de Control Proporcional (P), el dispositivo corrector final no es
forzado a tomar una posición de todo o nada (On-Off), en lugar de esto, tiene un
rango continuo de posiciones posibles, así sin importar el mecanismo en sí y la
potencia que lo alimenta, el controlador proporcional es esencialmente un
amplificador con ganancia ajustable. La posición exacta que toma el efector final es
proporcional a la señal de error, en otras palabras, la salida del controlador es
proporcional a la señal de error que se refleja en su entrada. Este tipo de control
elimina la constante de oscilación alrededor del valor deseado.
87
En todo control proporcional existe una Banda Proporcional, la cual es el
porcentaje del rango total del controlador en el cual el valor medido cambiará en
orden de producir que el dispositivo de corrección final cambie en un 100%. La
mayoría de los controladores proporcionales tienen una banda proporcional ajustable.
Como afirmación general, se puede decir que el control proporcional trabaja
bien solamente en sistemas donde los cambios en el proceso son muy pequeños y
lentos.
Para las situaciones en las cuales los cambios en la carga son grandes y
rápidos, y el valor deseado puede variar considerablemente, el modo de Control
Proporcional-Integral (PI) se adapta mejor, en este modo la operación del
dispositivo corrector final está determinada por dos factores: la magnitud de la señal
de error que es la parte proporcional y la integral con respecto al tiempo de la señal de
error; en otras palabras, la magnitud del error multiplicada por el tiempo que ha
permanecido. De esta manera se puede decir que en este modo de control la señal de
control es proporcional a la suma de la señal de error y su integral.
Este modo se ajusta a la mayoría de las situaciones de control, ya que puede
controlar bastante bien grandes cambios en la carga, atenúa oscilaciones prolongadas,
disminuye el desbalance y se recupera rápidamente en presencia de una perturbación.
88
Aunque el control proporcional-integral es adecuado para la mayoría de las
situaciones de control no es adecuado para todos, hay procesos que presentan
problemas de control muy difíciles de manejar como: cambios muy rápidos en la
carga y retardos de tiempo grandes entre la aplicación de la acción correctora y el
aparecimiento de los resultados de dicha acción en la variable medida (Maloney,
1997:310).
En los casos en los que prevalecen algunos de estos problemas la solución
podría ser el Control Proporcional-Integral-Derivativo (PID), en el que la acción
correctiva es determinada por 3 factores: la magnitud del error, que es la parte
proporcional, la integral de tiempo del error, o la magnitud de error multiplicada por
el tiempo que ha persistido, que es la parte integral y el cambio del error en el tiempo,
que es la parte derivativa. Un rápido cambio del error provoca una mayor acción
correctiva que un cambio de error lento.
Se puede definir el control PID como un control en el cual la señal, de control
es proporcional a la suma de la señal de error, su integral y su derivada.
En un sentido intuitivo, la parte derivativa del controlador intenta mirar
adelante y prevee que el proceso sufrirá un cambio basándose en las medidas
actuales, es decir, si la variable medida está cambiando muy rápidamente, es seguro
que tratará de cambiar en una gran cantidad. Siendo este el caso, el controlador trata
89
de anticiparse al proceso implicando una acción correctora mayor que la que aplicaría
un control proporcional-integral.
B. REVISIÓN DE LA LITERATURA
Esta investigación se sustenta en un conjunto de proyectos desarrollados en
diversos laboratorios, entre los cuales se encuentran:
Figura No. 11: Jet Propulsion Lab's Sojourner
Fuente: mars.jpl.nasa.gov (1998-11-02)
The NASA Jet Propulsion Lab (1996) quienes diseñaron y construyeron el
Robot SOJOURNER, componente de la misión espacial Mars Pathfinder, para
realizar una serie de experimentos científicos, tecnológicos y de ingeniería; entre
ellos comprobar la posibilidad de realizar a bajo costo, el viaje, la entrada, el
descenso y el posicionamiento seguro en Marte de una carga útil para el hombre. Así
con un apropiado circuito de control para el movimiento del Robot, un sistema de
90
comunicaciones inalámbrico, un sistema de visión formado por cámaras
tridimensionales, un espectrómetro y un avanzado sistema de computación se pudo
obtener la información precisa de un planeta que hasta entonces no había sido
explorado. Sin embargo el desarrollo tecnológico más notable es la incorporación del
sistema de control remoto del rover, que utiliza la realidad virtual para observar los
movimientos del Robot y generar una serie de comandos para que el Robot se mueva
y realice sus operaciones, por medio de un joystick que hace mover al Robot virtual
en pantalla y envía los comandos hacia Marte.
Figura No. 12: Marvin
Fuente: www.-robotics.usc.edu (1998-11-02)
Los resultados obtenidos en tal proyecto fueron satisfactorios en lo que se
refiere a Robots manipulados para desplazarce en lugares inaccesibles para el
hombre, sin embargo posteriormente se han realizado investigaciones que enfocan
más el comportamiento y la autonomía de los Robots como se hizo en La
Universidad del Sur de California (The South California University) (1996)
donde adaptaron un carro radio control llamado MARVIN, al cual se le especifica el
91
tipo de comportamiento deseado más que el programa de control que lo produce. Está
equipado con 5 sensores detectores de sonar y dos bumpers táctiles que le proveen
una señal de realimentación del entorno. De esta información, infiere qué
características sensoriales son relevantes para actuar y toma las acciones apropiadas
frente a cada situación. De esta manera y a través de una política de control, el Robot
debe primero aprender a anticipar los resultados de conseguir una recompensa
positiva o negativa y tratar de evitar la negativa, y mediante esta información
actualizar la política de control hasta que sea la más apropiada. Los comportamientos
logrados incluyen evadir obstáculos, exploración del ambiente y el seguir una pared.
La contribución primaria de este trabajo está en su intento por identificar esquemas de
códigos más eficientes para la representación del estado del espacio o entorno.
Figura No. 13: Smart-V
Fuente: www.cs.umd.edu (1998-11-02)
Así mismo en el Laboratorio de Robot Móviles Autónomos (Autonomous
Mobile Robotics Laboratory) en La Universidad de Maryland (1997), un carro
92
radio control fue convertido en un Robot llamado SMART-V, capaz de correr de
forma autónoma o bajo un control externo vía módem inalámbrico. Sin embargo no
tenía la suficiente autonomía y para ello se creó una nueva versión completamente
autónoma y con un diseño mejorado. Este posee un anillo sonar de dos partes con 12
sensores de ultrasonido multiplexados en el tiempo y un módulo de rango que toma el
tiempo que tarda la señal del transductor en volver, estos trabajan en conjunto con
una computadora de manera inalámbrica transmitiendo los datos para el
procesamiento y trazan la ruta a seguir por el radio control. Sin embargo y a pesar que
los transductores del modelo tienen 20 grados de apertura de haz y son capaces de ver
distancias de hasta 10 metros tienen un error nominal de ±3 milímetros a ± 3 metros.
A pesar del margen de error presentado en la detección de obstáculos, mediante esta
investigación se logró el desplazamiento autónomo del Robot en un entorno no
controlado.
Figura No. 14: Pocketbot
Fuente: www.divent.com (1998-11-02)
93
Con respecto a la detección The Diversified Enterprises (1998) diseñaron el
POCKETBOT, un Robot miniatura totalmente programable desde cualquier
computador que posee sensores tales como celdas fotosensitivas para la visión, que
detectan las fuentes de luz y de esta manera puede ser instruido para que se acerque o
escape de ellas, se mueva alrededor de los obstáculos, busque puntos negros y ejecute
una cantidad incontable de otros comportamientos.
Figura No. 15: The Spirit Of Bolivia
Fuente: www.-robotics.usc.edu (1998-11-02)
En ese orden de ideas The Ullanta Performance Robotics (1997),
prepararon el equipo The Spirit Of Bolivia, conformado por Robots PIONNER I
desarrollados por ActivMedia Robotics, los cuales utilizando microcontroladores y
detectores infrarrojos son capaces de evitar colisiones con objetos de baja estatura y
de operar en distintos ambientes, además tienen un módulo para anillo sonar que
provee 180 grados de cobertura en la dirección en la que se desplaza y se les pueden
adaptar lasers, cámaras, sujetadores, brújula y el sistema de visión Fast Track.
94
Aprovechando estas características los investigadores de Ullanta equiparon estos
Robots con sistema de visión, sistema Fast Track/Cognachrome, siete sonares
detectores y un sujetador para la manipulación de objetos, el cual a su vez incorpora
sensores de ruptura de rayo. De esta manera lograron la interacción de cinco Robots
que juegan Fútbol/Soccer, logrando no solo la detección y manipulación de objetos
sino la autonomía en sus movimientos.
C. DEFINICIÓN DE TÉRMINOS BÁSICOS
A continuación se presenta un listado ordenado alfabéticamente de los
términos más utilizados.
• ALU (Aritmetic Logic Unit): Unidad aritmética y lógica; parte de una unidad
central de proceso que se encarga de realizar operaciones aritméticas y lógicas
(Electrónica Moderna Práctica, tomo 4, 1995, p. 9).
• BUFFER: Memoria, sección de memoria o registro que recoge la información
procedente de una memoria auxiliar, o más generalmente de un dispositivo de
entrada-salida reteniéndola para transferirla oportunamente a la memoria interna o
principal del ordenador (Microprocesadores y Microcomputadoras, 1980, p.242).
95
• CICLO DE TRABAJO: Relación entre el tiempo de trabajo con el de
inactividad de un circuito o sistema; se expresa generalmente en porcentaje
(Electrónica Moderna Práctica, tomo 4, 1995, p. 54).
• CMOS: Acrónimo de Complementary Metal Oxide Semiconductor
(Semiconductor Complementario de Óxido Metálico). Es un dispositivo
semiconductor formado por dos transistores de efecto de campo de óxido metálico
(MOSFET), uno del tipo n y otro del tipo p, integrados en un único chip de silicio
(Enciclopedia Microsoft® Encarta® 97).
• CONVERTIDOR ANALÓGICO DIGITAL (ADC): Circuito electrónico que
convierte una señal analógica en digital. La señal analógica, que varía de forma
continua en el tiempo, se conecta a la entrada del dispositivo y se somete a un
muestreo (cuantificación discreta, o asignación de un valor numérico a una
determinada intensidad de la señal) a una velocidad fija, obteniéndose así una
señal digital a la salida del mismo. Esta señal se puede volver a convertir en
analógica mediante un convertidor digital analógico (Enciclopedia Microsoft®
Encarta® 98).
• CPU: Unidad Central de proceso (Central Processing Unit). Módulo encargado
de buscar, decodificar y ejecutar instrucciones en un computador (Electrónica
Moderna Práctica, tomo 4, 1995, p. 77).
96
• EEPROM: Siglas que denotan memoria de sólo lectura programable y borrable
eléctricamente, cuyo contenido puede establecerse a través de un proceso de
programación a través de una delgada capa de dióxido de silicio a una puerta
flotante (Electrónica Moderna Práctica, tomo 4, 1995, p. 108).
• EPROM: Siglas que denotan memoria de sólo lectura y borrable, cuyo contenido
puede establecerse a través de un proceso de programación por inyección de
electrones y que puede borrarse por exposición a la acción de rayos ultravioletas
(Electrónica Moderna Práctica, tomo 4, 1995, p. 112).
• FRECUENCIA: En un efecto que se repite periódicamente, frecuencia es la
inversa del período, es decir, el número de oscilaciones que se producen por
segundo. Su unidad es el Hertzio (Hz). Freedman (1993, p. 670).
• INTERFAZ: Creación de enlaces permanentes entre aplicaciones permanentes
bajo el mismo sistema operativo. Consiste en la elección del conjunto de
informaciones de origen y el lugar donde se requieren reproducir. Freedman
(1993, p. 755).
• OTP (One-Time-Programmable): Dispositivos programables una sola vez
(PIC16/17 Microcontroller Data Book, 1996, p. 3).
97
• PUERTO: En hardware de ordenadores o computadoras, el lugar donde se
intercambian datos con otro dispositivo. Los microprocesadores disponen de
puertos para enviar y recibir bits de datos. Estos puertos se utilizan generalmente
como direcciones de memoria con dedicación exclusiva. Los sistemas completos
de computadoras disponen de puertos para la conexión de dispositivos periféricos,
como impresoras y módems (Enciclopedia Microsoft® Encarta® 98).
• PWM: Modulación por Ancho de Pulso (Pulse Width Modulation). Tipo de
modulación en que la duración o anchura de los impulsos se varía
proporcionalmente a la amplitud de los valores de muestra de la señal
moduladora. José Briceño (1993, p. 3.33).
• RAM: Memoria de acceso aleatorio (Random Access Memory). Almacenamiento
concebido para proporcionar un tiempo de acceso constante para cualquier
posición direccionada (Electrónica Moderna Práctica, tomo 4, 1995, p. 257).
• RISC: Siglas que significan Computadoras de juego de instrucciones reducido
(Reduced Instruction Set Computers), se identifican por poseer un repertorio de
instrucciones de máquina pequeño y simple, de forma que la mayor parte de las
instrucciones se ejecutan en un ciclo de instrucción (Microcontroladores PIC
Diseño Práctico de Aplicaciones, 1997, p. 6).
98
• REGISTRO: Números de posiciones de memoria que contienen una información
requerida a un aspecto específico. Dispositivo hardware, cuya función consiste en
retener una información que se ha de tratar a continuación (Microprocesadores y
Microcomputadores, Barcelona-España, 1980, p. 249).
• ROM: Memoria de solo lectura (Read Only Memory). Dispositivo capaz de
retener datos, los cuales no se pueden alterar por instrucciones de programa
(Electrónica Moderna Práctica, tomo 4, 1995, p. 286).
• TORQUE: Es el par desarrollado por el motor, proporcional al producto de la
corriente en la armadura y el flujo en el entrehierro, el que a su vez es
proporcional a la corriente de campo. Katsuhiko Ogata (1993, p.127).
• TRANSDUCTOR: Dispositivo al que se aplica una energía de entrada y
devuelve una energía de salida; esta energía de salida suele ser diferente al tipo de
energía de entrada (Enciclopedia Microsoft® Encarta® 97).
D. SISTEMA DE VARIABLES
Hasta el momento no ha sido encontrada una definición precisa que explique
el término Sistema Robótico, ya que este puede tener diversas connotaciones de
99
acuerdo a la aplicación y funcionamiento del mismo, así para lo que compete a esta
investigación los autores de este estudio Chacín y Socorro (1999) consideran
pertinente formular una definición apegada a los alcances de la misma.
De esta manera se define Sistema Robótico como una combinación de varios
dispositivos integrados y dispuestos de manera tal que formen una estructura capaz de
relacionarse con su entorno a través de sensores y de tomar decisiones en tiempo real
ejecutando tareas que no sean de simple repetición. En el cuadro, se establecen los
elementos que se utilizan para desarrollar y construir el Robot.
DIMENSIONES INDICADORES
Estructura
Mecánica
Le da forma al Robot y sostiene los demás componentes.
Microcontroladores Dispositivos pequeños, programables y capaces de almacenar
programas de control, le permiten tratar información y realizar
operaciones para controlar algunos de sus dispositivos
Sensores Dispositivos electrónicos que proveen información del
exterior.
PC Esté o no a bordo del Robot, es quien le dota de inteligencia a
través de un Software de Control.
Software de Control Líneas de programa de instrucciones que procesan la
información capturada por los sensores y toma decisiones
100
adecuadas para el funcionamiento del mismo.
Interfaces En caso de que el PC no forme parte interna del Robot
necesita Interfaces adecuadas para la comunicación entre
ambos.
Es importante destacar que este Sistema Robótico está diseñado para Eludir
Obstáculos, entendiéndose como tal la evasión de los diferentes objetos, paredes o
cualquier otro tipo de elementos que le impidan el paso o bien que se le interpongan
en la ruta, lo que implica que el Robot basándose en los estímulos de su entorno sea
capaz de responder adecuadamente, de manera que pueda movilizarse sin colisionar
con ningún elemento.
CAPITULO III_____________________________________ MARCO METODOLÓGICO
A. RECOLECCIÓN DE INFORMACIÓN.
Para la obtención de datos e información necesaria en la realización de esta
investigación se recurrió a publicaciones de diferentes autores, tales como libros
referentes a robótica así como también a tópicos pertinentes al desarrollo de Robots,
tales como: Electrónica, Sistemas de Control, Microcontroladores, Programación,
entre otros, de cuya información se determinaron las bases teóricas de la
investigación.
Por otra parte, para el desarrollo del Sistema Robótico fue necesaria la
búsqueda de información en otros medios tales como revistas, donde se destacan
varias ediciones de las Revistas Especializadas Cekit, en las cuales se indagaron
aspectos tales como: controladores de puertos del computador, interface RS232 y
datos pertinentes a microcontroladores, para los cuales también se utilizaron los
Manuales Operativos del Sistema de Desarrollo PICSTART PLUS.
Así mismo fueron consultados trabajos de grado realizados en la Universidad
Dr. Rafael Belloso Chacín, por Phorlakis y Schwartz (1997) y Contreras y Perdomo
(1996), utilizados como material de apoyo y referencia en aspectos como robótica y
control de puertos, respectivamente.
103
Finalmente uno de los medios utilizados para la recolección de datos fue el
acceso a diversas Páginas Web de Internet, mencionadas en la bibliografía, de las
cuales se recabó información sobre investigaciones recientes en el campo de la
robótica, e información técnica sobre componentes a utilizar en el desarrollo del
sistema.
B. INSTRUMENTOS
Para el desarrollo de esta investigación se utilizó como instrumento la
información suministrada por los documentales de Discovery Channel: Ultra Science,
Horizons, The New Explorers y Fronteras de la Ciencia, en estos se presentan los más
recientes descubrimientos e innovaciones tecnológicas, y de los cuales se extrajo
información competente a esta investigación, como lo son los últimos avances en las
teorías relacionadas con la Robótica en USA y Japón.
C. TIPO DE INVESTIGACIÓN
Esta investigación se considera del tipo Tecnológico debido a que las
actividades realizadas durante su desarrollo tales como el estudio, diseño y montaje
de los diferentes componentes de la estructura mecánica del Robot, del sistema de
visión, de los circuitos electrónicos y de las interfaces necesarias competentes al
hardware del sistema, así como los programas para los Microcontroladores y el PC
correspondientes al software que lo controla, están orientadas a la generación de
104
nuevo conocimiento como es la creación de un prototipo de Sistema Robótico para
eludir obstáculos, conocimiento que puede ser aplicado en el estudio y desarrollo de
Robots semi-autónomos o autónomos, para movilizarse en entornos no controlados y
desconocidos, así como en aplicaciones donde se requieran sistemas de visión
alternativos a las cámaras.
Así mismo y en concordancia con los criterios manejados por Sabino, C
(1995:39), la investigación de acuerdo a sus objetivos intrínsecos se considera del
tipo Descriptivo, ya que describe los componentes fundamentales de los Robots,
destacando los elementos esenciales ya mencionados y obteniendo las características
aprovechables en la realidad estudiada, evidenciadas en el desarrollo del Sistema
Robótico capaz de relacionarse con su entorno, evadiendo los posibles obstáculos.
D. FASES DEL DESARROLLO
La metodología del hardware adoptada para la presente investigación se
sustentó en la expuesta por Angulo, J. (1992) y adaptada a las características de este
estudio por Chacín y Socorro (1999).
Fase 1. - Definición de las Especificaciones.
En esta fase se define con la mayor precisión posible el funcionamiento del
sistema a desarrollar, para esto, solo debe establecerse los estímulos de entrada y de
105
salida, sin detenerse a explicar las razones. Debe especificarse el que y NO el por
qué.
Fase 2. - Esquema General del Hardware.
En esta fase se desarrolla en forma de BLOQUES FUNCIONALES todas las
etapas del sistema interconectadas entre sí de manera lógica. Se asume como bloques
funcionales, cada una de las partes elementales del sistema encargado de hacer un
único trabajo en particular.
Fase 3. - Ordinograma General.
Aquí se establece el diagrama de flujo que se estima será el que regirá el
funcionamiento del circuito. Este diagrama se denomina general porque su propósito
es el de servir como base para el desarrollo del software, el cual está sujeto a
modificación. Este se realiza en forma general pero que ilustre el funcionamiento del
sistema.
Fase 4. - Adaptación entre el Hardware y el Software.
Una vez establecida la forma del hardware y del software se establecen los
diferentes mecanismos para la comunicación entre ambos, garantizando que la
información entra y sale en forma correcta.
106
Fase 5. - Ordinogramas Modulares y Codificación de Programas.
En esta etapa, cada uno de los diferentes bloques generales del diagrama de
flujo se codifican individualmente, asegurándose que cada parte realiza el trabajo en
forma eficiente y segura. Esto se hace codificando el programa directamente en el
lenguaje seleccionado para tal fin.
Fase 6. - Implementación del Hardware.
Acá, se materializa el circuito. Para ello se estudian las hojas del fabricante de
los diferentes circuitos a utilizar. Debe tenerse especial cuidado en las corrientes de
consumo y las que puede entregar cada una de las salidas, con el fin de no
sobrecargar cada una de las partes. Así mismo, se debe prever el uso de todos y cada
uno de los pines, para no dejar ninguno desconectado.
Fase 7. - Depuración del Software.
En esta, el programa se prueba y se depura hasta que su funcionamiento sea el
adecuado. Es imperativo probar todas y cada una de las diferentes bifurcaciones del
programa, incluso, se determina su funcionamiento bajo condiciones extremas.
Fase 8. - Integración del Hardware con el Software.
107
Finalmente se prueba la interacción entre ambas partes, confirmando que la
totalidad del sistema interactúa de manera correcta y eficiente.
Fase 9. - Construcción del Prototipo definitivo y pruebas finales.
Si es necesario implantar todo el sistema, en el ámbito de hardware se
materializa con una placa de baquelita o fibra de vidrio y el programa se establece
compilado y se prueba nuevamente la funcionalidad de la totalidad del sistema.
E. MATERIALES Y EQUIPOS
En el desarrollo de la investigación se hizo necesaria la utilización de diversos
dispositivos electrónicos y equipos para la implementación del hardware y el software
del Sistema Robótico.
Para la construcción del hardware se pueden mencionar los componentes
utilizados de acuerdo a las diferentes funciones a cumplir en el sistema, entre ellas
tenemos:
• Procesamiento Central de información:
Computador.
108
• Estructura del Robot:
Chasis de un Carro Radio-Control.
• Movimientos del Robot:
1 Transmisor FUTABA de 75 MHz.
1 Tarjeta Interna, para la cual se utilizó:
1 Interface programable de periféricos 8255 .
1 Comparador de Magnitud de 8 bits 74CH688.
16 Resistencias de 1.5KΩ.
2 Resistencias de 2.2KΩ.
14 Resistencias de 3KΩ.
8 Resistencias de 10KΩ.
2 Potenciómetros de 5KΩ.
2 Capacitores de 0.1µF.
1 Amplificador operacional LM324.
1 Conector DB25.
1 Receptor FUTABA de 75 MHz.
1 Control electrónico de Velocidad de NOVAK ELECTRONICS INC.
1 Motor de 23000 rpm.
3 Capacitores de 0.1µF.
1 Servomotor FUTABA S3003.
109
• Comunicación entre el PC y el Robot:
1 Transmisor PARALLAX de 303.82 MHz.
1 Receptor PARALLAX de 303.82 MHz.
1 Transmisor PARALLAX de 418 MHz.
1 Receptor PARALLAX de 418 MHz.
1 PIC16C84.
1 PIC16F84.
2 Capacitores de 0.01µF.
4 Capacitores de 29µF.
2 Cristales de 4MHz.
1 Interface RS232, para la cual se utilizó:
1 MAX232CPE.
1 PIC16C84.
1 Cristal de 4MHz.
1 Capacitor de 0.01µF.
4 Capacitores de 1µF.
1 Capacitor de 10µF.
2 Capacitores de 29µF.
1 DB9.
• Funciones específicas del Robot:
1 ADC0804LCN.
110
1 Multiplexor Analógico ECG4067.
1 PIC16C84.
2 PIC16F84.
3 Capacitores de 0.01µF.
6 Capacitores de 29µF.
3 Cristales de 4MHz.
1 Servomotor FUTABA S3003.
2 Sensores Ultrasónicos de distancia SENIX Corporation.
2 Relés de 5 Voltios.
1 Celda Fotoconductiva.
1 Resistencia de 10KΩ.
3 Potenciómetros de 10KΩ.
• Alimentación del Robot:
2 Baterías de Nikel Cadmium recargables de 7.5 Voltios.
4 Baterías de 9 Voltios.
. 1 Relé de 5 Voltios.
5 Capacitores de 220µF.
Así mismo para la implementación del software fue necesario la utilización de
los siguientes programas:
• Laboratorio MPLAB 4.1.
• Lenguaje Ensamblador MPASM.
111
• Programador de Microcontroladores EPIC.
• TURBO PASCAL 7.0.
Por último es importante mencionar los equipos de uso general empleados en
el desarrollo del Sistema Robótico:
• Osciloscopio.
• Multímetro.
• Punta lógica.
CAPITULO IV______________________________________ RESULTADOS DE LA INVESTIGACIÓN
RESULTADOS DE LA INVESTIGACIÓN
Los Resultados de la Investigación están dados por la aplicación de las Fases
de la Metodología de Angulo, J (1992) conteniendo los Resultados Obtenidos,
Discusión de los Resultados, Conclusiones y Recomendaciones.
FASE 1. - DEFINICIÓN DE ESPECIFICACIONES
La presente investigación abarca los procesos concernientes al desarrollo de
un Sistema Robótico semi-autónomo, construido a partir de un Carro Radio-Control
adaptado, el cual basándose en los estímulos del entorno es capaz de movilizarse
evadiendo los posibles obstáculos del medio.
El sistema consta de un Sonar (Sound Navigation and Ranging) ubicado en el
Robot, con el cual se obtiene información del exterior, específicamente de los objetos
que puedan rodearlo, esta información es transmitida vía FM al PC, para ser analizada
por un software de control y monitoreo, obteniendo un diagrama de Sonar
representativo al entorno del Robot, luego de ser procesada la información, se toma
una decisión y se generan las órdenes que serán enviadas al Robot indicándole como
moverse.
114
Para lograr tal propósito, se utiliza un lenguaje de programación de alto nivel
para tener mayor velocidad en el reconocimiento de las trayectorias y toma de
decisiones. Así mismo se emplea una interface dentro del PC para habilitar la
cantidad de puertos de salida necesarios para emitir las órdenes correspondientes al
movimiento del Robot, mientras que la comunicación pertinente al escaneo del
entorno se realiza a través del puerto serial, ambas comunicaciones son inalámbricas
vía FM.
Finalmente para que el sistema maneje variables independientes al
movimiento del Robot, tales como los componentes del Sonar, la alimentación e
iluminación, se hizo necesario el uso de microcontroladores, los cuales trabajan en
forma modular y controlan las acciones pertinentes a dichas variables.
Atendiendo a estas consideraciones el Sistema Robótico desarrollado está
capacitado para realizar sus funciones en un entorno no controlado y sin la
intervención de un operador.
FASE 2. - ESQUEMA GENERAL DEL HARDWARE
El desarrollo del Sistema Robótico cuenta estructuralmente con la disposición
de seis módulos de funcionamiento general (Figura No. 16), encargados de obtener
una señal del exterior, procesarla y responder de manera que el Robot pueda moverse
libremente por el entorno evadiendo los posibles obstáculos.
115
Figura No. 16: Diagrama General del Sistema
Velocidad
Fotoconductiva
PC
Módulo de Movimiento del Robot
Módulo de Conversión Analógica-Digital y
Transmisión Serial de Datos
Módulo Accionador y Selector de Variables
Módulo Receptor y Direccionador de Ordenes
Módulo de Comunicación entre el PC y el Robot
Multiplexor Batería de los Sensores
Batería Auxiliar
Batería Principal
Celda
Sensor
Sensor
Relé Luces
Servomotor
Motor DC
Servomotor
Rx 75 MHz Control Electrónico de
Tx 418 MHz
ADC0804
PIC16C84
PIC16F84
PIC16F84Rx 303.82 MHz
PIC16C84
PIC16F84
Tx 75 MHzTarjeta Interna Rx 418 MHz Tx 303.82 MHz
PIC16C84Interface RS-232
Módulo de Procesamiento Central
Fuente: Los Autores, Chacín y Socorro (1999)
116
Estos seis módulos activados e interconectados entre si, tienen a su cargo las
siguientes funciones del sistema que tienen como labor obtener un resultado
satisfactorio para sí mismo:
• Procesamiento de Información del entorno y toma de decisiones.
• Transmisión de órdenes para el movimiento del Robot.
• Interfaz para la comunicación con el Robot.
• Recepción y Direccionamiento de órdenes.
• Posicionamiento del Servomotor.
• Accionar y seleccionar variables.
• Conversión analógica-digital y Transmisión serial de datos.
• Ejecución de órdenes de movimiento.
En primer lugar se encuentra el Módulo de Procesamiento Central, cuya
función es generar todas las órdenes necesarias para el correcto funcionamiento del
sistema. En él reside el algoritmo de toma de decisiones para la sección del sistema
colocada en el área remota (Robot), este analiza la información y decide entre las
posibilidades cual es la mejor manera de reaccionar a los estímulos percibidos por el
SONAR en sus dos estados (escaneo completo del entorno y detección de obstáculos
durante el movimiento) y el sensor de luz, así mismo este módulo es capaz de
monitorear el estado de las baterías.
117
Una vez realizada esta operación genera un código digital o palabra, que
ejerce una orden sobre las acciones del Robot entre las cuales están implementadas el
movimiento del Robot, el escaneo del entorno en cualquier dirección, el cambio de
batería y el encendido de las luces. La posibilidad de intercambiar órdenes en
palabras de datos de 1 byte de ancho o más, infiere la capacidad de hacer el sistema
flexible a la aplicación que el usuario pueda necesitar solo cambiando el software de
control, como traslado de objetos, exploración semi-autónoma por medio de cámaras,
etc., de igual forma permite la adición de nuevo hardware para lograr mayor
funcionalidad del sistema en general.
Con referencia a las órdenes pertinentes al movimiento del Robot, este
módulo consta de una tarjeta interna conectada a uno de los slots internos del PC,
encargada de convertir el código digital emitido por el programa de control y
monitoreo a valores analógicos que pasan a un transmisor ubicado en el Módulo para
la Comunicación PC-Robot, provocando el posterior movimiento del Robot. La
tarjeta posee una Interface Programable de Periféricos para obtener más líneas de
salida, un comparador de magnitud para darle la dirección al puerto de salida, una red
escalera para convertir la palabra digital en un voltaje analógico y un amplificador
para elevar y calibrar el voltaje de salida al transmisor.
El Módulo de Procesamiento intercambia información con el Robot a través
de los Módulos habilitados para la Comunicación entre ambas partes del sistema.
118
Como se puede inferir sobre este módulo recae toda la responsabilidad de que el
sistema trabaje de forma óptima y cumpla con su cometido.
Seguidamente se encuentra el Módulo de Comunicación entre el PC y el
Robot, este consta de los dispositivos necesarios para el intercambio de información
entre el PC y el Robot, pertinentes tanto a órdenes para el movimiento como al
control de las variables (Sonar, baterías y luz) que influyen en el comportamiento del
sistema. Con respecto al movimiento del Robot se utiliza un transmisor de Radio-
Control FUTABA a 75 MHz, que obtiene el voltaje de salida analógico proveniente
de la tarjeta interna (correspondiente al módulo anterior) y lo modula en PWM
(Modulación por Ancho de Pulso) para controlar los dispositivos y en FM para
enviarlos inalámbricamente.
De la misma manera, para el intercambio de información serial, este módulo
tiene un transmisor y un receptor para BASIC Stamp II adaptados de DVP Inc., que
trabajan a las frecuencias de 303.82 MHz y 418 MHz respectivamente. Ambos están
conectados a un microcontrolador que posee un programa que se encarga de bajar o
aumentar la velocidad de transmisión y recepción de datos según sea el caso, dado
que la velocidad de transmisión y recepción de datos del PC es de 9600 Baudios y la
velocidad de transmisión y recepción de datos hacia el Robot es de aproximadamente
1000 Baudios. A su vez este microcontrolador se encuentra conectado al PC por
medio de una interface RS232 al puerto serial de la computadora, y de esta manera
transmitir la información correspondiente a las instrucciones del PC, es decir, las
119
órdenes del escaneo del entorno, las del chequeo de baterías, la luz del ambiente y de
igual manera recibir la información obtenida por el Robot correspondiente a cada
orden para su procesamiento.
El Módulo Receptor y Direccionador de Órdenes está compuesto por un
receptor de 303.82 MHz y un microcontrolador PIC16F84 que decodifica la
instrucción emitida por el PC y la direcciona dependiendo del tipo de orden, de esta
manera se generan códigos de movimiento para el servomotor y chequeo del entorno
o se mantienen actualizados los estados de las demás variables implementadas.
Por otra parte el Módulo Accionador y Selector de Variables está
compuesto de tres microcontroladores de la serie PIC16X84 y un multiplexor
analógico, que se encargan de recibir los códigos del direccionador para accionar los
dispositivos sobre los cuales se ejecutan acciones, como el servomotor, los sensores,
las luces y el relé de conmutación para las baterías, o bien selecciona las variables a
monitorear por el software de control. La salida de este módulo se alimenta al
convertidor Analógico-Digital ADC0804 del Módulo de Conversión Analógica-
Digital y Transmisión Serial de Datos para que el valor de la variable analógica sea
transformado a un valor digital que es captado por un microcontrolador PIC16C84 y
luego es enviado al computador para su procesamiento mediante un transmisor de
418 MHz, que también forma parte de este módulo.
120
Finalmente se encuentra el Módulo de Movimiento del Robot el cual recibe
las ondas emitidas por el transmisor de 75 MHz, consta de un receptor de FM que
demodula la señal en su forma original de trabajo, es decir, en PWM y las emite por
dos canales separados donde están conectados el control electrónico de velocidad
para el movimiento del motor y el servomotor encargado del cruce de las ruedas para
la dirección, generando así el desplazamiento del Robot.
FASE 3. - ORDINOGRAMA GENERAL
Los microcontroladores que conforman el hardware, tales como el
microcontrolador de la interface serial, el direccionador de datos, el posicionador, los
selectores de variables y el microcontrolador encargado de recibir los datos del
convertidor y enviarlos, así como el software de control del Sistema Robótico
trabajan modularmente según los diagramas de flujo que se presentan a continuación.
Primeramente se tiene el diagrama del microcontrolador encargado de la
comunicación entre el PC y el Robot, el cual reduce o aumenta las velocidades de
transmisión y recepción de datos según sea el caso. Este programa comienza
inicializando las variables y configurando los puertos de entrada y salida,
seguidamente lee el puerto de entrada del PC y de recepción del Robot, si en
cualquiera de estos puertos se presenta alguna variación se procede a recibir los datos
y enviarlos al siguiente dispositivo a la velocidad correspondiente.
121
Figura No. 17: Interface
Si
No
No
Si
1
1
1
1
Leer Puerto de Entrada
del PC
Leer Puerto de Entrada
del Receptor del Robot
Puerto=1
Puerto=1
Inicio
Configurar Puertos
Recepción de Datos a 1000 Baudios
Recepción de Datos a 9600 Baudios
Transmisión de Datos a 9600 Baudios
Transmisión de Datos a 1000 Baudios
Inicializar Variables
Fuente: Los Autores, Chacín y Socorro (1999)
122
Existe un segundo diagrama correspondiente al direccionador de datos
ubicado en el Robot, que indica cual es el primer dispositivo a trabajar.
Figura No. 18: Diagrama del Direccionador
2
22
2
No
No
NoSi
Si
Si
Leer Puerto de Entrada
La Respuesta es Recibida
Ultimo Bit = 1
Puerto=1
Inicio
Configurar Puertos
Recepción de Datos Seriales
Colocar Información en
el Puerto
Transmisión de Datos Seriales al Siguiente
Módulo
Enviar Señal de Verificación o Handshaking
Inicializar Variables
Fuente: Los Autores, Chacín y Socorro (1999)
Luego de inicializar las variables y configurar los puertos de entrada y salida
se espera por los datos en el puerto de entrada, una vez recibido el bit de start se
123
reciben los datos serialmente y se verifica el tipo de dato por el último bit, es decir, si
este bit es uno se envía serialmente al siguiente módulo, si es cero se coloca la señal
en el puerto y se envía la señal de verificación para accionar el Sonar.
Seguidamente el microcontrolador que controla la acción del Sonar se rige por
el siguiente esquema de funcionamiento:
Figura No. 19: Diagrama del Posicionador
A
No
Si
1
1
Leer Data en Puerto
Leer Puerto de Handshaking
Puerto=1
Inicio
Configurar Puertos
Generar PWM
Inicializar Variables
Establecer Duración de Variables de Espera
124
A
3
Seleccionar Sensor
Comparar Orden Recibida
Colocar Valor
Enviar señal de verificación
Fuente: Los Autores, Chacín y Socorro (1999)
Al igual que en los programas anteriores se inicializan las variables y
configuran los puertos, luego se establece la posición predeterminada y se genera el
PWM para el servomotor mientras se lee el puerto de verificación hasta que una
nueva data llegue, la cual al leerla, se envía la señal de verificación de que la data ha
sido recibida, se compara la orden recibida y se ejecuta.
Uno de los microcontroladores que seleccionan las variables tales como
encendido de luces y estado de baterías, actúa de la siguiente manera:
125
Figura No. 20: Diagrama del Selector de Variables A
NoB
No4
Si
4
Leer Puerto de Recepción
Puerto=1
Inicio
Configurar Puertos
Inicializar Variables
Recepción de Datos Seriales
4
4
4
4
No
No
No
Si
Si
Si
Si
Enviar Señal de Monitoreo de Batería de
los Sensores
Enviar Señal de Monitoreo de Batería
Principal
Enviar Señal de Monitoreo de Luz
Enviar Señal de Monitoreo de Batería
Auxiliar
Bit 1=1
Bit 2=1
Bit 3=1
Bit 4=1
126
B
4
4
4
No
No
No
No
Si
Si
Si
4
Apagar Luces
Encender Luces
Desactivar Relé
Activar Relé
Bit 6=1
Bit 5=1
Bit 7=1
Fuente: Los Autores, Chacín y Socorro (1999)
Se inicializan las variables pertinentes, se configuran los puertos de entrada y
salida, se lee el puerto de forma cíclica hasta que llegue el bit de Start, entonces se
reciben los datos serialmente y se chequea uno a uno los bits de la palabra de datos
recibida, dependiendo de cada uno de los bits se ejecuta la orden correspondiente.
El funcionamiento del segundo microcontrolador encargado de la selección de
variables funciona de la siguiente manera: Primeramente se configuran los puertos y
se verifica cual de los puertos ha cambiado su estado para seleccionar la variable
correspondiente directamente en el multiplexor y se envía la señal de inicio para el
Módulo de Conversión Analógica-Digital y Transmisión Serial de Datos.
127
Figura No. 21: Diagrama del Selector de Variables B
Fuente: Los Autores, Chacín y Socorro (1999)
Si
Si
Si
Si No
No
No
No
No
NoSi
Si
5
5
Enviar señal de Inicio
5
Enviar señal de Inicio
5
Enviar señal de Inicio 5
5
5
5
Enviar señal de Inicio
Seleccionar la Batería de los
Sensores
Puerto 6=0
Seleccionar Batería Principal
Seleccionar Batería Auxiliar
Seleccionar Celda Fotoconductiva
Encender Sensor 2
Seleccionar Sensor 2
Enviar señal de Inicio
Encender Sensor 1
Seleccionar Sensor 1
Enviar señal de Inicio
Puerto 5=0
Puerto 4=0
Puerto 3=0
Puerto 2=0
Puerto 1=0
Inicio
Configurar Puertos
128
En este módulo se encuentra un microcontrolador cuyo diagrama se presenta a
continuación:
Figura No. 22: Diagrama del Microcontrolador del ADC
7
No
No
Si
Si
6
7
6
6
Puerto=0
Puerto=0
Inicio
Configurar Puertos
Esperar Señal de Fin de Conversión
Colocar Dato en registro Transmisión de Datos a 1000 Baudios
Enviar Señal de Inicio de Conversión
Inicializar Variables
Esperar Señal de Inicio
Fuente: Los Autores, Chacín y Socorro (1999)
129
Luego de inicializar las variables y configurar los puertos, se espera la señal
de inicio, se envía la señal de inicio de conversión y se espera la de fin de conversión,
luego se coloca el dato en el registro y se transmiten los datos al PC.
Finalmente se presenta el diagrama de flujo del Software de Control del
sistema:
Figura No. 23: Software de Control
C
7
BUSCA_ESCAPES
BUSCA_ESPACIOS
BUSCA_OBSTACULOS
COMUNICACION
BATERIA
LUZ
SENSORES
SCAN
Inicio
Inicializar Variables
130
C
7
CALCULOS
PANTALLA
Fuente: Los Autores, Chacín y Socorro (1999)
El Software de Control es el encargado de tomar las decisiones referentes a las
acciones del Robot, a partir de información recibida del mismo. Para realizar sus
funciones primeramente inicializa las variables del programa y chequea la
comunicación entre el PC y el Robot, recibiendo la información pertinente al estado
de las baterías del sistema, del estado de las baterías de los sensores, de la luz del
ambiente y del escaneo del entorno. Esta información es procesada por rutinas
correspondientes a cada una de ellas tomando las decisiones adecuadas y emitiendo
las órdenes al Robot.
FASE 4. - ADAPTACIÓN ENTRE EL HARDWARE Y EL SOFTWARE
El hardware electrónico a utilizar se basa principalmente en los
microcontroladores de la serie PIC16CXX de MICROCHIP, por otro lado el software
a utilizar es el laboratorio para microcontroladores MPLAB, en el cual se incluyen un
131
Editor/Ensamblador (MPASM). Este software de aplicación puede ser encontrado en
la página de Microchip en Internet (ver Bibliografía).
La interacción entre el hardware y el software puede ser observada en 4 de los
6 módulos:
• Módulo de Comunicación entre el PC y el Robot
• Módulo Receptor y Direccionador de órdenes.
• Módulo Accionador y Selector de Variables.
• Módulo de Conversión Analógica-Digital y Transmisión serial de
datos.
Con respecto al primero de los módulos señalados, el Módulo de
Comunicación entre el PC y el Robot, en la tarjeta interna, se colocó un controlador
de periféricos 8255 para conseguir las salidas necesarias para el control del
movimiento, la configuración de los bits en uso:
Tabla No. 2: Configuración de Puertos 8255
BIT CONFIGURACIÓN USO
D0-D7 ENTRADA ENTRADA DE DATOS
PA0-PA7 SALIDA SALIDA DE DATOS
PB0-PB7 SALIDA SALIDA DE DATOS
PC0-PC7 NO UTILIZADO NO UTILIZADO
Fuente: Los Autores, Chacín y Socorro (1999)
132
En este primer módulo también se encuentra la interface serial del PC, donde
se conectaron los dispositivos al puerto COM1 (DB-9), este puerto se encuentra en la
dirección H3F8 del computador, y se utilizaron los siguientes pines:
Tabla No. 3: Puerto Serial COM1
PIN CONFIGURACIÓN USO
1 COMÚN PIN 4 y PIN 6
TXD (2) SALIDA TRANSMISIÓN DE DATOS
RXD (3) ENTRADA RECEPCIÓN DE DATOS
4 COMÚN PIN 1 y PIN 6
GND (5) TIERRA TIERRA
6 COMÚN PIN 1 y PIN 4
7 COMÚN PIN 8
8 COMÚN PIN 7
9 NO UTILIZADO NO UTILIZADO
Fuente: Los Autores, Chacín y Socorro (1999)
Así mismo para cumplir las tareas de transmisión y recepción de datos entre
los dispositivos remotos, se configuró un microcontrolador, que se encarga de
manejar la información que entra y sale. El PIC16C84 encargado de la transmisión y
recepción serial, posee la siguiente configuración de los bits:
Tabla No. 4: Configuración de bits del Transmisor y Receptor del PC
BIT CONFIGURACION USO
RA0 ENTRADA RECEPCIÓN DE DATOS
133
RA1 SALIDA TRANSMISIÓN DE DATOS
RA2 ENTRADA RECEPCIÓN DE DATOS
RA3 SALIDA TRANSMISIÓN DE DATOS
RA4 NO UTILIZADO NO UTILIZADO
RB0-RB7 SALIDAS DISPLAY DE ÓRDENES
Fuente: Los Autores, Chacín y Socorro (1999)
Ahora, con respecto al Módulo Receptor y Direccionador de órdenes, está
compuesto solo por un microcontrolador PIC16F84, que recibe las órdenes
serialmente y las direcciona para el dispositivo requerido, su configuración de bits es
la siguiente:
Tabla No. 5: Configuración de bits del Direccionador
BIT CONFIGURACIÓN USO
RA0 ENTRADA RECEPCIÓN DE DATOS
RA1 SALIDA HANDSHAKING
RA2 SALIDA TRANSMISIÓN SERIAL
RA3 ENTRADA HANDSHAKING
RA4 NO UTILIZADO NO UTILIZADO
RB0 SALIDA MENOR BIT DE DATOS
RB1 SALIDA BIT DE DATOS
RB2 SALIDA BIT DE DATOS
RB3 SALIDA MAYOR BIT DE DATOS
RB4 SALIDA SELECCIÓN DE SENSOR
134
RB5 NO UTILIZADO NO UTILIZADO
RB6 NO UTILIZADO NO UTILIZADO
RB7 NO UTILIZADO NO UTILIZADO
Fuente: Los Autores, Chacín y Socorro (1999)
Seguidamente el Módulo Accionador y Selector de Variables, tiene la tarea de
posicionar el servomotor, seleccionar las variables de entrada y accionar los
dispositivos ordenados por el software de control. Para este fin, se implantaron tres
microcontroladores que se comparten la responsabilidad conectados a varios relés y
un multiplexor analógico CMOS. El primero de estos, se encarga del posicionamiento
de servos y selección de sensores, así por medio del software implantado en el
microcontrolador, se habilitaron los siguientes bits:
Tabla No. 6: Configuración de bits del Posicionador
BIT CONFIGURACIÓN USO
RA0 NO UTILIZADO NO UTILIZADO
RA1 SALIDA HANDSHAKING
RA2 SALIDA SELECTOR DEL SENSOR 1
RA3 SALIDA SELECTOR DEL SENSOR 2
RA4 NO UTILIZADO NO UTILIZADO
RB0 ENTRADA MENOR BIT DE DATOS
RB1 ENTRADA BIT DE DATOS
RB2 ENTRADA BIT DE DATOS
RB3 ENTRADA MAYOR BIT DE DATOS
135
RB4 ENTRADA SELECCIÓN DE SENSOR
RB5 ENTRADA HANDSHAKING
RB6 SALIDA PWM PARA SERVOMOTOR
RB7 NO UTILIZADO NO UTILIZADO
Fuente: Los Autores, Chacín y Socorro (1999)
El segundo de los microcontroladores puede o no, según sea la orden, recibir
una entrada serial para cumplir las tareas de seleccionar variables para su
actualización en el software de control o puede ejecutar órdenes directamente, como
cambiar la batería del sistema, para este fin se configuró de la siguiente manera:
Tabla No. 7: Configuración del PIC Selector A
BIT CONFIGURACIÓN USO
RA0 ENTRADA RECEPCIÓN SERIAL
RA1 NO UTILIZADO NO UTILIZADO
RA2 NO UTILIZADO NO UTILIZADO
RA3 NO UTILIZADO NO UTILIZADO
RA4 NO UTILIZADO NO UTILIZADO
RB0 SALIDA LUZ DE AMBIENTE
RB1 SALIDA BATERÍA PRINCIPAL
RB2 SALIDA BATERÍA AUXILIAR
RB3 SALIDA BATERÍA DE SENSORES
RB4 SALIDA CAMBIO DE BATERÍA
RB5 SALIDA LUCES DEL ROBOT
136
RB6 NO UTILIZADO NO UTILIZADO
RB7 NO UTILIZADO NO UTILIZADO
Fuente: Los Autores, Chacín y Socorro (1999)
El tercer microcontrolador se encarga, dependiendo de sus propias entradas de
selección, de seleccionar las entradas al multiplexor analógico para proveer la entrada
al siguiente módulo y enviar el bit de conversión, la disposición de los bits a
continuación:
Tabla No. 8: Configuración del PIC Selector B
BIT CONFIGURACIÓN USO
RA0 ENTRADA BATERÍA DE SENSORES
RA1 SALIDA BIT DE CONVERSIÓN
RA2 SALIDA ENCIENDE SENSOR 1
RA3 SALIDA ENCIENDE SENSOR 2
RA4 NO UTILIZADO NO UTILIZADO
RB0 SALIDA MULTIPLEXOR A
RB1 SALIDA MULTIPLEXOR B
RB2 SALIDA MULTIPLEXOR C
RB3 ENTRADA SELECTOR DEL SENSOR 1
RB4 ENTRADA SELECTOR DEL SENSOR 2
RB5 ENTRADA LUZ DE AMBIENTE
RB6 ENTRADA BATERÍA PRINCIPAL
RB7 ENTRADA BATERÍA AUXILIAR
137
Fuente: Los Autores, Chacín y Socorro (1999)
Finalmente el Módulo de Conversión Analógica-Digital y Transmisión serial
de datos, compuesto por un microcontrolador y un convertidor analógico-digital
ADC0804. Una vez provista la entrada al convertidor, el microcontrolador espera el
bit de conversión para iniciar sus funciones y enviar los datos al PC, la configuración
del PIC16C84:
Tabla No. 9: Configuración del PIC del Convertidor
BIT CONFIGURACION USO
RA0 ENTRADA BIT DE CONVERSIÓN
RA1 SALIDA TRANSMISIÓN DE DATOS
RA2 SALIDA INICIO DE CONVERSIÓN
RA3 ENTRADA FIN DE CONVERSIÓN
RA4 NO UTILIZADO NO UTILIZADO
RB0 ENTRADA MENOR BIT DE DATOS
RB1 ENTRADA BIT DE DATOS
RB2 ENTRADA BIT DE DATOS
RB3 ENTRADA BIT DE DATOS
RB4 ENTRADA BIT DE DATOS
RB5 ENTRADA BIT DE DATOS
RB6 ENTRADA BIT DE DATOS
RB7 ENTRADA MAYOR BIT DE DATOS
Fuente: Los Autores, Chacín y Socorro (1999)
138
FASE 5. - ORDINOGRAMAS MODULARES Y CODIFICACIÓN DE
PROGRAMAS
Los códigos completos para cada programa del Sistema Robótico se
encuentran en los Anexos.
FASE 6. - IMPLEMENTACIÓN DEL HARDWARE
En esta fase se explican cada uno de los circuitos que integran el sistema, así
como el funcionamiento de cada uno de los módulos a materializar, siguiendo la
secuencia del diagrama de bloques presentado en la FASE 2.
6.1. INTERFACES CON EL PC
Al momento de la conexión con el PC surgieron dos problemas clásicos, en
primer lugar no se tenían las suficientes salidas para manejar la cantidad de elementos
externos a controlar y en segundo lugar se necesitaban datos de salida paralelos y
datos de salida seriales dada la naturaleza de los dispositivos electrónicos que
integran el Sistema Robótico. Para realizar el módulo de Comunicación entre el PC y
el Robot, fue necesario la construcción de dos interfaces con el PC. Una tarjeta
interna para el módulo de transmisión de movimiento y una interface de intercambio
de información serial externa.
139
6.1.1 TARJETA INTERNA PARA CONTROL DEL MOVIMIENTO
DEL ROBOT
La Tarjeta Interna (Figura No. 24) está compuesta por una serie de
dispositivos interconectados para lograr una mayor capacidad de líneas de salida que
las encontradas en un puerto paralelo estándar, procesando directamente el bus de
datos del PC mediante un circuito integrado programable 8255 que proporciona 3
puertos de ocho bits programables como entradas o salidas.
Figura No. 24: Tarjeta Interna
Fuente: Los Autores, Chacín y Socorro (1999)
a. IC 8255
Primeramente se tiene la Interface Programable de Periféricos 8255
(Programmable Peripheral Interface PPI), concebida por INTEL y útil en sistemas en
140
los cuales se requiere el manejo de muchas líneas de entrada/salida. El la figura se
muestra la distribución de pines, el cual contiene tres puertos paralelos programables
de entrada/salida, de ocho bits cada uno.
Figura No. 25: Distribución de Pines del PPI 8255
Fuente: Los Autores, Chacín y Socorro (1999)
Como se observa, 24 de los 40 pines del 8255 son líneas de entrada/salida.
Específicamente, PA0-PA7 corresponden al puerto A, PB0-PB7 al puerto B y PC0-
PC7 al puerto C. Las 8 líneas del puerto C se dividen en dos grupos iguales, cada uno
de 4 líneas (PC7-PC4 y PC3-PC0). Estos grupos de líneas pueden trabajar en
combinación con los puertos A y B o como dos puertos individuales de 4 bits.
En la estructura interna los registros se encuentran divididos en dos grupos el
A y el B, cada uno de los cuales tiene su propio elemento de control. El grupo A está
compuesto por el puerto A y los cuatro bits más significativos del puerto C, mientras
141
que el grupo B, por el puerto B y los 4 bits menos significativos del puerto C. El
sentido (entrada, salida o bidireccional) y la función (datos o control) de las líneas de
todos los puertos se programan durante la operación normal del dispositivo mediante
una palabra de control de 8 bits que envía el PC al PPI.
Internamente, el 8255 dispone de cuatro registros, tres de los cuales se dedican
a almacenar la información que entra o sale por los puertos A, B y C. El cuarto se
denomina de control y se dedica a realizar las funciones de control; programando este
registro se configuran los grupos A y B, definiéndose el comportamiento de los
puertos y por ende, el funcionamiento general del dispositivo.
Además de las 24 líneas de entrada/salida asociadas a los puertos A, B y C, la
función de las líneas restantes del 8255 se puede resumir en:
• VCC y GND: Líneas de la fuente de alimentación.
• D7 a D0: Líneas de datos que comunican el 8255 con el bus bidireccional
de datos del sistema microprocesador.
• WR (Write): Activa en bajo. Permite que el CPU realice una operación de
escritura sobre el PPI.
• RD (Read): Activa en bajo. Permite que el CPU realice una operación o
ciclo de lectura sobre el PPI.
142
• CS (Chip Select): Activa en bajo. Se destina para la selección del circuito
integrado. El 8255 se comunica con el CPU cuando CS=0 y se aísla
cuando CS=1.
• Reset: Activa en alto inicializa el PPI y borra (sitúa en 0) todos los
registros internos, incluyendo el de control, configurando como entradas
todas las líneas de los puertos.
• A0 y A1: Estas señales, en combinación a RD y WR, seleccionan el
puerto o registro del 8255 sobre el cual se va a realizar una operación de
lectura o escritura; normalmente, se conectan a las líneas A0 y A1 del bus
de direcciones del sistema. La tabla mostrada a continuación resume el
sentido de las transferencias de información que se realiza entre el bus de
datos del sistema microprocesador y los distintos registros internos del
8255, de acuerdo con el estado lógico de las señales de control A1, A0,
RD, WR y CS.
Tabla No. 10: Transferencia de Información entre el CPU y el PPI 8255
A1 A0 RD WR CS OPERACIÓN
0 0 0 1 0 A→BUS DE DATOS
0 1 0 1 0 B→BUS DE DATOS
1 0 0 1 0 C→BUS DE DATOS
1 1 0 1 0 CONDICIÓN INVÁLIDA
0 0 1 0 0 BUS DE DATOS→A
143
0 1 1 0 0 BUS DE DATOS→B
1 0 1 0 0 BUS DE DATOS→C
1 1 1 0 0 BUS DE DATOS→CONTROL
X X X X 1 BUS DE DATOS EN Hi-Z
X X 1 1 0 BUS DE DATOS EN Hi-Z
X= no importa
Fuente: Electrónica y Computadores (Año II, No. 4:73)
En el momento de aplicar potencia por primera vez al circuito, el 8255 se
encuentra en estado de reset; es decir con todas las líneas de los puertos y del bus de
datos flotantes o en estado de alta impedancia (Hi-Z). Por esta razón, antes de utilizar
los puertos de entrada y de salida, el circuito integrado se debe inicializar cargando el
registro de control cargando el registro de control con un valor de 8 bits, denominado
Palabra de Control. En la tabla mostrada a continuación se indica la función de cada
uno de los bits que componen el registro de control, el cual solamente puede ser
escrito, ya que no es posible leer su contenido desde el CPU.
Tabla No. 11: Palabra de Control
BIT FUNCIÓN
D0 Puerto C (más bajo). 1=Entrada, 0=Salida
D1 Puerto B. 1=Entrada, 0=Salida
D2 Selección de Modo. 0=Modo 0, 1= Modo 1
D3 Puerto C (más alto). 1=Entrada, 0=Salida
D4 Puerto A. 1=Entrada, 0=Salida
144
D5
D6
Selección de Modo. 00=Modo 0, 01=Modo 1, 1X=Modo 2
D7 Bandera de Modo. 1=Activa
Fuente: Electrónica y Computadores (Año II, No. 4:74)
La palabra de control configura el funcionamiento general del PPI, el cual
admite tres modos diferentes de funcionamiento denominados Modo 0, Modo 1 y
Modo 2.
En el Modo 0 (entrada/salida básicas), cualquiera de los puertos A, B y C
puede trabajar como entrada o como salida; los datos son escritos o leídos desde un
puerto específico. En este modo, las entradas y salidas tienen 16 configuraciones
posibles. Una característica importante en este Modo es que las salidas tienen latch o
cerrojo, así el dato que se escribe permanece sin cambiar, hasta que se escribe un
nuevo dato; mientras que las entradas no lo tienen, de manera que el dato de interés
debe estar presente al momento de la lectura del puerto.
En el Modo 1 (entrada/salida variadas), los puertos A y B pueden trabajar
como entradas o salidas, mientras las líneas del puerto C controlan la transferencia de
datos entre los periféricos y el PPI. Una parte del puerto C (líneas PC3, PC4 y PC5)
están asociadas con el puerto A, mientras que otras (PC0, PC1 y PC2) proporcionan
señales de control para el puerto B. Las líneas no utilizadas del puerto C (PC6 y PC7)
145
pueden actuar como líneas I/O convencionales. En este modo las entradas y salidas
tienen cerrojo.
Para configurar los puertos A y B como entradas en este modo, la señal de
control STB (Strobe o validación) sirve para cargar los registros internos del PPI el
dato que el periférico envía hacia el puerto A o B, al cargarse un dato en los puertos
del PPI, se activa la señal de conformidad IBF (Input Buffer Full), la cual indica que
el buffer de entrada de datos está lleno. El CPU explora periódicamente las líneas IBF
y cuando encuentra alguna activa (alta), reconoce que en el puerto hay un dato
disponible. Al leer ese puerto, las líneas IBF y STB se desactivan. Las líneas INTR se
utilizan para interrumpir el CPU cuando el puerto (A o B) dispone de información y
está listo para ser leído.
En el caso de configuración de salida para los puertos A y B en este modo, la
línea OBF (Output Buffer Full), es una señal que el CPU coloca en un nivel lógico
bajo, indicando que escribió un dato en el puerto correspondiente, y este debe ser
leído por el periférico. Esta línea sólo retornará a un estado lógico alto cuando el
periférico responda colocando la línea ACK en un estado lógico bajo, indicando que
recibió el dato. Aquí también las líneas INTR se utilizan para interrumpir el CPU,
pero cuando el periférico aceptó el dato. Los dos grupos pueden ser configurados
independientemente como entradas o salidas, admitiendo cuatro combinaciones
diferentes.
146
En el Modo 2 (bus bidireccional), el puerto A puede trabajar en forma
bidireccional, es decir actuar como entrada y salida de datos, mientras una parte de
las líneas del puerto C (PC3 a PC7) controlan el diálogo con los periféricos. Las tres
líneas restantes del puerto C pueden actuar como líneas I/O convencionales o como
líneas auxiliares del puerto B. Este último puede actuar en el Modo 0 o en el Modo 1.
En el Modo 2, tantos las entradas como las salidas tienen cerrojo.
b. OPERACIÓN
El 8255 es utilizado para la transferencia de datos en paralelo mediante los
tres puertos que lo conforman, encargándose de recibir la señalización enviada por un
comparador de magnitud 74HC688, a través de los pines CS' (Chip Select del 8255) y
(A=B)' (Comparación del 8255), decidiendo así con cual puerto va a trabajar,
dependiendo de los pines A0 y A1 del comparador, una vez tomada esta decisión
entonces trabaja sobre los puertos de entrada o salida seleccionados. Además este
dispositivo recibe los datos directamente del bus de datos del sistema para la
transferencia de los mismos, de la misma forma es programado por el software bajo el
Modo 0 como entrada y salida básica.
El comparador de magnitud de 8 bits 74HC688 es el encargado de hacer la
comparación de las direcciones y establecer todo lo que es el proceso de
direccionamiento y acceso por parte del PC. De esta manera el dispositivo
comparador recibe las direcciones enviadas por el computador que son 4 direcciones
147
correctas desde 300h hasta 303h (768 a 771), las compara y establece si la dirección
recibida coincide con la programada en sus pines, si esto ocurre envía la señalización
al 8255 el cual realizará el control que proporcionará las salidas por el puerto
correspondiente.
Para el proyecto se implementaron las salidas del puerto A y B, y
funcionalmente la tarjeta se encuentra ubicada en la dirección 303h. Dado que se
están utilizando los puertos A y B como salida, el software para la configuración de la
tarjeta genera también la palabra de control para el uso del dispositivo, en este caso
debe ser la siguiente:
BIT 8 BIT 7 BIT 6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1
1 0 0 0 0 0 0 0
Por lo tanto la línea de configuración para el programa de control debe ir de la
siguiente manera en QBASIC, donde se hicieron casi la totalidad de las pruebas:
OUT &H303, &H80
Donde &H303 es la dirección de la tarjeta en el computador y &H80 es la
palabra de control para la interface de periféricos.
Una vez obtenida la información digital es necesario convertirla a un valor de
voltaje analógico para poder suministrar la orden al transmisor, para tal efecto se
148
encuentran conectados a todos los pines de los puertos A y B dos redes escaleras
separadas para cada uno de ellos. Estas redes están compuestas por un arreglo de
resistencias colocadas como se muestra en la figura:
Figura No. 26: Red Escalera
Fuente: Los Autores, Chacín y Socorro (1999)
Como se observa claramente las salidas del dispositivo se encuentran
colocadas de manera que el valor del voltaje de salida aumente a medida que se
colocan en alto los bits de mayor peso. Como en un convertidor digital analógico la
salida digital va adquiriendo un peso determinado por salida que se habilita. En la
siguiente tabla se ilustran los valores de voltaje analógico correspondientes a cada
salida:
Tabla No. 12: Valores de las Salidas Analógicas
MSB LSB
BIT 8 BIT 7 BIT 6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1
2.49 V 1.28 V 0.625 V 0.313 V 0.156 V 0.078 V 0.039 V 0.019 V
Fuente: Los Autores, Chacín y Socorro (1999)
149
La red está diseñada para suministrar un voltaje de 5 Voltios en el caso de que
todas las salidas estén en alto, pero este valor varía dependiendo de la configuración
individual de cada PC, pudiendo ocasionar daños al siguiente dispositivo que dependa
de ese voltaje para trabajar. Por lo anteriormente expuesto se hizo necesario diseñar e
instalar dos circuitos amplificadores para cada sección de datos, este se elaboró con
dos amplificadores operacionales LM324 (Figura No. 27), el circuito de
amplificación permite calibrar la salida de la red, a través de un potenciómetro, en
cada caso para PCs distintas. Los amplificadores están conectados a la alimentación
común del slot interno del PC de 12 Voltios para evitar que el voltaje de saturación
nominal provisto por la hoja de especificaciones de las características del dispositivo
interfiera con el circuito de amplificación, suministrando el voltaje necesario para ser
enviado al transmisor que se encuentra en el Módulo de Comunicación.
Figura No. 27: Amplificadores
Fuente: Los Autores, Chacín y Socorro (1999)
El transmisor FUTABA de Radio-Control a 75 MHz (Figura No. 28), capta el
voltaje proveniente del amplificador para modularlo en PWM, donde se hace un
150
muestreo de la señal en forma periódica a una tasa bastante rápida como para
satisfacer los requisitos del teorema de muestreo. En cada instante de muestreo se
genera un pulso de amplitud fija y ancho proporcional a los valores de muestra de la
señal, con un ancho mínimo asignado al valor mínimo de la señal.
Figura No. 28: Transmisor FUTABA de 75 MHz
Fuente: Los Autores, Chacín y Socorro (1999)
La variación del ancho del pulso a partir del ancho mínimo es proporcional a
dicha señal, definiéndose una constante de proporcionalidad. La duración del pulso
debe ser menor que la porción de tiempo asignada a una muestra en particular,
dejando por lo general un tiempo de guarda adicional. En PWM la modulación puede
ser regulada por flancos de subida, de bajada, o ambos en cada pulso.
La PWM es una elección frecuente cuando se desea el control remoto
proporcional de una posición o cierta razón de posición, por lo cual es ideal para
alterar la posición del servomotor de la dirección y el control electrónico de
velocidad.
151
6.1.2 INTERFACE DE INTERCAMBIO DE INFORMACIÓN SERIAL
PARA LA COMUNICACIÓN ENTRE EL PC Y EL ROBOT
La información manejada por el PC para el funcionamiento de los dispositivos
en el Robot y los datos obtenidos por los sensores, es enviada por los transmisores y
receptores implementados, pero si bien es cierto que son totalmente compatibles y
pueden comunicarse entre ellos, estos necesitan de una interface que los integre al PC
para poder completar la comunicación, esta interface posee un dispositivo de
transmisión serial que transforma los niveles TTL usados en los circuitos de
transmisión por niveles RS-232 y se encuentra directamente implementada en el PC.
En la comunicación serial, se transmite un bit a la vez, por lo cual es mucho más lenta
que la paralela, pero posee la ventaja de que necesita un menor número de líneas para
la transferencia de información y la distancia a la cual se puede realizar el
intercambio es mayor.
Existen dos formas de comunicación serial: la síncrona y la asíncrona. En la
comunicación síncrona, además de una línea sobre la que se transfieren los datos, se
necesita otra que contenga los pulsos del reloj que indiquen cuando un dato es válido;
la duración del bit está determinada por la duración del pulso de sincronismo.
En la comunicación asíncrona, los pulsos del reloj no son necesarios y se
acude a otros mecanismos para realizar la lectura/escritura de los datos; la duración
152
de cada bit está determinada por la frecuencia de referencia con la cual se realiza la
transferencia de datos.
En el caso de esta investigación se realizó el tipo de comunicación asíncrona
donde está determinada la duración fija de los pulsos, dado que el PC trabaja a una
velocidad máxima de 9600 Baudios (1 bit/segundo), se realizaron rutinas
compatibles con esa velocidad, además se hizo necesario mantener en rigor un simple
protocolo de transmisión serial, donde debe existir 1 lógico para el estado inactivo, 0
lógico como bit de Start, 8 bits de datos y 0 lógico de bit de parada.
En los computadores tipo PC, se puede tener hasta 4 puertos de comunicación
serial (RS-232), denominados COM1, COM2, COM3 y COM4. Para su uso se debe
realizar una configuración previa de los parámetros de comunicación y aunque el
sistema operativo y los programas utilizan valores por defecto, no siempre son los
mismos. Existen varias formas de establecer los parámetros para la comunicación
serial asíncrona por software con cualquiera de estos puertos.
a. MAX232CPE
Dado que una de las características de la comunicación RS-232 son los rangos
de tensión que utiliza para niveles lógicos, el nivel alto se representa con una tensión
o voltaje comprendido entre -3 Voltios y -15 Voltios, mientras el nivel bajo utiliza el
rango de +3 Voltios y +15 Voltios, para este efecto el dispositivo de MAXIM
153
MAX232CPE es la parte principal de la interface con el computador, este logra
traducir estos valores a niveles TTL y los niveles TTL a niveles RS-232.
El MAX232CPE dispone de dos canales de entrada para niveles TTL, que son
el T1IN y el T2IN, con sus correspondientes salidas R1OUT y R2OUT. Igualmente,
posee dos canales de entrada para niveles RS-232, R1IN y R2IN y sus
correspondientes salidas TTL, T1OUT y T2OUT.
En el esquema de la figura se observa tanto el circuito de interface con el
puerto correspondiente (COM1) de conector DB-9 como la distribución de pines del
dispositivo:
Figura No. 29: Interface Serial con el PC
Fuente: Los Autores, Chacín y Socorro (1999)
Se nota como uno de los canales disponibles es utilizado para la conversión de
información TTL proveniente del microcontrolador hacia el PC y otro de los canales
154
es usado para convertir los niveles de voltaje RS-232 procedentes del PC y dirigidos
hacia el microcontrolador.
b. MICROCONTROLADOR PIC16C84
Para poder leer la información suministrada por el computador, es necesario
que el microcontrolador posea un programa que contenga una rutina que permita
captar los datos a la velocidad que se están transmitiendo, para tal fin es necesario
calcular los tiempos de transmisión a los cuales está configurado el programa de
control del PC, como ya se explicó anteriormente la computadora, es capaz de
transmitir datos a una velocidad de 9600 Baudios (9600 bits por segundo), lo que
significa que el tiempo para transmitir un solo bit es dado por el inverso de la
cantidad de bits por segundo, lo que resulta en 104.17 µseg que funcionalmente es
104 µseg. Una vez obtenido el tiempo requerido para recibir un bit se procedió a
calibrar la rutina del programa del microcontrolador para que pueda recibir a esa
velocidad.
Usando la aplicación Stopwatch del programa MPLAB 4.1, la cual permite al
programa simular el tiempo que tarda una subrutina, se logró calibrar el tiempo
necesario para la recepción. El código ensamblador original de esa subrutina de 1 bit
a 9600 Baudios:
MAX MOVLW .31 MOVWF RETARDO
155
MAXC DECFSZ RETARDO, 1 GOTO MAXC RETURN
Ahora para recibir datos seriales es necesario esperar que la entrada de datos
cambie su estado (protocolo de transmisión serial) de uno lógico para el inactivo a
cero lógico para el bit de Start, una vez percibido ese cambio es conveniente esperar
de bit para comenzar a leer los datos, ya que es mejor leer la señal en el centro que
en uno de sus flancos. Luego hay que encontrar la subrutina que genere el tiempo de
la mitad de un bit, aproximadamente 52µseg. El código ensamblador original para la
rutina de medio bit a 9600 Baudios:
MMAX MOVLW .14 MOVWF RETARDO
MMAXC DECFSZ RETARDO, 1 GOTO MMAXC
RETURN
Es de inferir que esta subrutina debe ser llamada con la línea CALL MMAX
tres veces para lograr un tiempo de casi 156.25 µsegundos y detectar el primero de
los bits de información en el centro de este, de ese punto en adelante se espera el
tiempo completo de 1 bit para leer cada bit posterior al primero. Cuando la orden del
PC ya ha sido recibida la próxima tarea reside en enviar esos datos al Robot a una
velocidad menor, esto es debido a que los dispositivos que permitirán el intercambio
inalámbrico de datos no soportan tal velocidad, para ello es preciso colocar el registro
de los datos recibidos en una rutina de transmisión bajo el mismo protocolo de
recepción, y así enviarlo al transmisor de manera igualmente serial. La lógica de la
156
transmisión serial cumple el mismo principio de la recepción, es decir, se cambia el
estado del pin de salida, y debe esperar un tiempo compatible con el dispositivo
receptor el cual debe esperar del tiempo del bit de transmisión. Para tal efecto se
tomó un valor de tiempo para la subrutina de espera de un bit que equivale a
aproximadamente 1000 Baudios, el código queda:
UNBIT MOVLW .250 MOVWF RETARDO
REPITUB DECFSZ RETARDO, 1 GOTO REPITUB RETURN
Luego de la interface serial con el microcontrolador se encuentran, conectados
a este último, un transmisor de 303.82 MHz y un receptor de 418 MHz para el
intercambio de la información con el Robot. Ambos dispositivos constituyen un par
complementado por otros similares ubicados en el Robot. Los dos pares de
transmisor-receptor (Figura No. 30) son iguales en arquitectura pero de frecuencia
diferente.
Figura No. 30: Transmisor y Receptor
Fuente: www.dvp.com (1999-06-02)
Las frecuencias de 303.82 MHz y 418 MHz están bastante libres de
interferencia dado el hecho de que son solo para ser usadas en emisiones
157
intermitentes de baja potencia y es lo suficientemente alta para que la interferencia
por ruido digital no sea un problema mientras el diseño del circuito sea eficiente.
Ambos, el transmisor y el receptor, directamente pueden servir de interface a
microcontroladores o a circuitos electrónicos que necesiten enviar datos de manera
digital o binaria. Funcionalmente poseen tres líneas que son tierra, alimentación (5
Voltios) y datos, el transmisor está activo cuando la entrada de datos está en alto, este
tipo de modulación se llama On-Off Keyed (OOK). Al mismo tiempo la salida de
datos del receptor estará activada con alto, o 5 Voltios, cuando la entrada de datos del
transmisor esté en alto.
El transmisor y el receptor deben ser mantenidos en posición horizontal y lo
más alejado del suelo posible para un rendimiento óptimo, dado que no necesita
ajuste y muy pocos conocimientos de radio-transmisión, se convirtió en la mejor
opción adoptada por los autores de la investigación para asegurar la eficiente
comunicación entre el PC y el Robot en ambos sentidos.
6.2. MICROCONTROLADOR PARA LA RECEPCIÓN Y EL
DIRECCIONAMIENTO DE ÓRDENES PIC16F84
En esta sección, primeramente se encuentran un receptor de RF de 303.82
MHz que complementa el transmisor del PC, este proporciona la palabra u orden a un
158
microcontrolador PIC16FC84 que se encarga de leer esa información serial y
direccionarla.
Para poder leer la información suministrada por el receptor de RF, es
necesario que el microcontrolador también posea un programa que contenga una
rutina que permita captar los datos a la velocidad de 1000 Baudios a la que se está
transmitiendo, utilizando el mismo protocolo para la recepción.
La sección del programa que realiza la recepción serial trabaja de la misma
manera en que el microcontrolador que envió la orden, es decir, usa los mismos
tiempos de espera para la lectura de datos. Otra vez, bajo el mismo principio es
preciso tener una rutina que permita al reconocer el cambio de la entrada por el Bit de
Start, esperar 1 bit y medio para leer el primer bit de datos y seguidamente cada
lectura se realiza con intervalos del tiempo correspondiente a un bit completo. El
código ensamblador para la subrutina de medio bit de espera:
MBIT MOVLW .125 MOVWF RETARDO
REPITMB DECFSZ RETARDO, 1 GOTO REPITMB RETURN
El programa igualmente debe llamar la subrutina tres veces para lograr el
efecto deseado de un bit y medio. Al haber recibido todos los bits de la orden emitida
por el PC, el registro de 8 bits debe ser direccionado para llevar a cabo la orden del
software de control.
159
a. EL DIRECCIONAMIENTO DE ÓRDENES
El Direccionamiento de Órdenes es una función básica de microcontrolador
convenientemente implementada por los autores, e infiere que solo una serie de
palabras de control u órdenes pueden ser enviadas al Robot, dependiendo de esas
órdenes el microcontrolador ubicará los dispositivos a los que la orden es emitida.
Utilizando el bit de más peso de la palabra de control se selecciona por medio del
software de control a quien va dirigida la orden entre los dispositivos. Sin embargo,
dentro de cada orden también van incluidas una serie de bits que indican, más
específicamente, a quien va dirigida la orden.
De esta manera se observa en la siguiente tabla de instrucciones, la estructura
de las palabras de control:
Tabla No. 13: Instrucciones del Robot
Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 FUNCIÓN
0 0 0 0 0 0 0 1 Posición 1 Sensor 1
0 0 0 0 0 0 1 0 Posición 2 Sensor 1
0 0 0 0 0 0 1 1 Posición 3 Sensor 1
0 0 0 0 0 1 0 0 Posición 4 Sensor 1
0 0 0 0 0 1 0 1 Posición 5 Sensor 1
0 0 0 0 0 1 1 0 Posición 6 Sensor 1
160
0 0 0 0 0 1 1 1 Posición 7 Sensor 1
0 0 0 0 1 0 0 0 Posición 8 Sensor 1
0 0 0 0 1 0 0 1 Posición 9 Sensor 1
0 0 0 0 1 0 1 0 Posición 10 Sensor 1
0 0 0 0 1 0 1 1 Posición 11 Sensor 1
0 0 0 0 1 1 0 0 Posición 12 Sensor 1
0 0 0 1 0 0 0 1 Posición 1 Sensor 2
0 0 0 1 0 0 1 0 Posición 2 Sensor 2
0 0 0 1 0 0 1 1 Posición 3 Sensor 2
0 0 0 1 0 1 0 0 Posición 4 Sensor 2
0 0 0 1 0 1 0 1 Posición 5 Sensor 2
0 0 0 1 0 1 1 0 Posición 6 Sensor 2
0 0 0 1 0 1 1 1 Posición 7 Sensor 2
0 0 0 1 1 0 0 0 Posición 8 Sensor 2
0 0 0 1 1 0 0 1 Posición 9 Sensor 2
0 0 0 1 1 0 1 0 Posición 10 Sensor 2
0 0 0 1 1 0 1 1 Posición 11 Sensor 2
0 0 0 1 1 1 0 0 Posición 12 Sensor 2
1 0 0 0 0 0 0 0 APAGAR LUCES
1 0 0 0 0 0 0 1 LUZ DE AMBIENTE
1 0 0 0 0 0 1 0 BATERÍA PRINCIPAL
161
1 0 0 0 0 1 0 0 BATERÍA AUXILIAR
1 0 0 0 1 0 0 0 BATERÍA DE SENSOR
1 0 0 1 0 0 0 0 ACTIVAR RELÉ
1 0 1 0 0 0 0 0 DESACTIVAR RELÉ
1 1 0 0 0 0 0 0 ENCENDER LUCES
Fuente: Los Autores, Chacín y Socorro (1999)
Se puede observar que el patrón que siguen las palabras de control posee bits
tipo bandera, que funcionan para iniciar el ciclo de trabajo de los dispositivos. Es
importante recalcar que una vez emitida una orden, el resto del sistema del Robot
trabaja de manera dependiente del dispositivo seleccionado, por lo tanto las rutinas y
subrutinas de los programas de los microcontroladores fueron elaboradas de manera
modular, es decir, cada módulo trabaja independientemente de los demás, así las
rutinas se hacen genéricas, con la finalidad de que cualquier orden sea ejecutada de
manera eficaz.
6.3. DISPOSITIVOS PARA ACCIONAR Y SELECCIONAR
VARIABLES
Como ya se ha hecho referencia no existe una relación directa maestro-
esclavo entre los elementos de control del Robot, excepto por la acción del programa
de control, la parte remota del sistema (Robot) trabaja como una unidad, es decir, de
forma modular y en todos los casos los microcontroladores operan de manera
162
dependiente unos de otros, por lo tanto, la ocurrencia de eventos por parte de unos
microcontroladores concluirá con el inicio del ciclo de trabajo de otros, así
modularmente se traspasan entre ellos la responsabilidad del óptimo funcionamiento
del sistema. De acuerdo a los supuestos anteriores, trabaja el Módulo Accionador y
Selector de Variables, como su nombre lo indica su propósito es accionar las
variables que indiquen las órdenes provenientes del PC como el servomotor, los
sensores, etc. y/o seleccionar las variables de entrada para actualizar el monitoreo
constantemente realizado por el software de control como los estados de las baterías o
luz del ambiente.
Este módulo consta de tres microcontroladores de la serie PIC16X84, un
servomotor, varios relés, un multiplexor analógico CMOS, varios potenciómetros,
una celda fotoconductiva y dos sensores de distancia de ultrasonido. La disposición y
las funciones de los elementos mencionados solo puede explicarse a medida que las
instrucciones del PC son ejecutadas, para este fin se debe explicar el funcionamiento
de las instrucciones más relevantes, o que indican una función diferente para el
sistema del Robot, sin embargo puede dividirse en dos grupos de órdenes:
• Las órdenes para el Sonar.
• Las órdenes para el monitoreo o uso del resto de los dispositivos.
Las estructuras de las palabras de instrucciones provenientes del software de
control, como se observa en la Tabla No. 13, poseen bits que tienen la función de
163
indicar cual dispositivo será el que ejecutará la orden, una vez indicado dicho
dispositivo será tarea del resto de los bits de control indicar cual será con exactitud la
orden a ejecutar. Para tal efecto, existen prioridades en los programas de los
microcontroladores que indican cual de esos bits tiene más o menos peso sobre los
demás, dándole a cada bit cierto nivel de jerarquía sobre la orden o palabra de control.
a. EL POSICIONAMIENTO DEL SERVOMOTOR
Este es el primero de los casos, ocurre cuando la palabra de control es recibida
y el bit con más peso, es decir, el bit 8 se encuentra en 0 lógico, por lo tanto indica
que la orden es para el movimiento del servomotor del Sonar. Seguidamente esta
orden es traducida a movimientos angulares del servomotor del sistema de
reconocimiento del entorno, conocido por el software de control como Sonar. El tipo
de palabra de control que debe ser emitida por el PC debe cumplir con la siguiente
estructura:
• El último bit (8) debe ser 0.
• Los bits 1,2,3 y 4 deben poseer números binarios entre 1 y 12.
• El quinto bit indica el servomotor a ejecutar la orden 0 para el motor 1
(adelante) y 1 para el motor 2 (atrás).
• Los bits 6 y 7 no están implementados, por consiguiente no importa su
estado para ninguna de estas operaciones relacionadas con el movimiento
del servomotor. Estos son los bits más propensos a utilizar en caso de
164
incluir nuevo hardware que pueda ser controlado por solo dos estados
lógicos.
Al ser recibida la orden de mover el servomotor, es necesario avisar al
microcontrolador encargado de ejecutar dicha orden que la nueva información ha
llegado para ser procesada y ejecutada, entonces se hace necesario que exista una
señal de verificación o Handshaking que debe ser emitida desde el microcontrolador
direccionador, que indica que nueva información ha llegado, de igual forma esa señal
debe ser realimentada por otra de la misma naturaleza que le indicará al
microcontrolador direccionador que esa nueva información ya ha sido captada, esta
señal debe ser emitida por el microcontrolador posicionador.
Una vez recibida la información es necesario decodificarla para identificar la
posición a la que se debe rotar el servomotor, para realizar esa identificación es
necesario que la orden sea cuidadosamente comparada con los valores
preprogramados en el microcontrolador que corresponde a cada posición.
El servomotor FUTABA (Figura No. 31), utilizado por esta sección del
sistema, es controlado por PWM (Pulse Width Modulation) o Modulación por
Ancho de Pulso y forma parte integral del Sonar. Funcionalmente, para generar el
movimiento de este servomotor es necesario producir en la entrada del mismo un
pulso cuyo ciclo de trabajo y ancho puede variar, la posición del servomotor se
corresponde a la duración del pulso. En este servomotor los ángulos rotatorios están
165
limitados a únicamente 180°, sin embargo se puede lograr una buena precisión de la
posición que se desea.
Figura No. 31: Servomotor FUTABA S3003
Fuente: Los Autores, Chacín y Socorro (1999)
Para la generación del pulso que dará la posición al servomotor, se recurrió al
estudio de la modulación en PWM, y al entender la lógica de esta, se pudo crear una
rutina de programación para microcontrolador que pueda ejecutarla y servir para tal
propósito.
En PWM la señal es en forma de un ciclo de pulso cuadrado de amplitud
constante, donde se debe variar la duración del ciclo de trabajo para obtener un
movimiento del servomotor, ahora el ciclo de trabajo no es más que la duración del
pulso a lo largo del tiempo. El modelo de servomotor, el S3003, utilizado para la
implementación del Sonar, necesita para trabajar un pulso mínimo de 0.35 ms y uno
máximo de 2.25 ms, para esto se debe trabajar sobre un pulso base de 0.35 ms y el
tiempo restante se debe variar por software dependiendo de la orden recibida desde el
PC. En virtud de lo antes expuesto, se creó una rutina que dependiendo del valor
166
colocado en el acumulador aumente o disminuya el tiempo de duración del pulso
según lo indique la orden. El código ensamblador de la subrutina de tiempo base:
UMS MOVLW 0X30 VAR MOVWF CONT LAZO NOP
NOP NOP NOP NOP DECFSZ CONT, 1 GOTO LAZO MOVLW 0X30 MOVWF CONT NOP NOP RETURN
Diseñada la rutina del tiempo base, se debe trabajar usando la lógica del PWM
y el control del servomotor. Se debe generar el tiempo base y dependiendo del valor
colocado previamente en el acumulador se repite la rutina de tiempo con la salida
activada, hasta que la subrutina termine su ciclo, ahora es imperativo deshabilitar la
salida del pulso y comenzar a hacer los cálculos para producir el tiempo de guarda
que debe terminar el ciclo de trabajo del servomotor, esto se realiza restando al valor
de tiempo máximo del ciclo de trabajo, supuesto como FF, el valor que se colocó por
segunda vez en el acumulador, así se genera una nueva rutina de tiempo que concluye
el ciclo de trabajo del servomotor.
El código ensamblador genérico para la rutina de movimiento del servomotor:
BSF PORTX, RXY CALL UMS MOVF APRIMA, 0
167
CALL VAR BCF PORTX, RXY MOVF APRIMA, 0 SUBLW 0XFF CALL VAR
Sí X= A entonces Y= 0, 1, 2, 3, 4 Sí X= B entonces Y= 0, 1, 2, 3, 4, 5, 6, 7
Las dos rutinas de programación anteriores generan un pulso que depende del
valor que se encuentre en el acumulador en el momento necesario, ya existentes estas
rutinas solo basta con diseñar un algoritmo que cambie el valor del acumulador
dependiendo del código emitido por el PC. Para lograr ese propósito, se implementó
un programa de prueba que permitió establecer los valores para las posiciones
deseadas del servomotor, este tomaba los valores del puerto B y los colocaba en uno
de los registros variables APRIMA, así se consiguieron los valores necesarios para
generar el torque correspondiente en cada caso. Luego, se le asignó un valor a cada
orden del software de control, de esta manera el PC solo tiene que enviar 12 valores
binarios desde el 1 hasta el 12, para tal efecto solo se requieren 4 bits y se
implementó que el quinto indique cual de los sensores debe encender.
Los valores binarios correspondientes a cada posición del servomotor con su
respectivo valor asociado hexadecimal para su posicionamiento pueden ser
observados en la siguiente tabla de instrucciones:
Tabla No. 14: Instrucciones del Posicionador
Bit 8 Bit7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Valor Asociado Posición
168
0 0 0 X 0 0 0 1 06(16) Pos 1
0 0 0 X 0 0 1 0 2C(16) Pos 2
0 0 0 X 0 0 1 1 3E(16) Pos 3
0 0 0 X 0 1 0 0 50(16) Pos 4
0 0 0 X 0 1 0 1 60(16) Pos 5
0 0 0 X 0 1 1 0 70(16) Pos 6
0 0 0 X 0 1 1 1 85(16) Pos 7
0 0 0 X 1 0 0 0 98(16) Pos 8
0 0 0 X 1 0 0 1 B0(16) Pos 9
0 0 0 X 1 0 1 0 C6(16) Pos 10
0 0 0 X 1 0 1 1 D0(16) Pos 11
0 0 0 X 1 1 0 0 E8(16) Pos 12
Sí X=0 la orden es para el sensor 1 Sí X=1 la orden es para el sensor 2
Fuente: Los Autores, Chacín y Socorro (1999)
b. MANIPULACIÓN DE VARIABLES
El segundo caso común entre las órdenes emitidas por el PC, ocurre cuando el
último bit (8) de la palabra de control, posee un 1 lógico, este estado en el bit más
significativo indica que la instrucción es para algún otro dispositivo no relacionado
con el Sonar, por lo tanto el direccionador envía serialmente los 8 bits de la orden
169
completa utilizando el mismo protocolo de transmisión con el cual se recibieron
inicialmente los datos, la velocidad es de 1000 Baudios.
Una vez recibida en el microcontrolador indicado, la orden no necesita ser
traducida, debido a que estas contienen bits tipo bandera que son chequeados de
menor a mayor para determinar la función que debe ser realizada. El tipo de palabra
de control que debe ser emitida por el PC debe cumplir con la siguiente estructura:
• El último bit (8) debe ser 1.
• Excepto por la primera instrucción de apagar las luces, en la palabra de
control solo dos bits pueden tener un 1 lógico.
La siguiente tabla ilustra las palabras de control que pueden ser manejadas por
el programa del microcontrolador que realiza las funciones de manipulación de las
variables:
Tabla No. 15: Instrucciones del Módulo Accionador
Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 FUNCIÓN
1 0 0 0 0 0 0 0 Apagar Luces
1 0 0 0 0 0 0 1 Luz de Ambiente
1 0 0 0 0 0 1 0 Batería Principal
1 0 0 0 0 1 0 0 Batería Auxiliar
1 0 0 0 1 0 0 0 Batería de los Sensores
1 0 0 1 0 0 0 0 Activar Relé
170
1 0 1 0 0 0 0 0 Desactivar Relé
1 1 0 0 0 0 0 0 Encender Luces
Fuente: Los Autores, Chacín y Socorro (1999)
De la tabla anterior existen funciones que pueden ser llevadas a cabo por el
mismo microcontrolador, es decir, son funciones directas al dispositivo, como apagar
o encender las luces y activar o desactivar el relé. El relé del que se hace referencia en
esta sección tiene la función de cambiar la batería de alimentación del sistema
completo, de la principal a la batería auxiliar o viceversa, para esto el software debió
ejecutar un previo chequeo de la batería que se desea utilizar, si está en condiciones
de suplir las necesidades del sistema, será cambiada, de lo contrario, aparecerá un
mensaje de alerta en la sección de estado del sistema en la interface gráfica del
programa de control, indicando que ambas baterías están bajas.
Las funciones de conmutación de las baterías del sistema se hacen posibles,
mediante la previa revisión de las baterías, por parte de órdenes anteriores ya
implementadas, todo esto con la ayuda de los demás elementos del Módulo
Accionador y Selector de Variables, donde también se incluye un microcontrolador
que se encarga de seleccionar las variables de entrada al multiplexor analógico.
c. SELECCIÓN DE VARIABLES
171
Para la tarea de la selección de las variables de entrada del multiplexor, se
implementó un microcontrolador que interacciona con la manipulación de variables y
las órdenes de posicionamiento del servomotor. En ambos casos el sistema necesita
de este microcontrolador para completar la orden.
En el caso de que la palabra de control sea para posicionar algún servomotor,
el microcontrolador posicionador emite una señal que le indica al PIC seleccionador
cual servomotor se movió y que debe encender el sensor correspondiente a dicho
servomotor. El microcontrolador se encargará de encender el relé que le conectará la
alimentación al sensor de ultrasonido en cuestión, además colocará una dirección de
entrada en el multiplexor analógico que provocará como salida del módulo el valor
que más tarde será cambiado a digital para su posterior envío al PC al momento que
se envíe la señal de inicio al siguiente módulo.
Si por el contrario la palabra de control es para el monitoreo de alguna
variable, el microcontrolador correspondiente envía una señal que causará que se
coloque una dirección diferente y correspondiente al dispositivo deseado y luego de
cambiar la salida del multiplexor nuevamente se envía la señal de inicio al siguiente
módulo.
c.1. LAS VARIABLES
172
Existen 6 variables en el sistema, que pueden ser agrupadas en 3 tipos por su
naturaleza, están son:
- Las baterías principal y auxiliar del sistema y la batería de los sensores.
- Una celda fotoconductiva.
- Los dos sensores de distancia.
Cada una de las variables están conectadas a las entradas de un multiplexor
analógico CMOS 4067 (Figura No. 32), y son conmutadas para cambiar la salida del
multiplexor dependiendo de la orden recibida desde el PC. Para las baterías, cada una
de ellas se encuentran simplemente conectadas a potenciómetros para bajar el voltaje
hasta máximo 5 voltios debido a que la entrada del multiplexor no puede sobrepasar
el valor de la alimentación del sistema.
Figura No. 32: Multiplexor Analógico CMOS 4067
Fuente: Los Autores, Chacín y Socorro (1999)
Con respecto a las Celdas Fotoconductivas, estas cambian de resistencia
como respuesta a los cambios en la intensidad de luz, a medida que aumenta la
173
iluminación, la resistencia disminuye. Una de las características más resaltantes es la
sensibilidad, ya que su resistencia puede variar de más de 1MΩ a menos de 1KΩ a
medida que cambie la intensidad de la luz. Además pueden conmutarse a frecuencias
de 100 KHz y más.
Figura No. 33: Celda Fotoconductiva
Fuente: Los Autores, Chacín y Socorro (1999)
Finalmente y como última variable, en el eje de torque del servomotor del
Sonar se encuentra una prolongación que se levanta por encima del Carro Radio-
Control (Robot), en los extremos se ubican Sensores de Distancia, seleccionados por
la simplicidad de su uso. Estos sensores son de tipo ultrasónico de la compañía
SENIX CORP y están diseñados para medir la distancia entre el transductor y el
punto de interrupción del cono ultrasónico que emite. La distancia es medida sin
contactar el objeto, esto se logra enviando una frecuencia ultrasónica y midiendo el
tiempo que tarda el pulso eco que retorna tras haber rebotado con un obstáculo. Como
se mencionó anteriormente el tiempo medido es relacionado con la velocidad del
sonido en el aire. Luego que la distancia (tiempo) es medida, el circuito electrónico
del sensor provee una salida analógica de voltaje que es proporcional a la distancia.
El dispositivo está calibrado de fábrica para trabajar con los márgenes de voltaje de 0
174
Voltios para una distancia menor de 15 cm o 6 pulgadas y 10 Voltios para distancias
mayores a 154 cm o 60 pulgadas y por supuesto cambio proporcional entre esos dos
valores.
Figura No. 34: Sensores de Distancia montados en el Servomotor
Fuente: Los Autores, Chacín y Socorro (1999)
La distancia medida por el sensor es representada por el voltaje colocado entre
los terminales VO- y VO+ del circuito impreso. El manual de uso del sensor provee
una tabla de relación aproximada entre el voltaje y la distancia expresada en
pulgadas, a continuación se encuentran los valores ajustados al sistema internacional
de medición, donde la distancia está expresada en centímetros:
Tabla No. 16: Relación Voltaje-Distancia de los Sensores
DISTANCIA (cm) VOLTAJE (V) DISTANCIA (cm) VOLTAJE (V)
15.24 0.0 86.36 5.2
17.78 0.2 88.9 5.4
20.32 0.4 91.44 5.6
175
22.86 0.6 93.98 5.7
25.4 0.7 96.52 5.9
27.94 0.9 99.06 6.1
30.48 1.1 101.6 6.3
33.02 1.3 104.14 6.5
35.56 1.5 106.68 6.7
38.1 1.7 109.22 6.9
40.64 1.9 111.76 7.0
43.18 2.0 114.3 7.2
45.72 2.2 116.84 7.4
48.26 2.4 119.38 7.6
50.8 2.6 121.92 7.8
53.32 2.8 124.46 8.0
55.88 3.0 127 8.1
58.42 3.1 129.54 8.3
60.96 3.3 132.08 8.5
63.5 3.5 134.62 8.7
66.04 3.7 137.16 8.9
68.58 3.9 139.7 9.1
71.12 4.1 142.24 9.3
73.66 4.3 144.78 9.4
76.2 4.4 147.32 9.6
176
78.74 4.6 149.86 9.8
81.28 4.8 152.4 10.0
83.82 5.0
Fuente: Senix Ultrasonic Sensor with Voltage Output User's Guide (1996:7)
En cuanto a las características del sensor, entres las más resaltantes se pueden
citar:
• Su resolución es de aproximadamente 0.1524 centímetros.
• Cono de ultrasonido de 15 grados de amplitud.
• El tiempo de actualización del voltaje de salida es de 50 milisegundos.
• No es sensible a los niveles de luz del ambiente.
• No es sensible al color del objeto.
• No es sensible a la reflectividad o transparencia del objeto.
Sin embargo, se deben tomar algunas consideraciones en cuenta al momento
de su uso, debido a que la orientación del transductor debe ser perpendicular para
mejores resultados, este dispositivo no estará en capacidad de sensar el objeto si la
energía ultrasónica es reflejada lejos del transductor en lugar de volver a él, no
obstante los objetos curvos o esféricos son buenos blancos. Por otro lado, el factor
que afecta más la exactitud de las mediciones es la temperatura, a temperatura
ambiente un cambio de 10 grados resultará en aproximadamente un cambio del 1% de
la velocidad del sonido y por consiguiente el mismo cambio en el voltaje de salida
proporcional a la distancia.
177
A la vista de los estos inconvenientes asociados a los sensores de ultrasonido,
se puede asegurar que la navegación reactiva de un Robot móvil basada en las
informaciones que proveen los sensores en un único instante de tiempo es poco
confiable, pues zonas consideradas como ocupadas hasta ese momento pueden
aparecer como libres para los ultrasonidos, con el consiguiente riesgo de colisión. Sin
embargo, si se combina la evidencia de muchas lecturas hechas mientras el Robot se
mueve por el entorno o de lecturas desde posiciones estacionarias, y se genera un
modelo del ambiente que lo rodea con la información adquirida hasta ese momento,
la incertidumbre en las medidas y en el conocimiento de las zonas libres y ocupadas
se reduce drásticamente. Bajo este principio trabaja el Sonar del software de control.
Nuevamente se hace necesario conectar la salida de los sensores a
potenciómetros debido a que el voltaje proveniente de estos es demasiado alto con
respecto al valor del voltaje de alimentación y por lo tanto debe ser reducido a un
máximo de 5 voltios.
6.4. CONVERSIÓN Y ENVÍO DE DATOS
Una vez provista la salida analógica del módulo anterior, es necesario
transformarla a un valor digital y enviarlo al PC para su posterior estudio, para tal
efecto inicialmente es necesario utilizar un convertidor analógico-digital compatible
178
con microcontroladores para poder captar el nuevo valor digital y enviarlo al
programa de control.
De acuerdo a lo anterior el ADC0804 (Figura No. 35) es un circuito integrado
de 20 terminales fabricado con tecnología CMOS y que lleva a cabo la conversión
analógica-digital utilizando el método de aproximaciones sucesivas, en el que se
utilizan un registro paralelo interno y una lógica compleja para llevar a cabo la
conversión, lógica basada en la modificación bit a bit del registro, hasta que se
convierta en el equivalente de la entrada analógica, por supuesto dentro de la
resolución del convertidor, siendo el tiempo de conversión el mismo sin importar cual
sea el valor de la señal de entrada analógica.
Figura No. 35: Distribución de Pines del ADC0804
Fuente: Los Autores, Chacín y Socorro (1999)
Algunas de las características principales del dispositivo son:
• Tiene dos entradas analógicas: VIN(+) y VIN(-) que permiten tener entradas
diferenciales, siendo el voltaje de entrada el diferencial entre los voltajes
179
aplicados en dichas terminales. En mediciones hechas en un solo punto la entrada
analógica se aplica en VIN(+) mientras que VIN(-) se conecta a tierra analógica.
Durante la operación normal, el convertidor utiliza VCC = + 5 Voltios como
voltaje de referencia y la entrada analógica puede variar desde 0 hasta 5 Voltios,
que es el valor de escala completa.
• Convierte el voltaje de entrada analógico en una salida digital de ocho bits. La
salida es de tres estados, lo que permite conectar el convertidor con facilidad en
canales de datos. Con ocho bits la resolución es de 5V/255= 19.6 mV.
• Tiene un circuito de reloj interno que produce una frecuencia igual con f =
1/(1.1RC), donde R y C son los valores de los componentes conectados al
convertidor de manera externa. Una frecuencia típica de reloj es 606 KHz y se
obtiene con R= 10 KΩ y C = 150 pF. Si se desea también puede utilizarse un reloj
externo; este se conecta a la terminal CLK IN del CI.
• Al utilizar una frecuencia de 606 KHz, el tiempo de conversión es,
aproximadamente igual a 100 µs.
• Tiene conexiones a tierra por separado para los voltajes analógicos y digitales. La
terminal 8 corresponde a la tierra analógica y se conecta al punto común que sirve
como referencia en el circuito analógico que genera el voltaje analógico. La
terminal 10 es la tierra digital, que es la que utilizan todos los dispositivos
digitales que integran el sistema. La tierra digital es inherentemente ruidosa como
consecuencia de los rápidos cambios de corriente que tienen su origen cuando los
dispositivos digitales cambian su estado. Aunque no es necesario utilizar una
180
tierra analógica aparte, hacerlo asegura que el ruido de la tierra digital no sea la
causa de un cambio prematuro en la salida del comparador analógico que se
encuentra dentro del ADC.
Las funciones de entrada y salida del ADC0804 son las siguientes:
• CS Habilitación del Microcircuito (Chip Select): Esta entrada debe encontrarse
en su estado activo en BAJO para las entradas RD o WR tenga efecto. Con CS en
el estado ALTO, las salidas digitales se encuentran en su estado de alta
impedancia y no se lleva a cabo ninguna conversión.
• RD Habilitación de la Salida (Output Enable): Esta entrada se emplea para
habilitar los buffers de las salidas digitales. Con CS=RD=BAJO, las terminales
correspondientes a las salidas lógicas tienen niveles lógicos que representan el
resultado de la última conversión AD.
• WR Inicio de conversión (Start Conversión): En esta entrada se aplica un pulso
BAJO para dar inicio a un nuevo proceso de conversión.
• INTR Fin de Conversión (End of Conversión): Esta señal cambia hacia el
estado ALTO al inicio de la conversión cuando la conversión termina, regresa al
estado BAJO.
• VREF/2: Esta es una entrada opcional que puede emplearse para disminuir el
voltaje de referencia interno y con ello cambiar el rango analógico de entrada que
el convertidor puede manejar. Cuando esta entrada no está conectada, permanece
en 2.5 Voltios (VCC/2) debido a que en este caso VCC se emplea como referencia.
181
Si se conecta un voltaje externo en esta terminal, la referencia interna cambia y su
valor es el doble del correspondiente al voltaje externo. La siguiente tabla ilustra
este hecho:
Tabla No. 17: Variación del Rango Analógico de Entrada
VREF/2 RANGO DE ENTRADA ANALÓGICO (V) RESOLUCIÓN (mV)
Abierto 0 - 5 19.6
2.25 0 - 4.5 17.6
2.0 0 - 4 15.7
1.5 0 - 3 11.8
Fuente: Tocci, R (1993:606)
• Salida de Reloj (CLK OUT): Para utilizar el reloj interno, se conecta un resistor
en esta terminal. La señal del reloj interno aparece en esta terminal.
• Entrada de Reloj (CLK IN): Se utiliza como entrada del reloj externo o para
conectar un capacitor cuando se hace uso del reloj interno.
Los ocho pines de salida del dispositivo D0 a D7 son conectados al puerto B
del microcontrolador, este último recibe una señal del módulo anterior que indica que
la entrada al convertidor ya ha sido provista y que debe iniciar su ciclo de trabajo. Al
comenzar el ciclo de trabajo del Módulo de Conversión Analógica-Digital y
Transmisión serial de datos el microcontrolador envía una señal al pin WR del ADC
que inicia la conversión analógica-digital, seguidamente procede a esperar la señal
proveniente de INTR en el ADC que indica que la conversión ya ha sido terminada y
182
que los datos que están en ese instante en el puerto B del microcontrolador deben ser
recolectados y colocados en un registro para luego ser enviados serialmente bajo el
mismo principio de comunicación serial ya usado anteriormente.
Al momento de ser enviados los datos, estos pasan por un transmisor de 418
MHz (Figura No. 36) ubicado en el terminal RA1 del microcontrolador, dicho
transmisor complementa el que se encuentra en la interface serial del PC ya
anteriormente referida y contribuye a completar el eficiente intercambio de
información entre el PC y el Robot.
Figura No. 36: Transmisor de 418 MHz
Fuente: www.dvp.com (1999-06-02)
6.5. DISPOSITIVOS PARA EL MOVIMIENTO
Las señales provenientes de la tarjeta interna en el PC (FASE 6, sección 6.1.1)
en FM son percibidas por un receptor de 75 MHz FUTABA ubicado directamente en
el Robot móvil, estas al ser alimentadas a través de la antena, son demoduladas en su
forma original en señales de PWM, como se explicó anteriormente, este tipo de
183
señales presentan una variación del ancho del pulso a partir de un ancho mínimo de
señal. De esta manera la PWM es una elección frecuente cuando se desea el control
remoto proporcional de una posición o cierta razón de posición, esto aunado al hecho
de que el receptor a su vez divide la señal en sus dos componentes de control y las
suministra a los dispositivos actuadores que responden directamente por el
movimiento del Robot.
a. EL CONTROL DE VELOCIDAD Y EL MOTOR DC
El Control Electrónico de Velocidad ROOSTER (Electronic Speed Control
o ESC) de NOVAK ELECTRONICS, INC (Figura No. 37) es un control de
velocidad reversible de carreras que se encarga de proveer, en la medida que sea
necesario, la corriente necesaria para el motor y así dotar de fuerza locomotora al
Robot.
Figura No. 37: Control de Velocidad ROOSTER
Fuente: www.teamnovak.com (1999-03-18)
184
Este dispositivo fue seleccionado por su sencillez de uso y fácil programación
con poca o ninguna experiencia en el área de las carreras de Carros Radio-Control o
Aeromodelismo. Entre las características funcionales provistas por NOVAK podemos
citar como las más importantes que necesita de una alimentación provista por 6 celdas
de 1.2 Voltios DC y recibe las señales de PWM a una velocidad de 1250 Hertz.
El control de velocidad debe ser instalado con cinta de doble cara y lo más
lejos del receptor para evitar la interferencia en alguno de los dos dispositivos. Las
pruebas del control de velocidad no deben hacerse con el motor conectado.
Con respecto al motor, es un motor stock de 23000 revoluciones por minuto a
velocidad máxima, seleccionado aleatoriamente debido a que el ESC es capaz de
manejar casi cualquier motor DC en cuanto a modelos para R/C (Radio-Control) se
refiere.
El funcionamiento es bastante sencillo, necesita aproximadamente 3 Amperios
para trabajar, los cuales son proporcionados por la pila a través del ESC. Sin embargo
existen también, como con el ESC, algunas consideraciones que deben ser tomadas
en cuenta, entre ellas, los cables del control de velocidad deben estar soldados para
obtener la menor resistencia posible, además el motor debe tener instalados 3
capacitores de 0.1 µF (50 Voltios) para evitar que el ruido electrónico del motor DC
interfiera con el receptor de RF y que se ocasionen daños internos severos al control
185
de velocidad. En la figura se puede observar la ubicación de los capacitores para su
instalación:
Figura No. 38: Motor DC con los Capacitores
Fuente: www.teamnovak.com (1999-03-18)
Al estar todos los dispositivos dispuestos se procede a su conexión. Para tal
efecto se deben seguir, nuevamente, una serie de pasos o normas para la primera
instalación y su configuración como control de velocidad reversible:
• Instalar el control de velocidad, como se mencionó anteriormente, en un
lugar alejado del receptor y de la antena.
• Conectar el control de velocidad al receptor.
• Conectar el ESC a la batería.
• Encender el transmisor conectado al PC.
• Encender el control electrónico de velocidad.
• Con el valor neutral de velocidad, presionar el botón de Set hasta que el
LED cambie a rojo.
• Colocar el valor máximo de velocidad en el transmisor hasta que el LED
cambie a verde.
186
• Colocar el valor máximo de velocidad en reversa en el transmisor hasta
que el LED parpadee, luego colocar el valor en la posición neutral de
velocidad.
• Apagar el control de velocidad, luego el transmisor y conectar el motor.
Al completar todos los pasos anteriores el sistema estará listo y configurado,
solo bastará con recordar encender el transmisor primero y luego el control de
velocidad para evitar una desconfiguración. De este punto en adelante no hará falta
volver a realizar el proceso, el sistema está listo para trabajar y brindar movimiento al
Robot. Las conexiones de los dispositivos para la configuración se pueden apreciar en
la siguiente figura:
Figura No. 39: Conexiones del Sistema de Movimiento
Fuente: www.teamnovak.com (1999-03-18)
187
FASE 7. - DEPURACIÓN DEL SOFTWARE
Para que el sistema realice sus funciones es necesario la implementación del
software de control, el cual realiza la toma de decisiones que rigen al Robot, y por
ende las acciones de los diversos dispositivos que componen el hardware del sistema.
Dicho Software de Control ubicado en el PC fue diseñado inicialmente en
Microsoft QBASIC donde se establecieron los primeros parámetros para el
funcionamiento del sistema como los puertos a usarse y la configuración de la tarjeta
controladora de la velocidad y la dirección. De igual forma, se realizó el primer
prototipo del Sonar que más tarde prevalecería en la versión final del programa,
QBASIC permitió determinar la manera más eficaz de ejecutar las lecturas de los
sensores de distancia, así como sirvió para realizar los programas posteriores que
establecen la comunicación entre los microcontroladores y el PC.
Sin embargo, más adentrada la investigación QBASIC comenzó a presentar
ciertas limitantes en su estructura de programación a medida que el hardware del
sistema se iba desarrollando, debido a que cuando se hizo necesario establecer la
forma de funcionamiento que el sistema tendría el lenguaje no cubría los
requerimientos necesarios para satisfacerlo, en especial la velocidad de
procesamiento.
188
Por lo expuesto anteriormente fue necesario buscar un nuevo lenguaje que se
adaptara al nuevo método de trabajo, para tal efecto se implementó el programa en
TURBO PASCAL 7.0 que posee estructuras dinámicas de datos que el lenguaje
permite aumentar o reducir durante la ejecución del programa como árboles o listas,
de igual forma la versión utilizada de TURBO PASCAL es capaz de manejar
punteros con los que se pueden manipular las direcciones de memoria, así también
maneja los puertos de entrada y salida lo que hace la comunicación entre el lenguaje y
los puertos del PC más fiable.
TURBO PASCAL 7.0 tiene la ventaja de ser un lenguaje donde la
programación es modular, estructurada y legible, puntos donde QBASIC no cumplía
las expectativas, dado que requería realizar todas las rutinas de programación
modulares como en los microcontroladores siguiendo la metodología de "Dividir y
Vencer", donde la clave del éxito radica en separar el trabajo modularmente y
permitir que los propios dispositivos se compartan la responsabilidad del buen
funcionamiento del sistema. Cabe destacar que ningún lenguaje de programación es
mejor que otro desde todos los puntos de vista, sin embargo TURBO PASCAL es
ideal para aprender a programar y para resolver problemas en el campo tecno-
científico por poseer gran cantidad de funciones matemáticas.
De igual forma el PC se apoya en distintos microcontroladores que poseen un
programa de control que le permite ejecutar las órdenes recibidas de manera modular,
es decir, todas las funciones del sistema repartidas en varios dispositivos. Los
189
microcontroladores son programados en MPLAB de MICROCHIP, este programa
traduce el código ensamblador o código de máquina en instrucciones hexadecimales
que luego por medio de un programador son introducidas a los microcontroladores.
La versión 4.1 de MPLAB tiene algunas opciones que permiten simular los
programas antes de implementarlos físicamente en los microcontroladores, las
opciones como Stopwatch, Step, Step Over, Change the Program Counter, etc.,
permiten verificar muy acertadamente la fiabilidad del programa para las funciones
que serán ejecutadas. Así mismo, permite ver los registros de funciones especiales
(SFR) y una ventana de registros específicos donde se puede observar el estado de las
variables que están siendo implementadas en el programa.
Es importante señalar que el uso de los microcontroladores PIC16C84 y
PIC16F84 es debido a que tienen memoria EEPROM de programa lo que significa
que se pueden programar hasta un millón de veces, mientras que muchos otros de la
misma familia son OTP o deben ser borrados con luz ultravioleta antes de ser
regrabados, por otra parte son de poco tamaño (18 pines) lo que los convierte en una
alternativa muy solicitada para Sistemas Robóticos y finalmente mas no menos
importante, comercialmente son económicos y muy fáciles de conseguir, a diferencia
de otros de la familia PIC16XXX que ya están fuera del mercado como el PIC16C71
entre otros.
FASE 8. - INTEGRACIÓN DEL HARDWARE CON EL SOFTWARE
190
Definidos y adaptados cada uno de los módulos integrantes del Sistema
Robótico para eludir obstáculos, con los programas de control en los
microcontroladores, se procede a la depuración total del sistema, determinando y
corrigiendo las posibles fallas del corrido del mismo.
El Sistema Robótico es probado a través de la actuación del mismo, esto es,
tomando como base las señales emitidas y recibidas por cada uno de los módulos, que
son observables con la utilización de un osciloscopio y una punta lógica, para
determinar la exactitud de la información.
Una vez conectados todos los componentes se probó parte por parte que la
información proveniente del PC era recibida fielmente por el Robot, y si la
información que el Robot enviaba al PC correspondía a la que se había pedido
inicialmente.
Partiendo de los supuestos anteriores y debido a que el Software de Control
está estructurado modularmente, se comprobó cada uno de los módulos del programa
mediante su activación y respuesta correcta por parte del Robot. Cada uno de los
módulos del software de control envía un byte de datos, al cual el Robot debe enviar
la información correspondiente a ese byte, dicha información es tomada como
información de actualización para el módulo que la solicitó, así mismo el programa
del PC posee cuatro módulos relevantes que envían información y esperan una
191
respuesta, estos son (según son nombrados en el código original del programa en
TURBO PASCAL):
• Batería.
• Sensores.
• Luz.
• Scan.
Batería, es el módulo correspondiente a mantener los estados de las baterías
del sistema actualizado para su visualización en la pantalla del programa, de igual
forma se encarga de tomar decisiones acerca del cambio de las baterías en caso de
que alguna de las dos este baja. Para tal efecto se muestra un mensaje en el cuadro del
programa (derecha) que indica cual de las baterías está activa, bien sea PRINCIPAL o
AUXILIAR.
El módulo Sensores, posee la misma función del módulo Batería, de mantener
actualizado el estado de la batería de los sensores para su display, con la diferencia
que no toma ningún tipo de decisión, solo muestra la condición de la batería e indica
cuando está baja.
Luz, se encarga de enviar instrucciones que llevan al programa a obtener el
estado de la luz del ambiente y mostrarla en pantalla. También tiene capacidad de
192
emitir instrucciones, provenientes de decisiones, que encienden las luces del Robot en
caso de que la iluminación sea baja.
Finalmente, Scan, corresponde al SONAR del Software de Control y es la
parte más importante del sistema, ya que provee de los datos necesarios para provocar
las rutinas de las acciones que serán tomadas por el Robot, de él y de su buen
funcionamiento depende que en el PC se tomen las decisiones correctas al momento
de hacer un movimiento.
Este elemento está compuesto de partes que funcionando coordinadamente
pueden proveer de un entendimiento bastante certero del entorno del Robot, funciona
excelentemente como alternativa a las cámaras y al reconocimiento de patrones
visuales, la mayor de las ventajas de este tipo de dispositivos descansa en el hecho
que puede mejorarse su funcionamiento solo cambiando el software de control del
PC, sin tener que agregar hardware o verse en la posibilidad de tener que modificarlo,
por esta y otras razones se convierte en una herramienta de reconocimiento flexible y
solo capaz de expandirse y hacerse más poderosa dentro de los propios limites de la
habilidad del programador. Asegurando que todas las instrucciones para cada una de
las funciones son recibidas por el Robot y que la información proveniente del Robot
es normalmente comprendida por el PC se comprobó la funcionalidad del sistema.
FASE 9. - CONSTRUCCIÓN DEL PROTOTIPO DEFINITIVO Y
PRUEBAS FINALES
193
Debido a que el desarrollo del Sistema Robótico cumplió con los objetivos
planteados en la investigación, estableciéndose el software compilado y la total
funcionalidad del sistema, no se consideró pertinente la realización de un prototipo
final de los circuitos electrónicos del Robot en baquelita.
194
DISCUSION DE LOS RESULTADOS
Una vez realizada la integración del Hardware y el Software anteriormente
mencionada, se procedió a realizar un análisis exhaustivo donde se pudiera
determinar cual había sido el comportamiento del sistema en sí, confrontando los
resultados obtenidos con las teorías más importantes referenciadas en el desarrollo de
la investigación.
De acuerdo a Groover (1989) la información más completa que el Robot
puede disponer, para adaptarse a su entorno y llevar a cabo su misión con el máximo
rigor, consiste en la propia imagen del espacio que le rodea, así la capacidad de visión
dota al Robot de un sofisticado mecanismo de percepción que le permite responder a
su entorno de una forma inteligente y flexible. La visión se considera como una
potente capacidad sensorial del Robot, jugando un papel significativo en su
comportamiento, sin embargo al realizar las pruebas del Sistema Robótico
desarrollado se determinó que un solo tipo de sensor que provea capacidad de visión
a los Robots no es suficiente para adaptarse a su entorno haciéndose, necesarios
diversos tipos de sensores para tener un entendimiento del mundo exterior cambiante.
Al trabajar con el reconocimiento del entorno del Robot se constató la teoría
de Moravec (1981) donde se explica que una única medida tomada por los sensores
de ultrasonido proporciona poca información, así que mediante la acumulación de la
evidencia de una serie de medidas, se incrementa la precisión de la localización de los
195
diversos obstáculos que hay en el medio. Por tanto, para reducir la incertidumbre
intrínseca a los sensores de ultrasonido se utilizó para esta investigación un mapa del
entorno donde sucesivamente se van plasmando y actualizando las medidas realizadas
de acuerdo a las teorías de Leonar y Durrant-Whyte (1992), que infieren que el Robot
debe hacer su propio mapa del entorno constantemente y no depender de un mapa
generado previamente por el sistema de navegación.
Lógicamente al moverse el Robot por el entorno, la incertidumbre en la
generación del mapa y su actualización se va acrecentando, debido a que el error en la
estimación de la posición del Robot respecto a un sistema de referencia general es
acumulativo y va creciendo con el tiempo. Lo que también concuerda con las teorías
de Moravec, H (1981) las cuales explican que se debe contar con un procedimiento
que permita reducir la incertidumbre de la posición del Robot para mantener la
coherencia espacial de las diferentes medidas, atendiendo a esto el Sistema
desarrollado mantiene un sensado permanente, de manera que el Robot realiza el
chequeo del entorno, traza el mapa, toma la decisión, se desplaza de acuerdo a ella, y
sensa nuevamente repitiendo el ciclo, ratificando así la veracidad de la teoría de
Miller, Winkless y Bosworth (1998).
Con respecto a la programación se demostró que para mejorar la
productividad de un programa se debe utilizar la Programación Modular, en el cual el
programa se divide en módulos, cada uno de los cuales ejecuta una única actividad y
se codifica independientemente de otros módulos, así el programa principal contiene
196
un módulo que controla todo lo que sucede, transfiriendo el control a submódulos o
subprogramas, de modo que puedan ejecutar sus funciones eficientemente de acuerdo
a la teoría de Joyanes (1995).
CONCLUSIONES___________________________________
Las conclusiones derivadas del Desarrollo de un Sistema Robótico para eludir
obstáculos fueron las siguientes:
• Se demostró que un Sistema Robótico basándose en estímulos del entorno es
capaz de eludir los obstáculos del medio usando simples órdenes que conllevan a
generar un comportamiento electrónicamente reactivo.
• Se verificó que con la utilización de sensores, es posible lograr la percepción del
Robot al entorno que le rodea.
• Se comprobó que con un Sistema de Visión basado en dispositivos adaptados,
tales como: Sensores de Ultrasonido, Servomotores, Microcontroladores y una
estructura adecuada para su soporte, le permite al Robot tener su propia imagen
del espacio que lo rodea permitiendo la navegación reactiva en ambientes no
controlados.
• Se constató que los Sensores de Ultrasonido son eficientes para la detección de
objetos, sin embargo tienen como limitante la incertidumbre del sitio en que el
cono acústico fue interrumpido por el mismo, lo que conlleva a imprecisión en las
medidas.
• Se determinó, que con un solo tipo de sensor no es suficiente para que el Robot
tenga total conocimiento de su estado con respecto al exterior, aunque los
sensores de ultrasonido se adaptan a las necesidades del sistema, en cuanto al
reconocimiento del entorno, se hace necesario otros tipos de sensores para
atender aspectos como:
- Posición espacial.
199
- Reconocimiento de objetos.
- Manipulación de objetos.
- Control de comportamiento.
- Etc.
• Al experimentar con distintos tipos de actuadores se constató que los
servomotores son más efectivos para aplicaciones en Robótica, debido a que se
puede controlar su posición angular mediante PWM, sin embargo este
movimiento es más difícil de generar que las rutinas para otros tipos de motores,
presentándose como única limitación el poseer solo 180 grados de apertura.
• Se corroboró que con la implementación de microcontroladores se simplifica la
cantidad de circuitos que controlan el Sistema Robótico, y que al trabajarlos
modularmente se distribuye más eficientemente el trabajo que cumplen los
programas de control que contienen, disminuyendo de esta manera el trabajo del
programador. Además se determinó que es imprescindible tener en cuenta los
diferentes tipos de microcontroladores para seleccionar eficazmente el que mejor
se ajuste a los requerimientos del sistema como transmisión serial, intercambio de
información paralela, PWM, etc.
• Se ratificó que para dotar a un Robot de inteligencia es necesario un Software de
Control, que le permita tomar decisiones de acuerdo a la información obtenida del
exterior y tener dominio de los diferentes elementos del sistema.
• Se confirmó que para manejar los puertos de salida del PC que controla el
sistema, es necesario implementar interfaces bien sea para regular la velocidad del
200
intercambio de información, para adaptar los niveles de voltaje o para aumentar
los puertos de salida. De esta manera se asegura que la comunicación es eficiente
y la información pasa de un módulo a otro correctamente.
• Se observó como los circuitos de RF emiten señales que interfieren en los otros
dispositivos, lo cual es perjudicial para el correcto funcionamiento del Sistema
Robótico, haciéndose necesario diseñar circuitos que permitan su ajuste para
evitar este tipo de problema, como es el caso de la tarjeta interna para el
movimiento del Robot.
RECOMENDACIONES______________________________
Finalizada la investigación sobre el Desarrollo de un Sistema Robótico para
eludir obstáculos se recomienda:
• Instalar sensores de nivel para indicar al sistema la inclinación de la
superficie donde se encuentra el Robot.
• Instalar sensores de temperatura e incluir una prueba de temperatura del
ambiente en el software de control para obtener una mejor certeza de las
mediciones por ultrasonidos.
• Instalar sensores para monitorear el giro de las ruedas de esta manera el
sistema sabrá cuando el Robot está detenido y poder establecer una certeza
de su posición.
• Instalar brújula digital al Robot para tener una relación espacial de su
ubicación.
• Reemplazar la gran cantidad de microcontroladores de la serie PIC16X84
por un menor número de microcontroladores de la serie PIC16C74 que
con todas sus funciones cumple con todos los requerimientos necesarios
para una menor cantidad de conexiones pese a su tamaño.
• Implementar todos los circuitos en baquelita de doble cara para minimizar
el espacio de los circuitos en el Robot, de esta manera dar cabida a una
mayor cantidad de sensores u otros dispositivos.
• Cambiar el Software de Control a un lenguaje visual corrido desde
Windows para mejorar tanto la presentación visual como las funciones
orientadas a objetos.
203
• Ampliar y mejorar el Software de Control para hacer la interacción del
Robot con el entorno más rápida y eficiente.
• Incluir en el Plan de Estudios de Ingeniería en Electrónica cátedras como
Robótica donde se enseñe desde un enfoque electrónico el
funcionamiento del hardware comúnmente utilizado y el control por
software, Semiconductores donde se enseñen las diferencias funcionales
entre los distintos dispositivos del mismo tipo existentes en el mercado, y
Microcontroladores en la cual se impartan la arquitectura,
funcionamiento y programación de estos dispositivos.
BIBLIOGRAFIA
1. LIBROS: Albornoz y Martínez. (1998). Indicadores de Ciencia y Tecnología del Arte y Perspectiva. CYTED. Angulo y Angulo. (1997). Microcontroladores PIC Diseño Practico de Aplicaciones. Madrid. McGraw - Hill. Angulo y Avilés. (1989). Curso de Robótica. Madrid. Editorial Paraninfo. Aracil, Balaguer, Barrientos y Peñín. (1997). Fundamentos de Robótica. Madrid. McGraw - Hill. Bores y Rosales. (1993). Computación Metodología, Lógica Computacional y Programación. McGraw - Hill. Bosworth, Miller y Winklles. (1998). The Personal Robot Navigator. Colorado. Robot Press. Canale y Chapra. (1989). Introducción a la Computación para Ingenieros. México. McGraw - Hill. Craig, Jhon. (1989). Introduction to Robotics. Astro Data. Dale y Weems. (1989). Pascal. Madrid. McGraw - Hill. Distefano, Stubberud y Williams. (1992). Retroalimentación y Sistemas de Control. Bogotá. McGraw - Hill. Dorf, Richard. (1989). Sistemas Modernos de Control. Wilmington. Addison - Wesley Iberoamericana. Foley, Richard. (1993). Turbo Pascal, Introducción a la Programación. Wilmington. Addison-Wesley Iberoamericana. González, Fu y Lee. (1988). Robótica Control, Detección, Visión E Inteligencia. Madrid. McGraw - Hill. Groover, Nogel, Odrey y Weiss. (1989). Robótica Industrial. McGraw - Hill. Hermoso, Joyanes y Zahonero. (1995). Pascal y Turbo Pascal, Un Enfoque Práctico. Madrid. McGraw - Hill.
205
Jones, Seiger y Flynn. (1999). Mobile Robots Inspiration to Implementation. Naticks, Massachusetts. A K Peters. Lozano, José. (1994). Turbo Pascal Versión 7.0. Maracaibo. Unidata C.A. Maloney, Timothy. (1997). Electrónica Industrial Moderna. México. Prentice Hall. Marquez, Juan. (1992). Introducción a la Programación Estructurada con Basic. Vadell Hermanos Editores. McKerrow, Phillip. (1991). Introduction to Robotics. Astro Data. Ogata, Katsuhiko. (1993). Ingeniería de Control Moderna. México. Prentice Hall. Sabino, Carlos. (1995). El Proceso de Investigación. Editorial Paraninfo. Tamayo y Tamayo, Mario. (1998). El Proceso de Investigación Científica. México. Noriega Editores. Tocci, Ronald. (1993). Sistemas Digitales Principios y Aplicaciones. México. Prentice Hall. 2. ENCICLOPEDIAS: Enciclopedia Microsoft® Encarta® 97. Enciclopedia Microsoft® Encarta® 98. 3. MANUALES: Manuales Operativos del Sistema de Desarrollo PICSTART PLUS. 1994. 4. WEB SITES: Activmedia (1998). [Página Web Fuera de Línea]. Previamente Disponible: http://css.activmedia.com [Consulta: 1998, Octubre 26] Arrick's Robot Information Central (1998). [Página Web en Línea]. Disponible: http://www.robotics.com/robots.html [Consulta: 1998, Noviembre 5] Cool Robot of the Week (1996). Cool Robots of the Week 1996. [Página Web en Línea]. Disponible: http://ranier.hq.nasa.gov/telerobotics_page/coolrobots.html [Consulta: 1998, Noviembre 2]
206
DVP Inc. Wireless Solutions (1999). [Página Web en Línea]. Disponible: http://www.dvp.com [Consulta: 1999, Junio 2] Diversified Enterprises (1999). [Página Web en Línea]. Disponible: http://www.divent.com [Consulta: 1998, Noviembre 2] Hexplorer (1997). [Página Web en Línea]. Disponible: http://real.uwaterloo.ca/~robot [Consulta: 1998, Noviembre 2] IS Robotics (1998). [Página Web en Línea]. Disponible: http://www.isr.com [Consulta: 1998, Noviembre 2] Jameco Electronics (1999). [Página Web en Línea]. Disponible: http://www.jameco.com [Consulta: 1999, Abril 7] Jameco Electronics (1999). [FTP Web en Línea]. Disponible: ftp://ftp.jameco.com [Consulta: 1999, Abril 7] Mars Pathfinder JPL Web Site (1997). [Página Web en Línea]. Disponible: http://mars.jpl.nasa.gov [Consulta: 1998, Noviembre 2] Mars Missions Web Site (1998). [Página Web en Línea]. Disponible: http://mars.sgi.com [Consulta: 1998, Noviembre 2] Maryland University (1999). Autonomous Mobile Robotics Lab. [Página Web en Línea]. Disponible: http://www.cs.umd.edu/projects/amrl/amrl.html [Consulta: 1999, Marzo 18] Massachusetts Institute of Technology (1999). Robotics Ants Project. [Página Web en Línea]. Disponible: http://www.ai.mit.edu/projects/ants [Consulta: 1999, Marzo 21] Massachusetts Institute of Technology (1999). Artificial Intelligence Lab. [Página Web en Línea]. Disponible: http://www.ai.mit.edu [Consulta: 1999, Marzo 21] Massachusetts Institute of Technology (1999). Research. [Página Web en Línea]. Disponible: http://web.mit.edu/research.html [Consulta: 1999, Marzo 21] Massachusetts Institute of Technology (1999). [Página Web en Línea]. Disponible: http://web.mit.edu [Consulta: 1999, Marzo 21] Massachusetts Institute of Technology (1999). Mobile Robots Lab. [Página Web en Línea]. Disponible: http://www.ai.mit.edu/projects/mobile-robots [Consulta: 1999, Marzo 21]
207
Microchip (1999). [Página Web en Línea]. Disponible: http://www.microchip.com [Consulta: 1999, Marzo 21] Mondotronics (1999). [Página Web en Línea]. Disponible: http://www.robotstore.com [Consulta: 1999, Abril 9] NASA (1998). [Página Web en Línea]. Disponible: http://www.nasa.gov [Consulta: 1998, Noviembre 2] Newton Labs (1998). [Página Web en Línea]. Disponible: http://www.newtonlabs.com [Consulta: 1998, Noviembre 2] Parallax Inc. BASIC Stamp Technology (1999). [Página Web en Línea]. Disponible: http://www.paralaxinc.com [Consulta: 1999, Junio 26] Real World Interface (1998). [Página Web en Línea]. Disponible: http://www.rwii.com [Consulta: 1998, Noviembre 2] Robotics Institute at Carnegie Mellon University (1999). [Página Web en Línea]. Disponible: http://www.ri.cmu.edu/home.html [Consulta: 1999, Abril 1] Robotics Institute at Carnegie Mellon University (1999). Robotics Frecuently Asked Questions. [Página Web en Línea]. Disponible: http://www.frc.ri.cmu.edu/robotics-faq [Consulta: 1999, Abril 1] South California University (1998). Artilect Research. [Página Web en Línea]. Disponible: http://www.-robotics.usc.edu/brochure/marvin.html [Consulta: 1998, Octubre 26] South California University (1998). Ullanta Robotics. [Página Web en Línea]. Disponible: http://www.-robotics.usc.edu/~barry/ullanta [Consulta: 1998, Noviembre 2] Team Novak (1999). [Página Web en Línea]. Disponible: http://www.teamnovak.com [Consulta: 1999, Marzo 18] 5. REVISTAS ESPECIALIZADAS: Naranjo, J. (1994). Adquisición de datos vía RS-232 con microcontrolador PIC. Electrónica y Computadores (I)11:10-15. Naranjo, J. (1994). PIC16C84. Electrónica y Computadores (I)12:16-21. Naranjo, J. (1995). Tarjeta I/O para Computadores. Electrónica y Computadores (II)16:72-77.
208
6. TESIS DE GRADO: Contreras, Elsy. Perdomo, Johanna. (1996). Sistema de Control Digital para el desplazamiento de las butacas plegables sobre plataformas telescópicas de la sala de Artes Escénicas del CAM-LB. Universidad Rafael Belloso Chacín. Maracaibo. Phorlakis, Fran. Schwartz, Luis. (1997). Diseño e Implantación de un Robot Autónomo con Movimiento Adaptativo guiado por Microcontrolador. Universidad Rafael Belloso Chacín. Maracaibo.
ANEXOS__________________________________________
ANEXO A__________________________________________ FOTOGRAFIAS DEL SISTEMA ROBÓTICO
ROBOT
SONAR
SONAR Y CIRCUITOS
TRANSMISOR Y RECEPTOR DE 303,82 MHz
TRANSMISOR DE 418 MHz
RECEPTOR DE 75.670 MHz
CONTROL ELECTRÓNICO DE VELOCIDAD
SERVOMOTOR DE LA DIRECCION
MOTOR CON CAPACITORES
CELDA FOTOCONDUCTIVA Y REGULADOR
ANEXO B__________________________________________ DIAGRAMAS DE LOS CIRCUITOS IMPLEMENTADOS
ANEXO C__________________________________________ PROGRAMAS DE LOS MICROCONTROLADORES
ANEXO D__________________________________________ PROGRAMA DEL SOFTWARE DE CONTROL
INDICE ANALITICO A
Acumulador Algoritmo ALU Arquitectura Autocorrección
B Banda Proporcional Bloques de Memoria Brecha Diferencial
C Cinemática Codificación Código Comentario Contador de Programa Compilador Control
On-Off Proporcional Proporcional-Integral Proporcional-Integral-Derivativo
Convertidor Analógico-Digital Crecimiento por Región Cuerpo de Programa
D Detección de Bordes Diagramas de Flujo Dinámica Direccionamiento Directo Direccionamiento Indirecto Discontinuidad
E EEPROM Efectores Finales Entradas Estructuras
Compuestas Simples
Estructuras de Control
F Fuentes de Movimiento FSR
G GPR
I Identificadores
Estándar Definidos por el Usuario
Inteligencia Artificial (IA) Interpretación Interprete Interrupción Externa Interrupción por Conversión Analógica-Digital
L Lenguaje
Ensamblador De Alto Nivel De Bajo Nivel Máquina
LIFO
M Mecánica Medio de Transmisión Microcontroladores Memoria
De Datos De Programa
Motores De Corriente Continua Paso a Paso
N Nitinol
O OST
P
Palabras Reservadas PASCAL Percepción Pixeles Preproceso PCL PIC16C71 PIC16C84 PIC16F84 Pila (Stack) PORTA PORTB Power-On Reset Programa Programa Ejecutable Programación
Estructurada Modular
Pseudocódigo PWRT
R Reconocimiento Reductores Registro
De Funciones Especiales De Propósito General EEADR EEDATA EECON1 EECON2 INTCON OPTION PCLATH STATUS TRISA TRSIB W
Reset Retroalimentación Robot Robótica
S Salida
Segmentación Sensores
De Proximidad De rayos Láser Ultrasónicos
Servomotores AC Controlados Digitalmente DC
Similitud Sistema
Operativo Sistema de Control
De Lazo Abierto De Lazo Cerrado
SLEEP Software
De Aplicación De Sistema
Stack
T Técnicas Estructurales Técnicas de Coincidencia de Plantillas Trayectorias
Continuas Coordinadas o Isocronas Punto a Punto
TURBO PASCAL
W WDT (Watchdog Timer)
Top Related