[008] — hardware · plotter · cnc

4xidraw Clone
desde cero

Plotter completo montado
Arduino + CNC Shield
Servo y varillas de cerca
Año2018
Piezas 3DEncargadas a empresa
FirmwareGRBL 1.1
ControllerArduino UNO + CNC Shield
SoftwareInkscape 0.91 + GrblPanel
Motores2× NEMA 17 + SG90
Dibujo más largo~30 min
intro

¿Qué es y por qué construirlo?

Un plotter CNC es una máquina de dos ejes que arrastra un bolígrafo sobre papel siguiendo coordenadas en GCode. El Axidraw comercial cuesta más de 500€. Este es un clon basado en el diseño open source 4xidraw de MISAN — piezas en PLA, Arduino UNO como cerebro, y dos motores paso a paso para los ejes X e Y. En 2018 todavía no tenía impresora 3D propia, así que encargué todas las piezas estructurales a una empresa de impresión local.

Arduino UNOCNC Shield v3A4988 PololuNEMA 17SG90 servoGRBL 1.1Inkscape 0.91GrblPanelGT2 beltLM8UU bearingsThingiverse:2301776
step 00 — materiales

Lo que necesitas

Arduino UNOMicrocontrolador principal
CNC Shield v3Se apila sobre el Arduino
2× A4988 Pololu driversDrivers de motor paso a paso
2× NEMA 17Motores paso a paso ejes X e Y
SG90 servoSube y baja el bolígrafo (eje Z)
Piezas 3D — 4xidraw13 piezas PLA, Thingiverse:2301776
8× LM8UU + varillas 8mmRodamientos lineales y guías
10× F623ZZRodamientos para la correa GT2
2× Polea GT2 + correa 1.4mSistema de transmisión
Fuente 12V 2APara los motores (no desde USB)
Inkscape 0.91Con el plugin J Tech Photonics
GrblPanel.exeSoftware de envío de GCode
step 01 — estructura

Piezas 3D y montaje

Modelo base

4xidraw de MISAN

El diseño está en Thingiverse (thing:2301776). Son 13 piezas en PLA: bases del eje X, base central con rodamientos, tensor de correa, sujeta-servo y dos opciones de porta-bolígrafo (vertical y 30°/45°). Las encargué a una empresa porque en 2018 todavía no tenía impresora 3D.

Estructura montada
Cabezal porta-bolígrafo

Mecanismo del eje Z

Servo + cremallera

El servo SG90 mueve un engranaje que empuja o suelta la pieza con cremallera donde va el bolígrafo. En M3 s0 (posición «baja»), la zona sin dientes queda frente a la cremallera y el bolígrafo cae por su propio peso. En M3 s50, los dientes empujan la cremallera hacia arriba. No usar s100: la pieza choca con el sujeta-servo y descoloca el engranaje.

step 02 — electrónica

Arduino + CNC Shield

Conexiones clave

Dos alimentaciones separadas

La CNC Shield v3 se apila directamente sobre el Arduino UNO. Los dos A4988 van en los slots X e Y. El servo SG90 conecta a Z+ (señal), 5V y GND. Los motores necesitan 12V 2A desde una fuente externa por la clema de la Shield — el Arduino se alimenta por USB desde el ordenador.

CNC Shield montado sobre Arduino con drivers
// Conexiones del servo al CNC Shield SEÑAL → Z+ (SpinEn) VCC → 5V GND → GND // IMPORTANTE: jumpers debajo de cada A4988 → TODOS puestos // Sin jumpers = el motor no da todos los micropasos y pierde posición
step 03 — firmware

GRBL 1.1

GRBL es un firmware open source para Arduino UNO que interpreta GCode y controla los motores paso a paso. Se carga desde el IDE de Arduino con la librería grbl-master. Una vez en la placa, la comunicación es a 115200 baudios por puerto serie.

// Configuración GRBL — los parámetros que más costó calibrar $0 = 10 // step pulse µsec $100 = 80.000 // x step/mm ← calibrar: mover 100mm, medir real, ajustar $101 = 80.000 // y step/mm ← ídem $110 = 5000 // x max rate mm/min $111 = 5000 // y max rate mm/min $120 = 5000 // x accel mm/sec² $121 = 5000 // y accel mm/sec² $30 = 1000 // rpm max → define rango de movimiento del servo // M3 s0 = bolígrafo abajo · M3 s50 = arriba · NO usar s100 (choca)

La guía de referencia (LSM) era un punto de partida, pero los valores no funcionaban igual con mi montaje. $100 y $101 hay que calibrarlos empíricamente: ordenar moverse 100mm, medir cuánto se desplaza de verdad, y ajustar hasta que coincidan.

step 04 — software

Inkscape + GrblPanel

Generar el GCode

Inkscape 0.91 + plugin J Tech

Se usa Inkscape 0.91 con el plugin J Tech Photonics (modificado por MISAN para plotters). El flujo: abrir imagen → Trayecto → Vectorizar mapa de bits → seleccionar todo → Extensiones → J Tech → exportar .gcode. El problema es que el plugin está pensado para láseres y el GCode que genera necesita correcciones manuales para funcionar con servo.

Motor esquina con polea GT2

El paso imprescindible: editar el GCode a mano

El plugin añade un s0 de más tras las órdenes del servo y los retardos son 0 — el servo no tiene tiempo de moverse antes de que el plotter empiece a trazar. Hay que abrir el .gcode con Notepad++ y hacer tres reemplazos globales usando la opción Especial → Salto de línea manual:

// Buscar → Reemplazar en Notepad++ G4 P0 → G4 P0.1 M3 s0 → M3 s0 + [salto_línea] + G4 P0.2 M3 s100 s0 → M3 s100 + [salto_línea] + G4 P0.1 // G4 P0.x = retardo en segundos. Da tiempo al servo antes de trazar

Una vez corregido el archivo, se abre GrblPanel.exe, se conecta al COM del Arduino a 115200 baudios, se carga el .gcode y se pulsa Start.

step 05 — configuración GrblPanel

Capturas de configuración

GrblPanel es la interfaz gráfica para controlar el plotter: jogging manual en X/Y, configurar los parámetros $$ en tiempo real, ver posición y enviar el archivo GCode.

resultado

Cómo funciona en la práctica

Plotter dibujando

El plotter dibuja cualquier imagen que se pueda vectorizar en Inkscape — contornos, tramas de puntos, rellenos con líneas paralelas. El dibujo más largo que hice fue Mike Wazowski en un folio A4, tardó casi media hora. El proceso tiene algo hipnótico: el bolígrafo se mueve solo, sube, baja, y la imagen aparece poco a poco sobre el papel.

Lo que más aprendí: en hardware, el 80% del trabajo es calibrar y depurar, no construir. Y que leer la fuente primaria — el wiki de GRBL en GitHub — vale infinito más que seguir una guía que puede no aplicar exactamente a tu setup.