POR VICENTE GRAS · PUBLICADA 3 NOVIEMBRE 2020 · ACTUALIZADO 7 NOVIEMBRE 2020
En esta entrada vamos a construir un robot capaz de dibujar sobre un papel. Para ello emplearemos el sistema de automatización CNC (control numérico computarizado). Este sistema permite almacenar un conjunto de instrucciones que el robot ejecutará secuencialmente para completar el dibujo.
Usando el software adecuado, podemos generar esta secuencia de instrucciones a partir de una imagen jpg, por ejemplo
La mayor parte de las piezas que usaremos son elementos estándar como perfiles de aluminio o deslizadores y poleas. Sin embargo, para realizar el mecanismo de subida y bajada del lápiz, necesitaremos algunas piezas especiales que podemos realizar con una impresora 3D.
Características generales
- Alimentación: 12V
- Consumo máximo: 2A
- Superficie de trabajo: 100 x 100mm (fácilmente expandible usando unos perfiles y correas más largos)
- Elemento de dibujo: bolígrafo, lápiz, rotulador, etc.
Una vez montada, nuestra máquina de dibujo tendrá el aspecto siguiente:
Material necesario
- 2 x Perfil de aluminio 2020 de 250mm
- 2 x Motor paso a paso Nema 17 1.33A
- 2 x Soporte motor NEMA 17 para perfil 2020
- 2 x Correa dentada GT2 de 6mm de 400mm de longitud
- 2 x Cierre para correa dentada
- 2 x Slide para perfil 2020
- 2 x Polea motriz GT2
- 2 x Polea GT2 con rodamiento
- 2 x Soporte polea para perfil 2020
- Servo MG90S
- Piezas varias eje z
- Arduino UNO
- CNC Shield + 4 controladores A4988
- Alimentador de 12V
Montaje
Básicamente, nuestro robot está compuesto por dos ejes idénticos (ejes X e Y) montados perpendicularmente. Estos ejes se encargan de posicionar el lápiz sobre el papel en las coordenadas adecuadas. El lápiz tiene dos posiciones, en la posición ON el lápiz está sobre el papel y deja su marca, en la posición OFF el lápiz está levantado y no pinta. A este movimiento vertical lo llamaremos eje Z.
Los ejes X e Y están compuestos por un perfil de aluminio 2020, un slide o deslizador, un motor Nema 17 y una polea. El montaje es sencillo, tal como se ve en la imagen. Notar que el eje X está montado con el motor a la derecha y el eje Y está montado con el motor a la izquierda.
Antes de meter el deslizador en el perfil hay que aflojar los tornillos que sujetan las ruedas. Una vez metido el deslizador en el perfil, apretar los tornillos para que no quede holgura pero que se mueva fácilmente.
Tenemos que cortar la correa dentada a una longitud suficiente para que circule entre el motor y la polea. La cerramos y anclamos sobre el deslizador, ver imagen. Es importante que quede suficientemente tensa para que el deslizador se mueva sin problemas.
Los ejes X e Y se unen usando dos tornillos M4 y tuercas de martillo. El eje X se aloja sobre la plataforma del deslizador del eje Y dejando espacio suficiente para el paso de la correa del eje Y.
Debemos fijar el eje Y a la base con tornillos M4 y tuercas de martillo, separándolo con un par de arandelas para que los tornillos que sujetan las ruedas del deslizador no rocen sobre la base en su desplazamiento.
El eje Z está formado por unas piezas especiales impresas en impresora 3D. Si tienes impresora y quieres imprimirlas, puedes descargar el archivo .stl aquí.
El eje Z se aloja sobre el deslizador del eje X con dos tornillos M4 de cabeza avellanada. Incluye un servo MG90S y el soporte para el lápiz. El servo se fija con tornillos M2 y el soporte del lápiz con tornillos M3. La pieza fija del eje Z aloja dos rodamientos de 3mm a través de los que pasa el eje del basculante. El brazo del servo empuja al basculante para subir y bajar el lápiz.
Como eje del basculante usaremos un tornillo M3 con grover-arandela-tuerca para evitar que se afloje.
Conexiones
El primer paso será alojar la CNC Shield sobre la placa de Arduino UNO como se ve en la imagen
Dado que sólo necesitamos controlar dos motores paso a paso (ejes X e Y), sólo necesitamos instalar dos controladores A4988 sobre la shield. Antes de instalar los controladores, debemos colocar los tres jumpers que controlan el microstepping. Hay que poner tres jumpers bajo cada controlador. Ahora podemos insertar los controladores en los conectores dupont hembra marcados como X e Y, quedando los conectores Z y A vacíos. Hay que tener en cuenta la posición del controlador, mantener el potenciómetro de ajuste en la parte inferior, como se ve en la figura anterior.
Las conexiones a realizar podemos verlas en la siguiente figura
Los motores paso a paso Nema 17 los conectamos directamente a la shield con el cable que incluyen poniendo el cable negro en la parte inferior. Los tres cables del servo se conectan de la siguiente manera: el negro a GND, el rojo a 5V y el naranja a Z+ como se ve en la figura. Dado que el cable del servo tiene un conector de 3 pines hembra, necesitaremos un cable dupont de 3 hilos macho-hembra para conectar el servo a la shield.
Es conveniente distribuir los cables de los motores con bridas evitando que puedan enredarse con las correas pero que tengan suficiente holgura para permitir el movimiento de los deslizadores.
El alimentador de 12V debemos conectarlo a la entrada de alimentación de la shield. OJO, no al conector de alimentación del Arduino. Hay que cortar el conector del alimentador y conectar los cables a la shield. Cuidado con la polaridad, es importante conectar el positivo y el negativo en los terminales + y – respectivamente. Probablemente necesitaremos un multímetro para averiguar la polaridad de los cables.
Programación
Vamos a usar una distribución de GRBL para Arduino especial. Está modificada para soportar un servo sobre el eje Z. Puedes descargarla aquí.
Si tienes alguna otra distribución de GRBL en tu máquina, deberías borrarla. Mira si en la carpeta «Documentos/Arduino/libraries» hay alguna carpeta llamada GRBL, si la hay, bórrala.
Descomprimir el archivo, abrir la carpeta MIGRBL y abrir el archivo MIGRBL.ino con el IDE de Arduino. Conectar la placa de Arduino UNO al ordenador con su cable USB y subir el archivo. Esto es todo, nuestra máquina está deseando empezar a dibujar.
Software
Para manejar el robot podemos usar cualquier programa de trazado laser compatible con GRBL, por ejemplo LaserGRBL. Esta es una herramienta gratuita que permite obtener el código GRBL desde archivos de imagen (jpg, png, etc) y enviarlos directamente a un dispositivo compatible. En la web del programador tenemos un manual de uso muy fácil de leer. Una vez instalada la aplicación, conectaremos con nuestro robot con el botón Conectar (arriba a la izquierda) y ya podemos probar manualmente el funcionamiento de los ejes X e Y con los controles destinados para ello. A estas alturas, nuestros motores ya deberían responder posicionándose adecuadamente. Debemos mover los deslizadores con la mano para situarlos en la posición inicial (coordenadas 0, 0) de la máquina, el eje X totalmente a la izquierda y el eje Y totalmente abajo.
Antes de enviar nuestro primer dibujo tenemos que ajustar el eje Z. Tenemos que posicionar el brazo del servo para que levante y baje el lápiz cuando sea necesario. Para ello crearemos dos botones personalizados para levantar y bajar el lápiz manualmente. Pinchamos con el botón derecho en la barra inferior del programa y cogemos la opción Agregar botón personalizado.
Introducimos los parámetros indicados en la siguiente imagen como Laser ON y aceptamos. Repetimos la operación para añadir otro botón Laser OFF. Pulsando estos botones deberíamos notar como el servo del eje Z se mueve.
Si ya hemos montado el basculante del eje Z, ahora debemos desmontarlo para ajustar el servo. Pinchamos sobre el botón Laser On para que el servo se ponga en la posición «lápiz abajo» y atornillamos el brazo del servo en posición horizontal. Si ahora pinchamos en el botón Laser OFF veremos como el brazo del servo sube cierto ángulo. Ahora ya podemos montar el basculante del eje Z.
Nuestro primer dibujo
Si todo ha ido bien ya podemos empezar a dibujar. Vamos a seguir algunos pasos sencillos para realizar nuestro primer dibujo. Es importante que usemos dibujos silueteados, nuestra máquina no es capaz de dibujar degradados, por ejemplo podemos usar este (o cualquier otro, podemos buscar en google «silueta popeye», por ejemplo).
Si pinchamos con el botón derecho sobre la imagen anterior podemos descargarla a nuestro ordenador. En el programa LaserGRBL, en el menú Archivo cogeremos la opción Abrir archivo e introducimos los parámetros que se indican en la imagen
Pinchamos en Siguiente y se muestra la siguiente ventana
Es importante poner el parámetro Laser ON en M3 y Laser OFF en M5 ya que son los comandos que usa la distribución de GRBL que estamos usando para mover el servo. También son importantes los parámetros S-MIN y S-MAX que indican el ángulo que debe mover el servo para mover el basculante del eje Z. En la parte inferior indicaremos el tamaño al que queremos hacer el dibujo, es importante no poner un tamaño mayor de 100 x 100 mm ya que es el límite de nuestra superficie de trabajo. Por fin, pincharemos en Crear.
Ahora solo nos queda pinchar en el botón Ejecutar programa para que nuestra máquina empiece a dibujar. Antes de empezar a dibujar deberíamos asegurarnos de que el lápiz se encuentra en la posición de inicio (deslizadores a la izquierda y abajo) y que tenemos un papel esperando a ser dibujado.
Aquí podemos ver algunos ejemplos de dibujos pintados con nuestro flamante robot