Select Page

Armas la estructura, ensamblás la electrónica, cargas el código y listo! Este kit es ideal para fines educativos. Es muy interesante para introducirse en el área de la electrónica y de la programación sin conocimientos previos. Ya que no solo trae todo lo necesario funcionar si no que sus componentes electrónicos se pueden adaptar a otros proyectos y se pueden ir agregando sensores para lograr nuevas formas de trabajo mediante programación. Al final de la publicación pueden encontrar algunos videos.

Brazo robotico Armado

En este post van a encontrar una presentación con la explicación del armado de la estructura realizada desde nuestra propia experiencia con el armado. También la descripción del conexionado, y por ultimo el código de programación.

Caracteristicas Técnicas

El diseño del brazito fue extraido de la pagina Thingiverse, cortado en acrilico 3mm. Posee 4 ejes de libertad trabajando con igual cantidad de servomotores sg90. Como controlador elegimos un Arduino Nano junto con un shield para facilitar el conexionado de los motores y los joystick; lo anterior para evitar el uso de un protoboard y posibles errores en el conexionado.

garra brazo robotico

Tutorial de Armado de MeARM: 

Armado de brazo robotico: Descargar presentación

Ver presentación online >>

Conexionado

Imagen de Conexionado
Imagen de Conexionado

Para empezar a entender el conexionado empezamos con el shield. Como se puede ver en la parte superior por cada uno de los pines digitales tenemos un pin de de 5v y otro de gnd. Esto pasa también en la parte inferior con los pines analógicos. De esta manera todos los pines azules serian SEÑAL los rojos 5V y los negros GND.
Esto facilita muchísimo la conexión de los servos por ejemplo sin necesitar un protoboard.

En segundo lugar tenemos los joysticks. Cada uno se puede comparar con 2 potenciómetros. Uno para cada eje. Los pines de datos son VRx y VRy. Los pines VRy van a los pines analogicos A0 y A2. Y los VRx a los A1 y A3. Luego para la alimentacion usamos los pines que tenemos a disposicion al lado de la zona de señal. El pin SW no se conecta para este proyecto, corresponde al pulsador que viene integrado en los modulos.

Brazo Robótico MeARM 2

Al conectar los servomotores se deben cumplir las siguientes reglas de colores:

  • Rojo = Rojo (Alimentación de 5V, obtenidos desde una fuente externa, no del microcontrolador)
  • Amarillo = Naranja (Señal PWM, proveniente desde el microcontrolador)
  • Negro = Café (Tierra GND, las tierras del microcontrolador y la fuente externa de 5V deben estar conectadas).

Para que los servomotores estén correctamente alineados al momento del ensamblaje, éstos deben tener un giro inicial de 90°, a excepción del servo de la garra, donde su giro inicial debe ser de 25°. Esta calibración puede ser realizada a mano (atornillando la hélice al servo y rotando manualmente los servomotores) o mediante código para una mayor precisión (recomendado). Para su calibración, ver en la sección de Código de Programación más abajo.

Productos incluidos en el kit

  • Estructura completa: Piezas de acrílico transparente 3mm cortadas con láser
  • Tornillería
  • Servomotores (4)
  • Arduino Nano con cable USB
  • Nano Shield para facilitar las conexiones de los servos y joystick
  • Modulo Joystick (2).

Código de Programacion

Descargar código: Brazo_Robotico.rar

El código de calibración utilizando los pines digitales del Arduino [Conexión Directa] es el siguiente:

#include <Servo.h>

Servo base, left, right, claw; // 4 objetos servo

void setup()
{
    Serial.begin(9600);
    base.attach(11); // servo base, pin  Arduino
    left.attach(10); // servo izquierdo, pin 4 Arduino
    right.attach(9); // servo derecho, pin 5 Arduino
    claw.attach(6); // servo garra, pin 6 Arduino
}
void loop()
{
    base.write(90); // servo base, rotado 90° inicialmente
    left.write(90); // servo izquierdo, rotado 90° inicialmente
    right.write(90); // servo derecho, rotado 90° inicialmente
    claw.write(25); // servo garra, rotado 25° inicialmente
    delay(300); // una actualización constante puede dañar los servos
} 

Conecta la placa Arduino Nano a su computadora via el cable USB incluido en el kit Brazo Robotico. Para cargar en la placa Arduino el programa que habías copiado en el Arduino IDE, primero debemos abrir la pestaña «Herramientas», selecciona «Placa: Arduino/Genuino Uno» y elige la opción «Arduino/Genuino UNO».

Brazo Robótico MeARM 3

Ahora, configura el puerto de trabajo de la placa Arduino Nano: ve a la pestaña “Herramientas”, hacé click en la opción “Puerto” y elegí el puerto COM en el que está conectada la placa.

Brazo Robótico MeARM 4

Nota:

Si tienes dudas sobre el puerto en el que está conectada la placa, conectala y desconectala. Comprobá desde el menú cuál es el puerto que aparece (al conectarla) y desaparece (al desconectarla).

Hacé click en la flecha horizontal al que le llaman «Subir», situada en la esquina superior izquierda del programa y aguardar a que el programa se cargue y aparezca el mensaje «Subido».

Brazo Robótico MeARM 5
Brazo Robótico MeARM 6

Continuá realizando el montaje del Brazo Robotico hasta que llegues al apartado de «Calibración del Servomotor» de cada uno de los 4 servomotores. Desde ahí, conectar cada servomotor al puerto de la protoboard que corresponda, como se indica en la tabla a continuación. Asegurate de que la placa sensor esté correctamente conectada a la placa Arduino Nano.

Nota

Recuerda que para calibrar los servomotores tenés que conectar el cable USB de la computadora a la placa Arduino Nano para suministrarle energía a todo el sistema.

Brazo Robótico MeARM 7
  • El servo de la base se conecta al pin digital 11
  • El servo del lado izquierdo se conecta al pin digital 10
  • El servo del lado derecho se conecta al pin digital 9
  • El servo de la pinza se conecta al pin digital 6

Acordate de la posición de los conectores, comprobalas con la siguiente imagen.

Brazo Robótico MeARM 8

El servomotor conectado se colocará en la posición indicada como “Tope de movimiento”. Sitúe la pieza que va montada en el eje del servomotor de la forma indicada en el manual.

Software Arduino

Necesitaremos tener el software Arduino instalado en la PC y tener el puerto USB de los microcontroladores conectado a un puerto USB de la computadora, a través de un cable para transferir el código sketch al Arduino. Si aún no tiene el software Arduino, puede descargarlo. A continuación tenemos el código fuente de Arduino. Puede copiar y pegar esto en el IDE de Arduino y guardarlo con un nombre que mejor lo represente. Pulse el botón de la flecha de carga para transferirlo al microcontrolador.

CÓDIGO 1

El siguiente vídeo muestra cómo funciona el código programado a continuación.

  • El servo de la base se conecta al pin 11
  • El servo del lado izquierdo se conecta al pin 10
  • El servo del lado derecho se conecta al pin 9
  • El servo de la pinza se conecta al pin 6

La rutina del vídeo se puede programar con el siguiente ejemplo Arduino (copiá y pegá el siguiente código):

/* 
    En este proyecto controlamos el brazo robotico
*/

#include <Servo.h>    // incluimos la biblioteca Servo 

int angulo0 = 120;     
int angulo1 = 90;     
int angulo2 = 110;
int angulo3 = 30;

Servo miservo0;        // creamos un objecto servo para controlar el motor 
Servo miservo1;        // creamos un objecto servo1 para controlar el motor 
Servo miservo2;        // creamos un objecto servo2 para controlar el motor 
Servo miservo3;        // creamos un objecto servo3 para controlar el motor 


void setup() { 
    miservo0.attach(11);    // asigna el servo al pin 11, servo de la base
    miservo1.attach(10);    // asigna el servo al pin 10, servo de la izquierda
    miservo2.attach(9);     // asigna el servo al pin 9, servo de la derecha
    miservo3.attach(6);     // asigna el servo al pin 6, servo de la pinza
}

void loop() 
{ 

    miservo1.write(110);    // manda al servo de la izquierda la posición
    delay(1000); 

    //-----Modulo movimiento servo (Garra) (abrir)

    for(int angulo3 = 30; angulo3 < 100; angulo3 += 1)  // un ciclo para mover el servo entre los 50 y los 120 grados  
    {
        miservo3.write(angulo3);    // manda al servo la posicion
        delay(25);                  // espera unos milisegundos para que el servo llegue a su posicion
    }
    delay(1000); 

    //-----Modulo movimiento servo (derecho) (subir)

    for(int angulo2 = 110; angulo2 >= 70; angulo2 -= 1) // un ciclo para mover el servo entre los 120 y los 50 grados  
    { 
        miservo2.write(angulo2);    // manda al servo la posicion
        delay(25);                  // espera unos milisegundos para que el servo llegue a su posicion
    }
    delay(1000);

    //-----Modulo movimiento servo (Base) 

    for(int angulo0 = 120; angulo0 >= 50; angulo0 -= 1) // un ciclo para mover el servo entre los 120 y los 20 grados                             
    {
        miservo0.write(angulo0);    // manda al servo la posicion
        delay(25);                  // espera unos milisegundos para que el servo llegue a su posicion
    }

    delay(1000); 

    //-----Modulo movimiento servo (derecho) (bajar)

    for(int angulo2 = 70; angulo2 < 110; angulo2 += 1)  // un ciclo para mover el servo entre los 50 y los 120 grados  
    { 
        miservo2.write(angulo2);    // manda al servo la posicion
        delay(25);                  // espera unos milisegundos para que el servo llegue a su posicion
    }
    delay(1000);    // espera unos milisegundos para que el servo llegue a su posicion

    //-----Modulo movimiento servo (Garra) (cerrar)

    for(int angulo3 = 100; angulo3 >= 30; angulo3 -= 1) // un ciclo para mover el servo entre los 100 y los 30 grados                             
    {
        miservo3.write(angulo3);    // manda al servo la posición
        delay(25);                  // espera unos milisegundos para que el servo llegue a su posición
    }

    delay(1000); 

    //-----Modulo movimiento servo ( derecho) (subir)

    for(int angulo2 = 110; angulo2 >= 70; angulo2 -= 1) // un ciclo para mover el servo entre los 110 y los 70 grados  
    { 
        miservo2.write(angulo2);    // manda al servo la posición
        delay(25);                  // espera unos milisegundos para que el servo llegue a su posición
    }
    delay(1000);

    //-----Modulo movimiento servo 2 (Base) (centrar)

    for(int angulo0 = 50; angulo0 < 120; angulo0 += 1)  // un ciclo para mover el servo entre los 50 y los 120 grados  
    { 
        miservo0.write(angulo0);    // manda al servo la posición
        delay(25);                  // espera unos milisegundos para que el servo llegue a su posición
    }
    delay(1000);    // espera unos milisegundos para que el servo llegue a su posición

    //-----Modulo movimiento servo (derecho) (bajar)

    for(int angulo2 = 70; angulo2 < 110; angulo2 += 1)  // un ciclo para mover el servo entre los 70 y los 110 grados  
    { 
        miservo2.write(angulo2);    // manda al servo la posición
        delay(25);                  // espera unos milisegundos para que el servo llegue a su posición
    }
    delay(1000);    // espera unos milisegundos para que el servo llegue a su posición
} 

CODIGO 2

La aplicación MeCon incluye código fuente Arduino de ejemplo para controlar los servomotores de robot, a través del puerto COM de su PC. Control manual, así como grabar y reproducir archivos de trayectoria de movimiento. El código de ejemplo de Arduino muestra cómo controlar la velocidad de actualización de la posición del servo y invertir la rotación del motor a través de los comandos al puerto serie del microprocesador (puerto USB). MeCon permite el control de movimiento rápido sin tener que aprender el código y o construir circuitos electrónicos de adición. MeCon se comunica a través del puerto COM con el microcontrolador Arduino con el mismo cable USB y los puertos utilizados para programar el Arduino.

Código Arduino para MeCon Software

Cargá el siguiente código en su placa Arduino. Luego, descargá el software Mecon de control de servo de brazo robótico e instalá el software.

// MeArmMeCon-A04.ino
// Use With MeCon.exe Ver0.4 Windows Software for MeArm Motion Control


#include <Servo.h>

//MeArm TIENE 4 SERVOS
Servo xServo;  // crear objeto servo, base del brazo servo - movimiento de izq-der
Servo yServo;  // crear objeto servo, servo de lado izquierdo - movimiento adelante-atrás
Servo zServo;  // crear objeto servo, servo de lado derecho - movimiento adelante-atrás
Servo clawServo;  // crear objeto servo, servo del extremo del brazo - abre-cierra el puño de la mano.

//servo positions values, expects 1-180 deg.
int xPos;
int yPos;
int zPos;
int clawPos;

/*************** INIT AT STARTUP ***************/

void setup() {    // the setup function runs once when you press reset or power the board

    // assign servo to pin numbers
    xServo.attach(11);  // attaches the servo on pin 11 to the servo object
    yServo.attach(10);  // attaches the servo on pin 10 to the servo object
    zServo.attach(9);  // attaches the servo on pin 9 to the servo object
    clawServo.attach(6);  // attaches the servo on pin 6 to the servo object

    // initialize serial port
    Serial.begin(9600);

    // Debug only send serial message to host com port terminal window in Arduino IDE
    //Serial.print("*** MeCom Test V04 ***.");   // send program name, uncomment for debug connection test
 }

// ****************************************************************************
// ************************* MAIN PROGRAM LOOP START **************************
// ****************************************************************************

void loop() {
  //serial in packet pattern = xVal,yVal,zVal,clawVal + end of packet char 'x'
  while (Serial.available() > 0) {
    xPos = Serial.parseInt();
    yPos = Serial.parseInt();
    zPos = Serial.parseInt();
    clawPos = Serial.parseInt();

    if (Serial.read() == 'x') { // Detect end of packet char 'x', go ahead and update servo positions

      // ACTUALIZAR POSICIONES SERVO
      xServo.write(xPos);
      yServo.write(yPos);
      zServo.write(zPos);
      clawServo.write(clawPos);
    }
  }
}

Los archivos están en un paquete .zip que contiene el archivo .exe
Descargá en el directorio de su elección y hacé click derecho en el archivo ZIP y elegí «Extraer todo» para descomprimir los archivos y usarlo. MeCon actualmente se ejecuta sólo en sistemas operativos Windows.

Brazo Robótico MeARM 9

Configurá el puerto según la imagen

Brazo Robótico MeARM 10

Nuestro Brazo Robótico ya está preparado y listo para aceptar órdenes de movimiento desde el programa controlador de movimiento de MeCon.

MeCon está en desarrollo activo en un sistema win7 con muchas más características planificadas.

Proyectos brazo robótico

A %d blogueros les gusta esto: