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.
Tabla de contenidos
Materiales necesarios para construir el brazo robótico
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.
Componentes necesarios para el brozo robótico controlado por botones
Kit iniciación Arduino ES |
Placa Arduino Uno ES |
Servomotores Arduino ES |
Botones Electrónica ES |
Motor paso a paso ES |
Palitos de helado ES |
Protoboard ES |
Cables Macho Hembra ES |
¿Necesitas ayuda con algún proyecto?
- Prototipado y MVPs
- Arduino y ESP32
- Diseño de PCBs
- Diseño de piezas 3D
- Conexión Bluetooth
- Estudio de Viabilidad
- Optimización de costes
- Asesoría Técnica
- Internet de las Cosas
- Gestión de Patentes
Video con la explicación del brozo robótico
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.
¿Necesitas ayuda con algún proyecto?
- Prototipado y MVPs
- Arduino y ESP32
- Diseño de PCBs
- Diseño de piezas 3D
- Conexión Bluetooth
- Estudio de Viabilidad
- Optimización de costes
- Asesoría Técnica
- Internet de las Cosas
- Gestión de Patentes
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.
Si tienes dudas sobre cómo usar o instalar el entorno de programación empleado para Arduino, te dejamos un link de comó descargar el IDE de Arduino
//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); } }
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,
no.
hola .
buen dia.
por fa puedes enviar el código a este correo...
faro1207Qoutlook.com.
gracias muy buen proyecto.
bendiciones.
Solo tienes que copiarlo y pegarlo. Se hace en un momento. Un saludo!
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?
Yo utilizo window y la aplicacion "Arduino IDE", pero aun asi te deberia de servir. Cual es tu error?
Hola, como se llama la cosa de color negro que está pegada a la protoboard al lado izquierdo en la imagen?
Hola! es un regulador de voltaje para protoboards (de 5V y 3.3V). Un saludo!
Hola buenas, ¿ Se puede cambiar el encoder por botones?
Hola, si, pero habri que modificar el codigo de programacion
Hola, podrías comentar por que razón en especifica las resistencias de 220 ohm? cual es el calculo o formula para sacar la resistencia necesaria?
Simplemente es para evitar un cortocircuito cuando pulsas el boton.
Hola! Yo he encontrado un proyecto similar en la web https://www.robotic-a.es pero veo que no hace uso de alimentacion separada para los motores. Tiene riesgo de quemar la placa tambien? Siempre es recomendable alimentar los actuadores a parte? Yo lo he probado y me hs funcionado pero el codigo creo que tiene algun bug porque no va muy fino, podriais ayudarme con el codigo para controlar ese brazo? Gracias. Un saludo!
Hola! siempre es mas seguro alimentar los servomotores de forma externa, ya que sino se puede llegar a quemar la placa de arduino uno o el puerto usb del ordenador. Un saludo.
Hola, que página o aplicación utilizó para realizar la simulación ?
Tenemos un post explicando como instalar el entorno de programación de Arduino
Me podrías apoyar con la explicación del códig, y me cuesta trabajo entenderlo, porfavor
Hola buenas, como se llama el aparato con el que haceis girar el motor paso a paso?
Amigo, de verdad que te estoy profundamente agradecido por tan excelente proyecto. Aunque no sé casi nada de robótica, la explicación es muy buena. Mi preocupación era que el código no funcionara, tomando en consideración que tuviese algún error de transcripción, pero lo probé solo para verificar y funcionó.
Espero que sigas compartiendo tus conocimientos en aras de la ciencia.
Saludos desde Caracas, Venezuela.
muy buen comentario, saludos desde surinam
Enserio necesito ayuda. tengo un proyecto para mañana y los botones derechos no responden y los motores no paran de girar hasta que mantengo presionado el botón derecho.