Escolar Documentos
Profissional Documentos
Cultura Documentos
PERÍODO Marzo-Diciembre
PALABRAS Electrónica, Juan José Peters, Código G, GRBL, DIYLILCNC, Drivers, Arduino, cnt, MadLab
CLAVE
RELACIONADO CNC_DIY, Introducción al control numérico computarizado (CNC), Funcionamiento del driver
CNC DIY para motores paso a paso (Marco teórico)
ESTUDIADO EN CNC_DIY
CONTENIDO
[ocultar]
1 Artículos Previos
o 1.1 Desarrollados por el MADLAB
2 Desarrollo Electrónica DIYLILCNC
o 2.1 Especificaciones Técnicas
2.1.1 Fresadora DIYLILCNC
2.1.2 Alimentación
2.1.3 Fusibles provistos
2.1.4 Área de Trabajo
2.1.5 Dimensiones
2.1.6 Accionamiento de los ejes
2.1.7 Otros
o 2.2 Especificaciones de motores de avance
2.2.1 Características físicas
2.2.2 Características eléctricas
2.2.3 Características mecánicas
o 2.3 Especificaciones de motor de fresado
2.3.1 Características
o 2.4 Configuración de pines en Arduino para GRBL
2.4.1 Características
2.4.2 Video Funcionamiento
3 GRBL: SOFTWARE DE CONTROL NUMÉRICO COMPUTARIZADO PARA DIYLILCNC
o 3.1 Sobre el desarrollo del software
o 3.2 Definición
o 3.3 Usuarios
o 3.4 Características amigables
o 3.5 Manejo de aceleración
o 3.6 Limitaciones de diseño
o 3.7 Nuevas características de GRBL V0.8
o 3.8 Cargar firmware de GRBL en Arduino
o 3.9 Conexión de driver de motores paso a paso a Arduino GRBL
3.9.1 Conexión de drivers de motores paso a paso en Arduino
o 3.10 Interfáz gráfica de usuario (GUI) para GRBL
4 CONFIGURACION DE HARDWARE DEL DRIVER DE MOTORES DIYLILCNC
o 4.1 Pines de conexión y Jumpers de selección de funcionamiento
4.1.1 Pines de conexión
4.1.2 Jumpers de selección de funcionamiento
5 CONFIGURACIÓN DE GRBL V0.8 PARA FRESADORA DIYLILCNC
o 5.1 Comandos de configuración: “$$”, $X=val, $N y $Nx=line
5.1.1 $$ (Ver la configuración Grbl) y $x = val (Guardar configuración Grbl)
5.1.2 $N (Ver los bloques de inicio) y $Nx=line (Guardar bloque de inicio)
5.1.3 De Grbl $x = val configuración y su significado
5.1.4 Comandos internos de GRBL $G, $# y ?
o 5.2 Otros comandos: $C, $X, $H, ~, !, Ctrl-X
5.2.1 $C (El modo de Chequeo de código G)
5.2.2 $X (Bloqueo de Kill alarm)
5.2.3 $H (Ejecutar ciclo de homing)
5.2.4 ~ (Inicio del ciclo o Cycle Start)
5.2.5 ! (Feed Hold)
5.2.6 Ctrl-x (Reseteo de Grbl)
o 5.3 Configuración de GRBL para la máquina DIYLILCNC
5.3.1 Pasos por milímetro para ejes X, Y y Z
5.3.2 Feed Rate y Seek Rate
5.3.3 Auto Start
5.3.4 Orden de Enable invertida para Drivers de motores paso a paso
5.3.5 Límites críticos o Hard Limits
6 Conexión de Hardware en DIYLILCNC
o 6.1 Elección de motor de fresado
o 6.2 Gabinete de Energía
o 6.3 Gabinete de Control
7 Construcción de driver para motores paso a paso
o 7.1 Placa de control puente H (L297)
o 7.2 Placa de puente H doble (L298N)
o 7.3 Fotoherramientas en PDF
o 7.4 Fabricación de placas
o 7.5 Perforación de las placas
o 7.6 Corte y lijado de placas
o 7.7 Soldado de placas
o 7.8 Sellado de la superficie de cobre en las placas
o 7.9 Conexión entre placas
o 7.10 Separación estructural de placas
o 7.11 Conexión del driver para su funcionamiento
o 7.12 Galería de imágenes (completa)
Artículos Previos
DESARROLLADOS POR EL MADLAB
1. Proyecto DIYLILCNC
2. Proyecto RepRap
3. CNC_DIY
AL IMEN T AC IÓ N
Corriente de alimentación ..............................................10.5A Máx.
ÁRE A D E T R AB AJO
DIMENSION ES
Peso……………………………………………………………………… 60 Kg.
OTROS
durezas de material)
Materiales aceptables para procesar: PVC, PCB, Plástico, Madera, latón y aluminio.
Largo…………………..……………………………………………..………. 76mm.
Cables…………………………………..……………………………….….. 4 lineas.
C AR AC T E RÍS TIC AS
Marca…………………………………..………………..………………….. Dremel.
Modelo………………………………..……………………………………….. 4000.
Tensión………………………………..………………………………………. 110V.
C AR AC T E RÍS TIC AS
Marca………………………………………………………………………Arduino.
Microcontrolador………………………………………………..….. ATmega328P.
Memoria flash…………. 32 KB (de los cuales 0.5 KB son usados por bootloader).
SRAM……………………………………………………………….………… 2KB.
EEPROM……………………………………………………………………… 1KB.
Velocidad de cristal………………………………………………..……… 16Mhz.
Interfase/comunicación………………………………………………..……. USB.
GRBL está bajo la Licencia Pública General GNU y ha sido desarrollado por el programador Simen Svale
Las actualizaciones de este programa para cargar en Arduino pueden descargarse desde el repositorio de
GRBL.
DEFINICIÓN
GRBL es un controlador de fresadora CNC de alto rendimiento, libre y de código abierto, escrito en C
USU AR IO S
Los usuarios ideales son los fabricantes que realizan trabajos de fresado y necesitan un controlador simple y
amigable para su sistema (y que pueda ser manejado amigablemente por el usuario desde una interfaz
gráfica).
Las personas que detestan el desorden de cables en su espacio de trabajo. Esto por el legado de las torres de
PC, pues las máquinas CNC han sido fabricadas principalmente para usar el puerto paralelo.
Inventores que necesitan un controlador escrito en un ordenado lenguaje C modular como base para su
proyecto.
C AR AC T E RÍS TIC AS AM IG AB LE S
GRBL está listo para la producción en poca potencia. Podemos usarlo para todo nuestro fresado, ejecutándolo
desde nuestros ordenadores portátiles utilizando un script de consola simple (incluido) para transmitir el código
G. Está escrito en C optimizado utilizando todas las características inteligentes de los chips ATmega328P del
Arduino para lograr la sincronización exacta y la operación asincrónica. Es capaz de mantener una frecuencia
de pasos de más de 30 kHz y ofrece un flujo limpio, libre de jitter (variabilidad en los cantos de subida y
bajada) de impulsos de control. Grbl es para máquinas de tres ejes. No hay ejes de rotación, simplemente ejes
con la salida de un número de Herramientas CAM sin problemas. Movimiento lineal, circular y helicoidal son
totalmente compatibles.
memoria EEPROM entre sesiones e incluso conservadas entre las diferentes versiones de Grbl cuando se
actualiza el firmware. Para obtener descripciones de estos códigos G, vaya a las directrices de código g NIST.
LinuxCNC.org también proporciona gran documentación de estos también. (Códigos G) (Códigos M) (Otros
códigos).
M AN EJO DE AC E LER AC IÓ N
La característica más solicitada que realmente queríamos que tuviera es un amigable y avanzado
algunos usuarios no pudieron ejecutar sus CNC a toda velocidad sin algún tipo de alivio. El administrador de
máximas aceleraciones de GRBL con planificador look-ahead facilitará en los feed rates rápidos y frenará
antes de las esquinas para un funcionamiento rápido y libre de sacudidas. En esto hubo mucho trabajo para
asegurarse de que los movimientos sean sólidos. Aquí hay un enlace que describe el algoritmo de curvas de
alta velocidad.
Hemos limitado el apoyo de código G para el diseño. GRBL soporta todas las operaciones comunes que se
encuentran en la salida de las herramientas CAM, pero deja a algunos codificadores humanos de código g
frustrados. No hay variables, no hay correcciones de herramienta, sin funciones, sin ciclos fijos, no hay
aritmética y no hay estructuras de control. Sólo las operaciones básicas y capacidades de la máquina. Algo
más complejo, creemos que las interfaces pueden manejarlas con bastante facilidad y traducirlas para GRBL.
Han pasado muchas cosas desde la v0.7. Estamos empujando muy duro para crear un controlador CNC
simple, pero potente para el venerable Arduino. He aquí una lista de las cosas nuevas que han llegado a la
v0.8.
1. Comandos multi-tarea de tiempo de ejecución: Pausa de un programa (Feed Hold) ejecutado con
deceleración controlada para no perder la ubicación, reanudará después de la pausa del programa,
reinicia, y reporta los estados actuales.
2. Advanced Cycle Homing: Un montón de opciones de configuración para los diferentes tipos de
máquinas de como deben moverse los ejes cuando busca sus direcciones. Los interruptores de límite
también se pueden usar como Hard limit también.
3. Datos de sistema de coordenadas persistente: sistemas de coordenadas de trabajo (G54-G59) y de
posiciones predefinidas (G28, G30) se llevan a cabo en la EEPROM, por lo que siempre se va a
establecer como la última vez que los ha ajustado.
4. Comprobación de modo de código G: configure Grbl para ejecutar programas sin que se mueva nada
en la máquina, así que usted puede comprobar si usted tiene o no errores en Grbl que no le gusten.
5. Mejor retroalimentación: reportes de posición en tiempo real, qué está haciendo Grbl, el estado del
analizador de código g, y los valores coordenados de offset almacenados.
6. Bloques de inicio: Auto-mágicamente el usuario ejecuta bloques de código g en el inicio o reinicio del
programa. Se puede utilizar para establecer los valores predeterminados de la máquina.
7. Pin-outs: Cycle start, Feed Hold, y abort están ahora puestos en los pines de salida al A0, A1, A2. Sólo
tiene que conectar un interruptor normalmente abierto al pin correspondiente y tierra. Eso es todo!
8. Analizador de código g más robusto con comprobación de errores de realimentación.
Esta sección está destinada a proporcionar diversas instrucciones sobre cómo cargar grbl a un Arduino. GRBL
es un programa multiplataforma, por lo que puede ser utilizado tanto en Windows, Mac o Linux. Se presentará
a continuación la instalación de GRBL en Windows (Para instalar GRBL en otras distribuciones de sistema
Para Windows Cargar un archivo hex a tu Arduino es simple en Windows. En primer lugar, se debe conectar
el Arduino a cualquier puerto USB de su computadora con Windows y luego determinar el puerto COM
Windows XP: Haga clic derecho sobre " Mi PC ", seleccionar" Propiedades ", seleccione" Administrador de
dispositivos ".
Windows 7: Haga clic en "Inicio" - haga clic derecho en > "ordenador "-> Seleccione" Administrar "->
Seleccione" Administrador de dispositivos "del panel izquierdo.
En el árbol, expanda " Puertos (COM & LPT) "
Tu Arduino será el puerto serie USB (COMX), donde la "X" representa el número de COM, por ejemplo
COM6.
Si hay varios puertos USB seriales, haga clic en cada uno de ellos y compruebe el fabricante, el Arduino
será "FTDI".
1. Descargar el firmware .hex de grbl GRBL de Arduino. Nota: hemos usado la versión 0.8c de GRBL.
2. Descargar y extraer XLoader.
3. Abrir XLoader y seleccione el puerto COM de su Arduino desde el menú desplegable en la parte inferior
izquierda.
4. Seleccione el dispositivo apropiado en la lista desplegable titulada "Dispositivo".
5. Compruebe que Xloader establece la velocidad de transmisión correcta del dispositivo: 57.600 para
Duemilanove / Nano (ATmega 328) o 115200 para Uno (ATmega 328).
6. Ahora utilice el botón Examinar en la parte superior derecha del formulario para buscar en el archivo
.hex de grbl.
7. Una vez seleccionado el archivo .hex de grbl, haga clic en "Upload"
Tras hacer clic en cargar, verás las luces RX/TX parpadear intensamente en el Arduino. El proceso de carga
general toma alrededor de 10 segundos para finalizar. Una vez finalizado, aparecerá un mensaje en la esquina
inferior izquierda de XLoader que le dirá cuántos bytes se han subido. Si hay un error, se mostraría en lugar de
los bytes totales cargados. Los pasos deben ser similares y puede ser hecho a través de la línea de comandos.
Esta es una interfaz bastante sencilla para una máquina de eje 3. La "señal de tierra" para cada driver se
conectan entre sí y se atan al pin GND del Arduino. No hay que confundir esto con la tierra del motor o
cualquier otro tipo de conexión a tierra en el Driver CNC DIY. El pin 'Step' para los ejes X, Y y Z se unen a los
pines digitales 2, 3 y 4 respectivamente. El pin 'Dir' para los ejes X, Y y Z se unen a los pines digitales 5, 6 y 7,
respectivamente.
GRBL permite utilizar el software de Arduino (Arduino IDE) y otras interfaces de terminal serial para conectarse
con GRBL (PuTTY, CoolTerm, etc.). Sin embargo, para aprovechar plenamente todas las capacidades de Grbl,
los desarrolladores del software recomiendan utilizar uno de los tantos GUIs que los usuarios han escrito para
transmitir sus programas en código G para Grbl. Uno de estos es la GUI llamada “Universal GcodeSender”, la
de software Will Winder en Estados Unidos. Posee visualizador de código g y tiene un completo control y
funcionalidad de comentarios para las características de alto nivel de Grbl. Está escrito en Java, lo que
significa que se puede ejecutar en cualquier máquina con Java incluyendo la RaspberryPi. El grupo Grbl
trabaja en estrecha colaboración con este proyecto y recomienda encarecidamente utilizar esta interfaz gráfica
de usuario. Si usted encuentra cualquier problema o desea solicitar más características en la GUI, Will Winder
ha hecho un trabajo maravilloso en la realización de muchas de las peticiones en el foro de la Wiki de GRBL.
Este software se está utilizando para DIYLILCNC en Windows (para 32 bits en su versión 1.0.6). Si desea
instalar Universal GcodeSender en Windows de 64 bits, instalar en otras distribuciones de sistema operativo o
probar otras versiones (mas antiguas o mas actualizadas) de esta interfaz gráfica refierase a la WIKI del
desarrollador.
integrados complementarios y dedicados al manejo de motores paso a paso unipolares y bipolares. Estos
chips son el Puente H doble L298 y el controlador de puente H L297. El trabajo pesado es desarrollado por el
Circuito integrado L298, quien permite la conmutación de las bobinas de los motores para que estos giren,
según las ordenes que le entregue el circuito integrado L297. Este chip es el cerebro del driver y permite una
gran variedad de funciones para el manejo de motores paso a paso. Para la utilización de este driver en la
fresadora DIYLILCNC no se utilizan todas sus funciones, sin embargo, se han dejado habilitadas todas en el
hardware y pueden ser seleccionadas a partir de pequeños puentes o “Jumpers” incorporados en el driver. A
continuación se presentarán las distintas configuraciones que posee este driver de motores paso a paso
El driver de motores paso a paso ha sido diseñado en 2 placas, montadas una sobre otra y separadas por
pernos.
Donde la placa inferior posee el hardware asociado al circuito integrado L298 y la placa superior posee el
hardware asociado al circuito integrado de control L297. Los pines de conexión del driver y la configuración de
El driver de motores paso a paso posee 12 pines de conexión, tanto de salida como de entrada de señales.
Algunos son utilizados en el funcionamiento de la fresadora DIYLILCNC y otros no, pero han sido
implementados en el diseño del driver en caso de una posible utilización futura o para el desarrollo de otro tipo
Pasos: Este pin recibe pulsos de señal, en el que cada pulso de entrada incrementa la secuencia del motor
en una unidad. El paso se produce en el borde ascendente de esta señal.
Dirección: Este pin de entrada controla el sentido de giro del motor (dirección Reloj/contrareloj). La
dirección física de rotación del motor también depende de la conexión de los devanados. La secuencia de
pasos del motor se mantendrá o se invertirá si este pin se encuentra en nivel alto o bajo de tensión.
Enable: Entrada de habilitación del chip. Cuando esta entrada está en nivel bajo el driver permanecerá
encendido, pero des energizará las bobinas del motor.
Control: Entrada de control que define la acción de regulación de corriente en los motores. Este pin de
entrada no se utiliza, pues se configura por hardware en el mismo driver con Jumpers de configuración.
Esta configuración interna se explicará más adelante.
HALF/FULL: Entrada de selección para paso completo o medio paso. Cuando se selecciona un nivel alto
funciona en medio paso, cuando se selecciona un nivel bajo funciona en paso completo. Este pin de
entrada no se utiliza, pues se configura por hardware en el mismo driver con Jumpers de configuración.
Esta configuración interna se explicará más adelante.
Home: Pin de salida que indica cuando el driver se encuentra en la posición inicial de una secuencia
(ABCD=0101). Cada vez que el driver se encuentra en una posición inicial de secuencia de pasos el pin
HOME entrega nivel bajo y entrega nivel alto para el resto de la secuencia. Este pin de entrada no se
utiliza, pues se configura por hardware en el mismo driver con Jumpers de configuración, conectando
internamente la señal de HOME a un LED que se apaga cada vez que existe una posición inicial de
secuencia. Esta configuración interna se explicará más adelante.
Sync: m Salida del oscilador de regulación de corriente del driver. Permite sincronizar varios drivers al
mismo tiempo conectando una fuente de reloj externa común. Este pin de entrada no se utiliza.
GND: Pin de referencia de voltaje. Existen 2 pines de este tipo: uno para conectarse al Arduino y el otro
para conectarse a la placa inferior, donde se encuentra el chip puente H doble L298. Estas conexiones son
necesarias debido a que todos los circuitos electrónicos conectados entre sí deben tener un mismo nivel de
tensión de referencia.
Vin_12V y Vout_5V: Este pin se utiliza para energizar los circuitos integrados de ambas placas del driver.
Estos chips funcionan con una tensión de 5V, por lo que este pin recibe una tensión de 12V, tensión que
será reducida a 5V por un transistor regulador de voltaje, el cual entregará el voltaje apropiado a cada chip.
Este regulador está incorporado en la primera placa, por lo que la segunda placa recibirá directamente los
5V a partir del pin de salida de voltaje Vout_5V.
Reset: Este pin reinicia la secuencia de pasos de los motores si permanece en nivel bajo por unos
instantes, por lo que el driver funcionará normalmente mientras este pin permanezca en nivel alto de
tensión. Este pin de entrada no se utiliza, pues se configura por hardware en el mismo driver con Jumpers
de configuración. Esta configuración interna se explicará más adelante.
Existen en el driver de motor paso a paso una selección de funcionamiento para los modos Control, Enable,
Home, Reset y HALF/FULL. La selección se realiza a través de puentes entre pines los cuales se realizan por
medio de “Jumpers”. Estas conexiones permiten configurar el driver para que los modos de funcionamiento
mencionados se configuren de manera externa (a través de los pines corresponientes) o de manera interna
(entregando nivel de voltaje alto o bajo a estos pines desde el mismo driver). Estas configuraciones de
Si se instala un jumper en la posición del ovalo verde permite utilizar el modo “Control” de forma externa, a
partir del pin de control. Si se coloca un jumper en la posición del óvalo azul, la configuración del modo de
control se realizará de forma interna desde el hardware. Junto a este jumper existe un segundo jumper el cual
debe instalarse en la posición del rectángulo rojo (nivel alto de tensión para control de corriente desde ABCD)
o en la posición del rectángulo negro (nivel bajo de tensión para control de corriente desde INH1 e INH2). La
configuración de “Control”en la máquina DIYLILCNC debe ser interna de nivel bajo (ovalo azul – rectángulo
negro).
Enable
Si se instala un jumper en la posición del ovalo verde permite utilizar el modo “Enable” de forma externa, a
partir del pin de Enable. Si se coloca un jumper en la posición del óvalo rojo, la configuración del modo de
Enable se realizará de forma interna desde el hardware conectando este pin interno directamente a nivel alto,
para que el driver alimente los motores en todo momento. Si está recién aprendiendo a utilizar los drivers
puede utilizar la configuración interna. GRBL permite la opción de desenergizar los motores cada vez que la
máquina no se encuentre realizando movimientos de fresado, por lo que utilizaremos para la máquina la
Si se instala un jumper en la posición del ovalo verde permite entregar la indicación de la posición de
secuencia “HOME” de forma externa, a partir del pin de salida HOME. Si se coloca un jumper en la posición del
óvalo rojo, la señal de HOME se realizará de forma interna y será conectada a un LED, el cual indicará que el
driver se encuentra en la posición inicial de una secuencia cada vez que se apague el LED.
Reset
Si se instala un jumper en la posición del ovalo verde permite utilizar el modo “RESET” de forma externa, a
partir del pin de RESET. Si se coloca un jumper en la posición del óvalo azul, la configuración del modo de
RESET se realizará de forma interna desde el hardware. Junto a este jumper existe un segundo jumper el cual
debe instalarse en la posición del rectángulo rojo (nivel alto de tensión para funcionamiento normal del driver) o
en la posición del rectángulo negro (nivel bajo de tensión para reinicio de la secuencia de conmutación de las
bobinas). La configuración de “RESET” en la máquina DIYLILCNC debe ser interna de nivel alto (ovalo azul –
Si se instala un jumper en la posición del ovalo verde permite utilizar el modo “HALF/FULL” de forma externa, a
partir del pin de HALF/FULL. Si se coloca un jumper en la posición del óvalo azul, la configuración del modo de
HALF/FULL se realizará de forma interna desde el hardware. Junto a este jumper existe un segundo jumper el
cual debe instalarse en la posición del rectángulo negro (nivel bajo de tensión para funcionamiento en modo de
paso normal) o en la posición del rectángulo rojo (nivel alto de tensión para funcionamiento en modo de medios
pasos). La configuración de “HALF/FULL” en la máquina DIYLILCNC debe ser interna de nivel alto (ovalo azul
– rectángulo rojo). Esto permite que el driver duplique en los motores la cantidad de pasos por revolución y con
Si desea conocer como funciona por dentro el driver CNC DIY para DIYLILCNC puede acceder al
capítuloFuncionamiento del driver CNC DIY para motores paso a paso (Marco teórico).
de DILLILCNC desde la Wiki GRBL del desarrollador. GRBL está bajo la Licencia Pública General GNU y ha
Grbl tiene un sistema de comandos '$' para ajustar la configuración y los comandos de tiempo de ejecución
para la puesta en marcha. Puede conectarse a Grbl utilizando una terminal serial de su elección (velocidad de
transmisión 9600 a menos que desee cambiarlo en el archivo config.h) como el 8-N-1 (8 bits, sin paridad, y 1
bit de parada). Una vez conectado usted debe observar en la ventana terminal un mensaje de GRBL de la
siguiente forma:
Escriba $ y pulse enter. Usted no debe ver ningún eco local del $ y enter, pero Grbl debe responder con un
mensaje de ayuda:
De estos comandos, sólo cuatro de ellos se utilizan para configurar Grbl [$$, $x=value, $N, $Nx=line] mientras
que el resto son comandos de tiempo de ejecución que, o bien informan del estado actual en Grbl o modificar
su comportamiento.
Cuando se conecte a Grbl, escriba $$ y presione enter. Grbl debe responder con una lista de los valores
actuales del sistema, similar a como se muestra en la siguiente lista. Todos estos ajustes son persistentes y se
mantiene en la EEPROM, por lo que si usted apaga el equipo, éstos se cargarán de nuevo la próxima vez que
encienda el Arduino.
Para cambiar, por ejemplo, la opción de pulsos para paso de microsegundos a 10us usted debe escribir lo
conservará para siempre o hasta que decida cambiarlo. Puede comprobar si Grbl ha recibido y almacenado la
$Nx son los bloques de inicialización que Grbl ejecuta cada vez que se enciende Grbl o se resetea Grbl. En
otras palabras, un bloque de inicialización es una línea de "código g" que se puede tener corriendo a Grbl auto-
mágicamente para seleccionar valores de código g predeterminados por usted, o cualquier otra cosa que usted
necesite que haga Grbl cada vez que arranque el equipo. Por el momento, Grbl puede almacenar dos bloques
de código-g por defecto en el sistema, pero se puede almacenar en cualquier lugar de 1 a 5, como una opción
en tiempo de compilación (cambiando config.h y re-compilando). Por lo tanto, cuando se conecte a Grbl,
escriba $ y luego enter. Grbl debe responder con un mensaje corto, como:
No hay mucho que seguir, pero esto sólo significa que no hay ningún bloque de código g almacenado en la
línea $N0 en Grbl para ser ejecutada en el arranque. $N1 es la siguiente línea a ejecutar. (Si vuelve a compilar
para tener más, se ejecutará en orden a $N4). Para definir un bloque de arranque, escriba $N0 = seguido de
un bloque de código g válido y luego enter. Grbl ejecutará el bloque para comprobar si es válido y luego
responderá con un 'ok' o un error: para decirle si tuvo éxito o algo salió mal.
Por ejemplo, digamos que usted desea utilizar su primer bloque de arranque $N0 para programar los modos de
analizador de código de g como coordenadas trabajo G54, modo pulgadas G20 y plano XY G17. Usted debería
escribir $N0 = G20 G54 G17 con un entra y usted debería ver una respuesta 'ok'. A continuación, puede
comprobar si se consiguió almacenar escribiendo $ N y ahora debería ver una respuesta como $N0 =
G20G54G17. Una vez que tenga un bloque de arranque almacenado en la EEPROM de Grbl, cada vez que se
arranque o restablecer verá su bloque de arranque impreso por usted y una respuesta de Grbl para indicar si
Si dispone de varios bloques de inicio de código de g, se imprimiran nuevamente a usted en orden sobre cada
inicio. Y si desea borrar uno de los bloques de inicio, escriba $N0 = sin nada después del signo igual. Además,
si usted tiene activado homing, los bloques de arranque se ejecutará inmediatamente después del ciclo
movimiento (G0/1, G2/3, G28/30) en los bloques de inicio .Estos comandos de movimiento se ejecutarán cada
vez que se reinicie o encienda Grbl, así que si usted está en una situación de emergencia y tiene que ejecutar
una parada de emergencia y reiniciar, un movimiento del bloque de inicio puede (y probablemente lo hará)
GRBL necesita saber cuán lejos cada paso desplazará la herramienta en la realidad. Para calcular los
Consejo: Usando valores altos de micropasos (por ejemplo, 16) puede reducir el torque de su motor paso a
paso, entonces utilice el valor más bajo que le de la resolución deseada en los ejes y propiedades de
Calcule este valor para cada eje y escriba estos valores en Grbl.
mínima. Revise la hoja de datos de los motores o simplemente pruebe algunos números. ¿Quieres que pulsos
muy cortos en los Drivers de motor paso a paso puedan ser reconocidos con fiabilidad?. Si los pulsos son
demasiado largos podría encontrarse con problemas para ejecutar el sistema a altas velocidades de avance.
Esta configuración setea el seek rate por defecto (G0) y el feed rate (tasa de alimentación) (G1, G2, G3)
después de encender Grbl e inicializar. El seek rate ( también conocidos como saltos rápidos) se utiliza para
moverse desde el punto A al punto B lo más rápido posible, por lo general para el desplazamiento a la
posición. El seek rate debe ajustarse a la máxima velocidad a la que máquina puede ir en cualquier
movimiento de los ejes. El feed rate por defecto normalmente no entra en la tabla como generalmente se
especificarán los feed rate en el programa de código de g, pero si no, este feed rate por defecto se utilizará.
NOTA: En versiones futuras, se eliminará la tasa de alimentación por defecto (default feed rate). La norma de
código G no posee una tasa de alimentación por defecto (G1, G2, G3), pero entregará error de salida si no ha
habido un comando de avance "F" especificado. La tasa de seek (también conocido como saltos rápidos) se
actualizará para que los usuarios puedan especificar la velocidad máxima a la cual cada uno de los ejes se
pueda mover, en lugar de tener sólo una velocidad que limite a todos ellos.
Algunos controladores paso a paso para CNC necesitan que sus entradas de nivel alto y y de nivel bajo estén
invertidas tanto para la dirección como en los pasos. Las líneas de señal son normalmente puestas en nivel
alto o bajo para indicar la dirección de giro o puestas en nivel alto y pasando a nivel bajo un par de
microsegundos para indicar un evento de paso. Para lograr esto, Grbl puede invertir los bits de salida para
acomodarse a esas necesidades particulares. El valor invertido de la máscara es un byte el cual es negado
con los datos de dirección y paso antes de que se envíe por el puerto de entrada de control de pasos del driver
de motores. De esa manera usted puede utilizar este método tanto para invertir pulsos de paso o para invertir
una o más de las direcciones de los ejes. Los bits de este byte corresponden a los pines asignados para la
generación de pasos en el código del archivo config.h. Tenga en cuenta que los bits 0 y 1 no se utilizan para la
Por ejemplo, si desea invertir las direcciones de X e Y en esta configuración se debe calcular un valor por
Que es igual a 96, por lo que al enviar este comando los invertirá:
Ahora, al ver la configuración actual, debería ver esto en su línea de comandos de inversión de máscara con la
representación binaria del número (bits 5 y 6 debería mostrar ahora un 1 para indicar la inversión.)
Cada vez que los motores paso a paso completen un movimiento y se detengan, Grbl deshabilitará los motores
paso a paso de forma predeterminada. El tiempo de bloqueo de ralenti de los motores paso a paso es la
longitud de tiempo en que GRBL mantendrá los motores paso a paso bloqueados antes de deshabilitar.
Dependiendo del sistema, se puede establecer este a cero y desactivarlo. En otros, es posible que necesite 25
a 50 milisegundos para asegurarse de que sus ejes se detengan por completo antes de deshabilitarse. (El
autor comenta que su máquina tiende a desviarse ligeramente si no tienen activada esta función.) O, puedes
mantener siempre los ejes activados todo el tiempo seteando este valor en el máximo de 255 milisegundos.
Una vez más, sólo para repetir, se puede mantener todos los ejes siempre habilitados estableciendo $ 7 = 255.
$8 (Aceleración, mm/seg^2)
Esta es la aceleración en mm/segundo/segundo. Usted no tiene que entender lo que eso significa, basta decir
que un valor inferior proporciona una aceleración muy suave mientras que con un valor superior producirá
movimientos más ajustados y alcanzará feedrates mucho más rápido. En términos técnicos, esta es la
aceleración punto a punto de la máquina, independientemente de los ejes. Seleccione este valor de
aceleración tan alto como los límites de los ejes pueden dejarle sin perder CUALQUIER paso. Por lo general,
le gustaría darse un poco de buffer, ya que si pierdes pasos, Grbl no tiene ni idea de lo que ha sucedido (los
La desviación de unión de curvas es utilizada por el manager de aceleración para determinar la rapidez con
que puede moverse a través de un camino. La matemática es un poco complicada, pero en general, los
valores más altos da generalmente movimientos más rápido, posiblemente bruscos. Los valores más bajos
hacen que el manager de aceleración sea más cuidadoso y dará lugar a un cuidadoso y lento movimiento en
las curvas. Así que si llegas a tener problemas cuando el equipo trate de tomar una curva demasiado rápido,
reduzca este valor para que sea más lento. Si desea que su máquina pueda moverse más rápido a través de
los cruces, aumente este valor para acelerarlo. Para los técnicos, ir a este enlace para leer sobre el algoritmo
de curvas de Grbl, que representa tanto la velocidad y el ángulo de cruce con un método muy simple, eficiente
y robusto.
GRBL renderiza círculos y arcos mediante la subdivisión de ellos en líneas muy pequeñitas. Es probable que
nunca tenga que ajustar este valor, pero si usted encuentra que sus círculos son demasiado irregulares (¿en
serio? ¿una décima de milímetro no es lo suficientemente precisa para usted? ¿Está usted en la
nanotecnología?) Usted puede ajustar esto. Los valores más bajos dan una mayor precisión, pero puede dar
Esta es una opción avanzada que no se debe cambiar a menos que existan circunstancias en las que usted lo
necesite. Para que sea posible hacer arcos G02/03 en Grbl, Grbl aproxima la ubicación del siguiente segmento
de arco con una pequeña aproximación de ángulo. La corrección de n-ésimo arco es el número de segmentos
de arco aproximados realizados antes de que Grbl calcule un segmento de arco exacto para corregir el drift de
error de aproximación. Calcular estas ubicaciones exactas es computacionalmente costosa, pero hay algunos
casos extremos en los que las pequeñas aproximaciones angulares pueden introducir suficientes error a
notarse, con muy muy pequeños arcos con una gran longitud de segmento de arco. Cambie esta configuración
sólo si encuentra problemas extraños con arcos, pero no es recomendable para ir por debajo de 3, ya que esto
puede llevar al buffer a encontrarse vacío en algunos espacios de tiempo, donde los ejes desaceleren and
Selecciona cuantos de todos los decimales de los valores de punto flotante entregará Grbl. No es mucho más
GRBL v0.8 tiene una función de informe de posicionamiento en tiempo real para proporcionar a los usuarios
una retroalimentación sobre donde se encuentra exactamente la máquina en ese momento. Por defecto está
configurado para informar en mm, pero enviando el comando $13 = 1, usted envia este indicador booleano
como "verdadero" y la función de los informes de estado reportará ahora en pulgadas. Para ajustar
nuevamente a mm $13 = 0.
$14 (Inicio automático, booleano)
En un entorno de CNC más profesional, los profesionales comienzan un trabajo cargando su programa y luego
pulsando el botón 'inicio del ciclo' (Cycle start) en su máquina. Se inicia el trabajo. Grbl hace lo mismo, pero no
por defecto. Como una herramienta de aprendizaje, 'auto inicio de ciclo' ejecutar cualquier comando de código
G que el usuario envíe a Grbl, sólo para correr la máquina para ver si se mueven en la dirección que cree que
debería ir o simplemente ver lo que la máquina puede hacer . Esto hace que sea más fácil de cargar código en
su máquina con Grbl y observar como trabaja, en lugar de tener que presionar el botón "inicio del ciclo" cada
vez que desee mover los ejes. Una vez que aprenda a usar el equipo y obtenga un buen manejo de código g,
puede desactivar la función "auto inicio de ciclo 'enviando el comando $14=0 a GRBL. (Puede ser necesario un
ciclo de soft-reset o un power cycle para cargar el cambio). Otra forma de decirlo podría ser: Si $14 = 0,
entonces algunos comandos Gcode como Xn, Yn etc. no resultarán cuando les aplique "enter" en un terminal
serial. Si $14 = 1, entonces van a pasar los comandos de movimiento de Gcode. Al parecer en las grandes cnc
no se ejecutará codigo G hasta que el operador presione el botón de "inicio del ciclo". Los comandos Gcode se
reciben, pero permanecen en cola y en espera al botón "inicio del ciclo". Tiene sentido, ¿no? Cuando $14 = 0,
entonces así es como actúa grbl también. Necesita el botón! (En este caso, instale el botón de feed-hold
(alimentación retenida) también). Cuando $14 = 1, entonces el software grbl agrega automáticamente el código
de software del "inicio del ciclo" cada vez que se pulse "Enter" a una línea de comandos de codigo G a través
de un terminal serial. Esto se hace para que sea más conveniente para usted introducir comandos y ver que
Por defecto, el pin de habilitación (Enable) de motor paso a paso está en nivel alto para desactivar y bajo para
habilitar. Si su configuración requiere lo contrario, simplemente invierta el pin de habilitación de motor paso a
paso escribiendo $15 = 1. Desactivar con $15 = 0. (Puede ser necesario un "power cycle" para cargar el
cambio).
lejos de los extremos de recorrido y choquen o rompan algo caro. Básicamente se cablean algunos
interruptores (mecánico u óptico) cerca del final de carrera de cada uno de los ejes, o donde quiera que usted
considere que podría haber problemas si el programa se desplaza demasiado hacia donde no debe. Cuando el
interruptor se activa, se detendrá inmediatamente la marcha, el apagado del refrigerante y del cabezal (si están
conectados), y entra en el modo de alarma, lo que obliga a revisar el equipo y reiniciar todo. Para utilizar los
límites de final de carrera con Grbl, los pines de límite de final de carrera en arduino estarán en nivel alto con
una resistencia pull-up interna, por lo que todo lo que tienes que hacer es cablear un interruptor normalmente
abierto con el pin y tierra y habilitarlo con el comando $16 = 1. Eso es todo.(Desactivar con $16 = 0 ) Si quieres
limitar ambos finales de carrera en uno los ejes, sólo cablea dos interruptores en paralelo con el pin y tierra,
por lo que si uno de los dos se activa, se disparará la acción de final de carrera. Sólo sé, que un evento de fin
de carrera es considerado como evento crítico, donde los motores paso a paso paran inmediatamente y
tendrán probablemente los pasos perdidos. Grbl no tiene ninguna información sobre la posición, por lo que no
puede garantizar que tiene alguna idea de dónde está. Por lo tanto, si se activa una alarma de Hard limit, Grbl
entrará en un bucle infinito de modo de alarma, que te da la oportunidad de ver la máquina y te obliga a
reiniciar Grbl. Recuerda que es una medida de seguridad exclusivamente. Si tiene problemas con que el
restablecerá Grbl en un estado de alarma, donde se puede acceder a la configuración y comandos Grbl, pero
todos los códigos G y bloques de arranque serán bloqueados. Así que usted puede desactivar el ajuste de los
límites de fin de carrera y luego con $X desbloquear la alarma. O bien, puede conectar en un interruptor
normalmente cerrado en serie con la tierra a todos los finales de carrera para desconectar los interruptores de
forma temporal para que pueda poder mover con GRBL sus ejes fuera de los interruptores.
Algo que ha sido muy necesario en Grbl desde hace largo tiempo. Está ahora plenamente compatible con v0.8.
Para los que recién se inician en CNC, el ciclo de Homing se utiliza para localizar con exactitud y precisión la
posición cero en una máquina (también conocido como cero de máquina) cada vez que arranque su Grbl entre
sesiones. En otras palabras, usted sabe exactamente dónde se encuentra en cada momento, cada vez.
Supongamos que partimos mecanizando algo o está a punto de iniciar el siguiente paso en un trabajo y se va
la luz, se vuelve a iniciar Grbl y Grbl no tiene ni idea de dónde está. Uno se queda con la tarea de averiguar
dónde se encuentra. Si usted tiene homing, siempre tienes el punto de referencia cero de la máquina
localizado, por lo que todo lo que tienes que hacer es ejecutar el ciclo de homing y continuar donde lo dejó.
Para configurar el ciclo de homing de Grbl, es necesario tener fines de carrera en una posición fija que no va a
ser golpeada o movida, o bien su punto de referencia sea erróneo. Por lo general, se configuran en el punto
más lejano de +X, +Y y +Z de cada uno de los ejes. Conecte los interruptores de límite con el pin de límite y de
tierra, al igual que como hizo con los límites de final de carrera y habilite el homing. Si tienes curiosidad,
puedes usar los interruptores de límite para ambos finales de carrera y homing. Ellos trabajan bien uno con el
otro. De forma predeterminada, el ciclo de homing de Grbl mueve el eje Z positivo primero para borrar el área
de trabajo y luego se mueve tanto en el eje X y eje Y al mismo tiempo en la dirección positiva. Para configurar
el comportamiento de su ciclo homing hay más opciones de Grbl en las siguientes secciones que describen lo
que hace cada una (y las opciones de tiempo de compilación también). Además, una cosa más para tener en
cuenta, cuando homing esté activado, Grbl bloqueará todos los comandos de código G hasta que se realice el
ciclo de homing. Significa que no hay movimiento de ejes, a menos que el bloqueo esté desactivado ($X), pero
lo veremos más adelante. La mayoría, si no todos los controladores CNC, hacer algo similar ya que en su
mayoría lo usan como medida de seguridad para ayudar a que los usuarios realicen correcciones de error de
posicionamiento, que es muy fácil de hacer y es triste cuando un error arruina una pieza. Si usted encuentra
esta molestia o encuentra algún error extraño, por favor háganlo saber y vamos a tratar de trabajar en él para
todo el mundo sea feliz. :) NOTA: Revise config.h para más opciones de homing para usuarios avanzados.
Puede desactivar el bloqueo de homing al inicio, configurar los ejes que mueven primero durante un ciclo de
De forma predeterminada, Grbl asume que sus finales de carrera son posición de Homing en la dirección
positiva, en primer lugar mueve el eje z positivo, entonces mueve los ejes x e y en dirección positiva antes de
tratar de localizar exactamente el cero de máquina yendo y viniendo lentamente alrededor del switch. Si la
máquina tiene un interruptor de límite en la dirección negativa, la máscara de dirección homing puede invertir el
sentido de los ejes. Funciona igual que en el la inversión de puertos de entrada de paso por máscara de bits,
donde todo lo que tienes que hacer es ajustar los pines de dirección de eje a "1" que desees invertir y que los
El ciclo de homing primero busca llegar a los finales de carrera a un seek rate alto (a una velocidad de
desplazamiento alta) y después que los encuentra, se mueve a una velocidad de avance más lenta para poner
a punto en la ubicación precisa el cero de la máquina. Homing feed significa que avance más lento. Ajústelo a
cualquier valor de velocidad que proporcione una repetible y precisa localización del origen de la máquina.
La tasa de Homing seek es la tasa de búsqueda de ciclos de homing, o la velocidad a la que primero intenta
encontrar los finales de carrera. Ajuste a cualquier tasa a la que se llegue a los finales de carrera en un tiempo
suficientemente corto sin que se descarrile la máquina en los finales de carrera si viene demasiado rápida.
Esta seek rate se comporta un poco diferente que el driver de motor paso a paso principal. En lugar de la tasa
de punto a punto, sólo se mueven todos los ejes a la misma velocidad individual, independientemente de
cuantos ejes se mueven al mismo tiempo. Por lo tanto, el movimiento seek XY parecerá moverse alrededor del
41% más rápido que si usted desee moverlo con un comando G1. (Se puede desactivar esto en el código del
Cada vez que un interruptor se activa, algunos de ellos pueden tener ruido electro/mecánico que en realidad
"rebotan" la señal en nivel alto y bajo durante unos milisegundos antes de asentarse. Para solucionar esto, es
necesario para evitar el rebote de la señal, ya sea por hardware con algún tipo de Acondicionador de señal o
por software con un pequeño retraso para que acabe el rebote de la señal. Grbl realiza una breve demora sólo
en homing cuando localiza el cero de máquina. Establezca este valor de retardo a cualquier valor que su
switch necesite para evitar una repetición de homing. En la mayoría de los casos 5 a 25 milisegundos está
bien.
Para trabajar bien con la función de los límites de carrera, donde homing puede compartir los mismos switches
de fin de carrera, el ciclo de homing se moverá fuera de todos los switches de límite por este viaje de pull-off.
En otras palabras, ayuda a prevenir el disparo accidental del límite de carrera después de un ciclo de homing.
El rate de homing seek selecciona una forma de controlar cuán rápido una maniobra de pull-off se mueve,
Técnicamente, los comandos Grbl restantes no son comandos de configuración, pero vamos a explicarlo aquí
no por una buena razón que no sea por completar. GRBL proporciona tres comandos para informar de su
estado actual y dónde se encuentra. De los tres, uno de ellos está en tiempo real, respondiendo con la posición
actual. Los otros dos no lo son, sino que responden a cómo los bloques entrantes serán procesados en función
de los seteos de estado seleccionados por código g, configuraciones, o switches. La razón por la que no son
en tiempo real es que Grbl tiene un buffer interno que almacena y planea los movimientos almacenados en
ella. Los bloques de codigo G entrantes sólo generaran en un nuevo movimiento al final del buffer cuando se
tenga espacio en él. El buffer básicamente garantiza que los movimientos en Grbl se muevan a las tasas más
rápidas y más seguras posibles, recalculando constantemente en tiempo real los movimientos finalizados y los
Este comando imprime todos los modos de codigo G activos que el analizador interpretará de cualquier
comando entrante. Estos modos incluyen los modos de pulgadas/mm G20/G21, los sistema de coordenadas
de trabajo activo G54-G59, los modos de movimiento activo G0/G1/G2/G3, la selección de plano activo
G17/G18/G19, los de modos absoluto G90/G91, los de modo de feed rate inversos G93/G94, los de flujo del
programa M0/M1/M2, los de estado del cabezal M3/M4/M5, los de estado de refrigeración M8/M9, los de
número de herramienta T y los de feed rate activo F. También indicará cualquier switch GRBL activo $Sx , así
como bloque borrado $S1. Cuando se llama, Grbl devolverá una línea como esta:
Los parámetros en código G por lo general almacenan los offsets de coordenadas de trabajo G54-G59 y las
posiciones iniciales G28/G30 (que no debe confundirse con el cero por Homing y el cero de máquina. Estas
posiciones iniciales pueden ser seleccionadas en cualquier parte del espacio de la máquina por los comandos
momento que se cambien y permanecen almacenados. Lo que significa que van a seguir siendo la misma,
independientemente del apagado de la máquina, hasta que se modifiquen explícitamente. Las coordenadas de
trabajo G54-G59 se pueden cambiar a través del comando G10 L2 Px o G10 L20 Px definido por el estándar
gcode NIST y el estándar EMC2 (linuxcnc.org). Las posiciones iniciales G28/G30 se pueden cambiar a través
de los comandos G28.1 y G30.1, respectivamente. Tenga en cuenta que G92 no es permanente o almacenada
en la memoria EEPROM según las normas de código g, y se restablecerá a cero cuando Grbl se reinicie. Por
favor, lea estos estándares de código de g para entender cómo se utilizan. Cuando se llama a la función $#,
Grbl responderá con los offsets almacenados de las coordenadas de la máquina para cada sistema de la
siguiente manera
En su mayor parte, estos offsets no son particularmente útiles a menos que tenga habilitado homing. Si tiene
habilitado homing, estos son maravillosamente impresionantes, porque una vez que el inició, siempre se puede
volver a la misma posición almacenada mediante el uso de los sistemas de coordenadas de trabajo dentro de
la precisión de la máquina. O si usted está haciendo múltiples partes y tiene una trayectoria de la herramienta
para sólo una parte, todo lo que tienes que hacer es configurar tu sistema de coordenadas de trabajo en la
ubicación donde la próxima parte va a ser fabricada y volver a ejecutar el mismo código.
? (Estado actual)
El comando ? devuelve inmediatamente los estados activos de Grbl y la posición actual en tiempo real, tanto
en coordenadas de máquina como en coordenadas de trabajo. Esto puede ser enviado en cualquier momento
y funciona de forma asíncrona con todos los demás procesos que Grbl está haciendo. la selección de seteo
$13 de Grbl determina si se declara en milímetros o en pulgadas. Cuando ? es presionado, Grbl responderá
Los estados activos en Grbl que pueden estar son: inicio, en cola, corriendo, Hogar, Reloj, Hora:
1. Inicio (Idle): Todos los sistemas están listos y ya está listo para cualquier cosa.
2. En cola (Queue): Movimiento(s) se ponen en cola en el planificador de buffer esperando por el ciclo de
inicio de marcha que se emitirá. Algunos procesos como el modo de verificación de código de g no se
puede ejecutar mientras está en la cola algo. Restablezca para borrar la cola.
3. Corriendo (Run): Indica que un ciclo está en marcha.
4. (Hold): Un feed hold se encuentra en proceso de ejecución, o desacelerando hasta detenerse. Después
de que el hold se haya completado, Grbl entrará en un estado de cola, en espera de un ciclo de inicio
para reanudar el programa.
5. Home: En la mitad de un ciclo de homing. NOTA: Las posiciones no se actualizan en vivo durante el
ciclo de homing, pero se setearán a [0,0,0] una vez haya terminado.
6. Alarm : indica que algo ha salido mal o Grbl no sabe su posición. En este estado se bloquean todos los
comandos de códigos g, pero le permite interactuar con la configuración de Grbl si es necesario. el
bloqueo Kill Alarm '$X' publica este estado y pone a Grbl en estado de reposo, lo que permitirá mover
cosas de nuevo. Como se dijo antes, tenga cuidado de lo que está haciendo después de una alarma.
7. Check : Grbl está en modo de chequeo de código g. Se procesará y responderá a todos los comandos
de códigos de g, pero no moverá o encenderá cualquier cosa. Una vez que lo desactive con otro
comando '$C', Grbl se reseteará a sí mismo.
Esto cambia el analizador de codigo G del Grbl para tomar todos los bloques de entrada procesándolos por
completo, como lo haría en una operación normal, pero sin que se mueva ninguno de los ejes, ignorando la
demora y apagando el husillo y el ventilador. Esto está pensado como una manera de proporcionar al usuario
una manera de comprobar cómo el nuevo programa de código G fares con el analizador de GRBL y monitor de
los errores de GRBL. (Y, eventualmente, este también chequeará violaciones de soft limits). Al desactivarse,
Grbl realizará un soft-reset automático (^X). Esto es para dos propósitos. Simplifica la gestión de código un
poco, pero también evita que los usuarios inicien un trabajo cuando sus modos de código g no son lo que ellos
piensan que son. Un reinicio del sistema siempre le da al usuario un inicio consistente limpio. NOTA:
Eventualmente, el modo de chequeo de codigo G podría ser re-factorizado para tener en cuenta la opción de
"reanudar el programa" en Grbl. Esto significa que Grbl podría iniciar un programa de código G en cualquier
lugar. Iría internamente a través de todo el programa de código g hasta el punto de reanudación dentro del
programa deseado para setear todos los estados del analizador y de reanudación, se moverá hasta ese punto
de inicio, y comenzará la ejecución/movimiento desde ese punto. Por ejemplo, digamos que tiene una E-Stop
(parada de emergencia) en medio de un programa porque se le olvidó algo o tiene la herramienta equivocada
en el cabezal. Su pieza está muy bien y tiene que reiniciar el programa. En este momento, tendrá que iniciar el
programa desde el principio y que se mueva físicamente y correr hasta el punto en que se produjo la parada de
emergencia. Si usted tiene un programa de fresado extenso, esto puede tomar un tiempo. En cambio, una
"reanudación de programa" sólo pasará por el comienzo del programa internamente, sin mover nada, y sólo
El modo de alarma de Grbl es un estado en el que algo ha salido críticamente mal, como llegar a un límite de
carrera o al abortar durante el ciclo, o si Grbl no sabe su posición. Por defecto, si tiene habilitada Home y
enciende el Arduino, Grbl entrará en estado de alarma, ya que no conoce su posición. El modo de alarma
bloqueará todos los bloques de código g hasta que se haya realizado el ciclo de homing '$H'. O si un usuario
necesita anular el bloqueo de alarma para mover sus ejes fuera de sus finales de carrera, por ejemplo, el
bloqueo de kill alarm '$X' anula los bloqueos y permite que las funciones de código de g trabajen de nuevo.
Pero, andar con cuidado! Esto sólo se debe utilizar en situaciones de emergencia. La posición probablemente
se haya perdido y Grbl puede que no esté donde tú creas que esté. Por lo tanto, es aconsejable utilizar el
modo incremental G91 para hacer movimientos cortos. A continuación, realice un ciclo de homing o
Este comando es la única forma de realizar el ciclo de homing en Grbl. Anteriormente (versiones anteriores de
GRBL), los comandos G28 y G30 iniciaban automáticamente el ciclo de Homing, pero esto es incorrecto de
acuerdo a los estándares de código de g. Homing es un comando completamente independiente manejado por
el controlador. G28 y G30 sólo mueven a una posición de inicio predefinida que se almacena en los
parámetros de código g, que pueden estar ubicados en cualquier parte de la máquina. SUGERENCIA:
Después, ejecute un ciclo de homing, en vez de correr manualmente todo el tiempo a una posición en la mitad
de su volumen de trabajo. Puede establecer una posición predefinida G28 o G30 que sea su posición post-
homing, cerca de donde usted estará mecanizando. Para establecer estos, primero tendrá que refrescar la
máquina en el lugar que se desea que se mueva a después de homing. Escriba un comando G28.1 (o G30.1)
para tener almacenada esa posición en GRBL. Así que después de un homing "$H ", usted podrá entrar con
"G28"(o "G30") y se moverá hasta allí auto-mágicamente. En general, me gustaría simplemente mover el eje
XY del centro y dejar el eje Z hacia arriba. Esto asegura que no hay posibilidad de que la herramienta en el
Este es el ciclo de iniciar o reanudar el comando que se puede emitir en cualquier momento, ya que es un
comando en tiempo real. Cuando Grbl tiene movimientos en cola en su memoria y está listo para ir, el
comando "~" de inicio del ciclo iniciará la ejecución de la memoria intermedia y Grbl comenzará el
desplazamiento de los ejes. Sin embargo, por defecto, se activa inicio de ciclo automático, por lo que los
nuevos usuarios no necesitarán este comando a no ser que se realice una alimentación del buffer. Cuando se
ejecuta una alimentación de buffer, el inicio del ciclo reanudará el programa. El Inicio del ciclo sólo será eficaz
cuando hay movimientos en el buffer listo para ir y no funcionarán con cualquier otro proceso, como "Homing".
! (FE ED HOL D)
El comando Feed Hold llevará el ciclo activo a parada a través de una desaceleración controlada, de manera
de no perder la posición. También está en tiempo real y puede ser activado en cualquier momento. Una vez
terminado o estando en pausa, Grbl esperará hasta que se emita una orden de inicio de ciclo para continuar
con el programa. Feed Hold sólo puede pausar un ciclo y no afectará el homing (la posición de inicio) o
cualquier otro proceso. Si usted necesita detener un programa a la mitad de un ciclo y no puede permitirse
perder la posición, realice un Feed Hold para que Grbl conduzca todo a una parada controlada. Una vez que
haya terminado, usted puede emitir un reset. Siempre trate de ejecutar un feed hold cuando la máquina esté en
funcionamiento antes de un hitting reset, excepto, por supuesto, si hay alguna situación de emergencia.
Este es el comando de soft reset de Grbl. Está en tiempo real y puede ser enviado en cualquier momento.
Como su nombre lo indica, se resetea Grbl, pero de una manera controlada, retiene la posición de la máquina,
y todo se hace sin necesidad de apagar el Arduino. Las únicas veces que un soft-reset podría perder la
posición es cuando se generan problemas como si los steppers murieran mientras se estaban moviendo. Si es
así, se informará si el seguimiento de Grbl de la posición de la máquina se ha perdido. Esto se debe a que una
desaceleración descontrolada puede conducir a pasos perdidos y Grbl no tiene realimentación para saber
cuántos pasos perdió (este es el problema con los motores paso a paso en general). De lo contrario, Grbl se
reinicializará, colocará las líneas de inicio y continuará en su feliz recorrido. Tenga en cuenta que se
recomienda hacer un soft-reset antes de comenzar un trabajo. Esto garantiza que no hay ningún modo de
código g activo que debiese estar trabajando al rededor o seteando su máquina. Por lo tanto, el equipo
comandos de configuración para trabajar y calibrar la máquina DIYLILCNC. En nuestro caso no es necesario
Para los ejes X e Y la relación entre el número de pasos y la cantidad de milímetros recorridos se establece a
partir del número de pasos que posee el motor paso a paso, los micropasos que entregue el driver de motor y
el diámetro efectivo de las poleas de distribución (timing pulley) conectados a las correas de cada eje. La
primera tarea consiste en establecer el diámetro de las poleas. Para el engrane del motor paso a paso ubicado
(Nota: otra forma de calcular el perímetro consiste en calcular el paso de un diente de la correa de distribución
Como los motores paso a paso utilizados en DIYLILCNC entregan 200 pasos por vuelta y los drivers se
encuentran configurados para trabajar en ½ de paso entonces el número de pasos que se necesita para
Este valor es el que debemos incorporar en GRBL para que la máquina establezca el número de pasos que
debe generar para recorrer 1 mm en el eje X. Para incorporar el comando, se ejecutará la instrucción:
El cual quedará almacenado en GRBL permanentemente, hasta que se decida cambiar nuevamente este
valor.
(Nota: otra forma de calcular el perímetro consiste en calcular el paso de un diente de la correa de distribución
Como los motores paso a paso utilizados en DIYLILCNC entregan 200 pasos por vuelta y los drivers se
encuentran configurados para trabajar en ½ de paso entonces el número de pasos que se necesita para
Este valor es el que debemos incorporar en GRBL para que la máquina establezca el número de pasos que
debe generar para recorrer 1 mm en el eje X. Para incorporar el comando, se ejecutará la instrucción:
El cual quedará almacenado en GRBL permanentemente, hasta que se decida cambiar nuevamente este
valor. En caso de querer estimar los valores de paso por milímetro, se puede utilizar una simple regla de tres,
comparando los valores actuales configurados en la máquina con los valores deseados e iterar varias veces
Para el eje Z la relación entre el número de pasos y la cantidad de milímetros recorridos se establece a partir
del número de pasos que posee el motor paso a paso, los micropasos que entregue el driver de motor y el
paso de hilo de la varilla dentada (thread pitch) usada como eje sinfin. La primera tarea consiste en establecer
el paso de hilo (o sea, la distancia por revolución recorrida a lo largo del hilo). Para el eje sinfin del motor paso
a paso ubicado en el eje Z, se ha usado un hilo de 1/4 de pulgada, el cual posee un paso de hilo de 1.5 mm
aprox.
Como los motores paso a paso utilizados en DIYLILCNC entregan 200 pasos por vuelta y los drivers se
encuentran configurados para trabajar en ½ de paso entonces el número de pasos que se necesita para
Existe otro método sencillo y razonable para calcular el número de pasos por mm para los 3 ejes y consiste en
Tomando como ejemplo el cálculo de pasos por mm en el eje Z, la relación entre el número de pasos y la
cantidad de milímetros recorridos por el eje Z se puede calcular de la siguiente forma (igualmente para los
otros 2 ejes):
La configuración inicial de pasos por milímetro almacenada en GRBL fue de $3 = 150 (pasos por mm). Se
fresó una pieza de trupán estructural de baja densidad indicándole a la máquina que recorriera 9 mm. Al fresar
la plancha, la fresa recorrió 16 mm por lo que se puede concluir que el valor de pasos por milímetro está
desajustado. Para corregir esto, se utilizará una simple regla de tres, mediante la siguiente ecuación:
Se puede comprobar que el valor de pasos por mm calculado técnicamente para el eje Z respecto del mismo
El valor obtenido es una mejor aproximación al número de pasos por mm requerido para la precisión de
movimiento en el eje Z. En caso de requerir mayor precisión, puede repetir la regla de 3 incorporando el valor
calculado anteriormente. El valor encontrado es el que debemos incorporar en GRBL para que la máquina
establezca el número de pasos que debe generar para recorrer 1 mm en el eje Z. Para incorporar el comando,
se ejecutará la instrucción:
FEED R AT E Y S E EK R AT E
El avance rápido durante el fresado (Feed Rate) y el avance rápido de la máquina en desplazamientos largos
dentro de la base de trabajo (Seek Rate) se ha configurado por observación. Los valores configurados por
defecto hacen que la máquina se mueva de manera brusca, por lo que se ha establecido los valores:
Como valores apropiados. Con estos valores la máquina no avanza muy lento ni presenta movimientos
AU TO ST AR T
Las máquinas CNC comerciales incorporan un botón de partida, el cual debe presionarse cada vez que se
requiera comenzar el fresado, independientemente de que haya sido cargado un programa de corte. GRBL
también incorpora esta opción, conectando un interruptor en el pin A2 de Arduino y adicionalmente incorpora
una segunda opción (configurado por defecto) la cual permite ejecutar un código g inmediatamente se cargue
un programa, sin necesidad de utilizar un botón de partida. Se utilizará esta opción predefinida inicialmente.
En la configuración de habilitación (o Enable) de los drivers de motores paso a paso por defecto se establece
que Arduino presentará nivel bajo de tensión en el pin de habilitación de drivers para que los drivers se
habiliten y energicen los motores y entregará un nivel alto de tensión para deshabilitar los drivers. Este tipo de
habilitación y deshabilitación de drivers es utilizado por algunos drivers de motores paso a paso comerciales.
En el caso del driver diseñado para DIYLILCNC, la habilitación y desabilitación de los drivers funciona de
manera inversa. GRBL permite ser configurado para invertir estas órdenes. Para ello, debemos escribir el
siguiente comando:
GRBL permite habilitar o deshabilitar los interruptores de inicio y fin de carrera. Por defecto esa opción viene
deshabilitada, por lo que al conectar los switches a la placa de Arduino GRBL no los reconocerá. Para habilitar
Para que DIYLILCNC pueda fresar materiales de densidad intermedia (Trupán, Terciado, placas PCB, etc.), se
requiere de un motor de fresado que tenga la potencia suficiente para trabajar estos tipos de material. Se ha
evaluado 2 alternativas comerciales, de las cuales ambas son herramientas multipropósito Dremel. Se ha
elegido Dremel debido a la calidad y durabilidad que presenta esta marca y su relativo bajo costo. A
continuación se presentarán las características técnicas de las siguientes herramientas multipropósito
evaluadas:
Herramienta Multi propósito dremel: Dremel S300 (Izquierda) y Dremel 4000 (derecha)
Observando la tabla, se puede observar las diferencias mas importantes de estas herramientas.
Respecto de la herramienta multipropósito Dremel S300, la cual se encuentra en tiendas de ferretería en Chile
se puede decir que, por su potencia y falta de control electrónico de torque solo sirve para realizar tareas
La herramienta multipropósito Dremel 4000 presenta una potencia mucho mayor y posee control electrónico de
torque, por lo que presenta alto rendimiento y se puede utilizar para tareas más exigentes. El selector de
velocidad se encuentra separado del interruptor de encendido y además posee un mecanismo de seguridad
que evita el funcionamiento de Dremel cuando se bloquea el giro del eje para cambiar la herramienta.
Por esta razón se ha elegido la herramienta multipropósito Dremel 4000 para ser incorporada a DIYLILCNC
Se ha adquirido de segunda mano una dremel 4000 americana, a un precio bastante económico. Sin embargo,
por ser Norteamericana su tensión de alimentación es de 110 VAC, por lo que se ha debido incorporar un
transformador que adapte los 110 VAC de la Dremel a los 220 VAC de la red eléctrica domiciliaria chilena.
Nota: No es nuestra intención establecer una elección de marca para el motor de fresado. Se ha elegido esta
herramienta multipropósito debido a que sus características se adaptan a los requerimientos mínimos de
DIYLILCNC.
GABINETE DE ENERGÍA
DIYLILCNC incorpora un Gabinete el cual posee los elementos de energización de la máquina. Se requiere
disponer de alimentación de 220V AC de la red eléctrica domiciliaria (Dremel y Adaptador de corriente para
alimentación de Arduino) y de una fuente de alimentación de corriente continua para la energizar los motores
paso a paso. Se ha elegido una fuente de alimentación de entrada 220 VAC y salida 12 VDC 15A para la
energización de los motores, pues el consumo máximo total de corriente para los 3 motores es de 9A. Una
fuente de 12 VDC 15A se ofrece como producto estandar en el comercio y entrega un margen de holgura
imagen:
GABINETE DE CONTROL
DIYLILCNC además incorpora un segundo Gabinete el cual posee los elementos de control de la máquina. La
etapa de control se alimenta desde la salida del gabinete de energía y se encarga de traducir los comandos de
código G o las rutinas de fresado en órdenes de movimiento para los motores paso a paso (o steppers) de
cada eje. La interfáz encargada de la traducción de la información de movimiento para la máquina está a cargo
de una tarjeta de desarrollo llamada Arduino UNO, la cual recibe las ordenes en codigo G desde la
computadora en comunicación serial USB y desde pines específicos de salida de esta tarjeta envía las ordenes
de numero de pasos y dirección de giro para los drivers. Cada driver de motor paso a paso cumple 2 funciones
principales:
Los motores paso a paso o steppers se encargan de trasladar el motor de fresado en los ejes X, Y y Z.
El esquema de conexión y la indicación de cada elemento de este circuito se muestran el la siguiente imagen:
Si desea conocer como funciona por dentro el driver CNC DIY para DIYLILCNC puede acceder al
capítuloFuncionamiento del driver CNC DIY para motores paso a paso (Marco teórico).
llamados L297 (Controlador de puente H) y L298N (Puente H doble). Las características principales de este
driver son:
El driver está conformado por 2 placas PCB: la placa superior posee toda la electrónica que acompaña al
circuito de control de puente H L297 y la placa inferior contiene toda la electrónica en torno a los puentes H
dobles L298N.
A continuación se presentarán los aspectos y pasos para la fabricación de este driver de motores paso a paso.
Este driver corresponde a su versión 1.2. A continuación se muestran algunas vistas de este driver el la
Si desea observar las fotografías en mayor detalle y fluidez vaya a la galería fotográfica siguiente elaboradas
en Flickr.
La placa de control de puente H alberga el circuito integrado L297, el cual se encarga de generar la secuencia
de alimentación para las bobinas del motor paso a paso y controla la cantidad de corriente que circula por
ellas. Esto permite regular el torque de los motores por debajo de su valor nominal. Si desea conocer en mayor
profundidad las características de este circuito integrado, puede revisar la hoja de datos entregada fabricante y
su nota de aplicaciones.
El esquema circuital presente en la placa se muestra a continuación:
Para la fabricación de las placas se utilizará una imagen monocromática de la placa diseñada, la cual sirve
para ser utilizada por cualquier método de cerigrafía para quemado de placas PCB. A continuación se muestra
La placa de puente H doble alberga 2 unidades del circuito integrado L298N, los cuales se encargan de
energizar las bobinas del motor paso a paso según la secuencia de alimentación que entregue la placa
superior. Si desea conocer en mayor profundidad las características de este circuito integrado, puede revisar
Para la fabricación de las placas se utilizará una imagen monocromática de la placa diseñada, la cual sirve
para ser utilizada por cualquier método de cerigrafía para quemado de placas PCB. A continuación se muestra
PDF. Recuerde imprimir la transparencia en tamaño 100% (sin ajuste a escala) en impresión offset.
F ABRI C AC IÓN D E PL AC AS
Los métodos caseros más usados en la fabricación de placas PCB son el clásico método del plumon
permanente y el método del planchado. El que los ha utilizado alguna vez sabe que estos métodos permiten
fabricar fácil y rápidamente placas para sus prototipos, pero no permiten obtener un buen acabado ni tampoco
incorporar elementos de mucho detalle en la serigrafía. En esta ocasión se utilizará un método de serigrafía
que, aunque mas lento, permite realizar una placa PCB muy bien acabada e incorporar en ella gran cantidad
de detalles.
Placa virgen para PCB 10X10 cm. (2 unidades) (Fibra de vidrio o pertinax) (Casa Royal) (Global)
Spray laca fotosensible Positiv Resist (Poirot)
Spray laca protectora de PCB PLASTIK (Poirot)
Alcohol Isopropílico (Piscival)
Soda Caustica (Artículos de ferretería)
Agua oxigenada 20Vol para curaciones (Farmacias)
Ácido muriático líquido (Artículos de ferretería)
bandeja plástica para manipular químicos (puede servir una caja de casata)
Virutilla de olla (Supermercados y roticería)
Cinta adhesiva de papel (Maskin)
Hoja de lija fina
Corta acrílico
Regla
Caja de cartón (Caja de zapatos o similar)
Fotoherramienta de ambas placas
Lo primero que se debe hacer es pulir ambas placas PCB virgenes con una virutilla de acero fina. Las placas
PCB nuevas vienen cubiertas con un aceite para evitar la corrosión. Al pulir las placas con la virutilla se elimina
el aceite y la placa queda brillante. Luego de pulir, se debe lavar con abundante agua y jabón, para retirar
Luego de secar con un paño que no deje pelusas, se coloca en la superficie sin cobre de cada placa anillos de
cinta adhesiva de papel (Maskin) y luego se pegan ambas placas en el interior de una caja de cartón que tenga
tapa, para evitar que las placas se muevan. Debido a que se utilizará laca fotosensible, el proceso de serigrafía
debe manejarse a oscuras, por lo que la caja nos ayudará a mantener la laca fotocensible protegida de la luz.
Ahora se debe aplicar la laca fotosensible (Positiv Resist). A partir de ahora, todo el proceso se debe hacer en
un lugar a oscuras, sin luz ultravioleta. Se pintan las placas con el spray de manera uniforme y se dejan
reposar a oscuras por un par de minutos, para que la laca se desparrame uniformemente (Si no es así, puede
agitarse la caja para que la laca baje a aquellas zonas sin pintar).
Para acelerar el proceso de secado, se puede colocar la caja con las placas pintadas en el horno durante unos
minutos. En la fabricación de estas placas se ha usado un horno eléctrico a 180° durante 9 minutos. Nota: es
importante que la laca quede seca en la placa, pero también no exceder el tiempo de estas en el horno, pues
Una vez secas las placas se procede a insolar el lado pintado de cada una con luz ultravioleta, utilizando una
transparencia con el circuito de cada placa dibujado en negro, al cual llamaremos "Fotoherramienta". La laca
posee la propiedad de debilitar aquellos espacios de pintura a los cuales ingrese la luz y mantiene firme
aquellos espacios de pintura tapados por la parte obscura de la fotoherramienta. En este diseño utilizamos
como fotoherramienta una impresión del diseño de cada placa en transparencia por Offset, el cual se a enviado
a fabricar a una imprenta. El método de offset, además de ser económico, entrega una fotoherramienta
monocromática apropiadamente oscura, como una radiografía. Una impresión de transparencia con una
impresora de toner común no permite una buena insolación de las placas, pues el toner igualmente se trasluce,
Una luz ultravioleta especial para este tipo de trabajo permite insolar la placa en unos 3 minutos. Sin embargo,
se ha optado, por ahorrar la compra de una luz especial, el uso de una mesa de luz con tubos fluorescentes
convencionales, los cuales emiten igualmente radiación ultravioleta pero en pequeña proporción, por lo cual el
tiempo de insolación de las placas es mas largo, pero mas accesible y económico. Se coloca sobre la mesa de
Luego, se colocan ambas placas PCB sobre cada fotoherramienta con la cara pintada en dirección hacia la luz.
Es importante que no exista separación entre la mesa de luz, la fotoherramienta y la placa, por lo que se debe
colocar sobre las placas un objeto pesado. Se enciende la mesa de luz durante 25 minutos aproximadamente.
Transcurrido el tiempo de insolación, se retiran las placas. Ahora podemos trabajar con luz. Para limpiar las
placas se debe sumergir cada una en una solución de agua con soda cáustica (2 litros de agua por 4
cucharadas soperas de soda). En un recipiente plástico se agrega una cantidad suficiente de solución para
sumergir la placa completamente (Nota: Se debe tener precaución con la concentración de soda. Si nota que la
placa se revela muy rápidamente agregar mas agua). Al sumergir la placa se sacude le recipiente suavemente
Comenzará a observarse que cada placa comenzará a soltar pintura y la imagen de nuestro circuito se
Finalmente ambas placas quedarán impresas con el circuito diseñado como en una serigrafía.
Finalizado este proceso se lavan las placas con agua y jabón para eliminar los residuos de pintura y de
En caso de que queden residuos de pintura no deseados en la placa pueden removerse con una hoja de
cartonero y si hubiese partes sin pintar pueden rellenarse con un plumón permanente de punta fina.
El proceso siguiente consiste en eliminar el cobre de las placas que no se encuentra con pintura. Para esto se
utilizará una solución de 2 partes de Agua oxigenada por una de ácido muriático. En un recipiente plástico se
agrega una cantidad suficiente de solución para sumergir la placa completamente. Sumergidas ya las placas
se dejan reposar en la solución, batiendo suavemente cada cierto tiempo, hasta que la solución haya retirado
Finalmente quedará listo el diseño del circuito en cobre para cada placa. luego de esto se lavan con abundante
Si desea observar las fotografías en mayor detalle y fluidez de visualización vaya a las siguientes galerías
Las perforaciones para los componentes de este circuito se han realizado con distintas medidas de broca. Se
Si desea observar las fotografías en mayor detalle y fluidez de visualización vaya a la siguiente galería
CORT E Y L IJ AD O DE PL AC AS
Se ha utilizado para cortar los bordes de las placas una cuchilla corta acrílico, con la ayuda de una regla
metálica para que el rayado inicial sea recto. Luego de cortar los bordes se pulen con una lija fina para un
mejor acabado.
Si desea observar las fotografías en mayor detalle y fluidez de visualización vaya a la galería fotográfica
Material adicional
Ya perforadas cada una de las placas, se procede a retirar la laca presente en el cobre. Se utiliza un paño o
papel tizú empapado con abundante alcohol isopropílico. Debe limpiarse muy bién cada placa hasta retirar
Se procede a soldar cada uno de los componentes. Se muestran a continuación fotografías de dicho proceso:
PLACA L297
PLACA L298
Si desea observar las fotografías en mayor detalle y fluidez de visualización vaya a las siguientes galerías
Componentes electrónicos placa PCB L297 y placa PCB L298 Driver CNC
Soldaje placa PCB L297 Driver CNC
Para proteger el cobre de la corrosión y evitar que el cobre se oscurezca se ha utilizado una laca protectora en
spray llamada Plastik, la cual se aplica sobre la superficie de cobre y se deja secar unos 20 a 30 minutos.
Si desea observar las fotografías en mayor detalle y fluidez de visualización vaya a la siguiente galería
CONEXIÓ N EN TR E PL AC AS
Materiales adicionales
fotográfica.
Si desea observar las fotografías en mayor detalle y fluidez de visualización vaya a la siguiente galería
La estructura de unión de ambas placas consiste en 4 pernos largos con 3 tuercas cada uno. Esto permitirá la
Materiales adicionales
La instalación de los pernos para crear la estructura del driver se detalla en la siguiente galería de fotos.
Si desea observar las fotografías en mayor detalle y fluidez de visualización vaya a la siguiente galería
Una sugerencia de conexión del driver para probar su funcionamiento se puede visualizar en la siguiente
secuencia fotográfica.
Si desea observar las fotografías en mayor detalle y fluidez de visualización vaya a la siguiente galería