|
Víctor Ramos-Viterbo y Yurián Zer6n-Gutiérrez Laboratorio del Centro deInvestigación de ta Universidad La Salle
e-mail:vramos@sparcci ulsa.ulsa.mx labciulsa@sparcciulsa ulsa.mx
RESUMEN
En el presente artículo se describe et diseño, la construcción y el desempeño de un robot móvil capaz de seguir líneas contrastadas, ya sea una línea negra en un fondo blanco o un línea blanca en un fondo negro. El control del robot está basado en reglas que actúan de acuerdo a las señales obtenidas de un sistema de optosensores; estas reglas están programadas en un microcontrolador COP8 de la compañía National Semiconductor.
ABSTRACT
The current paper describes the design, construction and performance of a line traker mobil robot; the lines must be contrasted. a white line in a black background or a black fine in a whi e background. The robot control is based in a set of rules dependen! on the optosensors inputs, these rules are programmed in a COP8 microcontroller of the Nationa l Semiconductor Corporation.
INTRODUCCIÓN
En los últimos años la necesidad creciente de automatizar y controlar procesos específicos de una forma sencilla y a un bajo costo, ha impulsado ta creación y desarrollo de dispositivos programables capaces de realizar las más diversas tareas. Estos dispositivos son denominados microcontroladores y substituyen a grandes computadoras en aplicaciones específicas. Los campos de aplicación en tos
que se han hecho imprescindibles tos
microcontroladores son principalmente en la industria automotriz, en la de
electrodomésticos, en ta de equipo para telecomunicaciones y en la de equipo médico. En la actualidad, una casa típica norteamericana cuenta en promedio con 35 microcontroladores distribuidos en distintos equipos, y se espera que para el año 2000 sean más de 240.
En el laboratorio del Centro de Investigación se han realizado aplicaciones con microcontroladores (5, 6). Este trabajo es una primera aproximación en el área de robótica,
con el que se demuestra la utilidad del microcontrolador. ya que permite substituir un gran número de componentes, y como consecuencia se obtiene una sustancial reducción en las dimensiones y el peso de cualquier tipo de robot. Características deseables en el diseño de éstos.
El robot que se describe en el presente articulo es de tipo móvil, ya que está diseñado para hacer seguimiento de trayectorias en un plano. En una primera etapa sólo sigue trayectorias contrastadas sobre la superficie de trabajo de manera autónoma. Este robot es escalable de tal forma, que en el futuro será posible enviarle información de control no sólo de los sensores ópticos que tiene integrados. sino de cualquier otra fuente como una PC remota que le indique qué hacer en función de algun algoritmo o programa.
EL ROBOT
El robot que se diseñó se denomina "Prototipo
Omnidireccional Móvil" (P.O.Mo.) y está
439
Figura 1.Diagrama esquemático del circuito de control del robot.
integrado por un mecanismo simple de robot móvil sobre tres puntos de apoyo. Los dos puntos de apoyo principales del robot son dos ruedas motorizadas independientemente que se encuentran alineadas por sus ejes de rotación en la parte delantera del robot. El tercer punto de apoyo, se encuentra en la parte
I R
Figura 2. Optosensor Infrarrojo.
posterior del robot siendo éste una "rueda loca" que permita cualquier tipo de cambio en la dirección.
Como los motores son independientes, si ambos giran. le proporcionan tracción al robot para que éste avance en línea recta, si alguno de ellos es detenido, el robot usará la rueda asociada a este motor como eje o centro de un arco que sera descrito por la rueda que se encuentra girando. La separación de 5 cm existente entre las ruedas determina el radio de giro mínimo del prototipo.
EL CIRCUITO
El circuito (Figura 1) consta de tres distintos bloques funcionales. El primero está formado por los dispositivos sensores que permiten detectar y codificar un cambio en el contraste de la superficie como una señal de voltaje. Estas señales son enviadas al segundo bloque funcional del circuito que es el encargado de interpretar estas señales y está constituido por
440
(a)
Figura 4.Ubicación de los Optosensores.
1 fl 1
l íl l
(b)
(e}
(3) que tienen su sensibilidad óptima a cinco millmetros de la superficie.
Cada sensor contiene un LED infrarrojo como emisor y un fototransistor como receptor acomodados en un ángulo convergente de tal forma que el fototransistor pueda recibir la luz infrarroja a través del rebote de ésta, en una superficie clara. (figura 2).
Los sensores estan arreglados en triángulo, uno al frente y dos atrás, separados por una distancia poco mayor al ancho de Ja línea que describe la trayectoria (Figura 3a), donde el sensor frontal tiene la función de indicar anticipadamente la proximidad de una curva cerrada (Figura 3b). y los dos sensores traseros
forman un riel óptico que le indica al robot
Figura 3. Diferentes
situaciones que se les
presentan a los sensores.
un microcontrolador que de acuerdo al programa contenido en su memoria ordena alguna acción de control para que el tercer bloque funcional del circuito actúe. Este tercer bloque lo forman dispositivos de potencia que activan los motores de acuerdo a las órdenes dadas por el microcontrolador.
hacia donde se realiza el cambio en la trayectoria (Figura 3c).
La velocidad de respuesta del arreglo de optosensores en relación con la velocidad de corrección del robot, está determinada por el coefic iente de precisión o, lo que es lo mismo.
la longitud de Jos radios de los optosensores
con la rueda eje (r'). entre el radio de la otra rueda (r). Experimentalmente se ha encontrado que para asegurar elseguimiento correcto de la trayectoria que marca la ruta, el coeficiente de precisión debe cumplir:
El circuito de lectura está formado por tres optosensores infrarrojos del tipo HOA1405 109
r'
|
r
441
ya que esto asegura que la velocidad tangencial de los optosensores será mayor a la velocidad de giro de la rueda y, por lo tanto, el optosensor detectará variaciones en la ruta con sólo hacer ligeros cambios en la dirección (Figura 4).
El tercer bloque está formado por dos circuitos de potencia idénticos, uno para cada motor. Estos circuitos tienen la función de
activar los motores en dos posibles velocidades. La activación de cada motor se realiza con un cero lógico en la compuerta del
FET que aterriza al motor. la velocidad la define la conexión que realiza el relevador (4) a dos distintos voltajes de alimentación, para velocidad alta utiliza la conexión normalmente cerrado (NC) a 9 V y para velocidad baja utiliza la conexión normalmente abierto (NA) a 5 V.
G7 G6 GB G4 G3 GZ G 1 GO
1 NO 1 NO 1 NO 1 NO 1 n 1 SD 1 SF 1 SI 1
Figura 5. Configurac ión del puerto G. TL=tipo de lógica (1-positiva y 0-negativa). SD=Sensor Derecha, SF=Sensor Frontal, Sl=Sensor Izquierda.
L7 L6 L5 L4 13 L2. Ll LO
1 Nol N o ! N o l No l MD l vs o l Mr l vsr l
Figura 6 . Configuración del puerto L.
VBI = Velocidad Motor Izquierdo (1-baja y 0- alta). MI = Motor Izquierda (1-encendido).
VBD=Velocidad Motor Derecha (1-baja y 0- alta). MD = Motor Derecha (1-encendido).
EL MICROCONTROLADOR
Se seleccionó un microcontrolador COP8782CJ de la serie de COP8 de 8 bits de National Semiconductor (1). Este dispositivo wenta con dos puertos de entrada/salida de 8 bits cada uno (puerto L y puerto G), una terminal para restaurar (RESET). una de reloj (CK1). y dos de alimentación (Vcc y GND).
Para hacer la lectura de los sensores se configuraron los cuatro bits menos
significativos del puerto G como entradas. dejando los cuatro bits más significativos en tercer estado (figura 5).
Existen dieciseis posibles palabras de entrada en el puerto G, de las cuales las primeras ocho son para lógica positiva y las restantes ocho son para lógica negativa (Tabla 1).
Tabla 1.Condiciones de los sensores.
TL |
SD |
SF |
SI |
CÓDIGO |
ESTADO |
LÓGICA |
CONOICION |
|
o |
o |
o |
o |
OOh |
robot al aire |
Pos. |
o |
|
o |
o |
o |
1 |
01h |
curva suave a la izauierda |
Pos. |
1 |
|
o |
o |
1 |
o |
02h |
no opera |
Pos. |
2 |
|
(¡ |
o |
1 |
1 |
03h |
curva cerrada a la izquierda |
Pos. |
3 |
|
o |
1 |
o |
o |
04h |
1 curva suave a la derecha |
Pos. |
4 |
|
o |
1 |
o |
1 |
05h |
sobre el riel |
Pos. |
5 |
|
o |
1 |
1 |
o |
06h |
curva cerrada a la derecha ·-···· próximo a curva cerrada |
Pos. |
6 |
|
o |
1 |
1 |
1 |
07h |
Pos. |
7 |
||
1 |
o |
o |
o |
08h |
próximo a curva cerrada |
Nea. |
8 |
|
1 |
o |
o |
1 |
09h |
curva cerrada a la derecha |
NeQ. |
9 |
|
1 |
o |
1 |
o |
OAh |
sobre el riel |
NeQ. |
10 |
|
1 |
o |
1 |
1 |
OBh |
curva suave a la derecha |
Nea. |
11 |
|
1 |
1 |
o |
o |
OCh |
curva cerrada a la izauierda |
Nea. |
12 |
|
1 |
1 |
o |
1 |
ODh |
n.o opera |
Neo. |
13 |
|
1 |
1 |
1 |
o |
OEh |
curva suave a la_izquierda |
Neo. |
14 |
|
1 |
1 |
1 |
1 |
OFh |
no opera |
Neo. |
15 |
442
Tabla 2. Códigos y función de cada regla.
MD |
VBO |
MI |
VBI |
CODIGO |
FUNCION |
REGLA |
||
o |
o |
o |
o |
OOh |
motores detenidos |
o |
||
o |
o |
o |
1 |
01h |
no opera |
X |
||
o |
o |
1 |
o |
02h |
motor izQuierdo velocidad alta |
1 |
||
o |
o |
1 |
1 |
03h |
motor izquierdo velocidad baja |
2 |
||
o |
1 |
o |
o |
04h |
no opera |
X |
||
o |
1 |
o |
1 |
OSh |
no opera |
X |
||
o |
1 |
1 |
o |
06h |
no opera |
X |
||
o |
1 |
1 |
1 |
07h |
no opera |
X |
||
1 |
o |
o |
o |
08h |
rr.otor derecho velocidad alta |
3 |
||
1 |
o |
o |
1 |
09h |
no opera |
X |
||
1 |
o |
1 |
o |
OAh |
ambos motores velocidad alta |
4 |
||
1 |
o |
1 |
1 |
OBh |
no ooera |
X |
||
1 |
1 |
o |
o |
OCh |
motor derecho velocidad baja |
5 |
||
1 |
1 |
o |
1 |
ODh |
no pera |
X |
||
1 |
1 |
1 |
o |
OEh |
no opera |
X |
||
1 |
1 |
1 |
1 |
OFh |
··- ambos motores velocidad baja |
6 |
||
Para enviar las señales de control a los motores se configuraron los cuatro bits menos significativos del puerto L como salidas. dejando los cuatro bits más significativos en tercer estado (Figura 6).
Para el control de los motores existen 16 posibles palabras de control. de las cuales sólo siete de ellas tienen una función específica (Tabla 2).
EL PROGRAMA
El programa tiene un ciclo principal en el que se lee el puerto G y se compara continuamente con alguno de los códigos predefinidos como posibles condiciones, que simplemente indican la regla válida por medio del código de salida en el puerto L. Después de activar una regla, el programa regresa al ciclo principal para mantenerse al tanto de los cambios en las condiciones en los optosensores. En caso de no haber cambios, el ciclo se cierra siempre con la misma regla.
Se utilizó un sistema de desarrollo COP 8 Debug Module de Metalink Corporation, para fa emulación y depuración del programa. así como para la programación del circuito integrado de microcontrol.
En el apéndice A, se muestra el programa contenido en la memoria del microcontrolador, que sólo ocupa 186 bytes de los posibles 4 Kbytes de memoria ROM con que cuenta.
CONCLUSIONES
El usar un microcontrolador para controlar el actuar del robot móvil, resultó ser una gran alternativa, ya que redujo el número de componentes que se usarían normalmente, y por lo tanto el peso y el riesgo de falla.
A pesar de que el COP8782CJ es el microcontrolador más chico de la familia de B bits, éste está sobrado para esta aplicación en particular, ya que sólo se utilizaron cuatro bits de cada puerto, dejando 8 posibles entradas/salidas sin usar (cuatro por puerto). Por otro lado sólo se usó el 5% de la memoria destinada para programas. Estos resultados muestran el potencial del microcontrolador para realizar funciones más complejas sujetas a un mayor número de variables.
REFERENCIAS
1. COP8 Databook. Nationaf Semiconductor , 1994.
443
2. íceMaster COP8 Debug Module User·s
0027 3098
JSR
X'009B
Manual v 1.2, Metalink Corporation,1994 . 0029 9006 LO A,PORTGP 3. Optoelect ronics Device Data. Motorola. Lee condición 4 |
|||||
4. |
1989. 0028 |
950F |
ANO |
A,#X'OF |
|
0020 |
9204 |
IFEQ |
A,#X'04 |
||
002F Relay Technnical Oatabook. Aromat |
3088 |
JSR |
X'0088 |
||
Corporation, 1993. 0031 |
9006 |
LO |
A,PORTGP |
||
Lee condición 5 |
|||||
5. |
Ramos Viterbo, V.; Caracas. G. y Gómez |
0033 |
950F |
ANO |
A,#X'OF |
Ramírez. E. Implementación de un control |
0035 |
9205 |
IFEQ |
A,#X'OS |
|
difuso para un motor de comente directa |
0037 |
3093 |
JSR |
X'0093 |
|
en un microcontrolador. VI CIECE, tnsfffuto |
0039 |
9006 |
LD |
A,PORTGP |
Tecnológico de Morefía, Morelia, Michoacán, MÉXICO, del 11 al 15 de marzo de 1996.
6. Gómez Ramirez. E.; Martinez Casas, G. y Figueroa Nazuno, J.; Diseño e implementación de una neurocomputadora
en microcontroladores. VI Congreso Nacional sobre Informática y Computación. Aguascal ientes, Ags., MÉXICO, del 23 al 25 de octubre de 1991.
APÉNDICE A.Programa utilizado.
Configuración del puerto L
Lee condición 6
|
0043 950F
0045 9207
0047 30A3
0049 9006
|
ANO IFEQ
JSR
LO
A,#X'OF A,#X'07 X'OOA3 A,PORTGP
0000 BC01FF LO
Configuración del puerto G
PORTLC,#X'FF
Lee condición 9
0003 |
8C0500 |
LD |
PORTGC ,#X'OO |
0006 |
8C040F |
LO |
PORTGO,#X'OF |
|
|
|
|
|
0050 920A
OOSF 3093
0061 9006
Lee condición 11 0063 950F
0065 9208
0067 3088
0069 9006
Lee condición 12
0068 950F
0060 920C
006F 3098
0071 9006
Lee condición 13 0073 950F
0075 9200
0077 3097
ANO IFEQ JSR LO
ANO IFEQ
JSR
LO
ANO IFEQ
JSR
LO
ANO IFEQ
JSR
A,#X'OF A,#X'OA X'0093 A,PORTGP
A ,#X'OF A ,#X'OB X'0088
A,PORTGP
A ,#X'OF A,#X'OC X'0098 A,PORTGP
A,#X'OF A,#X'OO X'0097
0079 9006 LO A,PORTGP
Lee condición 14
./."'>\\. ,.
|
0078 |
950F |
AND |
A,#X'OF |
0070 |
920E |
IFEQ |
A,#X'OE |
007F 0081 |
308F 9006 |
JSR LO |
X'008F A,PORTGP |
Lee condición 1 5
0083 |
9SOF |
AND |
A.#X'OF |
0085 |
920F |
IFEQ |
A,#X'OF |
0087 |
3088 |
JSR |
X'0088 |
0089 |
2009 |
JMP |
X'0009 |
Activa regla O
0088 BCDOOO LO PORTLD,#X'OO
008E BE RET
Acti va regla 1
008F |
BCD002 |
LO |
PORTLD,#X'02 |
0092 |
8E |
RET |
Activa regla 2
0093 |
BC0003 |
LD |
PORTLO,#X'03 |
0096 |
8E |
RET |
Activa regla 3
0097 BCD008 |
LO |
PORTLD,#X'08 |
009A 8E |
RET |
Activa regla 4
0098 BCDOOA LO PORTLD,#X'OA
009E 8E RET
Activa regla 5
009F BCDOOC LO PORTLO,#X'OC OOA2 8E RET
Activa regla 6
OOA3 |
BCDOOF |
LD |
PORTLD,#X'OF |
OOA6 |
8E |
RET |