Está en la página 1de 14

UNIVERSIDAD POLITÉCNICA SALESIANA ELECTIVA

03/08/2015 II

INGENIERÍA ELECTRÓNICA

“DISEÑO E IMPLENTACION DE UN BRAZO ROBOTICO DE 3 GRADOS


DE LIBERTAD PARA DESPLAZAMIENTO EN LOS 3 PLANOS”

Cajamarca Jorge
jcajamarca@est.ups.edu.ec
Portilla Alexis
aportilla@est.ups.edu.ec
Valladares Pedro
pvalladares@est.ups.edu.ec
Velasco Salazar Andrés Fernando
avelaco@est.ups.edu.ec
Vergara Zurita Darwin Alexander
dvergara@est.ups.edu.ec

RESUMEN: En presente documento se detalla la implementación y diseñode un brazo robótico con


3GDL, el cual permitirá el desplazamiento en los 3 planos x, y, z, mediante una interfaz creada por
un arduino y la PC lo cual permitirá controlar al brazo para que se desplace a un punto configurado
por el usuario desde la PC una vez dadas las coordenadas en x, y, z.

PALABRAS CLAVE: Encoder, Servomotor, brazo robótico

1 INTRODUCCIÓN

Los robots a nivel tecnológico son los más utilizados en la industria debido a sus
funcionalidades y practicidad en los procesos de manufactura, gracias al nivel de trabajo y tiempo de
producción que alcanzan se ha incrementado la implementación a nivel mundial permitiendo al ser
humano preocuparse de labores con más raciocinio como gestión de la producción o proyección de
ventas, debido a estas razones se tienen una amplia gama de categorías y funcionalidades a nivel
mundial.

El robot que se caracterizará en el presente informe es un manipulador, con 3 grados de libertad el


cual se mueve a través de un eje de guiado lineal con desplazamiento en los 3 planos para controlar
diversas tareas. A este componente se lo puede usar para diferentes tareas como trabajos de
soldadura, ensamblaje de piezas, etc. En este informe al ser el primer contacto con el hardware se
detallara los componentes y herramientas necesarias para el uso correcto del robot fijo.

2 OJETIVOS

OBJETIVO

GENERAL

 Diseñar e implementar un robot fijo con 3 grados de libertad, mediante la utilización de 3


motores para el control del desplazamiento mediante un arduino el cual genera una interfaz
con la PC, para colocar la posición desde la PC y el robot se desplace a dicho punto
específico moviendo sus junturas.

1
OBJETIVOS ESPECIFICOS

 Utilizar un arduino para el control del motor y la interfaz desde el arduino hacia la PC
mediante comandos de programación para que el brazo llegue al punto específico.

 Diseñar los 3 eslabones de acuerdo a las medidas y acoplar los motores para su
desplazamiento.

 Simular en matlab el diseño creado del robot fijo, para realizar su respectivo análisis del
comportamiento y verificación de resultados.

3 MARCO TEÓRICO

3.1 ROBOT MANIPULADOR

Entre los robots considerados de más utilidad en la actualidad se encuentran los robots industriales
o manipuladores. Existen ciertas dificultades a la hora de establecer una definición formal de lo
que es un robot industrial. La primera de ellas surge de la diferencia conceptual entre el mercado
japonés y el euro-americano de lo que es un robot y lo que es un manipulador. Así, mientras que
para los japoneses un robot industrial es cualquier dispositivo mecánico dotado de articulaciones
móviles destinado a la manipulación, el mercado occidental es más restrictivo, exigiendo una mayor
complejidad, sobre todo en lo relativo al control.

Figura 1. Robot manipulador


Manipulador: mecanismo formado generalmente por elementos en serie, articulados entre sí,
destinado al agarre y desplazamiento de objetos. Es multifuncional y puede ser gobernado
directamente por un operador humano o mediante dispositivo lógico.

Robot: manipulador automático servo-controlado, reprogramable, polivalente, capaz de posicionar y


orientar piezas, útiles o dispositivos especiales, siguiendo trayectoria variables reprogramables, para
la ejecución de tareas variadas. Normalmente tiene la forma de uno o varios brazos terminados en
una muñeca. Su unidad de control incluye un dispositivo de memoria y ocasionalmente de
percepción del entorno. Normalmente su uso es el de realizar una tarea de manera cíclica,
pudiéndose adaptar a otra sin cambios permanentes en su material.

3.2 Estructura de los robots industriales

Un manipulador robótico consta de una secuencia de elementos estructurales rígidos, denominados


enlaces o eslabones, conectados entre sí mediante juntas oarticulaciones, que permiten el
movimiento relativo de cada dos eslabones consecutivos.
Figura 2. Elementos estructurales de un robot industrial

Una articulación puede ser:


Lineal (deslizante, traslacional o prismática), si un eslabón desliza sobre un eje solidario al eslabón
anterior.
Rotacional, en caso de que un eslabón gire en torno a un eje solidario al eslabón anterior.

Figura 3.Distintos tipos de articulaciones de un robot: a) lineal, b) rotacionales

El conjunto de eslabones y articulaciones se denomina cadena cinemática. Se dice que una cadena
cinemática es abierta si cada eslabón se conecta mediante articulaciones exclusivamente al anterior y
al siguiente, exceptuando el primero, que se suele fijar a un soporte, y el último, cuyo extremo final
queda libre. A éste se puede conectar un elemento terminal o actuador final: una herramienta
especial que permite al robot de uso general realizar una aplicación particular, que debe diseñarse
específicamente para dicha aplicación: una herramienta de sujeción, de soldadura, de pintura, etc. El
punto más significativo del elemento terminal se denomina punto terminal (PT). En el caso de una
pinza, el punto terminal vendría a ser el centro de sujeción de la misma.
A los manipuladores robóticos se les suele denominar también brazos de robot por la analogía que
se puede establecer, en muchos casos, con las extremidades superiores del cuerpo humano.

Figura 4. Semejanza de un brazo manipulador con la anatomía humana


Se denomina grado de libertad (g.d.l.) a cada una de las coordenadas independientes que son
necesarias para describir el estado del sistema mecánico del robot (posición y orientación en el
espacio de sus elementos). Normalmente, en cadenas cinemáticas abiertas, cada par eslabón-
articulación tiene un solo grado de libertad, ya sea de rotación o de traslación. Pero una articulación
podría tener dos o más g.d.l. que operan sobre ejes que se cortan entre sí.

3.3 PARAMETRIZACIÓN DENAVIT-HARTENBERG PARA ROBOTS

El estudio de los parámetros Denavit-Hartenberg (DH) forma parte de todo curso básico sobre
robótica, ya que son un estándar a la hora de describir la geometría de un brazo o manipulador
robótico. Se usan para resolver de forma trivial el problema de la cinemática directa, y como punto
inicial para plantear el más complejo de cinemática inversa.

FIGURA 5. Numero de junturas y eslabones del robot

Como es normal que cueste algo de trabajo visualizar en 3D todos los ejes, direcciones, y distancias
implicadas en el proceso, he liberado el código fuente de la aplicación gráfica que se muestra en el
vídeo. Se puede emplear como guía/calculadora para comprobar si se han realizado bien problemas
de este tipo, así como herramienta docente en clase.

Los pasos del algoritmo genérico para la obtención de los parámetros DH se detallan a continuación:

1. Numerar los eslabones: se llamará “0” a la “tierra”, o base fija donde se ancla el robot. “1” el
primer eslabón móvil, etc.
2. Numerar las articulaciones: La “1” será el primer grado de libertad, y “n” el último.
3. Localizar el eje de cada articulación: Para pares de revolución, será el eje de giro. Para
prismáticos será el eje a lo largo del cuál se mueve el eslabón.
4. Ejes Z: Empezamos a colocar los sistemas XYZ. Situamos los en los ejes de las
articulaciones i, con i=1,…,n. Es decir, va sobre el eje de la 1ª articulación, va sobre el eje
del 2º grado de libertad, etc.
5. Sistema de coordenadas 0: Se sitúa el punto origen en cualquier punto a lo largo de . La
orientación de e puede ser arbitraria, siempre que se respete evidentemente que XYZ sea
un sistema dextrógiro.
6. Resto de sistemas: Para el resto de sistemas i=1,…,N-1, colocar el punto origen en la
intersección de con la normal común a y . En caso de cortarse los dos ejes Z, colocarlo
en ese punto de corte. En caso de ser paralelos, colocarlo en algún punto de la articulación i+1.
7. Ejes X: Cada va en la dirección de la normal común a y , en la dirección de
hacia .
8. Ejes Y: Una vez situados los ejes Z y X, los Y tienen su direcciones determianadas por la
restricción de formar un XYZ dextrógiro.
9. Sistema del extremo del robot: El n-ésimo sistema XYZ se coloca en el extremo del robot
(herramienta), con su eje Z paralelo a y X e Y en cualquier dirección válida.
10. Ángulos teta: Cada es el ángulo desde hasta girando alrededor de .
11. Distancias d: Cada es la distancia desde el sistema XYZ i-1 hasta la intersección de las
normales común de hacia , a lo largo de .
12. Distancias a: Cada es la longitud de dicha normal común.
13. Ángulos alfa: Ángulo que hay que rotar para llegar a , rotando alrededor de .
14. Matrices individuales: Cada eslabón define una matriz de transformación:

15. Transformación total: La matriz de transformación total que relaciona la base del robot con
su herramienta es la encadenación (multiplicación) de todas esas matrices:

Dicha matriz T permite resolver completamente el problema de cinemática directo en robots


manipuladores, ya que dando valores concretos a cada uno de los grados de libertad del robot,
obtenemos la posición y orientación 3D de la herramienta en el extremo del brazo.

4 MATERIALES

 PC
 Arduino 1
 1 motor con caja de reducción y Encoder
 2 servomotores
 Acrílico
 Tubo PVC

5 DESARROLLO

5.1 Desarrollo del prototipo de brazo robótico

El brazo está constituido por 3 eslabones los cuales se desarrollaron con materiales fáciles de
adquirir, como es el acrílico y tubo PVC, a continuación en la figura 6 se muestra un prototipo del
brazo a construir, con los materiales ya mencionados, las dimensiones de los eslabones son las
siguientes:
 Eslabón 1: 30cm
 Eslabón 2: 20cm
 Eslabón 3: 15cm

El controlador encargado de realizar el control de los movimientos del brazo se lo realizara


mediante la placa ARDUINO 1 y la interfaz se la desarrollara con la ventana de comunicación serial
del propio software de programación de arduino.

0
FIGURA 6. Prototipo del brazo robótico, con su número de eslabones

En la figura 7 se muestra el material utilizado para la construcción del brazo, los eslabones 2 y 3 se
utilizo acrílico para su fabricación

FIGURA 7. Acrílico utilizado para los eslabones

El eslabón 1 y la base del brazo se utilizo tubo PVC y madera para su construcción en la figura 8 se
muestra el ensamblaje de la base del brazo
FIGURA 8. Base y eslabón 1 del brazo robot

A continuación se muestra en la figura 9 el prototipo finalizado del brazo y listo para realizar el
desarrollo del control del mismo

FIGURA 10. Prototipo finalizado

5.2 DESARROLLO DEL CIRCUITO DE CONTROL DEL BRAZO Y CONTROL DE


MOVIMIENTO

Como ya se menciono el circuito de control se utilizo la placa de desarrollo ARDUINO 1, el cual


consta de un microprocesador ATMEGA 328P, este chip de la familia AVR es el cerebro del robot,
donde mediante un algoritmo de programación, se introduce las ecuaciones para cada motor y se
encarga de realizar el control para el movimiento de cada eslabón.

FIGURA 11. Arduino 1

Los motores utilizados para la acción de movimiento de cada eslabón son 3, dos servomotores y un
motor DC con caja de reducción, los servomotores son los encargados de mover los eslabones 2 y
3 de 0 a 90 grados, el motor DC ubicado en la base mueve el eslavo 1 los 360 grados. En la figura
12 se muestra el motor de la base del brazo.
FIGURA 12. Motor utilizado en la base

FIGURA 13. Servos utilizados para el control de movimiento del brazo.

5.3 SOFTWARE Y DERARROLLO MATEMATICO PARA EL MOVIMEINTO


DEL BRAZO

Se utilizo cinemática inversa, mediante los parámetros de DENAVIT-HARTEMBERG, para


encontrar las ecuaciones que describen el ángulo que debe moverse cada eslabón para que el punto
final alcance la posición deseada. En la tabla numero 1 se muestra los parámetros que describen la
cinemática inversa del brazo robot.

θ d a α
1 Θ1 30 0 90º
2 Θ2 0 20 0
3 Θ3 0 15 0
TABLA 1. Parámetros DH del brazo robot.
Descrita la tabla de parámetros se puede obtener las ecuaciones para θ de cada eslabón, a
continuación se mostrara las ecuaciones que se introducirán al microcontrolador para el control de
movimiento de cada eslabón

Ecuación 1, para θ1:


−1 Y
θ 1=tan
X

Ecuación 2, para θ2:

θ 2=sin (Z−30
−1
15 )

Ecuación 3, para θ3:

−X
Y
− ¿ tan
−1 Y

X
−sin()
−1 Z − 30

15
−1
( )
θ 3=tan ¿
Donde X, Y, Z, es el punto en eje de coordenadas deseado a donde debe llegar el brazo

Obtenidas las ecuaciones se procede a realizar el algoritmo de programación, para el control del
movimiento del brazo, la cual se mostrara en ANEXOS.
6 RESULTADOS

Se utiliza la ventana de comunicación serial del ID de ARDUINO para ingresar el punto deseado a
llegar del brazo.

FIGURA 14. Interfaz utilizada para el control de movimiento del brazo.

Como se muestra en la figura 14, se ingresaron las coordenadas para que el brazo llegue a ese punto,
las cuales son:
X=10
Y=20
Z=45
Los valores de los ángulos los cuales debe moverse cada eslabón son los siguientes:
θ1 = 63.43º
θ2 = 90º
θ3 = 180º
Dado estos puntos se observa en la figura 15 que el brazo ha llegado a la posición deseada,
comprobando que funciona correctamente el control del brazo

FIGURA 15. Posición alcanzada por el brazo robot

Se realizo la comprobación de los resultados obtenidos por medio del software de MATLAB, donde
se ingresaron las mismas coordenadas y se observo que el brazo modelado en Matlab alcanza la
misma posición.

FIGURA 16. Brazo simulado por medio de software Matlab

7 CONCLUSIONES

La cinemática directa y el algoritmo DENAVIT HARTENBERG resultan una pieza importante para
el Modelamiento de un robot, pues este algoritmo alberga todas las condiciones para la generación
del robot en el espacio, además de entregar información de posición y orientación respecto a un
sistema de referencia
 Es importante conocer los comandos que posee el COSIROP para realizar la programación
de una manera más factible, ya que de esta manera se puede minimizar las líneas de código
y realizar grandes movimientos del brazo.

 Es necesario determinar la velocidad adecuada en el controlador para que el brazo realice el


dibujo ya que de esta manera se puede evitar colisiones con partes externas al brazo, otra
manera de controlar la velocidad del brazo es en la programación con el comando SPD el
cual nos permite controlar la velocidad a la siguiente línea de código.

 Es importante encontrar un valor en la posición de Z para que al momento de realizar el


dibujo no exista mucha fricción tanto con el esfero y la hoja de papel, para que al dibujar el
brazo no tenga mucha complicación y no pueda romper la hoja o en el peor de los casos el
esfero.
8 REFERENCIAS

[1] A. Martínez, “Software para el modelamiento, simulación y programación de aplicaciones


robotizadas”, Marzo-2009 [En Línea], Disponible en:
http://repositorio.ute.edu.ec/bitstream/123456789/15101/1/52100_1.pdf

[2] W. López, “Programming Software for Mitsubishi Industrial Robots”, Enero-2005 [En Línea],
Disponible en:
http://industrial.utp.edu.co/laboratorios/manufactura-_exible/componentes-de-la-celda/robot-
mitsubishi-rv-2aj.pdf

[3] A. Valencia, “Introducción a la programación Melfa Basic IV”, Mayo – 2007, [En línea]
Disponible en:
http://isa.umh.es/asignaturas/rvc/programacion_MELFA_IV.pdf

ANEXOS

 Programación realizada en ARDUINO


#include <Servo.h> int m=0;
Servo servo1;
double x1,y1,z1;
Servo servo2; double teta11,teta22,teta33;
// base del robot int x2;
int long encoder0PinA = 3; //pin 3 aurduino double teta1,teta2,teta3;
uno int long encoder0PinB = 4; //pin 4 void setup()
aurduino uno int motor1 = 10;
{ Serial.begin(115200);
int motor11 = 11; // base del robot
int pedro=0; pinMode (encoder0PinA,INPUT);
int long encoder0Pos = 0; pinMode (encoder0PinB,INPUT);
int encoder0PinALast = LOW;
//motor
int nn = LOW;
pinMode(motor1, OUTPUT);
float grados=0; pinMode(motor11, OUTPUT);
// fin de la base del robot
// fin de la base del robot
double rad;
Serial.println("UNIVERSIDAD POLITECNICA
int SALESIANA");
resp; Serial.println("BRAZO
int x=0; ROBÓTICO"); Serial.println("D-H
int y=0; MODIFICADO"); servo1.attach(5);
int z=0;
servo1.write(90);
int n=0;
servo2.attach(6);
if ((encoder0PinALast == LOW) && (nn ==
servo2.write(90);
HIGH)) {
}
if (digitalRead(encoder0PinB) == LOW) {
encoder0Pos--;
void loop() grados = ((encoder0Pos*360/570));
{ if (encoder0Pos == -570){(encoder0Pos =
while(m==0) 0);}
{ }
servo1.write(90); else { encoder0Pos+
servo2.write(90); +;
Serial.println("Ingrese las coordenadas X,Y,Z"); grados = ((encoder0Pos*360/575));
m=1; if (encoder0Pos == 575){(encoder0Pos =
} 0);}
if (Serial.available() > 2) { }
grados;
x= Serial.parseInt(); Serial.print ("GRADOS =
x1=1.0*x; "); Serial.println (grados);
Serial.print("X= ");
Serial.println(x1); if(grados == pedro)
n++; { encoder0Pos=0;
while(n==1){ digitalWrite(motor1, LOW);
if (Serial.available() > 2) { digitalWrite(motor11,
y= Serial.parseInt(); LOW); Serial.print
y1=1.0*y; ("GRADOS = ");
Serial.print("Y= "); Serial.println (grados);
Serial.println(y1); }
n++; }
while(n==2) encoder0PinALast = nn;
{ //angulo positivo
if (Serial.available() > 2 ) if(pedro >0 && pedro <= 360)
{ z= Serial.parseInt(); { digitalWrite(motor1, HIGH);
z1=1.0*z; digitalWrite(motor11, LOW);
Serial.print("Z= "); Serial.println("positivo");
Serial.println(z1); }
n++; //angulo negativo
while(n==3) if(pedro <0 && pedro >= -360)
{ { digitalWrite(motor1, LOW);
teta1=atan(y1/x1); digitalWrite(motor11, HIGH);
teta2=asin((z1-30)/15); Serial.println("negativo");
teta3=(atan(-(x1/y1)))-(atan(y1/x1))-(asin((z1- }
30)/15));
teta11=(teta1*180)/3.1416; if (Serial.available() > 0 ) {
teta22=abs((teta2*180)/3.1416);
teta33=abs((teta3*180)/3.1416);
Serial.print("Angulo 1= "); resp=Serial.parseInt();
Serial.println(teta11); if(resp == 1)
Serial.print("Angulo 2= "); {
Serial.println(teta22); n=0;
Serial.print("Angulo 3= "); m=0;
Serial.println(teta33); Serial.println(n);
n++; }
while(n==4) if(resp == 2)
{ {
servo1.write(teta22); Serial.println("GRACIAS");
servo2.write(teta33); n=6;
pedro=teta11; while(n==6)
Serial.println("DESEA IMGRESAR OTROS {}
VALORES"); }
Serial.println("Ingrese 1 para SI y 2 para NO"); }
n++; }
while(n==5) }
{ }
nn = digitalRead(encoder0PinA); }
}
}
} }
delay(50); }

También podría gustarte