Proyecto 42.4 Brazo Robot

19 de enero de 2020

En el siguiente tutorial veremos como hacer un brazo robot accionado por motores paso a paso. 

Este brazo robot lo ví de pasada en thingiverse y como tantas veces nos pasa a lo makers cuando vemos algo, nos invade el SAV y hasta que no lo montamos no paramos.

Antes de que pongáis vuestras impresoras a quemar plástico, quiero comentar algo. Por un lado el proyecto original del señor Jacky Le no está muy bien documentado para mi gusto; apenas un par de vídeos en YouTube y unas instrucciones de montaje en instructables. Por otra parte el brazo robot propiamente dicho tiene algunas carencias a nivel mecánico, como por ejemplo holguras en las uniones. 

El tema de la documentación trataré de solucionarlo aportando aquí la información que falta. Respecto del tema mecánico, las holguras se podrían minimizar empleando tornillería M4 en lugar de M3 para ensamblar el brazo robot. Para ello habría que repasar con un taladro y una broca de diámetro 4 los agujeros de las piezas, ya que tal cual están diseñadas las piezas, los tornillos M4 no entran y los M3 dejan holguras. En cualquier caso eso será en una futura actualización, de momento vamos a montar el brazo robot y programaremos algunos movimientos.

1. Imprime las piezas

Aquí poco que decir. Descarga los .stl en thingiverse e imprime las piezas.

La única dificultad que puedes encontrar en este punto es que una de las piezas tiene unas dimensiones de 214x41x28mm por lo que si tienes una cama estándar de 20x20 debes imprimir la pieza en diagonal para que entre en la cama.

2. Montaje del brazo robot

El montaje del brazo es bastante intuitivo y no tiene mayor dificultad. El Sr Le, ha dejado una guía en instructables que voy a completar con algunas notas de mi cosecha.

2.1. Plataforma de apoyo y rueda dentada.

Para empezar necesitamos una plataforma donde montar el brazo. He optado por una pieza de aluminio de 160 x 300 mm de lado y 3 mm de grosor que no recuerdo de dónde salió, seguramente de un viejo equipo electrónico.

Hacemos un agujero de ø 6 mm por el que introduciremos un tornillo M6x35 que será el eje de giro del brazo robot. Opcionalmente podemos atornillar unas patas a la base.

Plataforma vista desde abajo con las patas montadas. 

Antes de montar la base del robot sobre la plataforma hay que imprimir una pequeña pieza para que la rueda dentada ajuste perfectamente sobre el tornillo. 

Rueda dentada vista desde abajo.

Se trata de un casquillo  que he diseñado con sketchUp y que curiosamente que no viene con el robot original. 

Casquillo visto desde arriba y desde abajo. 

En el casquillo embutiremos una tuerca M6. Si la tuerca entra con dificultad no debemos forzar la pieza; calentar la tuerca con ayuda de un soldador y ejercer una ligera presión a la vez hasta que entre en el alojamiento. Si la tuerca sobresale, limarla hasta que quede a la misma altura que el casquillo.

Introducimos el tornillo desde abajo con dos arandelas para que no sobresalga en exceso y atornillamos el casquillo a la plataforma.

En el tornillo M6 introducimos la rueda dentada sobre la que engrana el motor del eje Z. Marcamos cuatro puntos y hacemos cuatro taladros para atornillar la rueda dentada. 

Como la pieza tiene espesor suficiente, he mecanizado cuatro roscas sobre el aluminio para atornillar directamente la rueda a la plataforma. También se pueden hacer agujeros pasantes y usar tuercas. 

Después colocamos el anillo con los rodamientos de 5 mm de diámetro. Los rodamientos van a permitir que el brazo gire con facilidad y se pueden comprar en una ferretería. Si no los encuentras, busca una ferretería especializada en suministros industriales.

Rueda dentada fijada a la plataforma.

2.2 Soporte del motor Z.

En la pieza Robot Base Low hay que embutir dos tuercas M3. Esta pieza es donde va fijado el motor del eze Z para el giro del brazo robot.

Antes de montar el soporte del motor Z hay que introducir un casquillo hexagonal en la base, ya que el agujero de ésta es bastante mayor que el tornillo M6, lo que supone una holgura muy grande en un elemento tan importante como es la base del brazo robot.

Foto de la base sin el casquillo. Se aprecia un agujero hexagonal.

Para solucionar este problema he diseñado un pequeño casquillo que servirá para mejorar el ajuste entre la base del brazo robot y el eje de giro de la misma. La pieza está disponible para descargar al final de la página.

Casquillo hexagonal. 

Foto de la base con el casquillo hexagonal. 

Ahora ya podemos atornillar la base al soporte del motor Z. Introducimos dos tornillos M3x40 por la parte superior de la base. 

Y atornillamos la base al soporte del eje Z. 

Conjunto base + soporte visto desde atrás. 

2.3. Montaje del brazo principal.

Introducir la pieza gear 1 en el alojamiento de la pieza Varm.

Las siguientes piezas a montar son el main arm y gear 2

Montar el main arm en la base y por el lado izquierdo introducir la pieza gear 2

Introducir la pieza gear 2 por el hueco. 

Por el lado derecho montamos el conjunto gear 1 + Varm.

y lo atornillamos con una varilla roscada de M3x80 ya que no hay tornillos M3 tan largos. Las tuercas son autoblocantes para evitar que se aflojen. 

2.4. Montaje del brazo secundario.

Las siguientes piezas que necesitamos son el hoarm y el trialink, una varilla M3x65 y dos tuercas autoblocantes.

En el extremo del main arm atornillamos las piezas hoarm y trialink con una varilla M3x65 y dos tuercas autoblocantes. 

La pieza link 135 va en el lado derecho. La fijamos con un tornillo M3x20 en la parte de abajo y otro M3x25 en la parte superior. 

En el lado izquierdo montamos la pieza link 135 angled con dos tornillos M3x20. 

2.4. Montaje de la pinza.

En el extremo del brazo secundario montamos las piezas trialink font y link 147 con un tornillo M3x20 y otro M3x40. 

Montamos la pinza y el servo. 

Pinza vista desde arriba. 

Pinza vista desde abajo.


Pinza montada en el brazo robot.

2.5. Montaje de los motores.

En cuanto al montaje de los motores señalar que tuve la inmensa suerte de encontrar un par que encajan perfectamente en los ejes X e Y.

Se trata de dos motores N17 del fabricante NIDEC y que recuperé de una vieja impresora láser. Y digo que encajan perfectamente porque venían con el engranaje ya montado y es del mismo tamaño y número de dientes que el engranaje original que necesita el brazo robot.

Y ya digo es una suerte que los motores vengan con el engranaje montado, porque no sé hasta qué punto el engranaje impreso se ajusta con fuerza al eje del motor. Hay que tener en cuenta que el movimiento se transmite directamente, sin caja reductora, por lo que los motores deben ser de par elevado y puede que el engranaje patine sobre el eje.

Vamos con el montaje. Tuve que imprimir un par de espaciadores para retrasar los motores y que el engranaje coincida con la rueda dentada del brazo robot.

El espaciador se monta entre el soporte y el motor. 

El motor del eje Z lo desmonté de la bandeja portachasis de un viejo ortopantomógrafo. 

Vista trasera con los motores montados.

Por último montamos el brazo robot en la plataforma. 

Brazo robot terminado.

3. Esquema

En el proyecto original, el autor emplea una fuente de 12 V para alimentar el brazo robot. Sin embargo podemos alimentar los motores con una tensión mayor para aumentar el par de giro, siempre que tengamos la precaución de limitar la corriente. Aquí voy a usar una fuente de 28 V y 4 A que desmonté de un viejo densitómetro.

3.1. Conexión de los motores.

Para controlar los motores las opciones más comunes son los drivers A4988 o DRV8825. He optado por los DRV8825 porque suministran hasta 2 A y van un poco más sobrados con los motores de 1,2 A que voy a utilizar.

Para calibrar la corriente de los drivers nos ayudamos de un polímetro digital y un destornillador de estrella. Encendemos la fuente y, llevamos la punta negra a GND y la positiva al cursor del potenciómetro del DRV8825 y lo giramos hasta medir la mitad en mV de los mA de nuestro motor. Este vídeo de Obijuan, explica muy bien el proceso.

En mi caso los motores que estoy utilizando son de 1,2 A y los he calibrado a 500 ≈ 550 mV, lo que equivale a 1000 ≈ 1100 mA (un poco menos de la corriente máxima) según la fórmula I= 2 x Vref.

Si se suministra demasiada corriente a los motores es posible que no se muevan, o que el eje vibre pero no gire. En ese caso baja 100mV y prueba de nuevo. Cuando tengas el robot funcionando, observa si los motores se calientan mucho -queman al tacto- si es así, debes calibrar a la baja la corriente de los motores.

Si estás utilizando los drivers A4988 la relación tensión-corriente cambia. Mira este enlace para calibrar la corriente de los motores.

Utilizar una fuente de alta tensión y calibrar los servos a una corriente de 1,2 A va a suponer que los servos se van a calentar más de lo normal, por lo que se hace indispensable el uso de disipadores y si ayudamos con ventilación forzada, mejor que mejor. Por ello he impreso una caja para el Arduino, donde he atornillado una escuadra con un ventilador de 24 V que conectaré en la misma entrada de alimentación del shield CNC. Ambas piezas están disponibles para descargar al final de la página.

3.2. Conexión del servo.

El servo de la pinza lo conectamos en los pines +5V, GND y la señal en el pin marcado como Z+.

4. Programación del Arduino

En el canal del Sr. Le hay una serie de vídeos donde explica cómo controlar el brazo robot con bCNC. El problema de esta aplicación es que no funciona con servos. Desconozco si el uso de bCNC tiene alguna ventaja sobre Universal Gcode Sender, que sí tiene soporte para servos. Así que voy a ignorar la instalación de bCNC y vamos directamente a GRBL + UGS.

Primero descargar la librería grbl con soporte para servos.

Abrir Arduino e ir a Programa → Incluir Librería → Añadir librería .ZIP

Seleccionar el archivo grbl-servo-master.zip y clic en Abrir.

Ir a Programa → Incluir Librería → grbl-servo-master 

Reiniciar el IDE de Arduino .

Ir a Archivo → Ejemplos → grbl-servo-master → grblUpload

Se abre una ventana del IDE de Arduino. Clic en subir.

Ya tenemos programado el Arduino.

5. Controlando en brazo robot con Universal Gcode Sender.

Descarga Universal Gcode Sender.

En este punto debes tener el robot montado, el servo y los motores conectados como en el esquema y el Arduino programado como hemos visto justo aquí arriba. 

Conecta la fuente al shield CNC y con un cable USB conecta Arduino a tu PC para enviarle comandos desde UGS.

Abre UGS y configura los parámetros como sigue:

Loa parámetros son orientativos, es posible que haya que modificarlos de acuerdo con las características de los motores que cada uno ha empleado. 

Ve a la pestaña Machine Control, selecciona distintos pasos desde 0.1 hasta 5 y acciona los botones de la derecha para mover los distintos ejes. Si todo ha ido bien verás como el brazo robot se mueve en los tres ejes.

Controlando el Servo

Para abrir y cerrar la pinza hay que introducir el comando M3 Sxx en la pestaña Command, donde xx son los grados de apertura de la pinza. En las pruebas que he realizado, con un rango de valores entre 0 y 90 conseguimos abrir y cerrar la pinza. 

Antes de montar el servo en la pinza hay que calibrar el eje porque no sabemos en qué posición está. Carga un sketch de la librería servo de Arduino y calibra el eje en la posición 0. Comprueba que la pinza funciona correctamente y móntala en el brazo robot. Más info aquí

6. Cómo programar una rutina de movimientos.

Para programar una rutina de movimientos no hay recetas mágicas, es un proceso entretenido a base de prueba y error.

Ir a la pestaña Machine Control e ir pulsando los botones de la izquierda.

Veréis como en la consola de comandos aparecen unos números, que son las coordenadas donde se mueve el brazo.

Pues bien, iremos moviendo el brazo robot manualmente hasta que vaya a la posición deseada y una vez que las coordenadas son correctas, las vamos anotando en un fichero txt.

Si queremos que el brazo se mueva en dos direcciones simultáneamente, se pueden poner varios comandos en la misma línea. 

Hay que tener en cuenta que el origen de coordenadas debe ser el mismo cuando vayamos a ejecutar la rutina, de lo contrario el robot se moverá a posiciones erróneas.

Cuando tenemos la rutina terminada guardamos el txt y vamos a la pestaña File Mode, clic en Browse, cargamos el txt que acabamos de crear y clic en Send. El brazo robot comenzará a moverse en las coordenadas que hemos escrito en el fichero txt.

El proceso es similar al funcionamiento de una CNC o impresora 3D, solo que en lugar de crear el archivo gcode con Slicer o un programa de ruteado para CNC´s, aquí el archivo gcode con las coordenadas lo creamos nosotros manualmente.

Si es la primera vez que trabajas con Universal Gcode Sender, puedes echar un vistazo a este tutorial y a este otro. Aunque están orientados a las máquinas CNC hay información útil acerca de ajustes, calibraciones y como enviar archivos con código G. También puedes consultar este vídeo de Jacky Le.

Espero que os haya gustado.

¡Hasta pronto!

Links

Canal de YouTube de Jacky Le  con vídeos explicativos.

Instalación de  Grbl y bCNC aquí.

Como controlar el servo con Universal Gcode Sender aquí.


Descargas

Descarga la librería GRBL compatible con servos.

Descarga los archivos stl en thingiverse.

Archivos stl extras y Universal Gcode Sender aquí.


Acknowledgements

thanks to Mr. Jacky Le for sharing his project.