Tabla de contenido:

Brazo robótico Arduino: 5 pasos
Brazo robótico Arduino: 5 pasos

Video: Brazo robótico Arduino: 5 pasos

Video: Brazo robótico Arduino: 5 pasos
Video: BRAZO ROBOTICO con ARDUINO || PROYECTO Fácil y Rápido 2024, Noviembre
Anonim
Image
Image
Brazo robótico Arduino
Brazo robótico Arduino
Brazo robótico Arduino
Brazo robótico Arduino

Dado que es mi primer proyecto después de los 15 tutoriales de mi kit de inicio Arduino, el propósito real es obtener algunas críticas, consejos, sugerencias e ideas de cualquiera que sepa más que yo.

Este proyecto trata sobre un brazo robótico, con 4 dofs y una empuñadura. Con un presupuesto decentemente bajo: la estructura ha sido cortada por un amigo, los 4 servos costaban 30 €, los 2 joysticks 4 €, tornillos tornillos etc. por menos de 10 € y todo lo demás (Arduino, cables, servo grip, etc.) ya estaba incluido en mi kit de inicio. Por un total de 40-45 €, que son alrededor de 45-50 dólares estadounidenses (el mismo precio de un kit de me-arm, pero bueno, fue divertido tener que construirlo yo mismo (y estropear algo de vez en cuando) y no seguir instrucciones como una máquina).

Como este fue mi primer proyecto e Instructable, entré en el '' Autor por primera vez '' y en un par de concursos más, así que si te gusta, vota:)

Paso 1: DISEÑO Y MONTAJE:

Primero necesitaba una estructura: esta fue definitivamente la parte más larga, como no quería copiar y pegar el proyecto de otra persona, tomé un proyecto como referencia y yo (y un par de compañeros más hábiles que realmente me salvaron) Empezamos a modificarlo según nuestras necesidades (diferentes servos con diferente torque, peso y dimensiones, etc.). Tuve que construirlo un par de veces, en cada una de ellas encontré algo mal, y tuvimos que volver a cortar algunas piezas y volver a intentarlo, he adjuntado el archivo.dxf por si quieres usarlo, luego tuve que comprar la electrónica: La mayoría de las partes eran estándar, la parte difícil fue elegir los servos. Calculé el torque requerido con la regla de oro, más tarde intenté un cálculo más preciso y descubrí que podría haberlo sobrepasado un poco. Aparentemente, 6 kg / cm habrían sido suficientes para el segundo servo (desde la base), y el mío proporciona 9-11 kg / cm. Bueno, esto me da algo de seguridad y la posibilidad de cargar hasta 2 kg de carga (lo cual es imposible, pero me gusta que técnicamente podría hacerlo). También podría haber comprado diferentes servos, con un par decreciente mientras me alejaba de la base, pero comprar servos idénticos del mismo proveedor fue, con mucho, la opción más barata. Fuente de alimentación: El Arduino definitivamente no era suficiente para los servos, ya que cada mg995 consume 350mA y el microservo 9g consume 100mA, para un total de 350 * 4 +100 = 1500mA. Así que salvé un cargador (6V 1.5A) y le soldé dos cables de puente (si algunos de ustedes pueden necesitar algunas instrucciones reales, solo pregunten en los comentarios y haré todo lo posible para crear un paso a paso guía) Lista de materiales: - Estructura- Tornillo M5x7cm x5, tornillos M5 x15 (base) - Tornillo M3x16mm x18 * - Tornillo M3x20mm x13 * - Tornillos M3 x40 * - Tornillo M3x8cm x3 - Abrazadera (de lo contrario se caerá) - 3 tacos- Arduino (o algo más para controlarlo, tiene que tener al menos 5 PWM) - Algo para suministrar 5-6V y al menos 1.5A - 3 joysticks tipo ps2- 4x TowerPro mg995 servos- 1x TowerPro 9g microservo (para el agarre) - Muchos cables de puente - Placa de pruebas * (Usé pernos y tornillos para poder ensamblar y desmontar rápidamente, de lo contrario, podría reemplazarlos casi todos con tornillos para carpintería)

Paso 2: CÓDIGO:

La idea es controlar cada servo con uno de los dos ejes de un joystick tipo ps2. Cada joystick parecía tener diferentes "valores de reposo" (el valor entre 0-1023 cuando está quieto) tanto para el eje y como para el eje x. Fue un problema, ya que la diferencia era casi pequeña (uno tenía el cero en y en 623) y quería usar la función de mapa para convertir de 0-1023 a grados. Pero la función de mapa cree que el valor restante es 1023/2. Lo que trajo a cada servo moviéndose tan pronto como enciendo el Arduino, no es bueno. Logré solucionar esto encontrando manualmente la diferencia entre el valor de lectura y cada valor de descanso diferente (que calculé por separado para cada joystick), luego para hacer el código más corto e inteligente, le hice leer los valores restantes en la función de configuración y guardarlos en algunas variables. El nuevo algoritmo se basa en convertir el incremento en grados, pero quería una cantidad muy baja de grados para mi incremento, así que Tuve que dividirlo por una constante: probé muchos valores, hasta que obtuve los 200 finales (puedo agregar un potenciómetro para cambiar manualmente este valor al deseado). El resto del código es bastante estándar, supongo, aunque podría ser más elegante poner el cálculo del incremento dentro de una función separada.

Paso 3: ELECTRÓNICA:

ELECTRÓNICA
ELECTRÓNICA

El cableado es el mismo que se muestra en la imagen o el archivo fritzing: señal de servos a pines: 5-6-9-10-11 y eje de joystick a pines analógicos: A0-A1-A2-A3-A4 era que los joysticks DEBEN SER suministrados por el Arduino, NO por el cargador que uso para los servos. De lo contrario, el servo se volvería loco moviéndose aleatoriamente de un lado a otro. Creo que eso podría deberse a que, si les proporciono el cargador, el Arduino no podrá decir con precisión la diferencia de potencial cuando los mueva, pero de nuevo: Soy muy nuevo en la electrónica, así que es solo una conjetura. Conectar la tierra de Arduino y la tierra del cargador a través de la placa de pruebas ayudó a prevenir movimientos aleatorios e inesperados, por una razón similar al suministro de joysticks, supongo.

Paso 4: ACTUALMENTE MEJORA:

ACTUALMENTE EN MEJORA
ACTUALMENTE EN MEJORA

Como cada joystick puede controlar 2 servos (1 por eje), necesito 3 servos para controlar todo el brazo, pero desafortunadamente solo tengo 2 pulgares, así que pensé que, en lugar de controlar cada servo, podía controlar solo la posición xyz del agarre y abra-cierre el agarre, ¡para un total de 4 ejes, 2 joysticks y 2 pulgares! Descubrí que ese problema se conoce como cinemática inversa, también descubrí que es casi fácil. La idea es escribir (ecuaciones no lineales) para encontrar el estado de cada efector (ángulos para los servos) dada la posición final. He subido un documento escrito a mano con las ecuaciones y actualmente estoy trabajando en un nuevo código para usarlas. No debería ser demasiado difícil, básicamente tengo que leer los joysticks, usar sus lecturas para modificar las coordenadas xyz del agarre, y luego dárselas a mis ecuaciones, calcular los ángulos de los servos y escribirlos.

Paso 5: MEJORAS FUTURAS:

Por lo tanto, estoy bastante satisfecho con el resultado y considerando que soy totalmente nuevo en la electrónica, no volar nada ni a mí mismo ya fue una gran victoria. Como dije al principio, cualquier idea para futuras mejoras, tanto de software como de hardware, es más que bienvenido! Hasta ahora pensé en: 1. El potenciómetro para modificar la "sensibilidad" de los joysticks.2. Nuevo código para hacerle “grabar” algunos movimientos y volverlos a hacer (quizás más rápido y más corto que la entrada humana) 3. Algún tipo de entrada visual / de distancia / de voz y poder obtener objetos sin que alguien use los joysticks 4. Poder dibujar figuras geométricas ¿Alguna otra idea? No dude en comentar con cualquier sugerencia. Gracias.

Recomendado: