ARDUINO® Proyecto de
Aplicación
Nombre del Proyecto: __________________________________________ BRAZO ROBOT PROGRAMADO EN ARDUINO
Descripción del proyecto:
CONTROL DE BRAZO ROBOT
EL PROYECTO MUESTRA CÓMO SE CONTROLA UN BRAZO ROBOT DIDÁCTICO CON 4 SERVO MOTORES, A TRAVÉS DE UNA TARJETA ARDUINO UNO, CON BASE EN ESTE PROGRAMA SE PUEDE REPLICAR POSTERIORMENTE.
Materiales empleados:
Ing. Jovanny Duque
Página 1
ITEM 1 2 3 4 5
DESCRIPCIÓN Servomotores Eutaba S3003 Cable de conexión de datos Tarjeta - PC Servomotor Tower Pro de 9 Grados Estructura Alta Resistencia en Acrílico (Laminas) Tarjeta Arduino UNO
CANTIDAD 3 1 1 1 1
MONTAJE Y CONECIONES DE ENTRADAS Y SALIDAS
GRADOS DE LIBERTAD: Servo 1 base: 0 - 180°, gira el brazo derecha e izquierda (90° está centrado). Servo 2 hombro: 0 - 180°, mueve el brazo arriba y abajo (90° está centrado arriba) Servo 3 muñeca: 0 - 180°, mueve la muñeca de arriba abajo (90° está centrado) Servo 4 pinza: 60° - 120°, abre y cierra la pinza (a los 90° está a la mitad del recorrido) NOTA: NO PROGRAME LA PINZA PARA FUNCIONAR EN RANGOS POR FUERA DE 60° Y LOS 120°, ESTO OCASIONARÁ DAÑOS EN EL SERVOMOTOR. Dimensiones: Base: 12 cm. X 18 cm. Altura máxima: 36,5 cm. (con el brazo extendido) Peso: 0,250 kg.
CONEXIÓN DE LOS MOTORES CON LA TARJETA – SI SON CONECTADOS DIRECTOS NO DEBEN SER ACCIONADOS MÁS DE UNO AL TIEMPO.
Código:
#include <Servo.h> // Esto permite agregar la librería de servomotores de Arduino, gracias a ella ellos serán programados directamente solo con órdenes en grados Servo servo1; // servo1 corresponde a la base Servo servo2; // servo2 corresponde al hombro del brazo Servo servo3; // servo3 corresponde a la muñeca Servo servo4; // servo4 corresponde a la pinza
Ing. Jovanny Duque
Página 2
int int int int
pos1 = pos2 = pos3 = pos4 =
0; 0; 0; 0;
// // // //
variable variable variable variable
to store to store to store to store
the servo1 the servo2 the servo3 the servo4
position position position position
void setup() // Function inicial, solo se ejecutará al poner en marcha al inicio antes del ciclo continuo (POS INICIAL) { servo1.attach(5); // servo1 base en pin 5 servo1.write(90); delay(1000); servo2.attach(6); // servo2 hombro en pin 6 servo2.write(90); delay(1000); servo3.attach(9); // servo3 muñeca en pin 9 servo3.write(90); delay(1000); servo4.attach(10); // servo4 pinza en pin 10 servo4.write(70); delay(1000); } void loop() // Programa Base, este es el programa que ejecutara continuamente el Brazo, para este caso se ha elegido un ciclo continuo en simulacion de una aplicacion de cadena continua de producción. { for(pos1 = 30; pos1 <= 150; pos1 += 1) // servo1 corresponde a la base inicia pos LH { servo1.write(pos1); // base gira de 30 grados LH hasta 150 grados RH delay(20); } for(pos2 = 90; pos2<=175; pos2+=1) // servo2 corresponde al hombro { servo2.write(pos2); // baja el brazo va de 90 grados (arriba) a 165 grados (abajo) delay(20); } for(pos3 = 90; pos3>=20; pos3-=1) // servo3 corresponde a muñeca { servo3.write(pos3); // baja muñeca de 90 grados (arriba) a 30 grados (abajo) delay(20); } for(pos4 = 70; pos4<=125; pos4+=1) // servo4 corresponde a pinza { servo4.write(pos4); // cierra pinza delay(30); } for(pos3 = 20; pos3<=90; pos3+=1) // servo3 corresponde a muñeca { servo3.write(pos3); // sube muñeca de 30 grados (abajo) a 90 grados (arriba) delay(20); } for(pos2 = 175; pos2>=90; pos2-=1) // servo2 corresponde al hombro
Ing. Jovanny Duque
Página 3
{ servo2.write(pos2); delay(20);
// sube el brazo va de 165 grados (abajo) hasta 90 grados (arriba)
} for(pos1 = 150; pos1>=30; pos1-=1) // servo1 correspode a la base esta en pos RH { servo1.write(pos1); delay(20);
// base gira de 150 grados RH hasta 30 gados LH
} for(pos2 = 90; pos2<=175; pos2+=1) // servo2 corresponde al hombro { servo2.write(pos2); // baja el brazo va de 90 grados (arriba) a 165 grados (abajo) delay(20); } for(pos3 = 90; pos3>=20; pos3-=1) // servo3 corresponde a muñeca { servo3.write(pos3); // baja muñeca de 90 grados (arriba) a 30 grados (abajo) delay(20); } for(pos4 = 125; pos4>=70; pos4-=1) // servo4 corresponde a pinza { servo4.write(pos4); // abre pinza delay(30); } for(pos3 = 20; pos3<=90; pos3+=1) // servo3 corresponde a muñeca { servo3.write(pos3); // sube muñeca de 30 grados (abajo) a 90 grados (arriba) delay(20); } for(pos2 = 175; pos2>=90; pos2-=1) // servo2 corresponde al hombro { servo2.write(pos2); // sube el brazo va de 165 grados (abajo) hasta 90 grados (arriba) delay(20); // FIN DE SECUENCIA – Al terminar repite el ciclo continuo, simulando una línea de producción continuo en un planta. } }
Ing. Jovanny Duque
Página 4
Jóvenes, este material ha sido elaborado con mucho gusto. Si te es útil Regálame un Like, comenta y suscríbete :) (っ◕‿◕) Te invito al CANAL DE YOUTUBE MEKATRONICA
http://www.youtube.com/c/JovannyDuque?su b_confirmation=1_ Amigos/as en el BLOGG MEKATRONICA J DUKE podrás encontrar cantidad de recursos sobre SOLIDWORKS, HIDRÁULICA ELECTROHIDRÁULICA , NEUMÁTICA, ELECTRONEUMÁTICA, CONTROL, PLC M221, PLC SIEMEMS S7 1200, PLC SIEMENS S7 300 , FLUID SIM FACTORY IO, entre otros
https://mecatronica-itsa.blogspot.com/
Ing. Jovanny Duque
Página 5