CNC casero en Linux

20 de dic. de 2025

CNC son las siglas de Control Numérico Computarizado (o Computer Numerical Control en inglés), una tecnología que usa computadoras para automatizar máquinas y herramienta y controlar sus movimientos precisos para cortar, perforar, grabar y moldear materiales, revolucionando la fabricación industrial al mejorar la productividad y reducir costos con alta precisión y repetibilidad.

Un CNC es, simplicándolo mucho, el control de una herramienta en los ejes X, Y y Z de las 3 dimensiones mediante un ordenador.

Esquema de una máquina CNC

La maquina CNC se controla mediante un hardware que envia a los motores paso a paso hacia donde moverse.

¿Qué es un motor paso a paso?

Un motor paso a paso es un pequeño motor que gira poco a poco, ¡en pasos!
No gira todo de golpe como un ventilador, sino que avanza en pequeños giros

¿Por qué es especial?

  • Cada paso es muy preciso.

Podemos indicar que gire 90 pasos a la derecha y lo hace sin equivocarse.

¿Dónde se usan?

  • En máquinas CNC para mover el lápiz (plotters), el cortador o el láser.
  • En impresoras 3D para mover la boquilla que inyecta el plástico.
  • En robots que necesitan moverse con cuidado.

¿Quién le da las órdenes?

Un controlador le dice cuándo y cuánto girar. Y este controlador recibe los datos de un ordenador que tiene el archivo G-code.

Que necesitamos para contruir nuestro propio CNC casero

  • Controlador Hardware CNC (2 opciones):
    • Arduino (Interprete de Comandos) + CNC Shield v3 (Controlador de motores PaP y actuadores)
    • Placas GRBL con todo integrado
  • Motores: Motores PaP (Paso a Paso) que realizan el movimiento en los ejes
motor paso a paso
  • Drivers: Microchips que controlan el motor paso a paso, basicamente podemos usar 2 modelos:
    • A4988
    • DRV8825
  • Actuadores/Herramientas: Los dispositivos que podemos conecar a nuestro CNC para realizar la tarea de dibujo, grabado, corte, impresión aditiva. Algunos solo usan 2 ejes de movimiento.
  • Ejes: Varillas lisas de desplazamiento, no deben ser huecas, deben ser macizas.
  • Rodamientos lineales
  • Tornillos de arraste: Varillas con rosca-sin-fin con mecanizado para CNC (velocidad aprox 8 mm por vuelta)
  • Tuercas: Tuercas para CNC, se usan en conjunto con sistema backslash para evitar vibraciones y desajustes.
  • Sensores de "Fin de Carrera": Para indicar al motor PaP que no puede avanzar más.
  • Software para control del hardware-CNC:
    • GRBL (Librerías y Firmaware)
  • Software Linux:
    • GCoder Sender: Envia la "ruta gCode" al controlador CNC
    • Conversor: Pasa una imagen u objeto 3D al formato gCode.

Software CNC para Linux


Para enviar la ruta que tiene que trazar en los ejes nuestra máquina CNC, debemos de poder enviarsela comando a comando mediante un software que controle la posicion de desplazamiento, la posición actual o de estado, las señales de activación o apagado a los actuadores, etc. Este software es lo que se denomina G-Code Sender.

Universal G-Code Sender (ugs)

Este software es totalmente gratuito, se ejecuta con Java y tiene versiones para Linux, Linux en ARM , Windows y MacOS. Tambien dispone de una versión agnostica de java que se ejecuta sobre cualquier sistema operativo.
Se puede descargar desde: https://winder.github.io/ugs_website/download/

Puede acceder a Firmware: GRBL, g2Core, FluidNC, TinyG, Smoothieware.
Puede enviar datos usando puertos Serie, puertos USB (serial USB) o incluso por Red.

Universal G-Code Sender en Debian 13

Para transformar un elemento gráfico o una imagen 3D a una "ruta" en formato gCode es necesario transformarlo, en Linux hay varias formas, alguna de ellas son:

Inkscape + extensión Gcodetools

Ideal si tu imagen es un logo, silueta o contorno.

  1. Abre la imagen en Inkscape.
  2. Convierte a vector:
    • Path → Trace Bitmap (Trazar mapa de bits).
  3. Ajusta nodos si quieres un resultado limpio.
  4. Exporta a G‑code:
    • Extensions → Gcodetools → Path to Gcode.

Uso:

  • Perfecto para contornos limpios.
  • Control absoluto del recorrido.
  • Muy útil si luego quieres optimizar trayectorias.

Image to Gcode de LinuxCNC (image-to-gcode)

Instalación:

sudo apt -y install linuxcnc-uspace

Esta herramienta tiene un fallo en el código debido a que referemcoa a librerias numpy de Python de la version 2 en vez la version actual 3.
La corrección del codigo es muy sencilla, como root edita el fichero /usr/bin/image-to-gcode y realiza los siguientes pasos:

  1. Localiza la línea que pone plus_inf = numpy.core.Inf y modificala para que ponga:
plus_inf = numpy.inf
  1. Localiza la linea que pone tkinter._default_root.destroy() y cambiala por:
        if tkinter._default_root is not None:
            tkinter._default_root.destroy()

Uso:
Llamamos al programa y redirigimos la salida a un fichero al que pondremos las extensión .gcode

image-to-gcode > fichero.gcode

Tambien podemos indicarle directamente el fichero a transformar:

image-to-gcode imagen.png > fichero.gcode
image-to-gcode

El fichero gcode generado tiene un aspecto parecido a esto:

G21
G0 Z0.0120
G17 G40
G80 G90 G94
S1000 M3
G04 P3
G64 P0.0010
F12.0000
G18
F12.0000
G0 X-0.0534 Y2.5440
G2 X0.000000 Z0.000000 R0.125000
F12.0000
G1 X3.6540
F12.0000
...

Ejemplo de Maquina CNC casera

Luis GuLo

🐧 SysAdmin GNU/Linux - 🐳 Docker - 🖥️ Bash Scripting - 🐪 Perl - 🐬 MySQL - 👥 Formador de TI - 👥 Formador de SysAdmin's - 💢 Ansible - ☁️ Cloud Computing - ❤️ Debian GNU/Linux