Proyecto 芦Brazo rob贸tico controlado por botones禄

En este nuevo proyecto de Arduino, ver谩s como crear un brazo rob贸tico controlado por botones, se trata de un brazo rob贸tico de 3 grados de libertad y una pinza al final, adem谩s, ver谩s cuales son los diferentes materiales empleados en su construcci贸n, cual es su esquema de conexiones y finalmente podr谩s encontrar el c贸digo para para controlar el brazo rob贸tico mediante el uso de botones.

Materiales necesarios para su construcci贸n

A continuaci贸n hablaremos de los diferentes materiales utilizados para la construcci贸n de nuestro brazo rob贸tico controlado por botones con Arduino, tambi茅n se har谩 una breve descripci贸n de cada uno de los materiales. Si est谩s interesado en realizar el proyecto, a continuaci贸n tienes los enlaces a diferentes p谩ginas donde poder adquirirlos.

Placa de Arduino UNO: Es el cerebro de nuestro proyecto, encargada de controlar todos los procesos del mismo mediante el c贸digo que encontrar谩s m谩s adelante.

Motor paso a paso: Mediante impulsos el茅ctricos, es posible controlar el giro del motor, el cual se efect煤a de una forma discreta.

Servomotores:聽 motores de 5v con una reductora, lo que permite un gran manejo de su posici贸n y una gran fuerza para su reducido tama帽o.

Protoboard: Tabla con orificios (pines) la cual est谩 conectada internamente y usaremos para realizar nuestras conexiones para el proyecto.

Palos de helado: Usaremos estos palos como estructura para dar forma a nuestra gr煤a.

Cables con pines: Estos cables tienen unos pines (macho o hembra) los cuales nos permitir谩n hacer las conexiones entre los diferentes elementos ya mencionados.

Puedes encontrar m谩s herramientas y materiales que puedas necesitar para tus proyectos AQU脥.

Componentes necesarios para este proyecto

Video explicaci贸n del proyecto

Para poder ver de una forma mucho m谩s detallada, como realizar este brazo rob贸tico controlado con botones, te dejamos a continuaci贸n un video donde podr谩s ver desde el inicio hasta el final como se ha hecho paso a paso, como puede ser la explicaci贸n del c贸digo y聽 los diferentes pasos de su construcci贸n. Y recuerda, si te gusta esta clase de contenido, no olvides SUSCRIBETE馃槈

Esquema de conexiones Arduino para la construcci贸n del brazo rob贸tico

Si quieres que tu proyecto funcione correctamente, una de las partes m谩s importantes a la hora de realizarlo es que tengas claro cual va a ser tu esquema de conexiones y de como vas a conectar correctamente los diferentes elementos. Con el fin de evitarte errores de montaje o conexiones err贸neas, a continuaci贸n te dejamos el esquema de conexiones empleado para este proyecto, adem谩s, con este esquema de conexiones puedes usar el c贸digo c贸digo que te dejamos m谩s adelante sin necesidad de hacer ninguna modificaci贸n.

Como pod茅is observar, existe una peque帽a diferencia entre las conexiones que se realizan en el v铆deo y las que se muestran en esta imagen. Esto es debido a que en el video se alimentan todos los motores desde la placa de Arduino UNO, cosa que es incorrecta ya que la corriente que circula por esta para alimentar los motores puede quemar la placa. Por este motivo es mas correcto realizar las conexiones tal y como se observa en esta imagen, ya que la alimentaci贸n proviene del modulo 芦mb-102禄, haciendo que la intensidad que para alimentar los motores no pase por la placa de Arduino.

Por 煤ltimo, realizar este montaje (que es muy recomendable) o el que aparece en el video, no va a afectar en nada al c贸digo de programaci贸n, ya que las conexiones de los motores no cambian de pines en la placa de Arduino UNO.

C贸digo de Arduino para la programaci贸n del brazo rob贸tico controlado por botones

Para finalizar con este proyecto del brazo rob贸tico, a continuaci贸n te dejamos el c贸digo de programaci贸n desarrollado espec铆ficamente para este proyecto.

Si est谩s interesado en automatizar todos los movimientos del brazo rob贸tico, a continuaci贸n te dejamos un video en el cual se muestra este proyecto pero con sus movimientos preprogramados. Puedes verlo pinchando AQU脥.

Respecto al c贸digo, recuerda instalar las librer铆as 芦Servo.h禄 y 芦Stepper.h禄. Tambi茅n aseg煤rate de que el puerto donde esta conectada la placa de Arduino es el que esta seleccionado.

//Canal de YouTube -> RobotUNO
//BRAZO ROBOTICO 2.0

#include <Servo.h>
#include <Stepper.h>
#define STEPS 32
#define temp 25

//MOTOR PASO A PASO
volatile boolean TurnDetected; 
volatile boolean rotationdirection; 
const int PinCLK=2;   
const int PinDT=3;   
int RotaryPosition=0;   
int PrevPosition;    
int StepsToTake; 
Stepper small_stepper(STEPS, 4, 6, 5, 7);
void isr ()  {
  delay(4);  // delay for Debouncing
  if (digitalRead(PinCLK))
    rotationdirection= digitalRead(PinDT);
  else
    rotationdirection= !digitalRead(PinDT);
  TurnDetected = true;
}

//SERVOMOTORES
int i=0,j=0,x=0;
Servo servomotor3; //Servomotor pinza
int boton_sub3=0;
int boton_baj3=0;
Servo servomotor2; //Servomotor en medio
int boton_sub2=0;
int boton_baj2=0;
Servo servomotor1; //Servomotor abajo
int boton_sub1=0;
int boton_baj1=0;

void setup(){
  //MOTOR PASO A PASO
  pinMode(PinCLK,INPUT);
  pinMode(PinDT,INPUT);  
  attachInterrupt (0,isr,FALLING); 

  //SERVOMOTORES
  servomotor3.attach(13);
  servomotor3.write(0);
  pinMode(A4,INPUT);
  pinMode(A5,INPUT);
  
  servomotor2.attach(12);
  servomotor2.write(0);
  pinMode(A2,INPUT);
  pinMode(A3,INPUT);
  
  servomotor1.attach(11);
  servomotor1.write(0);
  pinMode(A0,INPUT);
  pinMode(A1,INPUT);
}

void loop(){
  //MOTOR PASO A PASO
  small_stepper.setSpeed(700); 
  if (TurnDetected)  {
    PrevPosition = RotaryPosition; 
    if (rotationdirection) {
      RotaryPosition=RotaryPosition-1;}
    else {RotaryPosition=RotaryPosition+1;}
    TurnDetected = false;
    if ((PrevPosition + 1) == RotaryPosition) {
      StepsToTake=50; 
      small_stepper.step(StepsToTake);}
    if ((RotaryPosition + 1) == PrevPosition) {
      StepsToTake=-50;
      small_stepper.step(StepsToTake);}
  }
     digitalWrite(4, LOW);
     digitalWrite(5, LOW);
     digitalWrite(6, LOW);
     digitalWrite(7, LOW);   
  
  //SERVOMOTOR pinza
  boton_sub3=digitalRead(A4);
  boton_baj3=digitalRead(A5);
  if(boton_sub3==HIGH){
     i++;
     servomotor3.write(i);
     delay(temp);
  }
  if(boton_baj3==HIGH){
    i--;
    servomotor3.write(i);
    delay(temp);
  }
  //SERVOMOTOR en medio 
  boton_sub2=digitalRead(A2);
  boton_baj2=digitalRead(A3);
  if(boton_sub2==HIGH){
     j++;
     servomotor2.write(j);
     delay(temp);
  }
  if(boton_baj2==HIGH){
    j--;
    servomotor2.write(j);
    delay(temp);
  }
  //SERVOMOTOR abajo
  boton_sub1=digitalRead(A0);
  boton_baj1=digitalRead(A1);
  if(boton_sub1==HIGH){
     x++;
     servomotor1.write(x);
     delay(temp);
  }
  if(boton_baj1==HIGH){
    x--;
    servomotor1.write(x);
    delay(temp);
  }
}

Publicado en Robots.

6 Comentarios

  1. Me podr铆as apoyar con la explicaci贸n del c贸digo ya que apenas estoy meti茅ndome en esto , y me cuesta un poco de trabajo entenderlo,

  2. hola .
    buen dia.
    por fa puedes enviar el c贸digo a este correo鈥
    faro1207Qoutlook.com.
    gracias muy buen proyecto.
    bendiciones.

  3. oye a mi no me funciona el codigo, lo estoy usando en mblock no se si sea por eso pero el codigo no me funciona, sabes algun programa donde me sirva el codigo?

Deja una respuesta

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