Robotica de Colombia

Control Brazo Robótico de 4 Servomotores con Computadora

bnr-arrow-1-1.png
Nivel INTERMEDIO
Arduino Uno R3

Brazo Robótico de 4 Servomotores

El Brazo Robótico de 4 Servomotores es un manipulador que contiene 4 servomotores sg90 o 4 servomotores mg90s, de tamaño educativo y de Código Abierto, manipulable con cualquier placa que maneje servomotores básicos.

En la siguiente guía encontrarás todos los pasos necesarios para controlar tu Brazo Robótico de 4 Servomotores utilizando una computadora, el Arduino IDE y el monitor serial. Enviaremos varias letras del teclado a través del monitor serial, de modo que cada letra moverá un motor hacia la derecha o la izquierda, permitiéndonos controlar todo el brazo con el teclado.

Recomendaciones Iniciales

Antes de empezar con esta guía, asegúrate de desconectar el pin conector del servomotor de la Garra. Si la Garra está conectada y cerrada, el servomotor podría forzarse y quemarse.

Para evitar problemas, primero calibra la Garra:

  • Cuando la Garra está completamente abierta, debería estar a 0 grados.
  • Cuando la Garra está completamente cerrada, debería estar entre 40 y 50 grados.

Si la Garra está cerrada a más de 50 grados, estará aplicando demasiada fuerza, lo que podría forzar el servomotor y dañarlo si se mantiene en ese estado por mucho tiempo. Así que ajusta cuidadosamente para proteger tu equipo.

Si deseas saber el Ángulo del servomotor, te recomendamos seguir la siguiente guía:

→ Cómo Probar Servomotores con Arduino

Materiales Necesarios:

Brazo Robotico MeArm Kit Negro

$114,970.00

Arduino Uno R3 + Cable de Datos

$24,990.00

Jumpers Dupont M-M 10cm x 40 Und

$6,000.00

Protoboard Mini 170 Puntos

$5,500.00

Explicación Código de Control

1. Librerías y Variables del Brazo

En esta parte del código, incluimos la librería Servo.h, que nos permite controlar servomotores con Arduino. Luego, declaramos cuatro objetos de tipo Servo para controlar las diferentes partes del Brazo Robótico 4 Servomotores: la rotación, el hombro, el codo y la garra.

También inicializamos las variables de ángulo para cada uno de estos componentes. Estas variables nos ayudarán a mover los servomotores a la posición deseada.

#include <Servo.h>
Servo rotacion; Servo hombro;...
int anguloRotacion = 90; int anguloHombro = 90;
2. Configuración de Pines (void setup)

En la función setup(), que se ejecuta una sola vez al iniciar el programa, asignamos los pines de Arduino a cada servomotor utilizando el método attach(). Esto conecta físicamente los servomotores a los pines digitales 2, 5, 7 y 8 de la placa Arduino. Además, iniciamos la comunicación serial a 9600 baudios con Serial.begin(9600).

void setup() {
  rotacion.attach(2); hombro.attach(5);
  Serial.begin(9600);
}
3. Lógica del Bucle (void loop)

La función loop() se ejecuta repetidamente. Verificamos datos disponibles con Serial.available() y leemos con Serial.read(). Dependiendo del comando recibido, ajustamos el ángulo incrementándolo o disminuyéndolo en 3 grados. Usamos constrain() para los límites y movemos los servos con write().

void loop() {
  if (Serial.available()) {
    comando = Serial.read();
    if (comando == 'a') anguloRotacion += 3;
  }
  rotacion.write(anguloRotacion);
}
📄 Código Completo Arduino

A continuación encontrarás el código completo en lenguaje Arduino:

Versión Institucional Robótica de Colombia
#include <Servo.h>

/* * Movimiento Brazo Robotico Bluetooth RDC 
 * Desarrollado por RDC - Robotica de Colombia 
 * Visitanos en nuestras redes oficiales 
 */

Servo rotacion; Servo hombro; Servo codo; Servo garra;

int anguloRotacion = 90; 
int anguloHombro = 90;
int anguloCodo = 90; 
int anguloGarra = 10; 

const int reposoRotacion = 100; const int reposoHombro = 90;
const int reposoCodo = 110;     const int reposoGarra = 10;

const int incrementoRampa = 5; 
const int tiempoEntrePasos = 30; 

void setup() {
  rotacion.attach(2); hombro.attach(5);
  codo.attach(7); garra.attach(8);
  Serial.begin(9600);
  moverServosConRampa(reposoRotacion, reposoHombro, reposoCodo, reposoGarra);
  mostrarMenu();
}

void loop() {
  if (Serial.available()) {
    char opcion = Serial.read();
    if (opcion == '1') {
      ejecutarRutinas();
      moverServosConRampa(reposoRotacion, reposoHombro, reposoCodo, reposoGarra);
    } else if (opcion == '2') {
      controlManual();
    }
  }
}

void controlManual() {
  while (true) {
    if (Serial.available()) {
      char comando = Serial.read();
      if (comando == 'm') break;
      switch (comando) {
        case 'a': anguloRotacion = constrain(anguloRotacion + 15, 0, 180); break;
        case 's': anguloRotacion = constrain(anguloRotacion - 15, 0, 180); break;
        case 'e': anguloHombro = constrain(anguloHombro + 15, 70, 160); break;
        case 'd': anguloHombro = constrain(anguloHombro - 15, 70, 160); break;
        case 'z': anguloGarra = 10; break;
        case 'x': anguloGarra = 40; break;
      }
      rotacion.write(anguloRotacion); hombro.write(anguloHombro);
      codo.write(anguloCodo); garra.write(anguloGarra);
    }
  }
}

void moverServosConRampa(int rot, int homb, int cod, int gar) {
  while (anguloRotacion != rot || anguloHombro != homb || anguloCodo != cod || anguloGarra != gar) {
    if (anguloRotacion < rot) anguloRotacion += incrementoRampa;
    else if (anguloRotacion > rot) anguloRotacion -= incrementoRampa;
    if (anguloHombro < homb) anguloHombro += incrementoRampa;
    else if (anguloHombro > homb) anguloHombro -= incrementoRampa;
    
    rotacion.write(anguloRotacion); hombro.write(anguloHombro);
    delay(tiempoEntrePasos);
  }
}
                

Esquema Electrónico

Deberás seguir el siguiente esquema electrónico para tu manipulador robótico. Si compraste un kit completo, verifica que los pines de conexión del Arduino a tus servomotores estén correctos:

Esquema Electrónico MeArm
Rotación Conecta el servomotor de rotación al pin 2 del Arduino.
Hombro Conecta el servomotor del hombro al pin 4 del Arduino.
Codo Conecta el servomotor del codo al pin 7 del Arduino.
Garra Conecta el servomotor de la garra al pin 8 del Arduino.
Importante: Asegúrate de revisar estas conexiones antes de empezar para garantizar que todo funcione correctamente.

Control por Monitor Serial

Sigue estos pasos para controlar tu brazo robótico utilizando el monitor serial de Arduino IDE:

Paso 1: Selección de la Placa y el Puerto

En el apartado “Herramientas” del Arduino IDE, selecciona la opción “Placa” y escoge “Arduino/Genuino Uno”. Luego, en la opción “Puerto”, elige el puerto COM al que está conectado tu módulo bluetooth al PC.

Selección de placa y puerto

Generalmente, este será el segundo puerto COM de conexión bluetooth, diferente del puerto COM que usaste para conectar tu Arduino UNO por puerto serial y cargar los códigos en los pasos anteriores.

Paso 2: Iniciar el Monitor Serial

Inicia el Monitor Serial que está incorporado en tu IDE de Arduino. Esto te permitirá enviar comandos a tu brazo robótico y ver las respuestas en tiempo real.

Iniciar monitor serial
Paso 3: Enviar Comandos en el Monitor Serial

En el Monitor Serial podrás enviar comandos y visualizar en qué grado se encuentran los servomotores:

Enviar comandos
TeclaAcción
a+ Rotación
s– Rotación
e+ Hombro
d– Hombro
r+ Codo
f– Codo
z+ Garra
x– Garra

¡Felicidades!

¡Lo lograste! Ya puedes mover tu Brazo Robótico con precisión desde tu teclado. Este es el inicio de grandes proyectos espaciales y tecnológicos.

Recuerda: Revisa siempre tus conexiones para cuidar tus servomotores antes de jugar.

¡Disfruta creando con tu nuevo Brazo Robótico!

Robótica de Colombia
Tags: