You are on page 1of 9

0

CS-113 Service-Arm

Descripcin Programacin

Descripcin

El robot CS-113 Service-Arm (brazo de servicio) es un sistema diseado para simular las operaciones de un robot manipulador industrial. Se trata de un brazo articulado con cinco grados de libertad y una pinza como herramienta terminal. Se encuentra en algunos centros docentes de Educacin Secundaria, aunque tambin se utiliza a nivel Universitario (Universidad de Navarra: www.ayc.unavarra.es/arocena/arocena.htm, Universidad de Lleida: robotica.udl.es/brazo_robot/brazo.htm). Actualmente se encuentra en la red alguna referencia a su comercializacin por la empresa Chang-Shing (www.emona.com.au/catalogue/e12.html)

El robot cuenta con una unidad controladora inserta en su cuerpo inferior, basada en un microprocesador Z80. Las articulaciones y la pinza se mueven gracias a 6 motores paso a paso de 12 V. El control programado se lleva a cabo mediante el puerto paralelo. Un cable plano que surge de la placa inferior y termina en un conector DB25 macho se une directamente al conector DB25 hembra del PC. Presenta dos modos de funcionamiento en modo test. Sus especificaciones tcnicas se resumen en la tabla siguiente.

CS-113 Service-Arm
Grados de libertad Precisin del posicionado Carga til mx. Integrados Interface Control de velocidad 5 +/- 0.9 mm 0.5 kg micro Z80A, memoria ROM, memoria RAM Puerto paralelo Por onda cuadrada

Peso

8 kg

Eje 1 cintura Tipo de junta Actuador Intervalo Velocidad revolucin motor pasos +/- 1000 pasos +/-120 paso: 0.12 5-15 ms/paso

Eje 2 hombro revolucin motor pasos +/- 600 pasos +/- 70 paso: 0.12 5-15 ms/paso

Eje 3 codo revolucin motor pasos +/- 600 pasos +/- 50 paso: 0.08 5-15 ms/paso

Eje 4 inclinacin de mueca revolucin motor pasos +/- 1992 +/- 100 paso: 0.05 5-15 ms/paso

Eje 5 rotacin de mueca revolucin motor pasos +/- 3600 +/- 180 paso: 0.05 5-15 ms/paso

Pinza

Accionada por motor paso a paso Intervalo: +/- 1800 pasos Paso: 0.1 Apertura: 45 mm

Esquema del robot CS-113 en posicin inicial o de referencia (home)

Este robot posee un juego bsico de instrucciones para su operacin, residentes en una EPROM, que se recogen en la tabla siguiente: Orden
Z N C

Argumentos

Intervalo

Nombre
ZERO HOME, NEST GRIP CLOSE

Descripcin
Establecer la posicin actual como referencia Volver a la posicin de referencia Cerrar totalmente la pinza

O H n G n 1-100 1-100

GRIP OPEN HERE GOTO SPEED DELAY

Abrir totalmente la pinza Memorizar la posicin actual en el n-simo lugar de la RAM Posicionar en las coordenadas memorizadas en el n-simo lugar de la RAM Fijar la velocidad de giro de los motores: 1 - lenta 5 - rpida Detener el movimiento unos segundos Activar la proteccin de vigilancia de lmites de los motores: 1 - activar 0 - desactivar Si est activada y un motor sobrepasa los lmites establecidos, se enciende el piloto rojo de error y slo se puede recuperar con el botn reset o con la instruccin N.

S n D n

1-5 1-9

L n

0-1

LIMIT

M p1,p2,p3,p4,p5,p6

p1>0: giro + cintura p1<0: giro cintura p2>0: subir hombro p2<0: bajar hombro p3>0: subir codo p3<0: bajar codo MOVE p4>0,p5>0: giro mueca p4<0,p5<0: giro + mueca p4<0,p5>0: elevar mueca p4>0,p5<0: bajar mueca p6>0: abrir pinza p6<0: cerrar pinza POSITION

Mover a la posicin de cada motor especificada (en pasos); ver el intervalo permitido de pasos de cada motor en la tabla superior).

P n,p1,p2,p3,p4,p5,p6 n: 1-100

Memorizar una posicin relativa a la de referencia (en pasos) en el lugar n-simo de la RAM.

(*) Al enviar las instrucciones al puerto paralelo se debe aadir un "retorno de carro" al final (cdigo ascii hexadecimal 0D
o decimal 13)

Ejemplos:
N: S5: M0,-400,0,600,-600,-1490:

va a la posicin de referencia. establece la mayor velocidad de los motores. baja hombro, baja mueca y abre pinza.

Funcionamiento en modo test:

Primer modo de test: ste debe efectuarse con el robot sin carga (desconectado del puerto). Su propsito es garantizar la posibilidad de movimiento de todas las uniones. Tambin puede emplearse para situar al robot en la posicin de

referencia como paso previo a cualquier accin exterior de control de la mquina. La posicin inicial o de referencia (home) corresponde a aqulla en que la pareja de flechas indicadoras de cada articulacin se halla alineada ( ). En esta posicin el n de pasos de cada motor es 0 (posicin ZERO). El mtodo a seguir es el siguiente : Pulsar el botn reset y medio segundo despus el de test. Mantener ambos botones pulsados y soltar el botn reset. Continuar pulsando el botn test durante unos 3 segundos y soltarlo. En el caso en que la pinza del robot estuviera cerrada (si no es as la cerrar) el robot realizar una accin cada vez que se pulse el botn test. El movimiento correspondiente no cesar mientras se tenga el botn pulsado. La secuencia de movimientos que se ir desarrollando a medida que se vaya accionando el pulsador de test ser la siguiente:
M1 (cintura) M1 (cintura) M2 (hombro) M2 (hombro) M3 (codo) M3 (codo) M4,M5 (mueca) M4,M5 (mueca) M4,M5 (mueca) M4,M5 (mueca) M6 (pinza) M6 (pinza) giro negativo giro positivo elevacin descenso descenso elevacin giro negativo giro positivo descenso elevacin apertura cierre

A la siguiente pulsacin de la tecla test se repite el proceso accionndose el motor M1. Al realizar este, se debe procurar NO sobrepasar los lmites de movimiento de los motores, para no causar trastornos en los motores del robot.

Segundo modo de test: los movimientos realizados en esta segunda prueba de verificacin estn programados en la ROM del CS-113. Este test est pensado para probar la sincronizacin de los movimientos de los distintos motores, la repetitividad de los mismos y los ngulos. Para su realizacin, obsrvese el siguiente mtodo de operacin : Alinear adecuadamente el robot (utilizando el test 1) dejndolo en posicin ZERO. Pulsar el botn reset para abandonar el primer modo de test. Es importante asegurarse de que el robot quede lo ms exactamente posible en posicin ZERO antes de empezar este nuevo test. Pulsar y mantener apretado el botn reset en primer lugar y seguidamente el de test, sin soltar el de reset. Soltar el pulsador de reset y mantener pulsado el de test durante unos 5 segundos. Al cabo de este tiempo el robot empieza a realizar una serie de movimientos sincronizados bajo el control de su propio programa en ROM. En este instante debe soltarse el botn de test. La velocidad de los movimientos vara entre los 5 posibles niveles siguiendo una secuencia 1-3-5 de forma indefinida. Para finalizar este procedimiento de test, debe mantenerse pulsado el botn de test durante un segundo. El robot se detendr en la posicin

ZERO despus de completar el ciclo a velocidad 5. Pulsar el botn de reset para recuperar el control de la mquina.

Programacin

El control del robot se puede llevar a cabo en cualquier lenguaje que permita el acceso al puerto paralelo del PC. Un ejemplo sencillo en lenguaje C (Turbo C) de cmo dialogar con el robot se muestra a continuacin:
/* EJEMPLO DE CONTROL BSICO DEL ROBOT CS-113 2002 Vctor R. Gonzlez */ #include <stdio.h> #include <dos.h> /* Direcciones del puerto paralelo */ #define LPT_BASE 0x378 #define DATOS LPT_BASE #define ESTADO LPT_BASE+1 #define CONTROL LPT_BASE+2 void envia_orden (char *orden); void envia_b (unsigned char caracter);

main() { envia_orden ("N"); /* Va a la pos. de referencia */ envia_orden ("S5"); /* Pone la velocidad al mximo */ envia_orden ("M0,-400,0,600,-600,-1490"); /*baja hombro, baja mueca y abre pinza */ return 0; }

/* Enva una orden al puerto */ void envia_orden (char* orden) { unsigned i = 0; /* Enva la orden al puerto */ while (orden[i] != '\0') envia_b ( orden[i++] ); envia_b ('\n'); /* Enva un retorno de carro */ }

/* Enva un carcter al puerto mediante un protocolo similar al de las impresoras */

void envia_b (unsigned char caracter) { outportb (DATOS, caracter); /* Espera a que el dispositivo est libre: BUSY bajo (S7# = 1)*/ while ( ! (inportb(ESTADO) & 0x80) ); /* Solicita aceptacin del byte: STB# bajo (C0# = 1) */ outportb (CONTROL, inportb(CONTROL) | 0x01); /* Espera confirmacin de dato recibido: ACK# bajo (S6=0)*/ /* No se utiliza con el robot, simplemente se realiza una espera */ /* while ( inportb(ESTADO) & 0x40 ); */ delay(1); /* Repone STB# alto (C0# = 0) */ outportb (CONTROL, inportb(CONTROL) & ~0x01); delay(1); robot */ } /* Espera entre envos para no bloquear el

Un programa en cdigo C bastante ms avanzado se encuentra en el archivo fuente CS_113_D.c, del cual slo se lista a continuacin la cabecera debido a su extensin.
/* CS_113_D.c CONTROL DEL ROBOT CS-113 2002 Vctor R. Gonzlez */ #include #include #include #include #include <stdio.h> <conio.h> <stdlib.h> <dos.h> "paralelo.h" 1 0 0.12 0.12 0.08 0.05 0.05 0.10 1000 600 600 3600 /* paso angular de la cintura (motor /* paso angular del hombro */ /* paso angular del codo */ /* paso angular de la mueca /* paso angular de la mueca /* paso angular de la pinza */ /* +/- lmite (en pasos) de la /* +/- lmite (en pasos) del /* +/- lmite (en pasos) del /* +/- lmite (en pasos) de la codo

#define TRUE #define FALSE

#define PASO_M1 1)*/ #define PASO_M2 #define PASO_M3 #define PASO_M4 (rotacin) */ #define PASO_M5 (inclinacin) */ #define PASO_M6 #define LIM_M1 cintura */ #define LIM_M2 hombro */ #define LIM_M3 */ #define LIM_M4

mueca (rotacin) */ #define LIM_M5 1992 mueca (inclinacin) */ #define LIM_M6 1800 pinza */ #define VELOCIDAD_MIN #define VELOCIDAD_MAX #define VELOCIDAD_INI #define MEM_MIN disponibles */ #define MEM_MAX #define MOV_ABSOLUTO relativo */ #define MOV_RELATIVO #define MENU_LIN1 #define MENU_COL1 #define MENU_COL2 #define INTRO #define TAB

/* +/- lmite (en pasos) de la /* +/- lmite (en pasos) de la

1 5 VELOCIDAD_MAX 1 100 0 1 8 33 38 13 9

/* Velocidad mnima */ /* Velocidad mxima */ /* Velocidad inicial */ /* Posiciones de memoria

/* Movimiento absoluto o

#define origen orden("Z") /* ZERO: Establece la posicin actual como referencia */ #define ir_origen orden("N") /* HOME: Ir a la posicin de referencia indicada por ZERO */ #define cierra_mano_todo orden("C") /* GRIP CLOSE: cierra al mximo la pinza */ #define abre_mano_todo orden("O") /* GRIP OPEN: abre al mximo la pinza */ #define para(seg) orden1("D", seg) /* DELAY: detiene el robot <seg> segundos (1-9)*/ #define velocidad(veloc) orden1("S", veloc) /* SPEED: establece la velocidad de los motores (1-5) */ #define limites(no_si) orden1("L", no_si) /* LIMIT: activa la vigilancia de los lmites de los motores (0-1) */ #define pos_mem(n_pos) orden1("H", n_pos) /* HERE: memoriza las posiciones de cada motor (1-100)*/ #define ir_mem(n_pos) orden1("G", n_pos) /* GOTO: va a posicin memorizada (1-100) */ #define #define #define #define #define 0) #define 0) #define #define #define #define #define #define grad) cintura_izqda(grad) cintura_dcha(grad) hombro_sube(grad) hombro_baja(grad) codo_sube(grad) codo_baja(grad) muneca_sube(grad) muneca_baja(grad) muneca_izqda(grad) muneca_dcha(grad) cierra_mano(grad) abre_mano(grad) orden6("M", -grad, 0, orden6("M", +grad, 0, orden6("M", 0, -grad, orden6("M", 0, +grad, orden6("M", 0, 0, 0, 0, 0, 0, 0, 0, 0) 0, 0, 0) 0, 0, 0) 0, 0, 0) -grad, 0, 0,

orden6("M", 0, 0, +grad, 0, 0, orden6("M", 0, 0, 0, -grad, +grad, 0) orden6("M", 0, 0, 0, +grad, -grad, 0) orden6("M", 0, 0, 0, -grad, -grad, 0) orden6("M", 0, 0, 0, +grad, +grad, 0) orden6("M", 0, 0, 0, 0, 0, +grad) orden6("M", 0, 0, 0, 0, 0, -

#define motores(cint, hom, cod, mun_ele, mun_gir, mano) orden6("M", cint, hom, cod, mun_ele, mun_gir, mano) int ParaleloIni (void); paralelo */ /* Inicia el puerto

void enviab (unsigned char caracter); void orden (char* id); void orden1 (char* id, int arg); void orden6 (char* id, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6); void msg_orden(char* orden); void msg_error(char* mens); unsigned selector(int* valor, int inf, int sup, float factor, char* form); void espera_fin_mov(int p1, int p2, int p3, int p4, int p5, int p6, int velocidad); void lote ( void); void main() { ....................... }

Cuando se ejecuta, se obtiene una pantalla como la que se muestra en la imagen adjunta, la cual da idea de las posibilidades de control que permite el programa. ste admite, adems, la lectura de un archivo de lotes de instrucciones, denominado CS113.TXT, para programar distintas trayectorias del robot.

A continuacin se muestra la grabacin en el aula-taller de una trayectoria programada seguida por este robot con la finalidad de apilar dos cilindros en una posicin

intermedia cuando inicialmente se hallaban situados en dos posiciones laterales. El archivo de lotes de instrucciones utilizado es el siguiente (CS113.TXT):
; ; Trayectoria del brazo robot CS-113 para apilar dos cilindros ; en una posicin centrada, desde dos posiciones laterales ; L0 ; Lmites desactivados. M-500,0,0,0,0,0 ; Gira cintura a la izquierda. M0,-600,0,-150,150,-1490 ; Baja hombro, sube mueca y abre pinza. M0,0,0,0,0,1350 ; Cierra pinza (sobre cilindro). M0,400,0,0,0,0 ; Sube hombro. M500,-400,0,0,0,0 ; Gira cintura a la derecha, baja hombro. M0,0,0,150,-150,-1350 ; Baja mueca, abre pinza. D1 ; Espera 1 seg. M0,400,0,0,0,0 ; Sube hombro. M500,0,0,0,0,0 ; Gira cintura a la derecha. M0,-400,0,-150,150,0 ; Baja hombro, sube mueca M0,0,0,0,0,1350 ; Cierra pinza (sobre cilindro). M-500,400,0,0,0,0 ; Gira cintura a la izquierda, sube hombro. M0,-325,0,0,0,0 ; Baja hombro. M0,0,0,0,0,-1350 ; Abre pinza. N ; Va a posicin de referencia.

Con esta documentacin se adjunta dems un programa de control/simulacin de los movimientos de este robot, para entornos Windows 9x, todava en fase de desarrollo, realizado en Visual Basic.

You might also like