En el siguiente tutorial voy a recopilar todo lo que he aprendido -hasta el momento- acerca de las máquinas CNC. Para que no quede muy extenso lo he dividido en tres partes.
En esta primera parte veremos lo referente al montaje mecánico, programación del Arduino y calibraciones. En la segunda parte explico cómo añadir optoswitches para la función Homig y finales de carrera como Hard Limits y la tercera parte está dedicada al diseño piezas con SketchUp Make y envío de archivos mediante GRBL.
Hasta la fecha he montado tres CNC diferentes. Cada vez que surgía la posibilidad de mejorar la máquina lo hacía, ya fuera cambiando los motores, la fuente, o rediseñando alguna de las piezas.
Recientemente cayeron en mis manos unas hermosas guías de 10mm de diámetro que recuperé de unas viejas impresoras antes de llevarlas a la planta de reciclaje. Se me ocurrió que era una buena ocasión para utilizarlas, rediseñando mi CNC y haciendo un modelo nuevo, más robusto, tan sólo necesitaba unos rodamientos de 10 mm. Y ya puestos a montar la que espero sea The Ultimate CNC Machine, para la transmisión de movimiento voy a emplear husillo trapezoidal con tuercas anti backlash.
Para terminar el montaje de la nueva CNC voy a aprovechar los motores NEMA 17 y la electrónica de mi actual máquina, así la inversión total no es muy grande. Al final de la página dejo los enlaces al sitio donde he comprado el material.
Como dije anteriormente, voy a aprovechar esta actualización para rediseñar por completo la CNC, tratando de hacer un modelo lo más sencillo posible y con el menor número de piezas.
Los materiales empleados en la construcción de la máquina, son en su mayor parte, componentes reciclados de viejos equipos electrónicos. 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.
Sobre un base de aluminio se colocan los soportes para los motores y las guías de los rodamientos lineales. Los cuatro soportes los he mecanizado con mi anterior CNC en metacrilato de 10 mm de espesor. Podéis ver el vídeo aquí.
A continuación montamos los motores junto con el husillo y la tuerca, y las guías con los rodamientos. Al utilizar el mismo soporte para el motor y las guías, se simplifica el diseño de la máquina y se reduce el número de piezas necesarias.
Mecanizamos dos piezas soporte para el motor y las guías del eje X.
Montamos ambos soportes sobre los rodamientos del eje Y.
Seguidamente montamos el motor junto con el husillo y la tuerca, y las guías con los rodamientos.
Como véis el montaje no puede ser más sencillo, con apenas seis piezas hemos montado los ejes X e Y.
La torre del eje Z es la misma que he utilizado en la anterior fresadora. Básicamente una estructura en forma de C, con el motor en la parte superior.
Para terminar el montaje de la CNC, atornillamos la torre del eje Z sobre los rodamientos del eje X. El espacio sobrante en la base, servirá para montar el Arduino con el Shield CNC y la fuente de alimentación para los motores.
Opcionalmente se puede añadir en la parte de atrás una pieza de acero o chapa, uniendo los dos soportes del eje X para darle más rigidez al conjunto, ver recuadro rojo. Además he mecanizado una rosca M4 perpendicular a los orificios de las guías de 10 mm, donde meter un tornillo prisionero para sujetar firmemente dichas guías.
CNC vista desde atrás. Una pieza de acero une los dos soportes del eje X
Detalle del tornillo prisionero para sujetar las guías
Hace poco conseguí cuatro motores paso a paso de 56 mm (NEMA 23) retirados de un ortopantomógrafo. Concretamente el modelo VEXTA PK264-02A del fabricante Oriental Motor.
Se trata de un motor bipolar de 1,4A por fase que admite tensiones de alimentación de más de 40V con un par de retención de 0,48Nm, aproximadamente un 35% más que los motores NEMA17 que estoy utilizando actualmente.
Así que rápidamente me dispuse a montarlos en mi CNC, lo que va a suponer una mejora importante en rendimiento y prestaciones.
Sin embargo cuando fui a sustituir los motores originales por estos más grandes, me encontré con el problema de que el soporte que había mecanizado para el motor NEMA 17 es pequeño y no hay dónde atornillar el nuevo motor.
En la imagen el soporte para motores de 42 mm de mi CNC. Los orificios del nuevo motor caen fuera del soporte.
Así que mi gozo en un pozo. Si quería montar los VEXTA en la CNC tenía que mecanizar unos nuevos soportes más anchos y altos, lo que supone un gasto de tiempo y material.
Después de darle algunas vueltas se me ocurrió una solución rápida y económica; mecanizar una pieza de adaptación entre el motor y el soporte. Y de eso va esta actualización.
Voy a mecanizar una pieza de 56 mm de lado a la cual atornillaremos el motor NEMA 23. Dicha pieza tiene cuatro agujeros roscados M3 en la misma posición que el soporte para el motor NEMA 17.
Con cuatro tornillos M3x20 atornillamos la pieza de adaptación al soporte y asunto arreglado.
En el siguiente vídeo explico detalladamente todo el proceso.
Al final de la página dejo los planos de la pieza en formato SketchUp y la plantilla para marcar los agujeros en formato STL.
Otra mejora que he introducido consiste en hacer unos pequeños agujeros ciegos en el eje de cada uno de los motores, para mejorar la fijación del tornillo prisionero del acoplamiento elástico.
Esto es porque con las vibraciones de la CNC, los tornillos del acoplamiento tienden a aflojarse y el acoplamiento acaba deslizándose sobre el eje, con el peligro de que la pieza que estamos mecanizando se eche a perder o se dañe nuestra máquina. Y esto lo digo por experiencia.
Para hacer los agujeros sujetamos el acoplamiento con uno de los dos tornillos. Retiramos el otro tornillo y hacemos una pequeña muesca en el eje a través del hueco. Sujetamos firmemente el motor y el eje asiéndolo por el acoplamiento, de esa forma evitamos que la broca resbale. Como el tornillo es M4 hay que usar una broca de 3 - 3,2 mm como máximo para no dañar la rosca del acoplamiento. Si el tornillo es M3 usar broca de 2,5 mm máximo.
Cuando hayamos hecho la muesca en el eje, colocamos el tornillo y repetimos la operación para el otro tornillo. La imagen siguiente muestra el resultado final. Para terminar, se puede echar un poco de fijatornillos a los dos tornillos que sujetan el acoplamiento al eje.
Recordad que si cambiais los motores de vuestra máquina, hay que calibrar la corriente de los drivers del shield CNC de acuerdo con las características del nuevo motor.
Los motores NEMA 23 tienen un eje de diámetro 6,35 mm, por lo que tuve que cambiar los acoplamientos flexibles para el husillo trapezoidal. Al final de la página dejo el enlace al sitio donde los compré.
Una vez montada la CNC, lo siguiente es programar Arduino y calibrar los drivers para limitar la corriente máxima que suministran a los motores.
No conectar el shield CNC hasta que esté programado Arduino.
Esto es porque si Arduino tiene cargado algún sketch, puede que 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 trata de una librería que debemos instalar en el IDE de Arduino.
Descargar el archivo comprimido Source code (zip) de Grbl V1.1h aquí
Ir a la carpeta grbl-1.1h.20190825 y copiar solamente la carpeta grbl
Ir a Arduino/Libraries y pegar la carpeta grbl
Abre el IDE de Arduino y ve a Ejemplos→grbl→grblUpload
Súbelo a tu Arduino, cuando termine habrás actualizado Grbl a la última versión.
Ya tenemos instalada la última versión de Grbl. Ahora vamos a configurarlo, para ello descarga Universal G-code Sender aquí.
Nota: Actualmente UGS va por la versión 2.0.11, pero de momento yo sigo utilizando la versión 1.0.9 por facilidad de uso.
Abre UGS. Selecciona el puerto que corresponda y 115200 baudios, clic en Open.
Si todo va bien, verás un mensaje con la versión de Grbl instalada en tu Arduino.
Para cambiar el valor de un parámetro hacemos clic en la consola de comandos, escribimos el parámetro y el valor deseado. El parámetro se actualiza tan pronto como pulsamos Intro.
Si escribimos $$ vemos la lista de parámetros y su valor actual, así verificamos que el valor se ha modificado correctamente.
En la captura de más arriba dejo los valores de mi máquina, por si sirven de referencia.
A continuación una breve descripción de los distintos parámetros de Grbl. Más info aquí y aquí.
$0, Step pulse: ancho de pulso, en microsegundos.
$1, Step idle delay: retraso en deshabilitar los motores tras completar un movimiento, en milisegundos. Grbl permite deshabilitar los motores tras finalizar un movimiento, o podemos dejarlos siempre alimentados con $1=255 así la CNC mantiene siempre su posición.
$2, Step port invert: algunos drivers funcionan con pulsos a nivel bajo. Este parámetro permite configurar por separado qué drivers funcionan con pulsos a nivel alto y cuales a nivel bajo.
$3, Direction port invert: modifica el sentido de giro de los motores.
$4, Step enable invert: configura la señal ENABLE a nivel alto o bajo.
$5, Limit pins invert: configura las señales de los microswitches a nivel alto o bajo. Por defecto, las señales de los switches son nivel alto, cuando se activa un switch pasa a nivel bajo y Arduino interpreta que se ha activado ese switch.
$6, Probe pin invert: igual que $5 para las puntas de prueba.
$10, Status report: este ajuste determina los datos en tiempo real que Grbl envía al usuario.
$11, Junction deviation: este parámetro es utilizado por el gestor de aceleración para calcular cómo de rápido puede moverse la CNC cuando traza arcos y curvas.
$12, Arc tolerance: parámetro para dibujar curvas y círculos.
$13, Report inches: para seleccionar milímetros o pulgadas.
$20, Soft limits: habilita o deshabilita los Soft Limits; límites máximos de recorrido de cada eje.
$21, Hard limits: habilita o deshabilita los Harl Limits. Son unos microswitches que se colocan en los límites de recorrido. Grbl detiene la máquina si se accionan accidentalmente.
$22, Homing cycle: habilita o deshabilita la función Homing. Esta opción permite definir un punto de partida fijo. Muy útil si cambiamos de herramienta durante el fresado de una pieza.
$23, Homing dir invert: permite configurar el sentido de giro de los motores a la hora de hacer Homing.
$24, Homing feed: velocidad rápida a la que se mueven los ejes cuando buscan la posición Homing, en mm/min.
$25, Homing seek: Una vez un eje alcanza la posición de Homing, retrocede unos milímetros y busca de nuevo el microswitch a velocidad lenta, para una parada más precisa, en mm/min.
$26, Homing debounce: retraso en la lectura de los microswitches de Homing, para ignorar los rebotes, en milisegundos.
$27, Homing pull-off: una vez se alcanza la posición de Homing, la CNC retrocede una distancia configurable con este parámetro, en mm.
$30, Max spindle speed: configura la máxima velocidad de la herramienta, si ésta es controlada por Grbl, en RPM.
$31, Min spindle speed: configura la mínima velocidad de la herramienta, si ésta es controlada por Grbl, en RPM.
$32, Laser mode: habilita o deshabilita el modo láser.
$100, $101, $102 – [X,Y,Z] steps/mm: este parámetro le dice a Grbl cuántos pasos debe dar el motor para avanzar 1 milímetro. Este dato es importante. En el vídeo que enlazo más arriba, se explica cómo calcular su valor, hacia el minuto 3:20.
En mi caso los datos son: motores X e Y de 200 pasos x vuelta (1.8 º x paso) , motor Z 400 pasos x vuelta (0.9 º x paso) husillos de 8 mm x vuelta y 16 micropasos de resolución de los drivers TMC 2209.
$110, $111, $112 – [X,Y,Z]: velocidad máxima de los motores, en mm/min
$120, $121, $122 – [X,Y,Z]: Aceleración, en mm/sec^2
$130, $131, $132 – [X,Y,Z] Max travel: Establece el recorrido máximo de cada eje, en mm. Sirve para comprobar si se han superado los límites de la máquina. Esta función sólo es útil si tenemos habilitados los Soft Limits y la función Homing.
Otra mejora importante ha sido sustituir los drivers A4988 originales, por unos TMC 2209. Una de las ventajas de estos drivers es su increíblemente silencioso modo de funcionamiento. Me lo habían comentado amigos makers, pero hasta que no lo he visto con mis propios ojos no me imaginaba lo silenciosos que son; prácticamente no hacen nada de ruido, incluso cuando se mueven todos los ejes a la vez. Esto es una enorme ventaja cuando se trata de máquinas CNC que de por sí son harto ruidosas.
Aunque los drivers TMC 2209 no son 100% compatibles pin a pin con los A4988, sí que comparten el pinout de las señales más importantes, como STEP, DIR, ENABLE, las salidas y alimentaciones. Esto hace posible emplear unos u otros indistintamente.
Sin embargo, algunos pines tienen funciones diferentes, tales como PDN y CLK en los TMC 2209 y M2, RESET y SLEEP en el A4988. Según el esquema del shield CNC, los pines RST y SLEEP están unidos y MS3 se lleva a un pin header para conectarlo a +5V con un jumper.
Si colocamos los TMC 2209 estamos cortocircuitando las señales PDN y CLK y llevando a +5V el otro pin PDN. No sabemos cómo puede afectar esto al driver TMC 2209, así que para evitar mal funcionamiento he cortado los pines que no se usan y después de probar la máquina puedo confirmar que los drivers funcionan perfectamente.
Por el motivo que sea, los drivers del fabricante BIGTREETECH traen los pines conflictivos por duplicado, es decir soldados también en la cara superior de la PCB. Así que tampoco es un trauma haberlos cortado, ya que si hacen falta en un futuro, se pueden conectar utilizando los pines de la cara TOP.
En este punto también hay dos mejoras importantes respecto a la máquina original.
Uno de los cambios ha sido sustituir los microswitches para la función Homing por optoswitches.
La segunda mejora es el montaje de microswitches finales de carrera en todos los ejes a modo de Hard Limits.
Estos microswitches mecánicos se colocan en los finales de recorrido de los ejes X e Y y en el punto más alto del eje Z. Luego se conectan en serie con la bobina de un relé, de manera que si la CNC se sale accidentalmente de los límites máximos de trabajo, se acciona el microswitch correspondiente, cortando la alimentación al Shield CNC y deteniendo los motores en el acto, evitando dañar la máquina.
Grbl permite implementar esta función mediante software, conectando los microswitches al Shield CNC y habilitando la función Hard Limits, pero después de varias pruebas, me parece más fiable esta opción ya que al ser puramente hardware es menos propensa a fallos.
En la segunda parte de este tutorial explico con más detalle cómo añadir optoswitches para la función Homing y microswitches final de carrera como Hard Limits.
7. Calibración Drivers TMC 2209
El siguiente paso es calibrar la corriente máxima que pueden suministrar los drivers. Para ello necesitamos dos datos: la corriente que consumen nuestros motores y el valor de la Rsense que va montada en el driver.
Como decía más arriba, los motores que he montado en la CNC son unos VEXTA PK264-02A de 1,4 amperios. El otro dato que nos falta lo podemos ver en la cara inferior del driver, que es donde va montada la resistencia que mide la corriente.
Para calibrar el driver sólo tenemos que calcular la tensión de ajuste del potenciómetro que limita la corriente. Para obtener este valor aplicamos la siguiente fórmula:
Despejando Vref queda:
He calculado la tensión de ajuste con 1.2A en lugar de con 1.4A para dejar un poco de margen a los motores y que no trabajen al límite de corriente máxima.
Con este valor sólo necesitamos un polímetro colocado entre VREF y GND. Con ayuda de un destornillador de relojero ajustamos el potenciómetro hasta medir 1.69 V o lo que corresponda en cada caso, en función de los motores que use cada uno.
Como dije más arriba, esta es la tercera máquina que monto. Las mejoras que he introducido respecto de la anterior son: sustituir las guías y rodamientos de 8 mm por otros de 10 mm, aumentando la rigidez y consiguiendo un conjunto más robusto. Por otro lado, para la transmisión he utilizado husillo trapezoidal con tuercas anti backlash, ganado en precisión de movimientos y mejorando al acabado de las piezas.
Otra mejora que he añadido, es montar optoswitches para implementar la función Homing y microswitches final de carrera a modo de Hadr Limits. De esta manera evitamos dañar la máquina si accidentalmente se mueve más allá de los límites de recorrido máximo.
Conectar optoswitches y finales de carrera es opcional, puedes empezar a trabajar con tu máquina con lo que hemos visto hasta aquí, pero si tienes curiosidad y ganas de aprender algo más, en la segunda parte explico en detalle este procedimiento.
Hasta aquí hemos visto lo básico para poner en marcha nuestra CNC. Mira la tercera parte de este tutorial para ver cómo diseñar piezas con SketchUp Make.
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.
Proyecto 39.3 - Fresadora CNC v2 - Parte 2. Cómo Conectar Finales de Carrera
Proyecto 39.3 - Fresadora CNC v2 - Parte 3. Diseño de Piezas y Técnicas de Fresado
Cómo calibrar los drivers TMC 2209 by Lucas Carolo
Descarga Grbl aquí
Cómo configurar Grbl (página web en inglés)
Instalación y Configuración de Grbl (videotutorial en castellano del canal Mundo CNC con Arduino, muy recomendable de seguir si te gusta este mundillo)
Husillo con tuercas antibacklash
Rodamiento lineal 10mm diámetro
Acoplamiento flexible 5x8 mm
Acoplamiento flexible 6,35x8 mm
Descarga los planos de la CNC en formato SketchUp y el esquema en alta resolución aquí abajo.