CNC casero en Linux
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.

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


Kit Arduino + CNC Shield V3 + Drivers - Placa GRBL "todo en uno"
- Motores: Motores PaP (Paso a Paso) que realizan el movimiento en los ejes

- Drivers: Microchips que controlan el motor paso a paso, basicamente podemos usar 2 modelos:
- A4988
- DRV8825


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.



Fresadora/Routeradora/Grabadora - Extrusor/Calentador impresion 3D aditiva - Grabador Laser
- 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.


Tuerca CNC con anti-Retroceso y Varilla roscada T8
- 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.

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.
- Abre la imagen en Inkscape.
- Convierte a vector:
- Path → Trace Bitmap (Trazar mapa de bits).
- Ajusta nodos si quieres un resultado limpio.
- 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:
- Localiza la línea que pone
plus_inf = numpy.core.Infy modificala para que ponga:
plus_inf = numpy.inf- 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.gcodeTambien podemos indicarle directamente el fichero a transformar:
image-to-gcode imagen.png > fichero.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
