Tabla de contenido:
- Suministros
- Paso 1: imprima todos los componentes 3D
- Paso 2: (Opcional) Coloque una tabla de madera en la parte inferior de su caja para fortalecerla
- Paso 3: Mida y corte una tabla de madera que se ajuste a la caja
- Paso 4: marcar las posiciones de los motores
- Paso 5: Marque las posiciones de los soportes y la tubería
- Paso 6: Taladre un agujero para los cables que salen de su caja (USB y alimentación)
- Paso 7: Taladre y corte todos los agujeros marcados
- Paso 8: conecte los motores y la tubería a la tabla
- Paso 9: Fije la tabla a la caja con los soportes en L
- Paso 10: tome sus bloques de terminales y suelde los cables juntos
- Paso 11: corte el extremo del cable de alimentación del adaptador y pele los cables
- Paso 12: Identifique y marque los cables positivo y negativo
- Paso 13: Conecte los cables a los bloques de terminales para que todos los cables + Servo y el cable + del cable de alimentación estén conectados, lo mismo ocurre con los cables -
- Paso 14: corte la cabeza de un cable de tablero
- Paso 15: Taladre tres agujeros en la parte inferior de la caja para los cables que salen de su brazo
- Paso 16: conecte el conector de la base a la caja
- Paso 17: use un cuchillo o una lima de uñas para hacer que las ranuras del alambre sean más profundas
- Paso 18: Construya el brazo
- Paso 19: Instale Processing y Arduino
- Paso 20: Pegue los programas de código
- Paso 21: conecte los pines de control del servo al Arduino
- Paso 22: presione el botón de reinicio en el procesamiento, esto establecerá todos los brazos a 90 grados
- Paso 23: Fije los brazos servo al motor horizontalmente
- Paso 24: Pase los cables por los brazos para que no queden flojos
- Paso 25: Pruebe el brazo y apriete o afloje los cables según sea necesario
- Paso 26: pegue en caliente los cables a los brazos del servo para que sean permanentes
- Paso 27: Notas
- Paso 28: solución de problemas
- Paso 29: Enlaces
- Paso 30: Código
- Paso 31: Más imágenes
Video: Brazo robótico controlado por cable: 31 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
Este es un tutorial sobre cómo hacer un brazo robótico controlado por cables. La ventaja de usar cables es que su brazo es más liviano y puede tener todos sus motores en la parte inferior de su brazo, lo que facilita la construcción y el mantenimiento. Aquí hay un video del brazo en acción. Planeo agregar una garra en el futuro para que pueda recoger cosas y no solo empujarlas.
Imprimibles 3D:
Aquí y aquí
Suministros
6 servomotores (MG995)
Arduino Uno
Aproximadamente 6 metros de alambre de acero recubierto de plástico (0,5 mm)
Caja 23x33x10 (puede ser más estrecha, definitivamente no debería ser más corta)
Tablón de madera 33x10
Tuercas y tornillos
Tubería de 14 cm (esto es necesario para guiar las cuerdas)
4 soportes en L
Adaptador de 5 voltios
2 bloques de terminales de 7 vías
Alambres para protoboard
Componentes impresos en 3D (no diseñados por mí, enlaces a elementos en la descripción):
3 "tornillos"
2 "Elemento 1"
1 "Elemento 2"
2 "Elemento 3"
1 conector base
Paso 1: imprima todos los componentes 3D
Es posible que necesite soporte para los orificios de los pernos y los arcos, pero asegúrese de no agregar soporte al cuerpo de sus componentes; esto cerrará los pequeños orificios de los cables y necesitará hacer nuevos orificios
Paso 2: (Opcional) Coloque una tabla de madera en la parte inferior de su caja para fortalecerla
Mi caja era bastante débil, la tuya puede que no lo sea
Paso 3: Mida y corte una tabla de madera que se ajuste a la caja
Paso 4: marcar las posiciones de los motores
asegúrese de que ninguno de los brazos se toque entre sí
Paso 5: Marque las posiciones de los soportes y la tubería
La tubería debe colocarse alrededor de un centímetro por delante del agujero.
Paso 6: Taladre un agujero para los cables que salen de su caja (USB y alimentación)
Paso 7: Taladre y corte todos los agujeros marcados
Paso 8: conecte los motores y la tubería a la tabla
Paso 9: Fije la tabla a la caja con los soportes en L
Paso 10: tome sus bloques de terminales y suelde los cables juntos
Paso 11: corte el extremo del cable de alimentación del adaptador y pele los cables
Paso 12: Identifique y marque los cables positivo y negativo
Paso 13: Conecte los cables a los bloques de terminales para que todos los cables + Servo y el cable + del cable de alimentación estén conectados, lo mismo ocurre con los cables -
Paso 14: corte la cabeza de un cable de tablero
Conecte el extremo pelado del cable de la placa de pruebas al bloque de terminales menos y el extremo del pin al pin de tierra en su arduino. Si no hace esto, los motores se moverán erráticamente sin ninguna entrada.
Paso 15: Taladre tres agujeros en la parte inferior de la caja para los cables que salen de su brazo
Los orificios deben coincidir con los orificios del conector de la base.
Paso 16: conecte el conector de la base a la caja
Paso 17: use un cuchillo o una lima de uñas para hacer que las ranuras del alambre sean más profundas
Las ranuras para cables de los elementos 2 y 3 son demasiado superficiales.
Paso 18: Construya el brazo
Construya el brazo de acuerdo con las instrucciones aquí, es posible que deba limar las piezas para que encajen
Paso 19: Instale Processing y Arduino
Procesamiento y Arduino
Paso 20: Pegue los programas de código
El código está al final de esta página.
Paso 21: conecte los pines de control del servo al Arduino
Conecté el primer motor al tercer pin digital, el segundo motor al cuarto pin digital y así sucesivamente. Asegúrese de que la clavija de tierra todavía esté conectada al bloque de terminales -.
Paso 22: presione el botón de reinicio en el procesamiento, esto establecerá todos los brazos a 90 grados
Paso 23: Fije los brazos servo al motor horizontalmente
Paso 24: Pase los cables por los brazos para que no queden flojos
Asegúrate de pasar el cable a través de tantos agujeros como puedas, esto lo sujetará temporalmente y será fácil de quitar.
Paso 25: Pruebe el brazo y apriete o afloje los cables según sea necesario
Paso 26: pegue en caliente los cables a los brazos del servo para que sean permanentes
Paso 27: Notas
Usé alambre de joyería de 0.5 mm, pero 0.4 mm debería estar bien. El diseño original usaba alambre de PVC, pero se rompía con demasiada facilidad y era difícil trabajar con él.
Si va a mover el brazo en un automóvil o bicicleta, envuelva las articulaciones del brazo con cinta adhesiva para asegurarse de que no se salgan. Esto es especialmente importante para el elemento 1.
Cuando comencé este proyecto me preguntaba por qué solo podía encontrar un tutorial sobre cómo hacer un brazo controlado por cables. Ahora entiendo por qué esta no es la forma más común de hacer un brazo de robot para pasatiempos. Los cables a veces se salen de sus ranuras y todo es un poco endeble. No sé si los problemas se deben a que no tengo mucha experiencia o si toda la idea es problemática, aunque estoy seguro de que sería más sólido si supiera lo que estoy haciendo.
Paso 28: solución de problemas
Los orificios de los cables se cierran en los elementos impresos en 3D:
Agregó soporte para todo el elemento en lugar de solo los orificios de los pernos. Vuelva a imprimir el elemento o abra los agujeros con una aguja muy caliente.
El puerto COM está cerrado, no puede comunicarse con el arduino:
Es posible que su arduino no acepte puertos USB 3 (el mío no lo hizo), puede comprar un cable de extensión USB 2 o usar una computadora que tenga puertos USB 2
El código no funciona:
Siga este tutorial y modifíquelo para crear su propio código
Una parte del brazo no se mueve:
Es posible que los cables se hayan enredado, para verificar esto, retire el brazo del servo del servo e intente tirar de los cables con la mano. Desenrede los cables y si aún le resulta difícil tirar de los cables, intente usar un poco de WD-40 o un lubricante para facilitar el movimiento.
Paso 29: Enlaces
Brazo no robótico:
Imprimibles 3D del brazo:
Mi brazo imprimible en 3D:
Arduino y procesamiento:
Paso 30: Código
Modificado de este código
Código Arduino:
#include // Declarar los motores Servo myservo1; Servo myservo2; Servo myservo3; Servo myservo4; Servo myservo5; Servo myservo6; // Todos los motores están configurados a 90 grados por defecto int current1 = 90; int current2 = 90; int current3 = 90; int current4 = 90; int current5 = 90; int current6 = 90; // Grados mínimo y máximo que los motores pueden alcanzar int mini1 = 0; int maxi1 = 180; int mini2 = 0; int maxi2 = 180; int mini3 = 0; int maxi3 = 180; int mini4 = 0; int maxi4 = 180; int mini5 = 0; int maxi5 = 180; int mini6 = 0; int maxi6 = 180; // Grados que se sumarán o restarán de la posición actual int gradosFoward = 5; // Retraso para que dos funciones no sucedan en el orden incorrecto int delayBetweenSteps = 100; void setup () {// Establecer pines de control para cada motor myservo1.attach (3); myservo2.attach (4); myservo3.attach (5); myservo4.attach (6); myservo5.attach (7); myservo6.attach (8); // Establecer todos los motores a la configuración predeterminada myservo1.write (current1); myservo2.write (current2); myservo3.write (current3); myservo4.write (current4); myservo5.write (current5); myservo6.write (current6); // iniciar la comunicación en serie @ 9600 bps Serial.begin (9600); } void loop () {if (Serial.available ()) {// si hay datos disponibles para leer char val = Serial.read (); // ponerlo en este carácter // Controles del motor if (val == 'a' && current1 + gradosFoward mini1) {myservo1.write (current1 - gradosFoward); current1 = current1 - gradosFoward; delay (delayBetweenSteps); } if (val == 'c' && current2 mini2) {myservo2.write (current2 - gradosFoward); current2 = current2 - gradosFoward; delay (delayBetweenSteps); } if (val == 'e' && current3 mini3) {myservo3.write (current3 - gradosFoward); current3 = current3 - grados adelante; delay (delayBetweenSteps); } if (val == 'g' && current4 mini4) {myservo4.write (current4 - gradosFoward); current4 = current4 - grados adelante; delay (delayBetweenSteps); } if (val == 'i' && current5 mini5) {myservo5.write (current5 - gradosFoward); current5 = current5 - grados hacia adelante; delay (delayBetweenSteps); } if (val == 'k' && current6 mini6) {myservo6.write (current6 - gradosFoward); current6 = current6 - grados hacia adelante; delay (delayBetweenSteps); } // Controles de velocidad if (val == 'w') {// Si se presiona el botón de velocidad 1 gradosAvance = 1; delay (delayBetweenSteps); } if (val == 'x') {// Si se presiona el botón de velocidad 5 gradosAvance = 5; delay (delayBetweenSteps); } if (val == 'y') {// Si se presiona el botón de velocidad 10 gradosAvance = 10; delay (delayBetweenSteps); } if (val == 'z') {// Si se presiona el botón de velocidad 20 gradosAvance = 20; delay (delayBetweenSteps); } if (val == 'r') {// Si se presiona el botón de velocidad 20 myservo1.write (90); corriente1 = 90; myservo2.write (90); corriente2 = 90; myservo3.write (90); actual3 = 90; myservo4.write (90); actual4 = 90; myservo5.write (90); actual5 = 90; myservo6.write (90); actual6 = 90; delay (delayBetweenSteps); }}}
Código de procesamiento:
procesamiento de importación.serie. *; control de importaciónP5. *; // importar el puerto serie de la biblioteca ControlP5; ControlP5 cp5; // crea el objeto ControlP5 PFont font; void setup () {// igual que el tamaño del programa arduino (300, 700); // tamaño de la ventana, (ancho, alto) printArray (Serial.list ()); // imprime todos los puertos serie disponibles // Si tiene un problema, probablemente provenga de aquí String portName = Serial.list () [0]; port = new Serial (este, portName, 9600); // he conectado arduino a com3, sería diferente en linux y mac os // vamos a agregar un botón a la ventana vacía cp5 = new ControlP5 (esto); font = createFont ("Arial", 13); // fuentes personalizadas para botones y título // Botones de control de velocidad cp5.addButton ("One") // "One" es el nombre del botón.setPosition (50, 50) // coordenadas xey de la esquina superior izquierda del botón.setSize (55, 25) // (ancho, alto).setFont (fuente); cp5.addButton ("Cinco").setPosition (110, 50).setSize (55, 25).setFont (fuente); cp5.addButton ("Diez").setPosition (170, 50).setSize (55, 25).setFont (fuente); cp5.addButton ("Veinte").setPosition (230, 50).setSize (55, 25).setFont (fuente); cp5.addButton ("Restablecer").setPosition (110, 2).setSize (55, 25).setFont (fuente); cp5.addButton ("Servo_1_Foward").setPosition (50, 90).setSize (190, 40).setFont (fuente); // Botones de control del motor cp5.addButton ("Servo_1_Back").setPosition (50, 140).setSize (190, 40).setFont (fuente); cp5.addButton ("Servo_2_Foward").setPosition (50, 190).setSize (190, 40).setFont (fuente); cp5.addButton ("Servo_2_Back").setPosition (50, 240).setSize (190, 40).setFont (fuente); cp5.addButton ("Servo_3_Foward").setPosition (50, 290).setSize (190, 40).setFont (fuente); cp5.addButton ("Servo_3_Back").setPosition (50, 340).setSize (190, 40) // (ancho, alto).setFont (fuente); cp5.addButton ("Servo_4_Foward").setPosition (50, 390).setSize (190, 40).setFont (fuente); cp5.addButton ("Servo_4_Back").setPosition (50, 440).setSize (190, 40) // (ancho, alto).setFont (fuente); cp5.addButton ("Servo_5_Foward").setPosition (50, 490).setSize (190, 40).setFont (fuente); cp5.addButton ("Servo_5_Back").setPosition (50, 540).setSize (190, 40).setFont (fuente); cp5.addButton ("Servo_6_Foward").setPosition (50, 590).setSize (190, 40).setFont (fuente); cp5.addButton ("Servo_6_Back").setPosition (50, 640).setSize (190, 40).setFont (fuente); } void draw () {// igual que el bucle en el fondo arduino (192, 215, 249); // color de fondo de la ventana (r, g, b) o (0 a 255) // Agregar texto que diga que el control de velocidad es el relleno de control de velocidad (0, 10, 25); // color del texto (r, g, b) textFont (fuente); texto ("Control de velocidad", 50, 40); // ("texto", coordenada x, coordenada y)} // agreguemos algunas funciones a nuestros botones // para que cuando presiones cualquier botón, envíe un carácter particular a través del puerto serie // Estoy seguro de que es posible enviar cadenas en lugar de caracteres, y tendría más sentido, pero no sé cómo hacerlo // Comandos de control de velocidad void One () {port.write ('w'); } void Five () {port.write ('x'); } void Ten () {port.write ('y'); } void Twenty () {port.write ('z'); } // Comandos de control del motor void Servo_1_Foward () {port.write ('a'); } void Servo_1_Back () {port.write ('b'); } void Servo_2_Foward () {port.write ('c'); } void Servo_2_Back () {port.write ('d'); } void Servo_3_Foward () {port.write ('e'); } void Servo_3_Back () {port.write ('f'); } void Servo_4_Foward () {port.write ('g'); } void Servo_4_Back () {port.write ('h'); } void Servo_5_Foward () {port.write ('i'); } void Servo_5_Back () {port.write ('j'); } void Servo_6_Foward () {port.write ('k'); } void Servo_6_Back () {port.write ('l'); } void Reset () {port.write ('r'); }
Paso 31: Más imágenes
Recomendado:
Brazo robótico controlado por codificador rotatorio: 6 pasos
Brazo robótico controlado por codificador rotatorio: Visité howtomechatronics.com y vi el brazo robot controlado por bluetooth allí. No me gusta usar bluetooth, además vi que podemos controlar el servo con codificador rotatorio, así que lo rediseñé para poder controlar el robot. brazo use codificador rotatorio y regístrelo
Brazo robótico controlado por Arduino y PC: 10 pasos
Brazo robótico controlado por Arduino y PC: Los brazos robóticos se utilizan ampliamente en la industria. Ya sea para operaciones de ensamblaje, soldadura o incluso uno se usa para atracar en ISS (Estación Espacial Internacional), ayudan a los humanos en el trabajo o reemplazan a los humanos por completo. El brazo que he construido es más pequeño re
Brazo robótico con servomotor RC controlado por fpga - Concurso de Digilent: 3 pasos
Brazo robótico con servomotor RC controlado por FPGA - Concurso de Digilent: Brazo robótico con servomotor controlado por FPGA El objetivo de este proyecto es crear un sistema programable que pueda realizar operaciones de soldadura en la placa perf. El sistema se basa en la placa de desarrollo Digilent Basys3 y será capaz de soldar co
Brazo robótico controlado por Arduino con 6 grados de libertad: 5 pasos (con imágenes)
Brazo robótico controlado por Arduino con 6 grados de libertad: Soy miembro de un grupo de robótica y cada año nuestro grupo participa en una Mini-Maker Faire anual. A partir de 2014, decidí construir un nuevo proyecto para el evento de cada año. En ese momento, tenía alrededor de un mes antes del evento para poner algo juntos
Brazo robótico controlado por Arduino de Lego Mindstorm: 6 pasos
Brazo robótico controlado por Arduino de Lego Mindstorm: Reutiliza dos viejos motores Lego Mindstorm en un brazo de agarre controlado por un Arduino Uno. Este es un proyecto de Hack Sioux Falls en el que desafiamos a los niños a construir algo genial con un Arduino