Sencillo brazo robótico con piezas LEGO, tres servomotores, controlado con Arduino/Genuino y tres potenciómetros | Tutorial paso a paso

En este tutorial os explicamos como construir paso a paso un sencillo brazo robótico con mano y controlado con  Arduino/Genuino mediante tres servomotores y tres potenciómetros. Os explicamos paso a paso el funcionamiento, los materiales y componentes, diagramas y esquemas y códigos para su programación.

Si quieres aprender y tienes un proyecto en mente y voluntad, encontrarás fácilmente la información que te ayudará a realizar tu proyecto y ejecutarlo fácilmente.




Principio de funcionamiento

El brazo robótico se mueve a actuar sobre tres potenciómetros. Al variar la tensión en las entradas analógicas entre 0y 5V, por medio de los potenciómetros, la placa Arduino/Genuino lee un valor entre 0 y 1023, y lo convierte en un valor proporcional a la escala del servomotor, entre 0 y 180. Este valor hace que el servomotor se ubique en la posición deseada.




Cada servomotor realiza un movimiento dentro de la estructura del brazo robótico, girar izquierda-derecha, subir y bajar, y abrir y cerrar la mano.

Componentes y materiales

  • Placa Arduino/Genuino
  • 1 Fuente de alimentación PC
  • 3 Micro-servomotor
  • 3 Potenciómetro 10K
  • Piezas LEGO
  • Piezas Impresora 3D
  • Protoboard
  • Cables de conexión

Esquema y montaje

esquema-mano-robot-3-servos-potenciometros

En primer lugar hemos utilizado una fuente de alimentación de de un viejo PC para alimentar la placa Arduino/Genuino y los tres servomotores.

Para saber como encender una fuente de alimentación de un PC y poder utilizarla en tus prototipos pincha aquí.

fuente de alimentación PC
Fuente de alimentación PC

 

Montaje de los servomotores y las piezas LEGO

Este prototipo lo hemos diseñado utilizando tres servomotores, piezas LEGO y piezas creadas con la impresora 3D.

Las piezas LEGO combinadas con los servomotores nos permiten crear facilmente diseños personales y divertidos.

El primer servomotor se mueve sobre un plano horizontal y hace que el brazo robótico se mueva a izquierda y derecha. Hemos atornillado una pieza plana LEGO al servomotor y nos servirá de plataforma para el resto del brazo robótico.

El segundo servomotor se mueve sobre un plano vertical, y hace que el brazo suba y baje. Lo hemos atornillado a otra pieza LEGO y la hemos unido a la plataforma del primer servomotor.

El tercer servomotor abre y cierra la mano, lo atornillamos a la pieza LEGO y unimos al segundo servo.

 

Los servomotores tienen tres cables: VCC, GND y Señal. El cable de alimentación VCC es típicamente rojo, y debe ser conectado al pin 5V de la placa Arduino. El cable de tierra, GND, suele ser negro o marrón y debe estar conectado a un conector de tierra de la placa Arduino. El cable de señal es normalmente de color amarillo, naranja o blanco y debe ser conectado a un pin digital en la placa Arduino.

Como podemos ver en el esquema, conectamos los servos a +5V, a GND, y a los pines 9, 10 y 11. Esta salida está controlada por la señal recibida en los pines analógicos, por medio de los potenciómetros.

Montaje de los potenciómetros

Los potenciómetros tienen tres pines, tenemos que conectar los pines exteriores a 5V y GND, y cada uno de los pines centrales a la entradas analógicas A1, A2 y A3 de la placa Arduino/Genuino.

Para la preparación de este ejemplo hemos creado unos sencillos botónes para los potenciómetros y un accesorio con la impresora 3D.

Puedes descargar el archivo STL para imprimirlo tu mismo en este enlace: boton-potenciometro.rar.

boton-potenciometro-impresora-3d

Código Arduino/Genuino para brazo robótico con tres servomotores

Este es código completo para nuestro “ Sencillo brazo robótico con piezas LEGO, tres servomotores, controlado con Arduino/Genuino y tres potenciómetros“, copia, pega y modifica el código según tus necesidades.

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

Servo servo_1;  // Definimos los servos que vamos a utilizar
Servo servo_2;
Servo servo_3;

int potenciometro_1 = 1;  // Pin analogico usado para conectar el pin central del potenciómeto 1
int potenciometro_2 = 2;  // Pin analogico usado para conectar el pin central del potenciómeto 2
int potenciometro_3 = 3;  // Pin analogico usado para conectar el pin central del potenciómeto 3

int valor_potenciometro_1;    // Esta variable definirá la posición del servo 1
int valor_potenciometro_2;    // Esta variable definirá la posición del servo 2
int valor_potenciometro_3;    // Esta variable definirá la posición del servo 3


void setup() {
  servo_1.attach(9);  // Difinimos el pines de señal para el servo 1
  servo_2.attach(10);  // Difinimos el pines de señal para el servo 2
  servo_3.attach(11);  // Difinimos el pines de señal para el servo 3
}

void loop() {

  valor_potenciometro_1 = analogRead(potenciometro_1);
  // leemose valor del potenciometro 1 (valor entre 0 y 1023)
  valor_potenciometro_2 = analogRead(potenciometro_2);
  // leemose valor del potenciometro 2 (valor entre 0 y 1023)
  valor_potenciometro_3 = analogRead(potenciometro_3);
  // leemose valor del potenciometro 3 (valor entre 0 y 1023)

  valor_potenciometro_1 = map(valor_potenciometro_1, 0, 1023, 0, 180);
  // valor proporcional a la escala del servomotor (valor entre 0 y 180)
  valor_potenciometro_2 = map(valor_potenciometro_2, 0, 1023, 0, 180);
  // valor proporcional a la escala del servomotor (valor entre 0 y 180)
  valor_potenciometro_3 = map(valor_potenciometro_3, 0, 1023, 0, 180);
  // valor proporcional a la escala del servomotor (valor entre 0 y 180)

  servo_1.write(valor_potenciometro_1);
  servo_2.write(valor_potenciometro_2);
  servo_3.write(valor_potenciometro_3);

  delay(1);
  // Esperamos para reiniciar el bucle
}

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *