Proyecto 39.1 

Plotter CNC de 3 ejes

19 de febrero de 2017

En el siguiente proyecto veremos como hacer una máquina CNC en tres ejes, XYZ.

Para empezar con algo sencillo -que nos permita aprender cómo funcionan estas máquinas- comenzaremos haciendo un plotter, montando un rotulador en cabezal.

Una vez familiarizados con la CNC, en la segunda parte veremos cómo convertir el plotter en una multiherramienta con la que mecanizar piezas, tallar madera, plástico...

Para materializar este proyecto me he basado en la serie de vídeos CNC Fácil de hacer en casa del canal YouTube de EL Profe García.

Para controlar los tres motores paso a paso de que consta nuestra máquina, vamos a necesitar un shield CNC v3 con drivers A4988 y por supuesto un Arduino UNO R3.

Parte 1. Plotter CNC

1. Montaje mecánico

En primer lugar vamos a montar la mecánica. La conexión de los motores la veremos más adelante.

El material empleado en la construcción de la máquina, son componentes reciclados de equipos electrónicos -algo bueno tiene que tener trabajar en un servicio técnico :-)

Con las piezas de un viejo escáner he montado los ejes X e Y. Para el eje Z he montado una torre basándome en este vídeo.

El montaje que describo a continuación es orientativo, cada uno puede utilizar los materiales o componentes que estime más oportuno.

Al final de la página puedes descargar los planos en formato SketchUp.

En primer lugar montamos el eje Y.

Sobre un base de aluminio se colocan dos listones de madera para darle altura a la máquina, y sobre los listones montamos las guías y el motor del eje Y.

A continuación montamos el eje X.

En cada uno de los rodamientos lineales del eje Y, he atornillado dos pletinas de aluminio que servirán de soporte a las guías y el motor del eje X.

Para terminar montamos el eje Z.

El eje Z consta de una estructura en forma de C. En la parte superior se monta el motor.

En los ejes X e Y, la transmisión se realiza mediante correa dentada de 2,5 mm de paso, por 6 mm de ancho. También se puede utilizar varilla roscada de métrica 6 u 8, o mejor aún tornillo sinfin.

Sin embargo en el eje Z es obligatorio usar tornillo sinfin, o varilla roscada, ya que así se mantiene la posición del eje Z aún con el motor sin alimentar. Además el tornillo sinfin permite levantar cargas pesadas con motores pequeños.

A continuación una imagen del plotter CNC terminado.

2. Programación del Arduino y calibración del shield CNC

Aviso importante

No conectar el Shield CNC hasta que esté programado el Arduino.

Esto es porque si el Arduino tiene cargado algún sketch, tal vez esté mandando pulsos por las salidas digitales, y esos pulsos pueden dañar los drivers.

Lo primero que haremos será conectar Arduino al PC y subir el sketch.

El programa que controla la CNC desde Arduino es el GRBL, se puede descargar aquí. Se trata de una librería que debemos instalar en el IDE de Arduino.

Programar el Arduino es muy sencillo. Una vez instalada la librería GRBL, abrimos el IDE de Arduino, y vamos a...

Archivo→Ejemplos→GRBL-Arduino-Library-master→GRBLtoArduino

Cargar GRBL en Arduino.png

Aparece una ventana con el IDE de Arduino donde hay un sketch con apenas un par de líneas. Clic en Upload para subir el sketch al Arduino. Cuando finalice la subida ya tenemos programado el Arduino, así de sencillo.

Una vez programado el Arduino, lo siguiente es calibrar el shield CNC. Esta calibración consiste en limitar la corriente máxima que suministra cada driver mediante un pequeño potenciómetro. Limitando la corriente máxima de cada driver evitamos quemar los motores en caso de fallo o consumo excesivo.

En cada uno de los drivers A4988 hay dos pequeñas resistencias SMD. En mi caso dichas resistencias están marcadas como R100, lo que significa que son de 0,1Ω.

a4988.jpg

Estar resistencias se usan para medir en todo momento la corriente que suministra el driver. Necesitamos saber su valor para calcular la tensión de referencia con la que el driver A4988 limita la corriente máxima.

En el datasheet del A4988 se puede ver que la corriente máxima viene dada por la fórmula:

Imax.png

Donde Vref es la tensión de referencia que queremos calcular, IMAX es la corriente que consume el motor y RS es la resistencia que mide el consumo del motor.

Por ejemplo, para un motor de 400mA y con una RS de 0,1Ω Vref será:

Vref = IMAX · 8 · RS = 0,4A · 8 · 0,1Ω = 0.32V

Como el motor va a trabajar en modo Full-Step para que desarrolle el máximo par, hay que multiplicar Vref x 0,7. Luego la tensión de referencia es:

Vref = 032 · 0.7 = 0,224

En este vídeo de El Profe García puedes ver una explicación detallada de como calibrar los drivers A4988.

Una vez calculado el valor de Vref, montamos el shield CNC sobre el Arduino y lo conectamos por USB al PC. Con ayuda de un polímetro digital vamos a ajustar el potenciómetro del driver a la tensión de referencia. Conectamos el polímetro como en la imagen siguiente y movemos el cursor del potenciómetro hasta que la lectura coincida con la Vref que hemos calculado.

Calibracion CNC.png

Repetimos el proceso para cada uno de los drivers y ya tenemos el shield calibrado listo para funcionar.

3. Montaje electrónico. Esquema

Ahora ya podemos conectar el shield y terminar el montaje de la CNC.

Los motores se conectan como en el esquema. El shield CNC se alimenta a 12V o lo que corresponda en función de los motores que utilice cada uno.

Verificar que la fuente de alimentación suministra corriente suficiente de acuerdo al consumo de los motores. En mi caso, he utilizado una fuente de PC.

Para los ejes X e Y he utilizado dos motores de 12V y 400mA modelo KP39HM2-60 de JAPAN SERVO CO. y para el eje Z un VEXTA PX244-11A-C19 de 12V y 1200mA en busca de un modelo con más par de giro, capaz de mover útiles algo más pesados que un rotulador, de cara a montar más adelante una multiherramienta tipo Dremel.

Universal Gcode Sender

El control de la CNC se hace mediante el Universal Gcode Sender. Se puede descargar aquí. Este programa necesita JAVA para funcionar, verificad que lo tenéis actualizado a la última versión.

El siguiente paso es configurar una serie de parámetros en el Arduino. Para ello conectamos el Arduino al PC y ejecutamos el Universal Gcode Sender. Seleccionar el puerto COM del Arduino y clic en Open.

Tan pronto como abrimos el puerto COM, GRBL se conecta con Arduino y en la consola de control veremos una serie de parámetros numerados del 0 al 22.

Estos parámetros tienen un valor por defecto que debemos modificar de acuerdo a las características de nuestra CNC.

Para cambiar el valor de un parámetro concreto, introducimos en la ventana Command el símbolo $ y el número del parámetro a modificar, seguido de = y el nuevo valor del parámetro, por ejemplo $0=4 significa que para avanzar 1 milímetro en el eje X hacen falta 4 pasos.

Command GRGL.png

Introduciendo $$ en Command, actualizamos la lista de parámetros para comprobar que el la modificación del parámetro ha sido satisfactoria.

command SS.png

En la siguiente tabla puedes ver un resumen de todos los parámetros, su significado y el valor que he puesto de acuerdo con las características de mi CNC.

En este vídeo y en este otro puedes ver una explicación más detallada sobre cómo calibrar Arduino para GRBL. Gracias una vez más a El Profe García.

Una vez calibrado Arduino con GRBL ya tenemos la CNC lista para trabajar.

Con los botones X+, X-, Y+, Y-, Z+ y Z- podemos probar los motores por separado, verificar que funcionan correctamente y que giran en sentido correcto.

En caso de que la máquina no se mueva en el sentido correcto, hay que modificar el parámetro $6. Un amable lector ha editado un vídeo donde explica cómo modificar el parámetro $6 para corregir el sentido de giro de los motores.

Si está bien calibrado, el desplazamiento de la CNC en milímetros, debe ser el que hemos introducido en la casilla.

Si todo está correcto, llevamos manualmente la CNC a la posición Home, en los tres ejes y pulsamos en Reset Zero.

La posición Home para el eje Z es aquella donde el rotulador hace contacto con el papel.

Clic en Browse para seleccionar el archivo gcode con el dibujo.

Clic en Send para enviar el archivo a la CNC, la máquina comenzará a trazar el dibujo.

Cómo crear archivos gcode para plotter CNC de tres ejes

En los tutoriales 38.1 y 38.2 vimos cómo crear archivos gcode utilizando Inkscape, para un plotter CNC en dos ejes. También aquí vamos a utilizar Inkscape, pero dado que nuestra máquina CNC tiene ahora tres ejes, la forma de crear el archivo gcode difiere un poco a los visto anteriormente.

En este vídeo se puede ver un tutorial sobre crear archivos gcode con Inkscape. Lo dejo resumido a continuación.

Tan solo hay que seguir los pasos siguientes:

1. Abrir Inkscape, ir a Archivo → Propiedades del documento → Seleccionar mm y poner el ancho y alto del área de dibujo del plotter.

2. Pegar la imagen que queremos vectorizar.

3. Clic en la imagen para seleccionarla, ir a Trayecto → Vectorizar mapa de bits → Actualizar → Aceptar

4. Borrar la imagen original, ya que vamos a trabajar sobre la imagen vectorizada.

5. Clic sobre la imagen, ir a Trayecto → Objeto a trayecto → Trayecto → Desvío dinámico

6. Clic en la imagen, ir a Extensiones → Gcodetools → Puntos de orientación. Poner los valores como en la imagen. Aplicar → Cerrar

7. Clic en la imagen, ir a Extensiones → Gcodetools → Biblioteca de herramientas → Predeterminado → Aplicar →Cerrar

Aparece un recuadro. Poner los siguientes valores

8. Clic en la imagen, ir a Extensiones → Gcodetools → Trayecto a gcode

En Preferencias, poner el nombre al archivo con la extensión .ngc

9. Por último ir a la pestaña Trayecto a GCode y clic en Aplicar → Cerrar

Ir a la carpeta destino y verificar que el archivo se ha creado correctamente.

Con el programa CAMotics podemos abrir el archivo GCode y simular su trazado, así verificamos que se ha creado correctamente. Si todo está correcto, ya está listo para enviar a la CNC mediante GRBL como vimos un poco más arriba.

Parte 2. Fresadora CNC

En esta segunda parte ampliaremos las posibilidades de nuestra máquina convirtiéndola en una fresadora CNC.

Tan solo hay que modificar ligeramente la torre del eje Z para alojar una multiherramienta tipo Dremel (u otra similar). El plano está disponible para descargar, en formato SketchUp al final de la página.

Diseño 3D con SketchUp

Montaje de la torre


Una vez terminado el montaje de la torre y de la herramienta de fresado, sólo queda generar el archivo gcode que contiene la pieza a mecanizar. Para el diseño de las piezas vamos a utilizar SketchUp Make y la extensión para tallado en 3D SketchUcam. He recopilado todo lo referente al diseño con SketchUp en este tutorial.

En el siguiente vídeo puedes ver la CNC trabajando.

Se trata de una abrazadera soporte para la fresadora -concretamente una Dremel 3000- ya que la que estaba utilizando originalmente la mecanicé a mano, y el ajuste era mejorable. Es curioso que la primera pieza que hago con la CNC es para la propia CNC. Esto la convierte en una máquina capaz de autoreplicarse parcialmente.

Por cierto, la fresa que he utilizado es de acero, de forma rectangular y 3,2mm de diámetro, más detalles aqui.

¡Suerte con vuestra máquina!

Actualización. 17 de junio de 2017

La máquina descrita en este tutorial ha sido sometida a una serie de mejoras. Consulta los detalles en el siguiente enlace Proyecto 39.3 - Fresadora CNC v2

Agradecimientos

El Profe García por compartir su proyecto CNC Fácil de hacer en casa y hacer posible que muchos otros podamos replicarlo.

J. Vicente Madrid por su vídeo para configurar el sentido giro en motores paso a paso con GRBL.

Links

Arduino Library for GRBL

Descarga los planos de la máquina para SketchUp aquí.