54
CAPITULO IV
RESULTADOS DE LA INVESTIGACION.
La investigación se desarrolló basándose en la metodología expuesta
por Angulo; en cada fase expuesta por este autor se obtuvieron una serie de
resultados de relevancia las cuales se describen a continuación.
Fase 1: Definición de las especificaciones.
El sistema desarrollado posee un diseño enfocado en torno a la forma
característica del calamar, este molusco cefalópodo cuenta con un cuerpo
cónico alargado en forma de flecha, de terminación puntiaguda, con
propiedades hidrodinámicas que facilitan el movimiento dentro de los
entornos acuáticos, con un par de aletas laterales móviles que permiten el
direccionamiento dentro del medio, para mantener su estabilidad se cuenta
con un juego de aletas dorsales y frontales. Su recubrimiento externo está
compuesto por una membrana de látex, la cual a su vez es excelente para
hacerlo impermeable.
En su parte inferior se encuentran la cabeza y los tentáculos que
sobresalen, en la parte inferior de la cabeza se encuentra una cavidad por la
cual sale un chorro de agua generado por una pequeña turbina que se
55
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
encuentra en el interior del mismo. El chorro es direccionado por medio de un
timón, el mismo está acoplado a un servomotor el cual lo posiciona.
Internamente esta posee una estructura esquelética, liviana, que le
permite suspender dentro de la membrana de látex todos los componentes y
actuadores necesarios para su funcionamiento. En la parte superior de la
estructura se encuentran varios filamentos que permiten darle la forma
cónica puntiaguda que incluye los soportes para el apoyo de los
servomotores, estos últimos permiten el movimiento de las aletas laterales.
En el plano posterior se encuentra la apertura de entrada de la turbina así
como el soporte de la misma.
La batería se encuentra situada en la parte posterior inferior de la
estructura para permitirle al sistema un mejor equilibrio; sobre este último se
encuentran localizados los circuitos de control y monitoreo de señales
presentes en el sistema.
Los sensores que permiten la localización de fuentes luminosas se
encuentran ubicados en la parte anterior superior, alineada con los
servomotores de direccionamiento. Este sensor se caracteriza por presentar
una forma de diamante que permite localizar más fácilmente una fuente
luminosa. En la parte media de las aletas lateras se encuentran un juego de
sensores de contacto con los cuales el sistema robótico es capaz de
establecer el contacto con objetos dentro del entorno en el que se
desenvuelve; el robot cuenta a su vez con sensores de contacto en la zona
posterior media, así como también en la zona anterior media. En la parte
56
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
inferior del robot, dentro del tentáculo largo derecho se encuentra un sensor
de fondo, este mismo permite establecer el contacto con el fondo del medio
acuático.
La decisión de las acciones a tomar se encuentran almacenadas
dentro de un microcontrolador, el cual le permite al sistema obtener la
autonomía necesaria para desenvolverse dentro del medio marino o
acuático.
Fase 2: Esquema general del hardware.
En esta fase se definió la función y características que presentan las
estructuras dentro del sistema robótico, en el figura 14 se puede observar en
forma de bloques la estructura del sistema.
Figura 14. Esquema general del Hardware.
Fuente: García (2002)
57
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
El dispositivo principal de la estructura es el Microcontrolador, el cual
se encarga de monitorear los sensores que se encuentran dentro del
sistema, así como el control de los dispositivos electrónicos y
electromecánicos que se encuentran presentes. Gracias a los sensores es
que el Microcontrolador puede conocer y obtener la información del entorno
donde se encuentre, con esta información es capaz de tomar decisiones
sobre las acciones a tomar en cuanto al posicionamiento general.
Dentro de esta estructura se encuentran los sensores, encargados de
transformar las variables físicas de un entorno a pulsos eléctricos que
pueden ser descifrados por el Microcontrolador, estos dispositivos son los
que le permiten al Microcontrolador tener un enlace directo con el entorno
donde se desenvuelve el sistema; dentro del mismo se aprecian dos tipos de
sensores, los de luz que permiten establecer la localización de una fuente de
energía luminosa y los sensores de contacto que permiten determinar el
acercamiento con alguna variable del entorno. Estos dispositivos son de
entrada, debido a que los mismos le brindan información al microcontrolador.
Dentro la estructura del sistema se encuentra del mismo modo
dispositivos de salida, uno de ellos es el sistema de propulsión reflejado en
una turbina de motor eléctrico que genera por acción de una propela un flujo
o chorro de agua capaz de permitir el movimiento dentro del medio acuático,
el control del chorro de agua es reali zado por el Microcontrolador, el cual
decide el momento de su activación o desactivación.
58
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
Otro de los módulos del sistema son cada uno de los servomotores
que controlan las aletas direccionales, y el timón que controla la dirección del
chorro de agua, estos dispositivos son capaces de ubicarse en una posición
específica deseada, esta posición la define el Microcontrolador por medio de
modulación PWM (Pulse Wide Modulation); estos últimos se encuentran
conectados a los dispositivos mecánicos que permiten el direccionamiento
del robot dentro del medio en el cual se desenvuelve, mientras que otro de
estos servomotores es el encargado de direccionar el chorro de propulsión
del sistema.
Fase 3: Ordinograma General.
En la figura 15 se puede observar un diagrama de flujo general del
funcionamiento del robot, el cual se explica a continuación.
El sistema se inicia estableciendo las variables en valores predefinidos
para el sistema, de posición de cada uno de los dispositivos
electromecánicos, seguidamente se realiza un barrido de los sensores
presentes para conocer las variables del entorno donde se encuentra, una
vez conocida estas variables el sistema se empieza a desplazar dentro del
medio de manera aleatoria para la búsqueda del alimento, para este caso el
alimento para el robot se presenta como una fuente de energía luminosa,
una vez que el sistema localiza una fuente de luz, entra en un periodo de
estabilización para mantenerse frente a la fuente de energía.
59
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
Figura 15. Diagrama de flujo general del sistema.
Fuente: García (2002).
Si la fuente de energía desaparece, se busca nuevamente la fuente de
energía con movimientos aleatorios; estos movimientos se intercambian en
una serie de patrones, como lo son ascensión con movimientos laterales,
ascensión girando sobre su propio eje, o una ascensión rápida a la
superficie. Es de notar que el robot también desciende lentamente.
Si el robot registra contacto con el fondo, realiza una rutina de
ascensión.
60
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
Fase 4. Adaptación entre el hardware y el software
El hardware electrónico del sistema robótico se basó en el
Microcontrolador PIC 16F877, el cual presenta un diseño estructural que se
adapta a las necesidades del diseño. En la figura 16 se observan las
interconexiones del sistema propuesto.
Figura 16. Interconexiones del sistema.
Fuente: García (2002).
En el puerto A del Microcontrolador se encuentran las entradas
analógicas del sistema, con las que se monitorea la ubicación de la fuente de
61
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
energía luminosa, para ello se interconectaron al Microcontrolador cinco
transductores analógicos de iluminación, los mismos están dispuestos en
forma de diamante, este tipo de sensor se caracteriza por tener un
dispositivo foto resistivo, el cual cambia su resistencia dependiendo de la
cantidad de energía luminosa que se le suministre; dentro de la codificación
del programa se activa el bit GO/DONE del registro ADCON0 que permite el
inicio de la conversión analógica / digital, una vez finalizada la conversión
automáticamente el bit GO/DONE regresa a un estado bajo (se desactiva).
La información de la conversión analógica / digital se almacena en los
registros ADRESH y ADRESL, con esta información se pueden tomar las
decisiones de las rutinas a seguir dentro del programa.
En el bit 6 del puerto B se encuentra conectado el circuito de
activación o desactivación de los sensores del robot, y en el bit 7 del mismo
puerto se encuentra conectado el circuito que permite conocer el contacto
con el fondo del medio, ambas señales son digitales de entrada, ya que solo
se establece dos estados, abierto o cerrado. Dentro del código del programa
se encuentra una instrucción que permite la lectura de cada uno de los bits
del puerto, dicha instrucción es BTFSS que permite conocer si el bit deseado
se encuentra en un estado alto o bajo. Posteriormente se almacena en un
registro de propósito general para ser utilizado en la toma de decisiones de
las acciones a tomar.
El puerto C se encuentra dividido en dos partes, la parte baja del
mismo está configurada como salida, a diferencia de la parte alta que es de
62
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
entrada; en la parte baja se encuentran cuatro dispositivos, el primero de
ellos es una pequeña turbina que genera un chorro de agua, la misma esta
conectada en el bit 3 del puerto y es controlada por un impulso electrónico
alto, el comando que genera la activación de la misma es BSF PORTC,3;
esta instrucción cambia el estado de bajo a alto del cuarto bit del puerto C; la
dirección del chorro generado por la turbina es controlado por un servomotor,
que establece la dirección del chorro, este dispositivo se encuentra
interconectado al primer bit del puerto C o bit 0, en este bit se genera un
pulso de salida con modulación PWM, al igual que en la turbina el comando
que activa el bit del puerto es BSF PORTC,0, y para desactivarlo se utiliza el
comando BCF PORTC,0; se utilizan estos dos comandos dentro de un
código que genera a la salida un tren de pulsos a una frecuencia fija, el
cambio se observa en el factor de servicio de la señal.
En el bit 2 del mismo puerto se encuentra interconectado el control del
servomotor 3 (Control de la aleta lateral derecha), y en el bit 3 se encuentra
interconectado el control del servomotor 2 (Control de la aleta lateral
izquierda), estos dos bits son de salida y en los mismos se genera un tren de
pulsos con modulación PWM, estos dos bits del puerto C están en la
capacidad de generar por medio de ciertos comandos modulación PWM, el
primero de ellos es el registro CCP1CON para el bit 3 y CCP2CON para el bit
2, estos registros son similares, en ellos se establece la función de
modulación PWM, los registros involucrados son TIMER2 y PR2, en los que
se establece el período de la señal de modulación, y el período de cambio de
63
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
alto a bajo se establece con el registro CCPR1L para el bit 3 y CCPR2L para
el bit 2.
En el mismo puerto interconectado en la parte alta se tiene tres
sensores de contacto colocados de forma que permitan establecer cuando el
robot llega a los límites de inclinación preestablecidos, uno de los sensores
se encuentra a 90°, este esta conectado al bit RC6 y es el que indica la
perpendicularidad del robot respecto al eje horizontal del entorno; los otros
dos sensores se colocaron a 60° y 120° respectivamente, ello indica que
ambos sensores se encuentra a 30° de apertura respecto al eje vertical del
robot que se representa por el sensor conectado a RC6, estos dos sensores
se encuentran interconectados a los bits RC5 y RC7 respectivamente.
En el puerto D se localizan los sensores que establecen el contacto
con los obstáculos del medio, en el bit RD3 se asigno el sensor de contacto
frontal, en el bit RD2 se asigno el sensor de contacto posterior, en el bit RD1
el sensor de contacto izquierdo y en el bit RD0 el sensor de contacto
derecho. Por medio de la instrucción BTFSS se conoce la activación de
cualquiera de los sensores, el microcontrolador al tener conocimiento de la
activación de dichos sensores toma las acciones pertinentes.
Fase 5. Ordinogramas modulares y codificación del programa.
Es de importancia tener en cuenta las características de programación
64
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
que presenta el microcontrolador que se seleccionó para el desarrollo del
sistema, dicho microcontrolador es el 16F877 del fabricante Microchip, para
programarlo es necesario conocer cada registro (FSR) y todo el repertorio de
instrucciones con las que se puede desarrollar un programa para
determinada aplicación. Los registros son los encargados del control del
procesador y sus recursos, entre los que se encuentran el Registro de
Estado, dicho registro es el más utilizado, ya que el mismo permite la
selección de los bancos a acceder en la memoria de datos, indica las
incidencias del resultado de la ALU, como el acarreo, etc., también indica el
estado del reset. Este registro ocupa la dirección 3 de los 4 bancos de la
memoria de datos RAM. En la figura 17 se presenta el registro de ESTADO y
la descripción de cada uno de sus bits.
7 0
IRP RP1 RP0 TO# PD# Z DC C R/W R/W R/W R R R/W R/W R/W
Figura 17. Estructura interna del registro de ESTADO. Fuente: Angulo
(2000, p. 43).
R/W: Estos bits pueden ser leídos y escritos.
R: Estos bits solo pueden ser leídos, mas no pueden ser escritos.
C: ACARREO / LLEVADA EN EL BIT DE MAS PESO.
1 : Indica que se ha producido un acarreo en el bit de más peso del
resultado al ejecutar las instrucciones addwf y addlw.
65
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
0 : No se ha producido acarreo.
C también actúa como señalizador de “llevada” en el caso de la
instrucción de resta, como subwf y subwl. En este caso cuando vale 1 no hay
llevada, y si vale 0 sí hay llevada.
DC: ACARREO / LLEVADA EN EL.4to BIT.
Es igual que C pero se refiere al 4to. Bit. Es de interés en operaciones
BCD.
Z: CERO.
1 : El resultado de una instrucción lógico-aritmética ha sido 0.
0 : El resultado de una instrucción lógica-aritmética no ha sido 0.
PD#: «POWER DOWN ».
1 : Se pone automáticamente a 1 después de la conexión de la
alimentación al microcontrolador.
0 : Se pone automáticamente a 0 mediante la ejecución de la
instrucción sleep.
TO#: «TIME OUT».
1 : Se pone a 1 después de la conexión de la alimentación o al
ejecutarse las instrucciones clrwdt y sleep.
0 : Se pone a 0 cuando se produce el desbordamiento del Perro
Guardián.
RP1 – RP0: SELECCIÓN DE BANCO EN DIRECCIONAMIENTO
DIRECTO.
0–0 : Banco 0 (00H–7FH).
66
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
0–1 : Banco 1 (80H–FFH).
1–0 : Banco 2 (100H–17FH).
1–1 : Banco 3 (180H–1FFH).
IRP: SELECCIÓN DEL BANCO EN DIRECCIONAMIENTO
INDIRECTO.
Este bit junto con el de más peso del registro FSR sirven para
determinar el banco de la memoria de datos seleccionado.
0 : Banco 0 y 1 (00H–FFH).
1 : Banco 2 y 3 (100H–1FFH).
Por otra parte se encuentra el Registro OPTION_REG que tiene como
función controlar el TMR0 y el divisor de frecuencia (Véase figura 18). Ocupa
la posición 81H y 181H de la memoria de datos, que equivale a la dirección 1
de los bancos 1 y 3.
7 0 RBPU# INTEDG TOSC TOSE PSA PS2 PS1 PS0
Figura 18. Estructura interna del Registro OPTION_REG. Fuente: Angulo
(2000, p. 46).
67
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
PS2 PS1 PS0 DIVISION DEL TMR0
DIVISION DEL WDT
0 0 0 1:2 1:1 0 0 1 1:4 1:2 0 1 0 1:8 1:4 0 1 1 1:16 1:8 1 0 0 1:32 1:16 1 0 1 1:64 1:32 1 1 0 1:128 1:64 1 1 1 1:256 1:128
PSA: ASIGNACIÓN DEL DIVISOR DE FRECUENCIA.
1: El divisor de frecuencia se le asigna al WDT.
0: El divisor de frecuencia se le asigna al TMR0.
TOSE: TIPO DE FLANCO EN TOCKI.
1: Incremento de TMR0 cada flanco descendente.
0: Incremento de TMR0 cada flanco ascendente.
TOSC: TIPO DDE RELOJ PARA TMR0.
1: Pulsos introducidos a través de TOCKI (contador).
0: Pulsos de reloj interno Fosc/4 (temporizador).
INTEDG: FLANCO ACTIVO INTERRUPCION EXTERNA.
1: Flanco ascendente.
0: Flanco descendente.
RBP0#: RESISTENCIAS PULL-UP PUERTO B.
1: Desactivadas.
0: Activadas.
El Registro EECON1 se encarga del control de las operaciones en la
68
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
EEPROM (Véase la figura 19). Se ubica en la dirección 18CH del banco 3 de
la memoria de datos.
7 0
EEPGD ––– ––– ––– WRERR WREN WR RD
Figura 19. Estructura interna del registro EECON1. Fuente: Angulo
(2000, p. 51)
EEPGD: SELECCIÓN DE LA MEMORIA A ACCEDER.
1 : Selecciona el acceso a la memoria FLASH.
0 : Selecciona el acceso a la memoria EEPROM.
BITS 6 – 4: No implementados. Se leen como 0.
WRERR: SEÑALIZADOR DE ERROR EN ESCRITURA.
1 : La escritura ha terminado prematuramente.
0 : La escritura se ha completado correctamente.
WREN: PERMISO DE ESCRITURA.
1 : Permite la escritura de la EEPROM.
0 : Prohíbe la escritura.
WR: CONTROL DE ESCRITURA.
1 : Inicia un ciclo de escritura. Cuando se completa el ciclo pasa
automáticamente a 0.
0 : Prohibición de comienzo de ciclo de escritura en la memoria de la
EEPROM.
69
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
RD: CONTROL DE LECTURA.
1 : Se pone a 1 cuando se va a realizar un ciclo de lectura de la
EEPROM. Luego pasa a 0 automáticamente.
0 : Prohibición de comienzo de lectura.
En el Registro INTCON se encuentran la mayor parte de los
señalizadores y bits de permiso de las fuentes de interrupción (Véase figura
20). Ocupa la dirección 0BH de los 4 bancos.
7 0 GIE PEIE TOIE INTE RBIE TOIF INTF RBIF
Figura 20. Estructura interna del registro INTCON.
Fuente: Angulo (2000, p. 47).
RBIF: SEÑALIZADOR DE CAMBIO DE ESTADO EN LOS PINES
RB7:RB4
1 : Pasa a 1 cuando cambia el estado de alguna de estas 4 líneas.
0 : No ha cambiado el estado de RB7:RB4.
INTF: SEÑALIZADOR DE ACTIVACIÓN DEL PIN RB0/INT
1 : La entrada de la interrupción se ha activado. Se borra por software.
0 : Indica RB0/INT aún no se ha activado.
TOIF: SEÑALIZADOR DE DESBORDAMIENTO DEL TMR0
1 : El TMR0 se ha rebosado. Se borra por software.
0 : El TMR0 no se ha rebosado.
70
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
RBIE: PERMISO DE INTERRUPCIÓN POR CAMBIO DE ESTADO EN
RB7:RB4
1 : Permite esta interrupción.
0 : Prohíbe esta interrupción.
INTE: PERMISO DE INTERRUPCIÓN POR ACTIVACIÓN DE
RB0/INT
1 : Permite la interrupción al activarse RB0/INT.
0 : Prohíbe esta interrupción.
TOIE: PERMISO DE INTERRUPCIÓN POR DESBORDAMIENTO DE
TMR0
1 : Permite una interrupción al desbordarse el TMR0.
0 : Prohíbe esta interrupción.
PEIE: BIT DE PERMISO DE LOS PERIFÉRICOS QUE NO SE
CONTROLAN CON INTCON
1 : Permite la interrupción.
0 : No permite interrupción.
GIE: PERMISO GLOBAL DE INTERRUPCIONES
1: Permite la ejecución de todas las interrupciones, cuyos bits de
permiso individuales también las permitan.
0: Prohíbe todas las interrupciones.
Las instrucciones de este microcontrolador poseen una longitud de 14
bits. Dicho formato se divide en diferentes campos de bits, cada uno
de los cuales referencia a operandos que maneja la instrucción en la
71
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
operación que realiza en el procesador. Se describen dichos campos:
a) Campo del código OP.
Los bits de este campo sirven para definir la operación que realiza la
instrucción.
b) Campo de los operandos fuente (f) y destino (d).
Estos campos de bits definen los registros que actúan como
operandos en la instrucción. Suelen referenciar la dirección que ocupan en la
memoria de datos.
c) Campo de operando inmediato o literal(k).
Es un campo de bits que contiene el valor de un operando inmediato.
d) Campo que referencia a un bit (b).
Suele Ser un campo de 3 bits que indica la posición de un bit concreto
dentro de un registro de 8 bits.
e) Campo de la dirección del salto.
En las instrucciones de salto CALL y GOTO hay un campo de bits que
contiene la dirección de la siguiente instrucción que hay que ejecutar. Dicho
campo de bits se carga en el PC en las instrucciones de salto incondicional.
Los diversos formatos que admiten las instrucciones del repertorio se
clasifican en cinco grandes grupos. Dichos grupos son los siguientes:
• Operaciones orientadas a manejar registros de tamaño byte.
• Operaciones orientadas a manejar bits.
• Operaciones que manejan valores inmediatos.
72
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
TABLA 1
PRINCIPALES CARACTERÍSTICAS DE LAS 35 INSTRUCCIONES DEL
PIC 16F877
INSTRUCCIONES QUE MANEJAN REGISTROS
SINTAXIS OPERACIÓN CICLOS FORMATO 14 BIT SEÑALIZADORES
ADDWF f,d Suma W y f 1 00 0111 dfff ffff C,DC,Z ANDWF f,d AND W con f 1 00 0101 dfff ffff Z CLRF f Borra f (Pone todos los bits a 0) 1 00 0001 1fff ffff Z CLRW --- Borra W 1 00 0001 0xxx xxxx Z COMF f,d Complementa f (Invierte) 1 00 1001 dfff ffff Z DECF f,d Decrementa f 1 00 0011 dfff ffff Z INCF f,d Incrementa f 1 00 1010 dfff ffff Z IORWF f,d OR entre W y f 1 00 0100 dfff ffff Z MOVF f,d Mueve f 1 00 1000 dfff ffff Z MOVWF f Mueve W y f 1 00 0000 1fff ffff --- NOP --- No opera 1 00 0000 0xx0 0000 --- RLF f,d Rota f a la izq. a través del acarreo 1 00 1101 dfff ffff C RRF f,d Rota f a la dcha. a través del acarreo 1 00 1100 dfff ffff C SUBWF f,d Resta W a f 1 00 0010 dfff ffff C,DC,Z SWAPF f,d Intercambia nibbles 1 00 1110 dfff ffff --- XORWF f,d XOR de W con f 1 00 0110 dfff ffff Z
INSTRUCCIONES QUE MANEJAN BITS BCF f,b Borra bit de f 1 01 00bb bfff ffff --- BSF f,b Pone a 1 el bit f 1 01 01bb bfff ffff ---
INSTRUCCIONES DE “BRINCO” BTFSC f,d Explora un bit de f y brinca si es 0 1(2) 01 10bb bfff ffff --- BTFSS f,d Explora un bit de f y brinca si es 1 1(2) 01 11bb bfff ffff --- DECFSZ f,d Decrementa f y si es 0, brinca 1(2) 00 1011 dfff ffff --- INCFSZ f,d Incrementa f y si es 0, brinca 1(2) 00 1111 dfff ffff ---
INSTRUCCIONES QUE MANEJAN OPERANDOS INMEDIATOS ADDLW k Suma inmediata de literal con W 1 11 111x kkkk kkkk C,DC,Z ANDLW k AND inmediato de literal con W 1 11 1001 kkkk kkkk Z IORLW k OR inmediato de literal con W 1 11 1000 kkkk kkkk Z MOVLW k Mueve a W un valor inmediato 1 11 00xx kkkk kkkk --- SUBLW k Resta W de un literal inmediato 1 11 110x kkkk kkkk C,DC,Z XORLW k OR exclusiva con W 1 11 1010 kkkk kkkk Z
INSTRUCCIONES DE CONTROL Y ESPECIALES CALL k Llamada a subrutina 2 10 0kkk kkkk kkkk --- CLRWDT Borra o refresca al Perro Guardián 1 00 0000 0110 0100 TO#,PD# GOTO k Salto incondicional 2 10 1kkk kkkk kkkk --- RETFIE Retorno de interrupción (GIE=1) 2 00 0000 0000 1001 --- RETLW k Retorno subrutina y carga W=k 2 11 01xx kkkk kkkk --- RETURN Retorno de subrutina 2 00 0000 0000 1000 --- SLEEP Pasa al modo de reposo 1 00 0000 0110 0011 TO#,PD#
Fuente: Angulo (1999, p. 152)
• Operaciones incondicionales de control del flujo del programa.
73
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
• Operaciones de salto condicional.
Cada grupo se divide en varios campos y poseen su propia sintaxis,
por ejemplo, las operaciones orientadas a manejar registros de tamaño byte,
se divide en tres campos:
1. Campo del código OP de 6 bits.
2. Campo de la dirección del operando fuente (f) de 7 bits.
3. Campo que define el operando destino (d) de 1 bit.
Las instrucciones de este grupo tienen como sintaxis: mnemónico f,d.
Cuando d=1 el registro destino coincide con el fuente.
13 8 7 6 0 CÓDIGO OP d f(DIR. REGISTRO)
d=1 El registro destino es f
d=0 El registro destino es W
El bit d, que es el operando destino, se cumple para todas las
instrucciones que lo utilizan, es decir, cuando d=1 el destino es f, y si d=0 el
destino es W, para todas las instrucciones.
Las nomenclaturas y símbolos utilizados para la programación son los
empleados por MICROCHIP para su lenguaje ensamblador MPASM, que es
el que se utilizará para programar el microcontrolador PIC-16F877, dichos
símbolos se muestran en la siguiente tabla:
74
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
TABLA 2
NOMENCLATURA Y SÍMBOLOS UTILIZADOS POR EL LENGUAJE MPASM DE MICROCHIP
SÍMBOLO SIGNIFICADO
0xhh Es la forma que se usa para referenciar a los números hexadecimales de dos dígitos (hh).
F Representa la dirección en la memoria RAM de datos del registro fuente.
D Es un bit que conforma el campo del formato de una instrucción que indica el registro destino. Si d=0 es W, y si d=1 es f.
K Campo que contiene un valor inmediato, que puede ser un operando (8 bits) o una dirección para el PC (11 bits).
X Valor indeterminado de un bit. Puede ser 1 o 0. ( ) Contenido. < > Campo de un bit de un registro. Por ejemplo: ESTADO <5>. ∈ En el conjunto de Ejemplo: d ∈ [0,1]. [ ] Opciones.
Fuente: Angulo (1999, p. 144).
Para que cada una de las partes del sistema funcione con la mayor
efectividad posible es necesario establecer y codificar los pasos que debe
seguir el programa del Microcontrolador.
Al inicio del programa se definen las direcciones de los registros y las
variables que serán utilizadas a lo largo del programa, para ello se organizan
a partir de la dirección cero del mapa de memoria con la finalidad de
optimizar al máximo la organización del programa, esta definición le
establece un valor a la etiqueta relacionada a la misma, como se muestra en
el código de programación que se muestra a continuación.
75
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
;-------------------------------------------------------------------------------------------------------------------- ; DEFINICION DE REGISTROS DE CONFIGURACION ;-------------------------------------------------------------------------------------------------------------------- W EQU H'00' F EQU H'01' Z EQU H'02' STATUS EQU H'03' RP0 EQU H'05' TRISA EQU H'05' PORTA EQU H'05' TRISB EQU H'06' PORTB EQU H'06' TRISC EQU H'07' PORTC EQU H'07' TRISD EQU H'08' PORTD EQU H'08' TRISE EQU H'09' PORTE EQU H'09' OPTION_REG EQU H'01'
Al culminar la definición de los registros y las variables se establece
una rutina principal, en donde se realizan llamados a las diferentes rutinas
del sistema, se utiliza la programación por módulos para permitir que el
sistema se mas efectivo, y dicha programación lo hace más práctico al
momento de realizar las depuraciones del mismo, ya que permite visualizar
con mayor facilidad los errores que se puedan presentar, el código de este
lazo principal se expone a continuación.
LAZO ;RUTINA PRINCIPAL DEL SISTEMA CALL LEEADC1 ;LEE AL CANAL ANALOGICO0 CALL LEEADC2 ;LEE AL CANAL ANALOGICO1 CALL LEEADC3 ;LEE AL CANAL ANALOGICO2 CALL LEEADC4 ;LEE AL CANAL ANALOGICO3 CALL LEEADC5 ;LEE AL CANAL ANALOGICO4 GOTO COMPARAR ;REVISAR SI HAY FUENTE DE LUZ LAZO2 CALL SERVO ;RUTINA PWM DIRECCION CHORRO ESTABLE NOP GOTO LAZO ;SALTA A LAZO
76
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
El primer llamado que se realiza en la rutina principal es la lectura del
primer canal analógico, para establecer el código es necesario realizar un
diagrama de flujo donde se reflejen las variables y acciones a tomar del
sistema, en el figura 21 se observar el diagrama de flujo de la captura de
información del canal analógico 1 de los transductores de iluminación.
Figura 21. Diagrama de flujo del canal analógico número 1.
Fuente: García (2002).
La rutina se inicia configurando los registros del canal analógico que
se encuentra establecido por la subrutina llamada, el tipo de justificación de
los registros de almacenamiento de la información y las referencias de voltaje
77
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
necesarias para la conversión de la variable en cuestión. Una vez culminada
la configuración se inicializa el registro de inicio de conversión, seguidamente
se inicia un ciclo de comparación hasta que se haya culminado la conversión,
un vez culminada la conversión los datos que se obtienen son almacenados
en unos registros definidos para tal fin. Cada canal tiene establecido un
registro específico, dicha información se utilizará para la toma de decisiones.
Con esta estructura se realiza la codificación de la rutina. A continuación se
expone la codificación del primer canal analógico, la codificación de los
restantes canales es similar, la diferencia se observa en el nombre de los
registros de almacenamiento de información y la configuración de los
registros ADCON0 y ADCON1.
;------------------------------------------------------------------------------------------------------------------ ;RUTINA LEE EL CANAL ANALOGICO AN0 ;------------------------------------------------------------------------------------------------------------------ LEEADC1 ;------------------------------------------------------------------------------------------------------------------ ;PROGRAMACION DEL CONVERTIDOR A/D ;------------------------------------------------------------------------------------------------------------------ BSF STATUS,RP0 ;BANCO 01 DE RAM MOVLW B'00000010' MOVWF ADCON1 ;JUSTF=IZQ, VR=VDD-VSS, CANAL AN0 BCF STATUS,RP0 ;BANCO 00 DE RAM ;PROGRAMACION DE A/D PAG00 MOVLW B'11000001' MOVWF ADCON0 ;OSC=RC, CANAL=0, A/D=ON CALL RETARDO BSF ADCON0,GO ;INCIA CICLO DE CONVERSION WAIT1 BTFSC ADCON0,GO_DONE ;SALTA SI FINALIZO CONVERSION GOTO WAIT1 MOVF ADRESH,W MOVWF DATOADC1 ;GUARDA EL DATO DEL ADC EN EL ;REGISTRO BSF STATUS,RP0 RETURN
78
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
Este código se utiliza para la lectura de la información presente en el
puerto analógico (puerto A), al culminar la lectura de los cinco transductores
se realiza una comparación para establecer la presencia de luz en los
transductores. Para ello se estableció un algoritmo que se muestra en figura
22.
Figura 22. Diagrama de flujo para establecer presencia de luz.
Fuente: García (2002).
Esta subrutina se inicia comparando el resultado obtenido del segundo
canal analógico con una constante, para este caso cero, de cumplirse la
comparación y este valor es igual a cero salta a realizar la comparación con
79
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
el siguiente canal analógico con la misma constante cero, pero de no
cumplirse la comparación y el valor de la variable es mayor que cero se
realiza una comparación con el primer canal analógico, si el valor en ambos
registros es el mismo sale de la subrutina y salta al sector de la rutina
principal que mantiene la posición, de lo contrario se modifican los
parámetros de movimiento con la finalidad de localizar la fuente de energía,
este procedimiento se realiza con cada uno de los canales analógicos del
sistema, la rutina finaliza al realizar las comparaciones necesarias al quinto
canal analógico, de no existir algún valor diferente de cero en los registros de
almacenamiento de las variables regresa a la rutina principal. Seguidamente
se expone parte del código de comparación de esta subrutina.
;------------------------------------------------------------------------------------------------------------------ ; RUTINA ESTABLECER LOCALIZACION FUENTE DE LUZ ;------------------------------------------------------------------------------------------------------------------ COMPARAR MOVLW DATOADC2 XORWF B'00000000' BTFSC STATUS,Z GOTO ENERGIA MOVLW DATOADC3 XORWF B'00000000' BTFSC STATUS,Z GOTO ENERGIA MOVLW DATOADC4 XORWF B'00000000' BTFSC STATUS,Z GOTO ENERGIA MOVLW DATOADC5 XORWF B'00000000' BTFSC STATUS,Z GOTO ENERGIA GOTO LAZO2
Las subrutinas antes expuestas generan modificaciones en otras
subrutinas, una de ellas es la que genera la señal PWM capaz de controlar el
80
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
servomotor de direccionamiento de chorro de agua. En el diagrama no.6 se
puede observar la lógica desarrollada para el control de este dispositivo.
La función principal de esta subrutina es establecer el factor de
servicio de la señal, las subrutinas expuestas con anterioridad modifican el
registro donde se almacena la variable del factor de servicio de la señal, al
inicio de la subrutina el registro de factor de servicio de la señal se carga en
el registro W, se inicializa el registro de comparación (SERVOCMP) en cero y
se pasa a un estado alto el bit 0 del puerto C. Se incrementa el registro
SERVOCMP y se compara con W, si el registro es menor que W se
incrementa, esta operación se realiza hasta que SERVOCMP sea igual a W,
al ser igual a W el bit 0 del puerto C pasa a un estado bajo, sigue
incrementándose SERVOCMP y se compara con 256 decimal, al alcanzar
este valor la subrutina realiza una instrucción para retornar a la rutina
principal, el código de esta subrutina se expone a continuación.
;-------------------------------------------------------------------------------------------------------------------- ; RUTINA DE PWM PARA CONTROL DE DIRECCION DE LA TURBINA ;-------------------------------------------------------------------------------------------------------------------- SERVO MOVLW B'00000000' MOVWF SERVOCMP BSF PORTC,0 SER MOVLW SERVO1 INC SERVOCMP XORWF SERVOCMP BTFSC STATUS,Z GOTO SER BCF PORTC,0 SER2 INC SERVOCMP MOVLW B'11111111' XORWF SERVOCMP BTFSC STATUS,Z GOTO SER2 RETURN
81
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
En el anexo A se puede observar la estructura del programa
almacenado en el microcontrolador PIC 16F877.
Fase 6. Implementación del hardware.
Para el desarrollo del sistema se utilizó el microcontrolador PIC
16F877 de la marca Microchip, el mismo cuenta con una serie de
características que lo hacen versátil y muy útil. Una de las principales
características de este microcontrolador es el tipo de memoria de programa
que posee, la cual es de tipo Flash de 8k, palabras de 14 bits cada una, la
cual posee mayor velocidad y menor consumo que las de tipo EEPROM,
además posee 256 bytes de EEPROM como memoria de datos auxiliar y
opcional; la utilización de la memoria Flash, permite escribir y borrar el
programa eléctricamente, evitando de esta manera la necesidad de tener que
borrarlas por medio de rayos ultravioleta, para la cual abría que adquirir dicho
equipo, y el tiempo necesario para volver a grabar el programa sería mayor,
por lo que Angulo (1999, p. 50), señala que “Microchip ha introducido la
memoria Flash porque tiene mejores posibilidades de aumentar su capacidad
con relación a la EEPROM. También por su mayor velocidad y menor
consumo. No obstante, la EEPROM es capaz de soportar 1.000.000 de
ciclos de escritura/borrado, frente a los 1.000 de la Flash”, esto quiere decir
que la memoria Flash tiene la ventaja de ser más rápida y consumir menos
82
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
potencia que la EEPROM, pero que la misma soporta menos ciclos de
escritura/borrado que la EEPROM.
El microcontrolador PIC-16F877 posee una serie de características
que se muestran a continuación:
La pila es una zona aislada de la memoria de instrucciones y datos,
consta de 8 niveles de profundidad de 13 bits cada uno, y su estructura es
de tipo LIFO, el primer dato que entra es el último en salir. Angulo (1999, p.
78), señala que los PIC no disponen de instrucciones específicas (push y
pop) para manejar directamente la pila. Tampoco se dispone de ningún
señalizador que indique cuándo se produce el rebosamiento de los 8 niveles
de la pila, es decir, que no existe ninguna instrucción para manejar
directamente la pila y que el programador debe tener sumo cuidado en no
rebosar la pila a la hora de desarrollar un programa.
El área de la RAM estática, es donde reside el Banco de Registros
específicos (FSR), el cual posee 96 posiciones de 1 byte de tamaño, de los
cuales 19 no son operativas y el Banco de Propósito general (GPR), el cual
tiene 368 posiciones de 1 byte cada una; adicionalmente cada Banco está
divido en cuatro, Banco 0, Banco 1, Banco 2 y Banco 3, de 128 bytes cada
uno.
Como se mencionó anteriormente la zona de memoria RAM se halla
dividida en cuatro bancos (banco 0, 1, 2 y 3) de 128 bytes cada uno (ver
figura 23), en los bancos 0 y 1 las primeras 32 posiciones están reservadas a
los Registros de Propósito Específico (FSR), de igual manera en los bancos
83
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
2 y 3 son las primeras 16 posiciones, los cuales define Angulo (1999, p. 79)
como los “encargados del control del procesador y sus recursos”, dicho de
otra manera, son los registros que permiten controlar la configuración de los
puertos, las interrupciones, las temporizaciones, entre otras, algunos de
dichos registros se hallan repetidos en la misma dirección de los cuatro
bancos, con el fin de simplificar su acceso al programador. Las posiciones
8FH, 90H, 95 – 97H, 9A - 9DH, 105H, 107 – 109H, 185H, 187 – 189H y 18E
– 18FH no son operativas, los 96 registros restantes del banco 0, 80 del
banco 1, 96 del banco 2 y 96 del banco 3, se destinan a Registros de
Propósito general, los cuales se utilizan para almacenar valores temporales,
entre otros. Para seleccionar el banco que se desea acceder hay que
configurar los bits 5 y 6 (RP0 y RP1 respectivamente) del registro ESTADO,
si RP0 = RP1 = 0 se accede al banco 0, si RP0 = 1 RP1 = 0 se accede al
banco 1, RP0 = 0 RP1 = 1 se accede al banco 2 y por último, si RP0 = RP1 =
1 se accede al banco 3.
La memoria EEPROM se implementó en este PIC para tener la
posibilidad de almacenar datos sin que se pierdan en el momento de
desconectar la alimentación, ya que los datos almacenados en la memoria
RAM se pierden al desconectar la misma, esta memoria posee 256
posiciones de 1 byte de tamaño cada una. La memoria EEPROM no está
mapeada en la zona de la memoria de datos donde se ubican los registros
FSR y GPR. Para poder leerla y escribirla durante el funcionamiento normal
del microcontrolador hay que utilizar 4 registros del banco FSR: EEDATA,
84
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
EEADR, EECON1 y EECON2. Dichos registros son los encargados del
control de escritura y lectura de la EEPROM de datos.
El proceso de escritura en la EEPROM es el siguiente: Para escribir
una posición de la EEPROM de datos se debe seguir una secuencia de
instrucciones en las que participa el registro EECON2. Este registro que en
realidad no se halla implementado físicamente, sólo asume funciones de
seguridad en el proceso, cargándose en él dos valores concretos: 55H y
AAH. La duración típica de un ciclo de escritura es de 10 ms. El ciclo de
escritura comienza cargando en EEADR la dirección de la posición a escribir
y en el registro EEDATA el valor a grabar. Al finalizar el proceso de escritura
el bit WR pasa a valer 0 automáticamente, mientras que el señalizador EEIF
se establece en 1. Este último bit hay que colocarlo a 0 posteriormente
mediante software.
El proceso de un ciclo de lectura se inicia colocando la dirección a
acceder en el registro EEADR y poniendo el bit RD = 1 en el registro
EECON1. El dato leído estará disponible en el registro EEDATA en el
siguiente ciclo y permanecerá en él hasta que se realice una nueva lectura o
escritura en la EEPROM.
La arquitectura de este PIC admite un mapa de memoria de programa
capaz de contener 8.192 instrucciones de 14 bits cada una. Dicho mapa se
divide en páginas de 2.048 posiciones. Para direccionar 8 K posiciones se
necesitan 13 bits, lo cual es la longitud que posee el Contador de Programa.
85
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
Figura 23. Representa el mapa de memoria de datos RAM del PIC-16F877.
Fuente: Microchip (1998, p. 13)
86
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
En la figura 24 se muestra como esta constituida la memoria de
programa y la pila en el PIC 16F877.
Figura 24. Mapa de memoria del PIC 16F877. Fuente: Microchip (1998, p.11)
La figura 24 representa el mapa de la memoria de programa que va
desde la dirección 0000H a la 1FFFH, el vector de reset se encuentra en la
dirección 0000H y el vector de interrupción en la 0004H, adicionalmente se
muestra el contador de programa y la pila.
El PIC-16F877 posee una arquitectura moderna, la cual ha permitido
lograr una compactación de códigos óptima y una velocidad superior a la de
otros microcontroladores, dicho PIC posee tres características importantes
en su procesador: a) Procesador tipo RISC, b) Procesador Segmentado y
c) Arquitectura HARVARD.
La ventaja de un procesador tipo RISC es que permite programar
bajo un repertorio de instrucciones máquina simples y reducidos, lo que a su
87
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
vez permite ejecutar cada instrucción en un ciclo de instrucción excepto las
de salto que requieren dos ciclos de instrucción.
La estructura segmentada hace posible realizar simultáneamente las
dos fases en que se descompone cada instrucción, lo que quiere decir que,
al mismo tiempo que se está desarrollando la fase de ejecución de una
instrucción se realiza la fase de búsqueda de la siguiente, de esta manera se
consigue alcanzar una velocidad superior de ejecución de las instrucciones.
La arquitectura HARVARD, la define Angulo (1999, p.73) como “uno
de los pilares en los que se sustenta la organización de los PIC. Gracias a
ella se puede acceder de forma simultánea e independiente a la memoria de
datos y a la memoria de instrucciones”, lo que significa que, el PIC-16F877
posee un bus de datos y un bus de instrucciones separados uno del otro, por
lo que el procesador puede acceder al mismo tiempo e independientemente
a cada uno de ellos, y por consiguiente, a cada una de las memorias, a
diferencia de la arquitectura Von Neumann de los microprocesadores, la cual
se conecta con una memoria única, donde coexisten datos e instrucciones, a
través de un sistema de buses.
El aislamiento y diferenciación de los dos tipos de memoria permite
que cada uno tenga la longitud y el tamaño más adecuados. De esta forma
en el PIC-16F877 la longitud de los datos es de un byte, mientras que la de
las instrucciones es de 14 bits. En la figura 25 se muestra la arquitectura
interna del PIC-16F877.
El funcionamiento del procesador mostrado en la figura 25 se lleva a
88
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
cabo de la siguiente manera. Todo comienza con la fase de búsqueda, la
cual la inicia el contador de programa facilitando la dirección de la memoria
donde su ubica la instrucción. Su código binario de 14 bits se lee y se carga
en el Registro de Instrucciones, desde donde se transfiere al Decodificador y
a la Unidad de Control. Es posible que dentro del código de la instrucción,
exista el valor de un operando (literal) el cual se introduce a la ALU, la cual
es la encargada de realizar las operaciones lógico-aritméticas que implica la
instrucción decodificada, uno de los operandos lo recibe desde el registro W
y el otro desde un registro o de la propia instrucción.
El registro W es un registro de trabajo de 8 bits utilizado para las
operaciones de la ALU, no es un registro direccionable. También puede
existir dentro del código de la instrucción una dirección de la memoria de
datos donde reside otro operando.
Este tipo de microcontrolador es fabricado con tecnología CMOS y son
presentados en el mercado en un encapsulado plástico dual de 40 pines, el
diseño de este PIC se puede observar en la figura 26, cada pin cuenta con
una función en particular, la cual se definen a continuación:
VDD: Pin por la que se aplica el voltaje positivo de la alimentación.
VSS: Pin conectado a tierra o negativo de la alimentación.
OSC1/CLKIN: Pin por el que se aplica la entrada del circuito
oscilador externo que proporciona la frecuencia de trabajo del
microcontrolador.
OSC2/CLKOUT: Pin auxiliar del circuito oscilador.
89
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
Figura 25. Arquitectura interna del PIC 16F877. Fuente: Angulo (2000, p. 24)
MCLR#/VPP/THV: Este pin se activa con nivel lógico bajo, lo que se
representa con el símbolo #. Su activación origina la reinicialización o Reset
del PIC. También sirve de entrada de voltaje de programación y el voltaje alto
en el modo TEST.
Cada uno de los pines del puerto A cuentan con una función especial,
por ello se describen a continuación:
RA0/AN0: Éste pin puede actuar como línea digital de E/S o como
entrada analógica al convertidor A/D (Canal 0).
90
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
Figura 26. Diagrama de pines del microcontrolador PIC-16F877. Fuente:
Microchip (1998, p. 1)
RA1/AN1: Cumple la misma función que el pin anterior.
RA2/AN2/VREF-: Línea digital de E/S, entrada analógica (Canal 2) o
entrada del voltaje negativo de referencia.
RA3/AN3/VREF+: Línea digital de E/S, entrada analógica (Canal 3) o
entrada del voltaje positivo de referencia.
RA4/TOCKI: Línea digital de E/S o entrada del reloj del timer 0. Salida
con colector abierto.
RA5/SS#/AN4: Línea digital de E/S, entrada analógica o selección
como esclavo del puerto serial síncrono.
Así mismo cada uno de los pines del puerto B poseen una función
individual, por lo que se definen seguidamente.
RB0/INT: Línea digital de E/S o entrada de petición de interrupción
91
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
externa.
RB1 – RB2: Líneas digitales de E/S.RB3/PGM: Línea digital de E/S o
entrada de voltaje bajo para programación.
RB4 – RB5: Líneas digitales de E/S.
RB6/PGC: Línea digital de E/S. En la programación en serie recibe las
señales de reloj.
RB7/PGD: Línea digital de E/S. En la programación en serie actúa
como entrada de datos.
De igual manera los pines del puerto C tienen funciones múltiples,
como se definen a continuación:
RC0/T1OSO/T1CKI: Línea digital de E/S o salida del oscilador del
timer 1 o como entrada del reloj del timer 1.
RC1/T1OSI/CCP2: Línea digital de E/S o entrada al oscilador del timer
1 o entrada al módulo captura2/salida comparación2/salida de PWM2.
RC2/CCP1: Línea digital de E/S. También puede actuar como entrada
captura1/salida comparación1/salida de PWM1.
RC3/SCK/SCL: Línea digital de E/S o entrada del reloj serial
síncrono/salida de los modos SPI e I2C.
RC4/SDI/SDA: Línea digital de E/S o entrada de datos en modo SPI o
I/O datos en modo I2C.
RC5/SDO: Línea digital de E/S o salida de datos en modo SPI.
RC6/TX/CK: Línea digital de E/S o pin del transmisor del USART
asíncrono o como reloj del síncrono.
92
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
RC7/RX/DT: Línea digital de E/S o receptor del USART asíncrono o
como datos en el síncrono.
Al igual que los pines de los puertos que se describieron con
anterioridad todos los pines del puerto D (RD0/PSP0 – RD7/PSP7) pueden
actuar como líneas digitales de E/S o como líneas para la transferencia de
información en la comunicación del puerto paralelo esclavo.
Por último se encuentra el puerto E, los pines del mismo poseen
funciones específicas que se explican a continuación.
RE0/RD#/AN5: Línea digital de E/S o señal de lectura para el puerto
paralelo esclavo o entrada analógica (Canal 5).
RE1/WR#/AN6: Línea digital de E/S o señal de escritura en el
puerto paralelo esclavo o entrada analógica (Canal 6).
RE2/CS#/AN7: Línea digital de E/S o activación/desactivación del
puerto paralelo esclavo o entrada analógica (Canal 7).
La frecuencia de trabajo del microcontrolador es un parámetro
fundamental a la hora de establecer la velocidad en la ejecución de
instrucciones y el consumo de energía. Si la frecuencia de trabajo del PIC-
16F877 es de 4Mhz por ejemplo, el tiempo que se tarda en ejecutar cada
instrucción es de 1µs, ya que cada instrucción tarda en ejecutarse cuatro
períodos de rejo, es decir, 4 x 250ns = 1000ns (t=1/f). Todas las
instrucciones del PIC se realizan en un ciclo de instrucción, menos las de
salto, que tardan el doble.
93
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
Los impulsos de reloj entran al PIC por medio del pin OSC1/CLKIN,
cada impulso se divide en 4 internamente, dando lugar a las señales Q1, Q2,
Q3 y Q4, las cuales se muestran en la figura 27. Durante un ciclo de
instrucción, se desarrollan las siguientes operaciones:
Q1: Durante este impulso se incrementa el Contador de Programa.
Q4: Durante este impulso se busca el código de la instrucción en la
memoria del programa y se carga en el Registro de Instrucciones.
Q2 – Q3: Durante la activación de estas dos señales se produce la
decodificación y la ejecución de la instrucción.
Para conseguir ejecutar cada instrucción en un ciclo de instrucción
(excepto las de salto, que tardan dos), se aplica la técnica de la
segmentación o “pipe-line”, que consiste en realizar en paralelo las dos fases
que comprenden cada instrucción, las cuales son, la fase de ejecución de
una instrucción y la búsqueda de la siguiente, esto quiere decir que el
procesador permite realizar al mismo tiempo las dos fases.
Para generar los impulsos de reloj se pueden emplear 4 tipos
diferentes de osciladores, los cuales proporcionan la frecuencia de
funcionamiento. Dichos osciladores son los siguientes:
Oscilador RC: está formado por una resistencia y un capacitor, los
valores de estos dos componentes son los que determinan la frecuencia.
Oscilador HS: Se basa en un cristal de cuarzo o un resonador
cerámico, alcanza una alta velocidad comprendida entre 4 y 10 MHz.
Oscilador XT: Es el más común de todos, es un cristal o resonador
94
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
para frecuencias entre 100 KHz y 4 MHz.
Oscilador LP: Es un oscilador de bajo consumo con cristal o resonador
diseñado para trabajar en un rango de frecuencias entre 35 y 200 KHz.
Figura 27. Señales formadas por cada impulso de reloj. Fuente: Angulo
(1999, p. 54).
Temporizadores: Son tres, el TMR0, TMR1 y TMR2. También tiene
Perro Guardián (WDT). El TMR0 es un temporizador/ contador, el cual tiene
la función de determinar intervalos concretos de tiempo, y de contar los
impulsos que se producen en el exterior del sistema. El temporizador/
contador del PIC-16F877 es de 8 bits, y actúa de dos formas diferentes:
a) Como contador de sucesos, que están representados por los
impulsos que se aplican al pin RA4/TOCKI. Al llegar al valor FFH se
desborda el contador y, con el siguiente impulso, pasa a 00 H, cuando esto
ocurre se activa un señalizador y/o se produce una interrupción.
b) Como temporizador, cuando se carga en el registro que
implementa al recurso un valor inicial se incrementa con cada ciclo de
95
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
instrucción (Fosc/4) hasta que se desborda, lo que significa que pasa de FFH
a 00H y avisa colocando a 1 un bit señalizador y/o provocando una
interrupción.
Para seleccionar si el TMR0 va a funcionar como temporizador o como
contador, hay que manipular el bit TOCS que se encuentra en el registro
OPTION_REG, de esta forma, colocando a 1 dicho bit se configura como
contador y en el caso contrario con TOCS = 0 se configura como
temporizador. También es posible que cuando funcione como contador, se
pueda configurar el flanco, bien sea ascendente o descendente, esto se logra
manipulando el bit TOSE del registro OPTION_REG.
El Perro Guardián (WDT) es un contador interno de 8 bits que origina
un Reset cuando se desborda. Su función es la de vigilar que el programa no
se “cuelgue”, y para ello cada cierto tiempo comprueba si el programa se
está ejecutando normalmente. Su control de tiempos es independiente del
TMR0 y está basado en una simple red R-C. Para evitar que el WDT se
desborde es necesario refrescarlo, es decir, cada cierto tiempo, antes de que
culmine su temporización, se introduce en el programa la instrucción clrwdt,
la cual se encarga de reiniciar al Perro Guardián. Angulo (1999, p. 98) afirma
que “La temporización nominal con la que se halla programado el Perro
Guardián es de 18 ms, pero utilizando el Divisor de frecuencia puede
aumentarse hasta alcanzar los 2,3 segundos”, lo que quiere decir, que
inicialmente el perro guardián está programado para reinicializar al PIC cada
18 ms, pero que existe tanto para el Perro Guardián como para el TMR0 un
96
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
Divisor de frecuencia que permite alargar la temporización, que en el caso
del TMR0 es el tiempo que transcurre en ir de 00 H a FF H. En la figura 28 se
muestra la sección dedicada al preescalador del TMR0 y el WDT en la
arquitectura del PIC-16F877.
El TMR1 es un registro que posee el microcontrolador que puede ser
utilizado como contador, o como temporizador, su funcionamiento es igual al
del TMR0.
El TMR2 es un registro que se incrementa en cada ciclo de reloj del
microcontrolador, este registro se puede utilizar como contador, comparador
entre otras funciones, la función que obtiene mas relevancia dentro de la
investigación es el uso de este registro para la generación de las señales de
PWM para el control de los servomotores.
• Convertidor A/D.
Un convertidor analógico/digital de acuerdo a Boylestad (1997, p. 748) “es un
dispositivo que obtiene un valor digital que representa un voltaje analógico de
entrada” lo que significa , que cuando se le aplica un voltaje analógico a la
entrada del convertidor se genera un valor digital que representa dicho
voltaje analógico. Los PIC 16F877 poseen un convertidor A/D de 10 bits de
resolución y 8 canales de entrada.
97
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
Figura 28. Representa al preescalador del TMR0 y el WDT. Fuente: Microchip (1998, p. 49).
Según Angulo (2000, p. 129) “la resolución que tiene cada bit
procedente de la conversión tiene un valor que es función de la tensión de
referencia Vref, de acuerdo con la formula siguiente: Resolución (Vref+ -
Vref-) / 1024 = Vref / 1024”, dicho de otra manera, la resolución de la
conversión estará determinada por los valores de Vref aplicados al PIC, por
ejemplo, si el voltaje Vref + = 5VDC y el Vref- es tierra, la resolución de
acuerdo a la formula anterior es de 4,8mV/bit.
Para lograr el funcionamiento del convertidor A/D se requiere la
manipulación de cuatro registros: ADRESH, ADRESL, ADCON0 y ADCON1.
98
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
En los registros ADRESH : ADRESL se deposita el resultado de la
conversión que esta compuesta por 10 bits, dicha pareja de registros forma
una palabra de 16 bits de los cuales sólo son significativos 10 bits. El bit de
menos peso (ADFM) del registro ADCON1 selecciona el formato del
resultado de la conversión. Si vale 1, el resultado está justificado en el
registro ADRESH, que tiene sus 6 bits de más peso a cero; mientras que si
vale 0 la justificación se realiza sobre el registro ADRESL, que tiene sus 6
bits de menos peso a 0. Esto significa que los 16 bits que forman la
concatenación de ADRESH : ADRESL unas veces tiene a 0 los bits de más
peso y otras los seis bits de menos peso (alineación a la izquierda o a la
derecha) como se muestra en la figura 29.
Figura 29. Alineación del resultado digital de 10 bits de la conversión a la
izquierda y a la derecha. Fuente: Angulo (2000, p. 133).
El registro ADCON0 (véase figura 30) sirve para seleccionar la
frecuencia de reloj que se emplea en la conversión como se muestra en la
99
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
tabla 3. El bit GO/DONE es el «bit de estado de la conversión». Colocando
en 1 este bit se inicia la conversión y mientras permanezca en 1 se realizará
dicha operación. Cuando este bit pasa a 0 se confirma la finalización de la
conversión. El bit ADON sirve para activar el convertidor A/D poniéndolo a 1
y para inhibir su funcionamiento poniéndolo a 0. Por último los bits CHS2–0
selecciona el canal por donde se introduce la señal analógica a convertir de
acuerdo con el código que aparece en la tabla 4. El registro ADCON1 (véase
figura 31), además de seleccionar el formato del resultado de la
conversión, los restantes 4 bits (PCFG3–0) se utilizan para configurar los
pines de los canales de entrada al convertidor como analógicas o como E/S
digitales de acuerdo con la tabla 5.
TABLA 3
100
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
ADFM –––– –––– –––– PCFG3 PCFG2 PCFG1 PCFG0
7 0
Figura 31. Asignación de los bits del registro ADCON1. Fuente: Angulo (2000, p. 130).
TABLA 4 BITS DE SELECCIÓN DE LOS CANALES DE ENTRADA ANALÓGICA
CHS2 – 0 CANAL
000 Canal 0 (RA0/AN0) 001 Canal 1 (RA1/AN1) 010 Canal 2 (RA2/AN2) 011 Canal 3 (RA3/AN3) 100 Canal 4 (RA5/AN4) 101 Canal 5 (RE0/AN5) 110 Canal 6 (RE1/AN6) 111 Canal 7 (RE2/AN7)
Fuente: Angulo (2000, p. 131)
TABLA 5
DETERMINACIÓN DE LOS PINES DEL PIC QUE ACTÚAN COMO ENTRADA ANALÓGICA O COMO E/S DIGITALES
PCFG 3–0
AN7/RE2
AN6/RE1
AN5/RE0
AN4/RA5
AN3/RA3
AN2/RA2
AN1/RA1
AN0/RA0
VREF+ VREF
– CHAN/REFS
0000 A A A A A A A A VDD VSS 8/0 0001 A A A A VREF
+ A A A RA3 VSS 7/1 0010 D D D A A A A A VDD VSS 5/0 0011 D D D A VREF
+ A A A RA3 VSS 4/1 0100 D D D D A D A A VDD VSS 3/0 0101 D D D D VREF
+ D A A RA3 VSS 2/1 011x D D D D D D D D VDD VSS 0/0 1000 A A A A VREF
+ VREF– A A RA3 RA2 6/2
1001 D D A A A A A A VDD VSS 6/0 1010 D D A A VREF
+ A A A RA3 VSS 5/1 1011 D D A A VREF
+ VREF– A A RA3 RA2 4/2
1100 D D D A VREF+ VREF
– A A RA3 RA2 3/2 1101 D D D D VREF
+ VREF– A A RA3 RA2 2/2
1110 D D D D D D D A VDD VSS 1/0 1111 D D D D VREF
+ VREF– D A RA3 RA2 1/2
Fuente: Angulo (2000, p. 133).
101
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
Por su versatilidad y gran cantidad de puertos es utilizó como unidad
maestra de control el microcontrolador 16F877, en la figura 16 se observan
las interconexiones de los diferentes dispositivos con el microcontrolador, las
conexiones de estos elementos no se realizaron al azar, el motivo de su
conexión se atribuye a la función que desempeñaran en el sistema y a las
características del microcontrolador. Una de las ventajas que presenta este
microcontrolador es que posee 8 canales analógicos / digitales de 10 bits, de
los cuales se utilizaron 5 canales, los transductores de energía luminosa se
conectaron en los bits 0, 1, 2, 3, y 5 del puerto A, estos transductores
permiten conocer la cantidad de energía luminosa que se encuentra en el
medio, lo que le permite al sistema encontrar una fuente de energía luminosa
en el medio en el cual se desenvuelve.
Por otra parte el microcontrolador posee también un sistema de
generación de señales PWM, que es útil al momento de controlar dispositivos
de posicionamiento, la salida de este sistema se encuentra en el puerto C del
microcontrolador, en los bits 1 y 2 del mismo. En dichos bits se
interconectaron los sistemas de control de los servomotores que controlan la
posición de las aletas laterales del sistema.
De igual manera para mantener una mejor distribución y
aprovechamiento de los dispositivos de entrada y salida del microcontrolador
se conectó al bit 0 el control del servomotor que permite el direccionamiento
del chorro de agua, el control de la señal PWM de este actuador se generó
mediante la implementación de un código que simula el sistema PWM que
102
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
posee el microcontrolador; en el bit 3 del mismo puerto se conectó el control
de encendido / apagado de la turbina la cual es controlada por el programa
del sistema, debido a que el microcontrolador no puede generar la corriente
necesaria para activar la turbina se diseño un circuito de encendido que es
controlador por el microcontrolador, el mismo se compone por un transistor
NPN conectado en configuración de colector común, con una
retroalimentación de emisor a base, de esta manera se le suministra la
corriente suficiente a la turbina para su funcionamiento.
El sistema cuenta a su vez con una serie de sensores que le permiten
conocer si ha hecho contacto con algún objeto dentro del medio donde se
desenvuelve, estos sensores se interconectaron en los bits 4 - 7 del puerto D
del microcontrolador, de la misma manera se conecto un sensor de fondo en
el bit 7 del puerto B, aunado a este cúmulo de sensores se agregó un
selector para su activación o desactivación, esto para prevenir posibles fallas
en los sensores de contacto, el selector se conectó en el bit 6 del puerto B.
En el diseño se presenta también un conjunto de sensores de
inclinación, los cuales son sensores de contacto, su diseño de se basa en el
uso de un elemento conductor de forma esférica que se encuentra dentro de
un encapsulado rectangular, dentro del encapsulado se encuentra 5
contactos dispuestos de la siguiente manera, uno en la parte superior, uno
en cada pared lateral y dos en la parte inferior, el conductor esférico se
mueve libremente dentro del encapsulado, de esta manera dependiendo de
la posición del rectángulo el conductor genera un corto circuito entre los
103
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
contactores, tomando en cuenta este criterio se conectaron tres de estos
dispositivos de inclinación al microcontrolador en los bits 5, 6, y 7 del puerto
C, la posición establecidas para los sensores son 60°, 90° y 120°
respectivamente.
Tomando en cuento las especificaciones descritas con anterioridad se
procede al diseño del circuito impreso en el que se ensambla los
componentes propuestos para el sistema de control, en la figura 32 se
muestra el plano del circuito impreso, cada línea del plano representa una
conexión entre un dispositivo y otro.
Figura 32. Plano del circuito del sistema de control del robot.
Fuente: García (2002)
Una vez culminado el plano del circuito impreso se procedió a
imprimirlo en una hoja de papel de transferencia térmica, este papel permite
trasladar el diseño a una lámina de vaquelita y cobre previamente limpiada
104
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
para este fin, con el uso de una plancha caliente se le adiciona al cobre el
plano del circuito impreso. Una vez fría la placa se le retira el papel y se
sumerge en cloruro férrico hasta que se disuelva todo el cobre que no se
encuentra cubierto por el diseño, posteriormente se le realizan las
perforaciones necesarias para lograr montar los componentes en la misma
como se puede observar en la figura 33.
Figura 33. Placa del sistema de control del robot. Fuente: García (2002)
El sistema no solamente se basa en el circuito de control, el diseño
externo del robot se encuentra enfocado en la estructura física de un
calamar, en la figura 1 (ver capítulo II) se muestra la estructura de un
calamar. Para poder realizar un molde en positivo de la estructura externa
del robot se procedió a moldear un cuerpo de plastilina y arcilla, en el cual se
resaltaron los detalles del mismo, y un buen diseño hidrodinámico.
105
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
Durante el desarrollo del cuerpo se le agregaron una aleta frontal y
una posterior para permitirle una mayor estabilidad para el libre movimiento
del robot dentro del entorno. En la figura 34 se puede visualizar una
fotografía del cuerpo del robot moldeado en plastilina.
Figura 34. Molde positivo del robot.
Fuente: García (2002).
Culminado el molde de plastilina, se procedió a realizarse el molde en
negativo, para ello se utilizó una mezcla de yeso y agua, el mismo se efectuó
en un recipiente con las dimensione necesarias para introducir el molde de
plastilina, el vaciado del molde se realizó en dos etapas para hacer más fácil
el desmolde del mismo. En la primera etapa se vertió en el recipiente la
mezcla de yeso y se sumergió la figura de plastilina con la parte frontal boca
106
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
abajo, tratando de que la mitad posterior quedara al descubierto, se esperó
hasta que secara lo suficiente para sacarlo del recipiente.
Seguidamente se le aplicó una capa de jabón al molde compuesto por
la figura de plastilina y el yeso, con la finalidad de generar una capa que
permita la separación entre las capas, culminada esta acción se procedió a
realizar la segunda etapa del vaciado, que consistió en verter dentro del
envase que contiene el molde realizado en la primera etapa una mezcla de
yeso, hasta cubrir uniformemente la figura de plastilina.
Una vez seco se sacó el molde del envase para el secado del mismo,
debido a que es una pieza muy grande el tiempo de secado se torna grande
por lo que se esperó hasta que el mismo se secara completamente.
Seco ya el molde se separan las dos capas de yeso con la ayuda de
herramientas puntiagudas (espátulas, cuchillos, entre otros), y se retiran del
molde negativo todos los rastros de plastilina obteniendo de esta manera el
molde donde se realizará la piel impermeable del robot, en el anexo B se
puede observar una secuencia de fotografías del proceso antes descrito; al
molde negativo del robot se le agregaron capas de látex de manera uniforme,
permitiendo el secado entre capas. Para obtener el espesor deseado en la
piel se aplicaron cinco capas de látex, una vez seco el látex se procedió a
retirar la membrana del molde, obteniendo como resultado la figura
establecida en el negativo del molde.
La estructura interna del robot se materializó con un conjunto de
láminas de acrílico y alambre, desarrollando con ellas la forma del esqueleto
107
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
interno y los soportes de los elementos electrónicos y electromecánicos; ya
que la membrana de látex es muy flexible se colocó una malla moldeable
entre la estructura y el látex con la finalidad de impedir la deformidad de la
piel al tener contacto con el medio en el cual se desenvuelve; en el anexo C
se puede observar imágenes de la membrana de látex desarrollada para el
robot.
Finalmente se desarrollaron los moldes de las piezas estéticas del
robot (tentáculos) como también el conjunto de sensores y actuadores
necesarios para el completo funcionamiento del robot.
Fase 7. Depuración del software.
Una vez culminado el código del programa, se procedió a probar y
depurar las rutinas del sistemas, se observó una incoherencia en la
modulación PWM del servomotor de direccionamiento del chorro, esto se
debió a problemas con las estructuras de retardo para la escala de tiempo;
esto se pudo solucionar agregando un algoritmo de retardo para disminuir la
frecuencia de trabajo, otro inconveniente se presentó en la lectura de los
sensores de inclinación, esto se produjo debido a que dichos sensores se
activaban y el microcontrolador los descifraba como múltiples activaciones, la
solución se obtuvo cambiando el algoritmo de lectura, de manera que una
vez activado no se volvía a chequear hasta un cambio en los estados.
108
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
Fase 8. Integración del hardware y software.
Al culminar la depuración del software, se ensambló el robot completo;
se grabó el código del programa en el microcontrolador, se interconectaron
todos los dispositivos a los circuitos impresos, se aseguraron los mismos al
esqueleto del robot y se introdujeron dentro de la piel de látex desarrollada
para proteger el sistema del agua.
Al completarse todo el ensamblaje se introdujo el robot en la pecera
diseñada para sus pruebas y se observó el funcionamiento del sistema
planteado en esta investigación.
Fase 9. Construcción del prototipo definitivo y pruebas finales.
El sistema aprobó satisfactoriamente las pruebas que se le realizaron,
confirmando el funcionamiento de todas las rutinas; en referencia al prototipo
definitivo se puede acotar que basados en el criterio de la evolución, el
sistema no cuenta con un prototipo final, esto debido a que el mismo puede
seguir evolucionando, y perfeccionándose su comportamiento e interacción
con el medio en el cual se desenvuelve.
109
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
DISCUSION DE LOS RESULTADOS.
De acuerdo a los resultados arrojados por la presente investigación se
puede comprobar las teorías expuestas en el capítulo II de la misma.
FU, GONZALEZ y LEE (1990, p. 1) expone que “un robot debe poseer
inteligencia que se debe normalmente a los algoritmos de computador
asociados con su sistema de control y sensorial”, dicha teoría concuerda con
lo obtenido durante el desarrollo de la investigación ya que el robot diseñado
presenta un nivel de inteligencia suficiente que le permite tomar acciones
sobre su comportamiento dependiendo de las variables que encuentre dentro
del entorno en el que se desenvuelve, así mismo estos autores (1990, p.
306) indican que “la capacidad de visión dota al robot con un sofisticado
mecanismo de percepción que permite a la máquina responder a su entorno
de una forma inteligente y flexible”, capacidad que se observa en el diseño
robótico expuesto en esta investigación ya que el mismo está en la facultad
de localizar una fuente de energía luminosa dentro del entorno de
desenvolvimiento.
Por otra parte GROOVER, WEISS y otros (1994, p. 582) hacen
referencia al desarrollo de sistemas robóticos con la capacidad de realizar
tareas dentro del entorno acuático, dichos robots estarán adecuadamente
protegidos contra la corrosión, podrán operar durante períodos amplios de
tiempo y “serían en gran medida autocontenidos, equipados con un
suministro de potencia a bordo, sensores, computadores”, estas
110
CAPITULO IV. RESULTADOS DE LA INVESTIGACION
características se lograron obtener en el diseño expuesto en la investigación
por lo que el mismo cuenta con la autonomía necesaria para simular el
comportamiento del calamar en un tiempo relativamente largo, además de
poseer sensores que le permiten a un microcomputador (microcontrolador)
establecer las variables presentes en el entorno. Con todo lo antes expuesto
se puede afirmar el diseño concuerda con las teorías expuesta por dichos
autores.
Por otra parte, la enciclopedia ARGOS DEL MUNDO ANIMAL (1972,
p. 401) indica que “el movimiento del calmar se genera por la acción de un
chorro de agua, el cuál es dirigido por el embudo móvil de la salida del
manto”, esta teoría tiene bases con la obtenida en la investigación, que
expone que un calamar puede movilizarse por medio de un chorro de agua
generado por una turbina de propulsión, y los movimientos son controlados
por un timón ubicado a la salida de la turbina.
Recommended