Brazo robotico


Este brazo robótico en miniatura reproduce el comportamiento de un brazo robótico industrial. Con 3 grados de libertad y una pinza. Puede funcionar de dos maneras, o bien a través de su mando o bien a través de programación de movimientos. El Kit incluye 3 laminas de MDF precortadas a laser, 4 miniservos, tarjeta controladora, manual de ensamblado, software de manejo y tornilleria. Esta basado en el popular MeArm. Es compatible con Arduino o cualquier tarjeta de desarrollo o microcontrolador con salidas digitales o de PWM. Es un proyecto tecnológico escolar para hacer que hasta los más pequeños aprendan a construir su propio brazo robótico. Es económico, divertido de armar y una gran herramienta educativa.
  • Chasis para armar el brazo.
  • Listo para cualquier plataforma de control.
  • Totalmente cortado a laser.
  • Diseñado para optimizar la fuerza de los miniservos.
  • Listo para que instales tus miniservos.
  • Pintalo del color que mas te guste!
  • Se arma fácilmente.
  • Manual de ensamblado1
  • Manual de ensamblado2




Un servomotor, también llamado servo, es un dispositivo similar a un motor de corriente continua que tiene la capacidad de ubicarse en cualquier posición dentro de su rango de operación, y mantenerse estable en dicha posición.



Antes de comenzar a montar tu Brazo robotico, sigue estos pasos:


Descarga e instala el programa Arduino IDE ingresando a https://www.arduino.cc/en/Main/Software. Se encuentra disponible para Windows, Mac OS y Linux. 

Calibrado


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 de el ensamblaje, éstos deben tener un giro inicial de 90°, a excepción del servo de la garra cuyo 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). 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




3. Toma las placa arduino UNO y la miniprotoboard, incluidas en el kit brazo robotico.

4. Coloca la placa la miniboard sobre la placa arduino UNO, haciendo coincidir los pines de contacto con el cableado de la miniprotoboard como se muestra en la imagen



5. Conecta la placa arduino UNO al ordenador, utilizando el cable USB incluido en el kit Brazo robotico.

6. Carga en la placa arduino UNO el programa que has copiado en Arduino IDE, de la siguiente manera:

a. Configura Arduino IDE para que trabaje con la placa arduino UNO: abre la pestaña “Herramientas”, selecciona “Placa: Arduino/Genuino Uno” y elige la opción “Arduino/Genuino UNO”.


b. Configura el puerto de trabajo de tu placa arduino UNO: ve a la pestaña “Herramientas”, haz click en la opción “Puerto” y selecciona el puerto COM en el que esté conectada la placa.

Nota: si tienes dudas sobre el puerto en el que está conectada la placa, conéctala y desconéctala, y comprueba en el menú cuál es el puerto que aparece (al conectarla) y desaparece (al desconectarla).

c. Haz clic en la flecha horizontal denominada “Subir” situada en la esquina superior izquierda del programa.

d. Aguarda a que el programa se cargue y aparezca el mensaje “Subido”.


7. Continúa realizando el montaje del Brazo Robotico hasta llegar al apartado de “Calibración del Servomotor” de cada uno de los 4 servomotores. Una vez allí, conecta cada servomotor al puerto de la protoboard que corresponda, como se indica en la tabla a continuación. Asegúrate de que la placa sensor esté correctamente conectada a la placa arduino UNO.

Nota: Recuerda que para calibrar los servomotores debes conectar el cable USB del ordenador a la placa arduino UNO, para suministrar de energía a todo el sistema.

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

*** Recuerda la posición de los conectores, compruébalo con la siguiente imagen.



8. El servomotor conectado se situará en la posición indicada como “Tope de movimiento”.
9. Sitúa la pieza que va montada en el eje del servomotor de la forma indicada en el manual. Sigue las imágenes a continuación para situar la pieza de forma correcta.



Descargue el software para controlar, programar y construir su robot.


Software Arduino

Necesitaremos tener el software Arduino instalado en el 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 de muestra 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 significativo. Pulse el botón de flecha de carga para transferir al microcontrolador.

Ejemplo código 1

/*
  Control de brazo robótico con servomotores
*/

#include <Servo.h>

// Declaración de servos
Servo servoBase;      // Servo en la base (Pin 11)
Servo servoIzq;       // Servo izquierdo (Pin 10)
Servo servoDer;       // Servo derecho (Pin 9)
Servo servoPinza;     // Servo de la garra/pinza (Pin 6)

// Función para mover suavemente un servo
void moverServo(Servo &servo, int desde, int hasta, int delayMs = 25) {
  int paso = (desde < hasta) ? 1 : -1;
  for (int angulo = desde; angulo != hasta; angulo += paso) {
    servo.write(angulo);
    delay(delayMs);
  }
  servo.write(hasta);  // Asegura llegar exactamente al ángulo final
}

// Configuración inicial
void setup() {
  servoBase.attach(11);
  servoIzq.attach(10);
  servoDer.attach(9);
  servoPinza.attach(6);
}

// Bucle principal
void loop() {
  // 1. Mover brazo izquierdo
  servoIzq.write(110);
  delay(1000);

  // 2. Abrir pinza (30° a 100°)
  moverServo(servoPinza, 30, 100);
  delay(1000);

  // 3. Subir brazo derecho (110° a 70°)
  moverServo(servoDer, 110, 70);
  delay(1000);

  // 4. Girar base (120° a 50°)
  moverServo(servoBase, 120, 50);
  delay(1000);

  // 5. Bajar brazo derecho (70° a 110°)
  moverServo(servoDer, 70, 110);
  delay(1000);

  // 6. Cerrar pinza (100° a 30°)
  moverServo(servoPinza, 100, 30);
  delay(1000);

  // 7. Subir brazo derecho nuevamente
  moverServo(servoDer, 110, 70);
  delay(1000);

  // 8. Regresar base a posición inicial (50° a 120°)
  moverServo(servoBase, 50, 120);
  delay(1000);

  // 9. Bajar brazo derecho (70° a 110°)
  moverServo(servoDer, 70, 110);
  delay(1000);
}


Ejemplo código 2

#include <Servo.h>

// Declaramos los 4 servos
Servo baseServo;
Servo shoulderServo;
Servo elbowServo;
Servo gripperServo;

// Pines a los que están conectados los servos
const int basePin = 3;
const int shoulderPin = 5;
const int elbowPin = 6;
const int gripperPin = 9;

// Posiciones actuales
int posBase = 90;
int posShoulder = 90;
int posElbow = 90;
int posGripper = 0;

// Función para mover suavemente un servo
void smoothMove(Servo &servo, int &currentPos, int targetPos, int stepDelay = 10) {
  if (currentPos == targetPos) return;

  int step = (targetPos > currentPos) ? 1 : -1;
  for (int pos = currentPos; pos != targetPos; pos += step) {
    servo.write(pos);
    delay(stepDelay);
  }
  currentPos = targetPos;
}

// Movimiento compuesto
void moveArm(int base, int shoulder, int elbow, int gripper) {
  // Mueve todos los servos suavemente a la vez
  while (posBase != base || posShoulder != shoulder || posElbow != elbow || posGripper != gripper) {
    if (posBase != base) {
      posBase += (base > posBase) ? 1 : -1;
      baseServo.write(posBase);
    }
    if (posShoulder != shoulder) {
      posShoulder += (shoulder > posShoulder) ? 1 : -1;
      shoulderServo.write(posShoulder);
    }
    if (posElbow != elbow) {
      posElbow += (elbow > posElbow) ? 1 : -1;
      elbowServo.write(posElbow);
    }
    if (posGripper != gripper) {
      posGripper += (gripper > posGripper) ? 1 : -1;
      gripperServo.write(posGripper);
    }
    delay(10); // control de suavidad
  }
}

void setup() {
  baseServo.attach(basePin);
  shoulderServo.attach(shoulderPin);
  elbowServo.attach(elbowPin);
  gripperServo.attach(gripperPin);

  // Posición inicial
  moveArm(90, 90, 90, 0);
  delay(1000);
}

void loop() {
  // Abrir pinza y bajar brazo
  moveArm(90, 120, 60, 0);
  delay(500);

  // Cerrar pinza
  moveArm(90, 120, 60, 45);
  delay(500);

  // Levantar brazo
  moveArm(90, 60, 120, 45);
  delay(500);

  // Girar base
  moveArm(150, 60, 120, 45);
  delay(500);

  // Soltar objeto
  moveArm(150, 60, 120, 0);
  delay(500);

  // Volver a posición inicial
  moveArm(90, 90, 90, 0);
  delay(1000);
}





Contáctenos directamente o por mercadolibre: 
contactomediatk@gmail.com
Cel: 3107964779
Bogotá. Colombia

También puede comprar por mercadolibre, Colombia:
o copiar y pegar en la barra de direcciones:


https://listado.mercadolibre.com.co/_CustId_168078870?item_id=MCO452143344&category_id=MCO1910&seller_id=168078870&client=recoview-selleritems&recos_listing=true

https://eshops.mercadolibre.com.co/mediatk


brazo robotico

12 comentarios:

  1. me sale el error del puerto ya intente con otro pc y no funciona

    ResponderEliminar
  2. muy buena información, gracias por el código de 4 servos.

    ResponderEliminar
  3. El brazo tiembla y hace movimientos que no le indico... ¿A qué se deberá? ayuuudaaaaa porfavor xc

    ResponderEliminar
  4. tengo un problema en la compilacion con el segundo codigo ayuda por favor este es el error ((exit status 1
    'xServo' was not declared in this scope))

    ResponderEliminar
  5. Buenas tardes, no tengo entendido como conseguir el chasis del brazo, no se cuales son las medidas tampoco, ayuda por favor

    ResponderEliminar