Robotic ARM SCARA

Este es un kit de brazo robótico de código abierto / impreso en 3D (tipo Scara). Basado en Arduino  y creado utilizando elementos comunes del mundo de los fabricantes / impresoras 3D. Controlado por la placa Ardunio Mega y programado en C.

pybot-Robotic-Arm-front-view

Brazo Scara

Especificaciones:

  • Altura total del bastidor del robot Scara: 270 mm.
  • Nº de eje: 3 (brazo) + 2 (abrazadera)
  • Altura de trabajo con la abrazadera montada: 145 mm
  • Longitud del brazo (extendido): 24 cm
  • Área de trabajo: 1190 cm2
  • Horizontal máx. velocidad: 220 mm / s
  • Velocidad máxima vertical: 55 mm / s
  • Peso total: 2120 gramos
  • Repetibilidad (mm): 0,4 mm
  • Capacidad máxima de carga útil (brazo extendido) = aprox. 150 g
  • Rango de movimiento por eje: Brazo: ~ 190 ° Antebrazo: ~ 280 °
  • Motores de conducción: motor paso a paso 3x NEMA17 1.8 °
  • Controladores de pinza / actuador: 2x SG90 / MG90 / MG92R servos

Componentes:

El SET de piezas impresas en 3D  están disponibles aquí.

Arduino-Uno-R3-compatible

Arduino UNO

  • 2x Motor Shield v2.

Motor-Shield-V2

  • 3x Varilla de acero (inoxidable 304/306) Ø 8 mm 250 mm.

varillainoxidable

  • 1x Varilla de acero roscada (eje Z) + tuerca Ø 8 mm 200 mm

varilla-roscada-tr8x2-8mm-400mm-con-tuerca

  • 1x acoplador de eje de aluminio (8to5)

Captura de pantalla 2021-06-13 a las 6.49.16

  • 3 motores paso a paso NEMA 17 (alto par).

pasoapaso

  • 2x SERVO SG90 / MG90 / MG92R.

sg90

  • Fuente de alimentación de 12V / 2A .
  • 2x polea GT2 de 16 dientes

eje

  • 2x rodamiento lineal LM8UU.

Captura de pantalla 2021-06-13 a las 6.42.09

  • 1x rodamiento lineal LM8LUU

Captura de pantalla 2021-06-13 a las 6.44.27

  • 5x Rodamiento de bolas circular 623zz

623zz

  • 1x Rodamiento de bolas circular 608zz

608ZZ

  • 3x Rodamiento de bolas circular 6002RS

Captura de pantalla 2021-06-13 a las 6.53.10

  • 3x Correa de distribución 280 GT2

Captura de pantalla 2021-06-13 a las 6.54.26

Montaje:

Primero, prepara todos los elementos para crear este Robot. Retira con cuidado la rebaba y el soporte de la pieza ANTEBRAZO. Prepara 2 llaves tipo Allen pero necesitarás un destornillador y tal vez también unos alicates.

Inserta los 2 rodamientos lineales cortos (LM8UU) en los canales laterales de la plataforma Z).

Captura de pantalla 2021-06-06 a las 7.30.39

Estos  elementos y el rodamiento lineal largo LM8LUU tienen que estar perfectamente insertados para evitar problemas con el eje Z.

Captura de pantalla 2021-06-06 a las 7.33.45

Con 4 tornillos M3 de 6 mm fija uno de los motores paso a paso al SOPORTE DEL TRIÁNGULO.

Captura de pantalla 2021-06-06 a las 7.36.11

Inserta los rodamientos de bolas 608ZZ y 6002 como se indica aquí. Comprueba si hay rebabas en las paredes de los huecos de las piezas 3D.

Captura de pantalla 2021-06-06 a las 7.37.35

Con 3 tornillos M3 de 10 mm, inserta y sujeta los 3 rodamientos de bolas 623.

Gira el BRAZO SUPERIOR e inserta una tuerca dentro de la cavidad hexagonal e introduzce un tornillo de 6 mm desde la parte posterior para que la tuerca permanezca en su lugar. Este tornillo se utilizará para tensar una correa de distribución si es necesario. No dejes que el tornillo se salga de la tuerca. Queremos una superficie lisa en ese lado de la pieza BRAZO SUPERIOR.

Verifica que el rodamiento de bolas pequeño se mueva libremente y que todo está ajustado.

Captura de pantalla 2021-06-06 a las 7.41.34

PARTE INFERIOR DEL BRAZO: inserta el rodamiento de bolas 6002.

NOTA: Esta pieza es muy FRÁGIL. Pero insertar el rodamiento correctamente dentro de esta reducción de engranajes es crucial.

Este paso puede requerir el uso de alicates para insertar lentamente el rodamiento dentro de la REDUCCIÓN. Está apretado pero encaja. No dejes que el rodamiento de bolas sobresalga de la pieza impresa en 3D.

Captura de pantalla 2021-06-06 a las 7.45.30

Ahora, empuja el rodamiento lineal largo dentro del rodamiento de bolas. Es posible que debas usar un mazo o martillo para hacer que el LM8LUU pase por el cojinete circular. El LM8LUU debe sobresalir aproximadamente 18 mm del rodamiento circular.

Captura de pantalla 2021-06-06 a las 7.46.36

¿Está suelto el cojinete lineal largo? Fíjalo envolviendo cinta adhesiva a su alrededor. Utiliza cinta adhesiva para aumentar el diámetro del rodamiento lineal e insértelo en el 6002. Solo una capa será suficiente.

Coloca 2 correas de distribución  y cierra el brazo con la pieza INFERIOR DEL BRAZO para que las correas queden atrapadas en el interior.

Atornilla un tornillo de 15 mm y captura un rodamiento de bolas 623zz con una tuerca autobloqueante en la parte superior. Verifica el rodamiento de bolas se pueda mover libremente después de apretar el tornillo.

Captura de pantalla 2021-06-06 a las 7.51.07

Inserta con cuidado el engranaje a través del rodamiento de bolas 608zz. Comprueba si hay rebabas en la parte superior que sobresalgan. Podría dificultar la inserción. Pero PRIMERO,  pasa la correa de distribución alrededor de los dientes del engranaje antes de colocarlo.

Captura de pantalla 2021-06-06 a las 7.55.18

Usa un tornillo de 15 mm a través de la TAPA para ayudar a que el engranaje entre en el rodamiento de bolas 608.

Inserta la parte superior superior del rodamiento LM8LUU largo en el orificio de la plataforma Z-BASE.

Ya tienes 2 correas colocadas correctamente (queda 1 más).

Ahora, pasa la tercera correa de distribución alrededor del brazo para que descanse sobre los dientes del engranaje ARM TOP como muestra la foto.

Captura de pantalla 2021-06-06 a las 7.59.10

Introduce la tuerca de la varilla roscada en el orificio de la plataforma central. Se mantendrá firme en el interior por sí sola.

Inserta las barras de acero inoxidable en los orificios de la PLACA DE BASE.

Ahora, pasa la estructura MOTOR TRIANGLE a lo largo de las barras de acero (empuja las 3 esquinas al mismo tiempo). Coloca el motor en su zócalo en la PLACA BASE.

Captura de pantalla 2021-06-06 a las 8.03.26

Coloca el acoplador de aluminio: utiliza la llave Allen de 2 mm para sujetar el interior del eje del motor.

¡IMPORTANTE !: los rodamientos lineales tienen pequeñas bolas de acero dentro de 4 canales internos. Esas bolas mantendrán los rodamientos moviéndose hacia arriba y hacia abajo sin problemas. Si pierdes demasiadas de estas bolas, el Z-BASE se saldrá mientras se mueve verticalmente.

FJIMG_20190823_130648-1024x668

Ahora es el momento de insertar las 3 barras de acero verticales en los 3 rodamientos lineales, todo al mismo tiempo. Por lo tanto, alinea con cuidado las barras de acero + varilla roscada y empujea suavemente la Z-BASE hacia abajo mientras gira lentamente la varilla roscada central. Haciendo esto, controlarás el proceso simplemente girando la varilla central. Si encuentras resistencia, deténte, vuelve a alinear y comienza de nuevo.

Coloca las poleas de 16 dientes en los ejes de los motores. Observa la orientación de las poleas. No aprietes completamente los tornillos. El motor en la parte superior será el motor 2 en la plataforma Z-BASE, el otro, el motor 1.

Deberá reajustas las poleas en lo alto de sus ejes más tarde.
Pasa las correas de distribución GT2 alrededor de las poleas y empuje los motores hacia atrás hasta que las correas estén apretadas, luego fije los motores con los tornillos.

Captura de pantalla 2021-06-06 a las 8.26.39

Si todo salió bien, las correas no tocarán la varilla roscada.
Coloca el TRIÁNGULO SUPERIOR. Esta parte mantendrá la varilla roscada recta.

Captura de pantalla 2021-06-06 a las 8.28.10

Ahora, introduce las tuercas 2x dentro de los orificios ARM BOTTOM y fija esta parte con 2x tornillos de 15 mm insertados desde la cara superior del brazo.

Haz lo mismo con el ANTEBRAZO, inserte 2 tuercas en el zócalo y usa 2 tornillos de 40mm para sujetarlo.

Así es como se ve el SCARA hasta ahora.

Captura de pantalla 2021-06-06 a las 8.31.33

PINZA. Guía de montaje

Esta pinza robótica hecha con una impresora 3D se puede controlar con dos servos económicos (MG90 o SG90).

jjRobots-Robotic-Clamp-Grabber-1024x841

El problema con los servos es que tienden a calentarse (incluso dañarse) cuando los fuerza a aplicar grande y continua. La  solución que usa LEGO: dejar que una banda elástica cierre la pinza. El servo moverá la abrazadera a una determinada posición, a partir de ahí, la goma la cerrará por completo.

La pinza es lo suficientemente fuerte para levantar objetos de tamaño mediano.

Dependiendo de la fuerza que desees que aplique la goma al cerrar la abrazadera (o la longitud de la banda de goma que tenga), deberás colocarla en los diferentes orificios creados para dos tornillos M3 de 6 mm.

IMG_20190516_150645-1024x749Lista de materiales:

  • Piezas 3D
  • 1x rodamiento de bolas 623zz
  • 1x tornillo M3 15mm + arandela
  • 2x perno M3 de 6 mm
  • 2x servos SG90 o MG90 (recomendados)

Inserta el rodamiento de bolas 623zz en el orificio del lado izquierdo de la pinza. Se utilizará un tornillo + arandela M3 de 15 mm para sujetar el lado a la base.

Coloca los servos. En este caso estamos usando dos modelos de servos diferentes, el SG90 (azul) y el MG90 (negro). La diferencia: los engranajes, el MG90 tiene engranajes metálicos por lo que durará un poco más que el SG90 (con engranajes de Nylon).

Utiliza el tornillo M 2.5 para fijar el servo  la base.

fixing-the-servo

Primero, tendrás que encontrar el límite de rotación del servo girando el servo en sentido antihorario (foto 1). Una vez que lo hayas encontrado, saca la pieza del engranaje y vuelve a colocarla pero como se indica en la foto número 1: completamente horizontal. Luego, gíralo 90º en el sentido de las agujas del reloj, ahora está listo para recibir el tornillo. Corta los extremos como se indica en la foto 2.

looking-for-the-right-position

Fija los tornillos a la base..

NO LOS APRIETES DEMASIADO, o el servo tendrá que trabajar innecesariamente para abrir y cerrar la abrazadera. Todas las tolerancias son bastante pequeñas y si fuerza el plástico, se doblará aumentando la fricción.

IMG_20190523_182454-1024x527
Atornille los pernos 2x M3 de 6 mm como arriba / abajo para la banda de goma

Se recomienda EVA FOAM si desea aumentar el agarre de las uñas.

ELECTRÓNICA.

Vamos a mover con precisión 3 motores paso a paso y 2 servos. El brazo robótico SCARA se controlará mediante un cable USB o WIFI.

Hemos optado por utilizar un Arduino Uno R3.

A continuación, el diagrama de la electrónica encargada de controlar el Robot.

ScaraBrazo_bb

CÓDIGO.

Comenzaremos con un código de prueba

#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include <Servo.h>

Adafruit_MotorShield AFMSbot(0x61); // Puente del extremo derecho cerrado
Adafruit_MotorShield AFMStop(0x60); // Dirección predeterminada, sin puentes

// En el shield superior, conecta dos steppers, cada uno con 200 pasos
//(1.8 grados)
Adafruit_StepperMotor *myStepper2 = AFMStop.getStepper(200, 1);
Adafruit_StepperMotor *myStepper3 = AFMStop.getStepper(200, 2);

// En el shield inferior conecta stepper al puerto M3/M4 con 200 pasos
Adafruit_StepperMotor *myStepper1 = AFMSbot.getStepper(200, 2);

Servo myservo1, myservo2;

int i, val;

void setup() {

Serial.begin(9600);

AFMSbot.begin(); // Iniciar el shield inferior
AFMStop.begin(); // Iniciar el shield superior

myStepper1->setSpeed(10); // 10 rpm
myStepper2->setSpeed(10); // 10 rpm
myStepper3->setSpeed(10); // 10 rpm

myservo1.attach(9);
myservo2.attach(10);

}

/* SINGLE: consiste en excitar una bobina cada vez. Este tipo se suele llamar movimiento por ola
o par menor. No es el que se usa comúnmente, pero se suele utilizar para ahorrar energía.
Por el contrario, se reduce par.
DOUBLE: este tipo de movimiento consiste en excitar dos bobinas a la vez. También se conoce como
par máximo y nos ofrece, el mayor par y el mayor consumo de energía.
INTERLAVE: este tipo de movimiento reduce a la mitad los pasos. También conocido como medio paso,
aumentamos por dos la resolución (los grados que gira cada paso) pero reducimos la velocidad
a la mitad. El consumo está entre medias de los otros dos movimientos.
MICROSTEP: este movimiento se utiliza para garantizar que el motor se mueva de una manera suave
entre los pasos. Es ideal para reducir el ruido mecánico y evitar resonancias. No aumenta
la resolución pero mantiene el par del motor.
*/
void loop() {

// Serial.println(«Single coil steps»);
myStepper1->step(100, FORWARD, SINGLE);
myStepper1->step(100, BACKWARD, SINGLE);

//Serial.println(«Double coil steps»);
myStepper1->step(100, FORWARD, DOUBLE);
myStepper1->step(100, BACKWARD, DOUBLE);

//Serial.println(«Interleave coil steps»);
myStepper1->step(100, FORWARD, INTERLEAVE);
myStepper1->step(100, BACKWARD, INTERLEAVE);

//Serial.println(«Microstep steps»);
myStepper1->step(50, FORWARD, MICROSTEP);
myStepper1->step(50, BACKWARD, MICROSTEP);

// si queremos mover varios motores a la vez
// mejor utilizar el método onestep()
for (i = 0; i < 100; i++) {
myStepper1->onestep(FORWARD, INTERLEAVE);
myStepper2->onestep(BACKWARD, DOUBLE);
myStepper3->onestep(FORWARD, MICROSTEP);
delay(3);
}

for (i = 100; i > 0; i–) {
myStepper1->onestep(BACKWARD, INTERLEAVE);
myStepper2->onestep(FORWARD, DOUBLE);
myStepper3->onestep(BACKWARD, MICROSTEP);
delay(3);
}

for (i = 0; i < 100; i++) {
myStepper1->onestep(FORWARD, DOUBLE);
myStepper2->onestep(BACKWARD, INTERLEAVE);
myStepper3->onestep(FORWARD, MICROSTEP);
delay(3);
}

for (i = 100; i > 0; i–) {
myStepper1->onestep(BACKWARD, DOUBLE);
myStepper2->onestep(FORWARD, INTERLEAVE);
myStepper3->onestep(BACKWARD, MICROSTEP);
delay(3);
}
}