Tabla de contenido:

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: 5 pasos (con imágenes)

Video: Brazo robótico controlado por Arduino con 6 grados de libertad: 5 pasos (con imágenes)

Video: Brazo robótico controlado por Arduino con 6 grados de libertad: 5 pasos (con imágenes)
Video: Brazo robótico con Arduino - Smartphone Control 2024, Mes de julio
Anonim
Brazo robótico controlado por Arduino con 6 grados de libertad
Brazo robótico controlado por Arduino con 6 grados de libertad
Brazo robótico controlado por Arduino con 6 grados de libertad
Brazo robótico controlado por Arduino con 6 grados de libertad
Brazo robótico controlado por Arduino con 6 grados de libertad
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 armar algo y no tenía idea de lo que quería hacer.

Un compañero publicó un enlace a "una interesante construcción de brazo robótico de código abierto" que despertó mi interés. Los planes eran solo un brazo sin controles o un controlador. Teniendo en cuenta mis limitaciones de tiempo, parecía un buen punto de partida. El único problema era que realmente no tenía herramientas para empezar.

Con la ayuda de algunos de los miembros del grupo, pude cortar y enviarme las partes acrílicas, así como las dos partes impresas en 3D que se muestran a continuación. Combinado con algunos pedidos de hardware durante la noche y varios viajes a la ferretería local, completé un proyecto de trabajo la noche anterior al evento.

Como suele ser el caso, hay más en la historia y varias encarnaciones en la construcción que se han condensado en lo que ves a continuación. Si tiene interés en la historia de fondo, puede encontrar más aquí:

Paso 1: Qué necesita: hardware y electrónica

Lo que necesita: hardware y electrónica
Lo que necesita: hardware y electrónica
Lo que necesita: hardware y electrónica
Lo que necesita: hardware y electrónica

El diseñador del proyecto original vivió en Europa y posteriormente utilizó medidas métricas y materiales comunes allí. Por ejemplo, el tablero de prensado que usó para la carrocería tenía un grosor estándar de 5 mm. El material similar aquí en los EE. UU. Tiene 1/8 , que tiene aproximadamente 3,7 mm de grosor. Esto dejó un espacio en las aberturas que fueron diseñadas originalmente para ajustarse a presión. En lugar de corregir los dibujos, simplemente utilicé Gorilla Glue para asegurar estas uniones.

También usó tuercas y pernos roscados M3 que no son estándar en su ferretería local en los EE. UU. En lugar de convertirlos en opciones disponibles localmente, simplemente ordené el hardware en línea como se muestra en mi lista de piezas a continuación.

  • 22 - Separadores M3 x 0,5 x 23 mm
  • 15 - Espaciadores M3 x 15 mm
  • 40 - Tornillos M3
  • Tuercas hexagonales M3
  • Tornillos M3 de 25 mm
  • 1 - Primavera
  • Cinta de montaje de doble cara de 3/4"
  • 5 - SG 5010 TowerPro Servo
  • 1 - Mini servo SG92R TowerPro
  • 1 - Mini servo SG90 TowerPro
  • Cabezal de pasador recto de una hilera de 2,54 mm
  • 1 - Tablero de pruebas de tamaño medio
  • 1 - Cables de puente de 'extensión' hembra / macho - 40 x 6"
  • 1 - Lámina acrílica azul de 12 "x 24" o las piezas cortadas con láser de su proveedor de servicios favorito
  • 2-3 mm x 20 mm + 4 mm x 5 mm espaciadores de cojinetes de junta impresos en 3D (ver más abajo)
  • 1 - Panel de control * Ver nota en la sección de cableado
  • 1 - LED RGB difuso (tricolor) de 10 mm
  • 1 - Arduino Uno
  • 1 - LCD estándar 16x2 + extras - blanco sobre azul
  • 1 - Mochila LCD con caracteres i2c / SPI
  • 1 - PWM / Servocontrolador Adafruit de 16 canales y 12 bits
  • 1 - MCP3008 - ADC de 8 canales y 10 bits con interfaz SPI
  • 3 - Sensor del módulo de conexión de JoyStick * Consulte la nota en la sección de cableado
  • Conector de barril DC
  • Adaptador de CA a CC
  • Cables de extensión servo - longitudes variadas

Casi todas las piezas de este brazo se cortaron de acrílico de 1/8 de pulgada. Sin embargo, los dos espaciadores de cojinetes de juntas deben imprimirse. Además, el diseño original requería que las dos bases espaciadoras de juntas tuvieran una altura de 7 mm hasta el eje del rodamiento. Cuando comencé a ensamblar la parte superior del brazo, rápidamente quedó claro que eran demasiado altos debido a la altura de los servos TowerPro. Tuve que hacer nuevos cojinetes de articulación hechos con una base de solo 3 mm de alto, que, por cierto, todavía era un poco demasiado alto pero manejable. Deberá tomar nota de la altura relativa de sus servos y tener en cuenta la distancia entre los dos brazos inferiores:

Altura del servo + bocina del servo + cojinete de junta + cinta de doble cara = 47 mm +/- 3 mm.

Paso 2: Montaje del brazo

Ensamblaje del brazo
Ensamblaje del brazo
Ensamblaje del brazo
Ensamblaje del brazo
Ensamblaje del brazo
Ensamblaje del brazo
Ensamblaje del brazo
Ensamblaje del brazo

Antes de comenzar, asegúrese de centrar todos sus servos. Si en cualquier momento durante la construcción, si mueve manualmente la posición del servo, deberá volver a centrarlo antes de asegurarlo al marco. Esto es especialmente importante con los servos de hombro que siempre deben moverse al unísono.

  1. Fije el servo de la base a la placa base superior con los tornillos M3 de 25 mm y las tuercas hexagonales. ¡No apriete demasiado! NOTA: Es posible que desee aplicar un ajuste apretado a las roscas para minimizar el aflojamiento de las tuercas durante el uso.
  2. Si está utilizando la lista de piezas que tengo arriba, a continuación, querrá ensamblar los 5 espaciadores de la base enroscando 2 de cada uno de los separadores M3 x 0,5 x 23 mm juntos y luego fijándolos a la placa base superior con tuercas hexagonales.
  3. Fije la placa base inferior a los separadores con 5 tornillos M3.
  4. Fije la placa de hombro a las dos placas de montaje del servo con un adhesivo acrílico seguro. Usé Gorilla Glue aquí. NOTA: Cada una de las dos placas de servo tiene un orificio en la parte posterior que permite insertar un espaciador de refuerzo conectándolas. ¡Asegúrate de que los orificios estén alineados! * Mientras tienes el pegamento a mano, sigue adelante y une la placa de montaje de la muñeca con la placa principal de la pinza. * Opcionalmente, también puedes pegar la placa del servo de la muñeca a las dos placas de unión de la muñeca. No hice esto eligiendo, en cambio, atornillarlos con separadores como se describe a continuación.

  5. Conecte el conjunto de hombro ahora curado al servo base. Usé la bocina más ancha incluida con el servo, que era la bocina de montaje de seis vástagos.
  6. Agregar el marco del antebrazo a los servos de hombro puede ser complicado. Sugiero asegurar los cuernos a los marcos del antebrazo antes de continuar. NOTA: Asegúrese de centrar sus servos para el montaje del hombro ANTES de colocarlos en el marco. Estos dos servos deben moverse al unísono y si están desalineados causarán como mínimo una fluctuación del servo y, si están lo suficientemente desalineados, podrían dañar el marco o los servos. * Cada uno de los servos de hombro están montados con sus soportes en la parte posterior de las placas de montaje en lugar de pasar los servos a través de las placas; esto le permitirá empujar la bocina en el eje del servo en ángulo y asegurar el tornillo. Aún no asegure el servo a la placa de montaje. * A continuación, agregue el servo interno y monte el brazo
  7. Ensamble el marco del brazo superior y los servos empujando los servos a través de los espacios en los brazos y luego insertando los espaciadores entre ambas placas del brazo superior y asegúrelos con tornillos M3.

  8. Agregue cinta adhesiva de doble cara a la parte posterior del espaciador de la articulación del codo y recorte el exceso.
  9. Conecte el espaciador a la parte inferior del servo que actuará como actuador de codo.
  10. Deslice el conjunto del brazo superior en el marco del conjunto del brazo inferior y fije los tornillos de la bocina del servo.
  11. Agregue separadores de refuerzo entre dos placas del brazo inferior. Usé dos en lugar de los cuatro para bajar el peso.
  12. Agregue cinta adhesiva de doble cara a la parte posterior del espaciador de la articulación de la muñeca superior y recorte el exceso.
  13. Coloque el espaciador en la parte inferior del servo que actuará como actuador de muñeca.
  14. Fije la placa exterior de la muñeca a la bocina del servo de muñeca y asegúrela con un tornillo de bocina.
  15. Ensamble la placa de servo de muñeca con las dos placas de articulación de muñeca y separadores.
  16. Asegure el servo de muñeca en la placa del servo con la placa de sujeción del servo.
  17. Deberá asegurar la bocina de muñeca al servo antes de conectar el conjunto de pinza a esa bocina debido a que la abertura para el tornillo de la bocina está bloqueada.
  18. Ensamble sin apretar las piezas de la pinza para que encajen antes de conectar la bocina del servo de la pinza al servo. Esto le dará espacio para atornillar la bocina en el paso anterior.
  19. Conecte el cuerno de la pinza a su servo y apriete más los tornillos que sujetan las juntas de la pinza. NOTA: no apriete completamente estas tuercas y pernos, ya que deben aflojarse para permitir que la pinza se mueva.

Paso 3: Panel de control y cableado

Panel de control y cableado
Panel de control y cableado
Panel de control y cableado
Panel de control y cableado
Panel de control y cableado
Panel de control y cableado

Construí este proyecto como una plataforma de desarrollo para algunas ideas que tengo para un proyecto educativo posterior. Entonces, la mayoría de mis conexiones son simples conectores dupont. La única soldadura que hice fue para el MCP3008. Si puede encontrar una placa de conexión para este componente, entonces debería poder construir este brazo sin soldadura.

Hay 3 grupos de componentes:

  1. Entradas: estos elementos reciben información del usuario y se componen de los joysticks y el mcp3008 ADC.
  2. Salidas: estos elementos transmiten datos al mundo, ya sea mostrando el estado al usuario o actualizando los servos con datos de posición. Estos elementos son la pantalla LCD, la mochila LCD, el LED RGB, la placa del servocontrolador y, por último, los servos.
  3. Procesamiento: el Arduino envuelve el último grupo que toma los datos de las entradas y envía los datos a las salidas según las instrucciones del código.

El esquema de Fritzing anterior detalla las conexiones de los pines para todos los componentes.

Entradas

Empezaremos con las entradas. Los joysticks son dispositivos analógicos, lo que significa que presentan un voltaje variable como entrada al Arduino. Cada uno de los tres joysticks tiene dos salidas analógicas para X e Y (arriba, abajo, izquierda derecha) haciendo un total de 6 entradas al Arduino. Si bien el Arduino Uno tiene 6 entradas analógicas disponibles, necesitamos usar dos de estos pines para la comunicación I2C con la pantalla y el servocontrolador.

Debido a esto, incorporé el convertidor analógico a digital (ADC) MCP3008. Este chip admite hasta 8 entradas analógicas y las convierte en una señal digital a través de los pines de comunicación SPI de Arduino de la siguiente manera:

  • Pines 1-6 del MCP> Salidas variables de los joysticks para el pulgar
  • Pines MCP 7 y 8> Sin conexión
  • MCP Pin 9 (DGND)> Tierra
  • Pin 10 de MCP (CS / SHDN)> Pin 12 de Uno
  • Pin 11 de MCP (DIN)> Pin 11 de Uno
  • MCP Pin 12 (DOUT)> Uno Pin 10
  • Pin 13 de MCP (CLK)> Pin 9 de Uno
  • MCP Pin 14 (AGND)> Tierra
  • Pin 15 y 16 del MCP> + 5V

Las conexiones del joystick en el esquema se muestran solo a modo de ejemplo. Dependiendo de qué joysticks compre y cómo estén montados, sus conexiones pueden diferir de las mías. Las diferentes marcas de joystick pueden tener un pinout diferente y también pueden orientar X e Y de manera diferente. Lo importante es comprender lo que representa cada entrada en el ADC. Cada pin representa las siguientes relaciones en mi código:

  • Pin 1: la base: los datos analógicos de este pin girarán el servo más bajo del robot
  • Pin 2 - El hombro - Los datos analógicos en este pin rotarán los dos servos por encima del servo base
  • Pin 3 - El codo - Los datos analógicos en este pin rotarán el siguiente servo hacia arriba desde los servos del hombro
  • Pin 4 - Muñeca ARRIBA / DN - Los datos analógicos en este pin rotarán el servo de muñeca, levantando y bajando el conjunto de pinza
  • Pin 5 - La pinza - Los datos analógicos en este pin abrirán y cerrarán la pinza
  • Pin 6 - Rotar muñeca - Los datos analógicos en este pin rotarán la pinza

NOTA: Al comprar y montar los joysticks de pulgar a los que se hace referencia en la lista de piezas, tenga en cuenta que la orientación de los módulos puede diferir de la mía, por lo tanto, pruebe las salidas xey para una conexión adecuada al ADC. Además, si está utilizando mi panel de control impreso en 3D, los orificios de montaje pueden estar desplazados de los míos.

Salidas

El Adafruit PWM / Servo Controller hace que este proyecto sea súper simple. Simplemente conecte los Servos a los encabezados de los servos y se manejarán todas las conexiones de potencia y señal. A menos que encuentre servos con cables extra largos, querrá obtener un conjunto de extensiones de cable de servo en diferentes longitudes para que todos sus cables de servo lleguen a su placa controladora.

Los servos están conectados de la siguiente manera:

  • Posición 0 - Servo base
  • Posición 1 - Servo de hombro (Cable Servo Y)
  • Posición 2 - Servo de codo
  • Posición 3 - Muñeca 1 Servo
  • Posición 4 - Servo de pinza
  • Posición 5 - Muñeca 2 Servo

Además, VCC y V + están conectados a +5 voltios y GND está conectado a tierra.

NOTA 1: Una nota GRANDE aquí: el voltaje de suministro para todo el proyecto ingresa a través del bloque de terminales de alimentación en el tablero de control del servo. El pin V + en el servocontrolador en realidad está suministrando energía desde el bloque de terminales al resto del circuito. Si necesita programar su Uno, le recomiendo que desconecte el pin V + antes de conectar el Uno a su PC, ya que el consumo de corriente de los servos podría dañar su puerto USB.

NOTA 2: Estoy usando un adaptador de pared de 6 V CA a CC para alimentar el proyecto. Recomiendo un adaptador que pueda suministrar al menos 4 A de corriente para que cuando uno o más de los servos se atasquen, el pico repentino en la corriente no apague su sistema y reinicie su Arduino.

La pantalla LCD 16X2 está conectada a la mochila LCD Adafruit para aprovechar la interfaz I2C que ya está siendo utilizada por el servocontrolador. El SCL del Servocontrolador y el CLK de la Mochila se conectan al Pin A5 del Uno. Del mismo modo, el SDA en el servocontrolador y el DAT en la mochila se conectan al Pin A4 en el Uno. Además, 5V está conectado a +5 Voltios y GND está conectado a tierra. LAT en la mochila no está conectado a nada.

Por último, el LED RGB está conectado a los pines 7 (ROJO), 6 (Verde) y 5 (Azul) del Uno. La pata de tierra del LED está conectada a tierra a través de una resistencia de 330 ohmios.

Procesando

Por último, pero no menos importante, el resto de las conexiones de Arduino que no se enumeran anteriormente son las siguientes: El pin 5V está conectado a +5 Voltios y GND está conectado a tierra.

En mi configuración, utilicé los rieles laterales de la placa de pruebas para unir todas las líneas de alimentación y de tierra, así como los pines I2C para todos los dispositivos.

Paso 4: Código

Código
Código

Como se dijo anteriormente, originalmente construí este proyecto como una demostración para mi Maker Faire local. Tenía la intención de que fuera algo para que niños y adultos jugaran mientras estaban en nuestro stand. Resultó que era mucho más popular de lo que había imaginado, tanto que los niños se peleaban por ello. Entonces, cuando llegó el momento de volver a escribir, incorporé un "Modo de demostración" que implementa un límite de tiempo.

El brazo se queda ahí esperando a que alguien mueva un joystick y cuando lo hacen, comienza un temporizador de 60 segundos. Al final de los 60 segundos, deja de recibir información del usuario y "descansa" durante 15 segundos. Siendo lo que son los períodos de atención cortos, este período de descanso redujo en gran medida la disputa por el tiempo de espera.

Operación básica

El código que aparece en la sección de referencia a continuación es bastante simple. Una matriz realiza un seguimiento de las 6 articulaciones con extensiones mínimas y máximas, una posición inicial y la posición actual. Cuando se enciende el brazo, la función de inicio define las bibliotecas necesarias para hablar con el MCP3008, la mochila LCD (y, posteriormente, la pantalla) y define los pines LED. A partir de ahí, realiza una verificación de los sistemas básicos y procede a colocar el brazo en casa. La función de inicio comienza con la pinza y avanza hasta la base para minimizar la posibilidad de atascarse en condiciones normales. Si el brazo está completamente extendido, entonces puede ser mejor ubicarlo manualmente antes de encenderlo. Dado que los servos genéricos no proporcionan retroalimentación de su posición, debemos colocar cada uno en un punto predefinido y realizar un seguimiento de qué tan lejos se movió cada uno.

El bucle principal comienza primero en modo de espera, buscando que los joysticks se alejen de su posición central. Una vez que eso sucede, el bucle principal cambia de estado al estado de cuenta regresiva. A medida que el usuario mueve cada joystick, la posición relativa del joystick desde el centro se sumará o restará de la posición conocida actual y actualizará el servo apropiado. Una vez que un servo ha alcanzado su límite definido en una dirección, el joystick se detiene. El usuario deberá mover el joystick en la otra dirección para volver a moverlo. Este es un límite de software que se impone a los servos independientemente de sus paradas de hardware. Esta función le permite mantener los movimientos del brazo dentro de un área operativa específica si es necesario. Si se suelta el joystick hacia el centro, el movimiento se detendrá.

Este código es solo un punto de partida general. Puede agregar sus propios modos como desee. Un ejemplo puede ser un modo de ejecución continua sin temporizador o tal vez agregar los botones del joystick como entradas y escribir un modo de grabación / reproducción.

Paso 5: enlaces y recursos

Referencias de brazos

  • Publicación que inspiró este proyecto
  • Publicaciones de blog de diseñadores originalesMi propio brazo robóticoMis mini pinzas servo y brazo robótico completo Multiplicar el brazo robótico y la electrónica
  • Brazo Thingiverse
  • Mini pinza servo Thingiverse

Libries de software

  • Recursos de Adafruit PWM / Servo Controller
  • Biblioteca MCP3008
  • Hoja de datos de MCP3008

Panel de control y código

  • Dibujo de Tinkercad del Panel que hice
  • Repositorio de código actual

Recomendado: