Sei sulla pagina 1di 64

Table of Contents

1 Desarrollo Electrónica DIYLILCNC..............................................................................................................................1

2 Artículos Previos...........................................................................................................................................................2
2.1 Desarrollados por el MADLAB...................................................................................................................2

3 Desarrollo Electrónica DIYLILCNC..............................................................................................................................3


3.1 Especificaciones Técnicas........................................................................................................................3
3.2 Especificaciones de motores de avance...................................................................................................4
3.3 Especificaciones de motor de fresado.......................................................................................................4
3.4 Configuración de pines en Arduino para GRBL........................................................................................5

4 GRBL: SOFTWARE DE CONTROL NUMÉRICO COMPUTARIZADO PARA DIYLILCNC.........................................7


4.1 Sobre el desarrollo del software................................................................................................................7
4.2 Cargar firmware de GRBL en Arduino.......................................................................................................8
4.3 Conexión de driver de motores paso a paso a Arduino GRBL..................................................................8
4.4 Interfáz gráfica de usuario (GUI) para GRBL............................................................................................9

5 CONFIGURACION DE HARDWARE DEL DRIVER DE MOTORES DIYLILCNC.......................................................11


5.1 Pines de conexión y Jumpers de selección de funcionamiento..............................................................11

6 CONFIGURACIÓN DE GRBL V0.8 PARA FRESADORA DIYLILCNC.......................................................................16


6.1 Comandos de configuración: ?$$?, $X=val, $N y $Nx=line....................................................................16
6.2 Otros comandos: $C, $X, $H, ~, !, Ctrl-X................................................................................................22
6.3 Configuración de GRBL para la máquina DIYLILCNC............................................................................23

7 Conexión de Hardware en DIYLILCNC......................................................................................................................27


7.1 Elección de motor de fresado..................................................................................................................27
7.2 Gabinete de Energía...............................................................................................................................27
7.3 Gabinete de Control................................................................................................................................28

8 Construcción de driver para motores paso a paso.................................................................................................29


8.1 Placa de control puente H (L297)............................................................................................................29

9 Introducción al control numérico computarizado (CNC)........................................................................................52

10 Artículos Previos.......................................................................................................................................................53
10.1 Desarrollados por el MADLAB...............................................................................................................53

11 Introducción al Control Numérico Computarizado................................................................................................54


11.1 Antecedentes históricos........................................................................................................................54
11.2 LOS BLOCKS (Bloque de instrucciones) en Control Numérico............................................................56

12 Funcionamiento de DIYLILCNC como máquina CNC (Marco teórico).................................................................58


12.1 Sistemas CAD, CAM y código G...........................................................................................................58
12.2 Sender...................................................................................................................................................59
12.3 Controlador CNC...................................................................................................................................59

i
1 Desarrollo Electrónica DIYLILCNC

Caso de Estudio
Nombre Viviana Acevedo
Autor Juan José Peters
Marzo
«Marzo» no es un número.
Período -Diciembre
«Diciembre» no es un número.
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
Estudiado por Juan José Peters

1
2 Artículos Previos

2.1 Desarrollados por el MADLAB


1. Proyecto DIYLILCNC
2. Proyecto RepRap
3. CNC_DIY

2
3 Desarrollo Electrónica DIYLILCNC
3.1 Especificaciones Técnicas
3.1.1 Fresadora DIYLILCNC

3.1.2 Alimentación
Corriente de alimentación ..............................................10.5A Máx.

Tensión de alimentación ........................ 220V ±10% 50 ? 60 Hz. Monofásica.

Potencia instalada.................................................(no calculada).

3.1.3 Fusibles provistos


Automático general??????????? 15A a 220V/50Hz.

Fusible transformador 220/110V dremel??????????????? 3A.

3.1.4 Área de Trabajo


Recorrido eje X (Longitudinalmente)?????????????? 714mm.

Recorrido eje Y (Transversalmente)???????????????.725mm.

Recorrido eje Z (Verticalmente)?????????????????200mm.

3.1.5 Dimensiones
Dimensiones de la máquina (L * P * H)????????760 x 1000 x 495 mm.

Altura de la mesa??????????????812 mm.

Peso??????????????????????????? 60 Kg.

3.1.6 Accionamiento de los ejes


Motores de los ejes???????????..?... Motores paso a paso bipolares.

Fuerza de empuje de los carros X e Y???????????????.2.1 Nm.

Guiado de los carros X e ????????correa dentada, patines de rodamiento.

Fuerza de empuje del carro Z???.?????????.?????? 4.3 Nm.

Guiado del carro Z????.?eje sinfín con acople simple, patines de rodamiento.

Rieles????????...???????????..????. Barra cilíndrica.

3.1.7 Otros
Materiales principales de la máquina????..????. Trupan, terciado marino.

Precisión de tallado real??????????.?.?..???????.. 0.1 mm. (Tallado varía para distintas durezas de material)

Exactitud en repetitividad de posicionamiento???....?..??.???.. 0.08 mm.

Velocidad de trabajo??????????..??...????.. 0 ? 2000 mm/min.

Avance rápido????????????..?????????. 5000 mm/min.

Materiales aceptables para procesar: PVC, PCB, Plástico, Madera, latón y aluminio.

3
3.2 Especificaciones de motores de avance

3.2.1 Características físicas


Modelo?????????????????.??.?.23HS8430 (NEMA 23).

Configuración de bobinas???..???????..?????.???.. Bipolar.

Resolución???????200 pasos/rev. (400 pasos/rev. configurado por driver).

Ángulo de paso???...?????? 1.8° por paso (0.9° configurado por driver).

Largo???????..?????????????????..???. 76mm.

Ancho?????????...??????????.??????? 56.4 mm.

Alto??????????..????????????.????? 56.4 mm.

Cables?????????????..????????????.?.. 4 lineas.

Peso????????????????...????????..???. 1.1 Kg.

3.2.2 Características eléctricas


Corriente de alimentación máxima?????.???????????..?. 3A.

Resistencia de bobinas?????????????????????. 1 Ohm.

Impedancia de Bobinas?????????????...??????? 3.5 mH.

3.2.3 Características mecánicas


Par motor máximo a rotor bloqueado???????????????. 1.8 Nm.

Torque de detención????????????????????.?? 6N/cm.

Momento de inercia del rotor??????????????..??. 440 gr/cm2.

3.3 Especificaciones de motor de fresado

4
3.3.1 Características
Marca?????????????..??????..???????.. Dremel.

Modelo????????????..???????????????.. 4000.

Tensión????????????..???????????????. 110V.

Potencia nominal de entrada???.?..?? 175W (protegido contra sobrecargas).

Velocidad de giro en vacio?????.???. 5.000 ? 35.000 rpm. Seleccionable.

Abertura de mandril???????? 1/32 a 1/8 de pulgada (ver manual dremel).

Peso ??????????.??????????????..??? 0.66 Kg.

3.4 Configuración de pines en Arduino para GRBL

3.4.1 Características
Marca???????????????????????????Arduino.

Modelo???????????????????..?. Arduino UNO Rev. 3.

Microcontrolador??????????????????..?.. ATmega328P.

Tensión de operación??????????????..????.?? 5V DC.

Tensión fuente de alimentación externa????????.??.. 7 ? 12 V DC.

Pines digitales (I/O)?????????? 14 (6 de ellos configurables a PWM).

Pines de entrada analógicos??????????????????..??. 6.

Memoria flash????. 32 KB (de los cuales 0.5 KB son usados por bootloader).

SRAM????????????????????????.???? 2KB.

EEPROM??????????????????????????? 1KB.

5
Velocidad de cristal??????????????????..??? 16Mhz.

Cantidad máxima de motores?. hasta 3 motores (configuración software GRBL).

Interfase/comunicación??????????????????..??. USB.

Firmware utilizado??????????????????...???. Grbl.hex.

3.4.2 Video Funcionamiento


Error en widget YouTube: Unable to load template wiki 'YouTube'

6
4 GRBL: SOFTWARE DE CONTROL NUMÉRICO
COMPUTARIZADO PARA DIYLILCNC
4.1 Sobre el desarrollo del software
GRBL está bajo la Licencia Pública General GNU y ha sido desarrollado por el programador Simen Svale Skogsrud en
Noruega. La documentación de este software ha sido traducida al español y adaptada al funcionamiento de
DILLILCNC desde la Wiki GRBL del desarrollador.

Las actualizaciones de este programa para cargar en Arduino pueden descargarse desde el repositorio de GRBL.

4.1.1 Definición
GRBL es un controlador de fresadora CNC de alto rendimiento, libre y de código abierto, escrito en C optimizado y
que se ejecuta en un Arduino.

4.1.2 Usuarios
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.

4.1.3 Características amigables


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 X, Y y Z. El intérprete de código G
implementa un subconjunto de la norma rs274/ngc NIST y ha sido testeado con la salida de un número de
Herramientas CAM sin problemas. Movimiento lineal, circular y helicoidal son totalmente compatibles.

G-Codes soportados en v0.7:

1. Movimiento lineal (G0, G1)


2. Movimientos de arco (reloj y contrareloj)(G2, G3)
3. Dwell (retardo o detención temporal en el movimiento de la herramienta) (G4)
4. Selección del plano X-Y, X-Z e Y-Z (sobre centros de maquinado) (G17, G18, G19)
5. Datos de entrada en pulgadas o en milimetros(G20, G21)
6. Volver al home de la máquina (G28, G30) [realizado incorrectamente el ciclo homing]
7. Modos de Distancia (absoluta o incremental) (G90, G91)
8. Modos de feedrate (G93, G94))
9. Coordenadas de offset (G92)
10. Control de giro del cabezal (M3, M4, M5)
11. Otros (G53, G80).

G-Codes soportados en v0.8

1. Sistemas de Coordenadas de trabajo (G54, G55, G56, G57, G58, G59)


2. Seleccionar offset de coordenadas de trabajo (G10 L2, G10 L20)
3. Volver al home de la máquina (G28, G30)
4. Establecer posición home predefinida (G28.1, G30.1)
5. Borrar offsets del sistema de coordenadas (G92.1)
6. Pausa de programa y fin (M0, M2, M30)
7. Control de líquido refrigerante (M8, M9)

La mayoría de las opciones de configuración se pueden establecer en tiempo de ejecución y se guardan en la


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).

4.1.4 Manejo de aceleración


La característica más solicitada que realmente queríamos que tuviera es un amigable y avanzado administrador de
aceleración look-ahead (Acelerador Anticipado, Predictivo). En las primeras versiones, 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.

4.1.5 Limitaciones de diseño


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.

4.1.6 Nuevas características de GRBL V0.8


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.

7
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.

4.2 Cargar firmware de GRBL en Arduino


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 operativo
refiérase a la WIKI del desarrollador del software.

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 asignado al
Arduino. Para determinar el puerto COM de la placa Arduino:

• 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".

Para actualizar un archivo .hex de grbl a un Arduino:

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.

4.3 Conexión de driver de motores paso a paso a Arduino GRBL


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.

4.3.1 Conexión de drivers de motores paso a paso en Arduino

8
4.4 Interfáz gráfica de usuario (GUI) para GRBL
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 cual se está
utilizando en la máquina DIYLILCNC en su versión 1.0.6.

Interfáz gráfica de usuario ?Universal GcodeSender?.

Universal GcodeSender es una interfaz gráfica de usuario con todas las funciones, creado por el desarrollador 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

9
interfaz gráfica refierase a la WIKI del desarrollador.

Ventana de visualización de código g en ?Universal GcodeSender?.

10
5 CONFIGURACION DE HARDWARE DEL DRIVER DE
MOTORES DIYLILCNC
El driver de motores paso a paso diseñado para la fresadora DIYLILCNC trabaja en base a 2 circuitos 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 diseñado para esta máquina:

5.1 Pines de conexión y Jumpers de selección de funcionamiento


El driver de motores paso a paso ha sido diseñado en 2 placas, montadas una sobre otra y separadas por pernos.

Vista de driver conectado a un motor paso a paso

Driver CNC DIY v1.0 conectado a motor paso a paso

Driver CNC DIY v1.2

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 funcionamiento
de este se encuentran en la placa superior

Pines de conexión y Jumpers de configuración de hardware en el driver

11
5.1.1 Pines de conexión
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 de máquinas que requieran de las
funciones adicionales entregadas por el L297.

A continuación se presentará las características de estos pines:

• 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.

5.1.2 Jumpers de selección de funcionamiento


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 hardware se explican a continuación:

• Control

12
Modo de funcionamiento ?Control?. Modo externo y modo interno respectivamente

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 configuración externa (jumper en óvalo verde).

• Home

13
Modo de funcionamiento ?HOME?. Modo externo y modo interno respectivamente

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

14
Modo de funcionamiento ?RESET?. Modo externo y modo interno respectivamente

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 ? rectángulo rojo), pues esta opción
no es utilizada en la máquina.

• HALF/FULL

Modo de funcionamiento ?HALF/FULL?. Modo externo y modo interno respectivamente.

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 esto aumente la resolución de la
máquina.

Si desea conocer como funciona por dentro el driver CNC DIY para DIYLILCNC puede acceder al capítulo
Funcionamiento del driver CNC DIY para motores paso a paso (Marco teórico).

15
6 CONFIGURACIÓN DE GRBL V0.8 PARA FRESADORA
DIYLILCNC
Nota: La siguiente documentación de este software ha sido traducida al español y adaptada al funcionamiento de
DILLILCNC desde la Wiki GRBL del desarrollador. GRBL está bajo la Licencia Pública General GNU y ha sido
desarrollado por el programador Simen Svale Skogsrud en Noruega.

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.

6.1 Comandos de configuración: ?$$?, $X=val, $N y $Nx=line


6.1.1 $$ (Ver la configuración Grbl) y $x = val (Guardar configuración Grbl)
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.

16
Para cambiar, por ejemplo, la opción de pulsos para paso de microsegundos a 10us usted debe escribir lo siguiente,
seguido de enter:

Si todo marcha bien, Grbl responderá con un 'ok', y esta configuración se almacenará en la EEPROM y se conservará
para siempre o hasta que decida cambiarlo. Puede comprobar si Grbl ha recibido y almacenado la configuración
correctamente escribiendo $$ para ver la configuración del sistema nuevamente.

6.1.2 $N (Ver los bloques de inicio) y $Nx=line (Guardar bloque de inicio)


$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.

17
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 funcionara bien. Así que para el ejemplo
anterior, verá:

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 homing, no en el inicio.
IMPORTANTE: Tenga mucho cuidado al almacenar cualquier comandos de 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á) empeorar las cosas rápidamente.

6.1.3 De Grbl $x = val configuración y su significado


• $0, $1 y $2 (pasos/mm de ejes X, Y y Z)

GRBL necesita saber cuán lejos cada paso desplazará la herramienta en la realidad. Para calcular los pasos/mm para
cada eje de su máquina usted necesita saber:

1. Los mm por revolución del tornillo de avance


2. Los pasos completos por revolución de los motores paso a paso (normalmente 200)
3. Los micropasos por paso de su driver (normalmente 1, 2, 4, 8 o 16).

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 funcionamiento más
cómodas. Los pasos/mm entonces se pueden calcular así:

Calcule este valor para cada eje y escriba estos valores en Grbl.

• $3 (Pulsos de paso, microsegundos)

Los drivers de motores paso a paso están clasificados para una determinada longitud de pulsos de paso 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. Generalmente algo entre 5 y 50
microsegundos funciona bien.

• $4 y $5 (Feed Rate y seek Rate por defecto, mm/min)

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.

• $6 (Invertir puertos de entrada de paso por máscara de bits, int: binaria)

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 inversión. Por defecto bits se asignan así:

Por ejemplo, si desea invertir las direcciones de X e Y en esta configuración se debe calcular un valor por bitshifting
así (en su entorno de cálculo favorito):

18
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.)

• $7 (Retardo de ralenti de pasos, ms)

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 motores paso a paso se controlan en lazo abierto) y sigue
adelante.

• $9 (Desviación de uniones, mm)

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.

• $10 (Arco, mm/segmento)

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 lugar a problemas de rendimiento.

• $11 (Corrección de n-ésimo arco, int)

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 hiccup. Sin embargo, los resultados pueden
variar.

• $12 (Decimal n-ésimo, int)

Selecciona cuantos de todos los decimales de los valores de punto flotante entregará Grbl. No es mucho más
complicado que eso.

• $13 (pulgadas reportadas, booleano)

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)

19
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 algo suceda sin tener que pulsar el botón.

• $15 (Habilitación de paso invertido, booleano)

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).

• $16 (Límites de fin de carrera o Hard Limits, booleano)

Los finales de carrera son una medida de seguridad para ayudar a evitar que su máquina viaje demasiado 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 interruptor
de límite de fin de carrera se dispara constantemente después de resetear, un soft-reset 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.

• $17 (Ciclo de Homing, booleano)

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 homing y en qué orden, y mucho más.

• $18 (Invertir dirección de Homing por máscara, int: binario)

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 ejes ahora busquen el pin límite en la dirección
negativa.

20
• $19 (Homing feed, mm/min)

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.

• $20 (Homing seek, mm/min)

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 programa config.h si le molesta. Está ahí para acelerar el
ciclo de homing.)

• $21 (rebote de Homing, ms)

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.

• $22 (Homing pull-off, mm)

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, como en un comando
G1.

6.1.4 Comandos internos de GRBL $G, $# y ?


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 nuevos que vienen.

• $G (Estado del analizador de codigo G de visualización)

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:

[ G0 G54 G17 G21 G90 G94 M0 M5 M9 T0 F500 0,000 ]

• $# (Parámetros de código G de visualización)

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
G28.1/G30.1). La mayoría de estos parámetros se escriben directamente en la memoria EEPROM en cualquier
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

21
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á inmediatamente con
algo como lo siguiente:

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.

6.2 Otros comandos: $C, $X, $H, ~, !, Ctrl-X


6.2.1 $C (El modo de Chequeo de código G)
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
comenzar a moverse desde el punto de reanudación.

6.2.2 $X (Bloqueo de Kill alarm)


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

22
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 restablezca inmediatamente después.

6.2.3 $H (Ejecutar ciclo de homing)


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 husillo no se enganche en cualquier cosa.

6.2.4 ~ (Inicio del ciclo o Cycle Start)


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".

6.2.5 ! (Feed Hold)


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.

6.2.6 Ctrl-x (Reseteo de Grbl)


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 siempre comienza fresco y coherente, y la máquina hace lo que usted
espera.

6.3 Configuración de GRBL para la máquina DIYLILCNC


A continuación se explicará y justificará la configuración realizada en el software GRBL a partir de los comandos de
configuración para trabajar y calibrar la máquina DIYLILCNC. En nuestro caso no es necesario modificar todos los
comandos mencionados en las secciones anteriores.

6.3.1 Pasos por milímetro para ejes X, Y y Z


En DIYLILCNC los ejes X e Y la transmisión del movimiento se realiza en base a correas de distribución("timing belt"
en inglés) y la transmisión de movimiento en el eje Z se realiza en base a varillas roscadas (threaded rods),
comúnmente llamados "hilo".

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 en el eje X, el diámetro
efectivo del engrane es de 12.3 mm.

23
De esta información, podemos obtener el perímetro efectivo recorrido por la correa en una revolución o la cantidad de
mm por revolución:

(Nota: otra forma de calcular el perímetro consiste en calcular el paso de un diente de la correa de distribución y
multiplicarlo por el número de dientes de la polea)

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 avanzar 1 mm en el eje Y
es:

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.

Para la polea del eje Y, el diámetro efectivo de la polea es de 16mm.

De esta información, podemos obtener el perímetro efectivo recorrido por la correa en una revolución o la cantidad de
mm por revolución:

(Nota: otra forma de calcular el perímetro consiste en calcular el paso de un diente de la correa de distribución y
multiplicarlo por el número de dientes de la polea)

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 avanzar 1 mm en el eje Y
es:

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:

24
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 hasta lograr un fresado
correcto.

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 avanzar 1 mm en el eje Z
es:

Existe otro método sencillo y razonable para calcular el número de pasos por mm para los 3 ejes y consiste en usar
una simple regla de 3.

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 valor
calculado por regla de 3 resultan ser similares.

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:

6.3.2 Feed Rate y Seek Rate


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 bruscos en el
desplazamiento de los ejes.

6.3.3 Auto Start


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. Por lo tanto, se mantiene la
configuración por defecto

En el futuro se incorporará un botón de partida.

6.3.4 Orden de Enable invertida para Drivers de motores paso a paso


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:

25
6.3.5 Límites críticos o Hard Limits
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 esta
opción se debe escribir el siguiente comando:

26
7 Conexión de Hardware en DIYLILCNC
7.1 Elección de motor de fresado
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 básicas de
trabajo casero, reparación, decoración o artesanía.

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 como
motor de fresado.

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.

7.2 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 suficiente en capacidad de corriente.

Error al crear miniatura: Falta archivo


El esquema de conexión y la indicación de cada elemento en el circuito eléctrico se muestran el la siguiente imagen:

27
Error al crear miniatura: Falta archivo
7.3 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:

• Entregan la corriente necesaria para cada motor


• Generan la secuencia de conmutación de las bobinas en los motores para generar el movimiento de cada
uno.

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ítulo
Funcionamiento del driver CNC DIY para motores paso a paso (Marco teórico).

28
8 Construcción de driver para motores paso a paso
Este driver de motores paso a paso ha sido diseñado en base a 2 circuitos integrados complementarios llamados L297
(Controlador de puente H) y L298N (Puente H doble). Las características principales de este driver son:

• Permite manejar motores paso a paso unipolares y bipolares de hasta 4 Amperes.


• Permite ajustar el valor de corriente en los motores para ajustarse a motores de distinto tamaño y además
controlar su torque, de acuerdo a las exigencias y prestaciones sujetas al funcionamiento del motor.
• Permite configuración de paso completo y de medio paso, por lo que entrega al motor paso a paso la
capacidad de trabajar a 200 pasos por cada giro o a 400 pasos por cada giro.
• A pesar de existir en el extranjero drivers comerciales mas pequeños, como parte de esta investigación se
ha decidido desarrollar un driver de motores paso a paso cuyos componentes puedan ser encontrados en
Chile.

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 siguiente
galería de fotos.

Si desea observar las fotografías en mayor detalle y fluidez vaya a la galería fotográfica siguiente elaboradas en Flickr.

Driver Stepper 4A CNC DIY para DIYLILCNC

8.1 Placa de control puente H (L297)


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

29
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:

La distribución de los componentes presentes en el circuito en la placa se presentan en la siguiente imagen:

Componentes:

• JP1:HEADER PCB 4P 90º 0.1" (Victronics)


• HOUSING 4t 0.1" CABLE (Victronics)
• JP2, JP3, JP5: HEADER PCB 2P 90º 0.1" (Victronics).
• HOUSING 2t 0.1" CABLE (Victronics)
• JP4:HEADER PCB 3P 90º 0.1" (Victronics).
• HOUSING 3t 0.1" CABLE (Victronics)
• JP19: HEADER PCB 6P 0.1" RECTO (Victronics)
• HOUSING 6t 0.1" CABLE (Victronics)
• JP20: HEADER PCB 2P 0.1" RECTO (Victronics)
• HOUSING 2t 0.1" CABLE (Victronics)
• Terminal para Header PCB 0.1" (Victronics)
• JP6, JP7, JP8, JP9, JP11, JP12, JP14, JP15, JP16, JP17, JP21: Pinheader macho 2 pin (Victronics)
• JP10, JP13, JP18: Pinheader macho 3 pin. (Victronics)
• JUMPER 2 VIAS (Victronics)

30
• LED1 y LED2: LED 5MM ROJO DIFUSO (Victronics)
• C1,C2: Condensador electrolítico 47uF 25V (Victronics)
• C3,C5: Condensador cerámico 100nF. (104)(Victronics)
• C4: Condensado cerámico 3.3 nF. (332) (Victronics)
• C6,C7: Condensador cerámico 1 nF. (102) (Victronics)
• R1, R4: Resistencia 1k ohm 1/4W (cafe negro rojo) (Victronics) (Global)
• R2: Resistencia 22k ohm 1/4W (rojo rojo naranjo) (Victronics) (Global)
• R3: Resistencia 100k ohm 1/4W (cafe negro amarillo) (Victronics) (Global)
• R5,R6: Resistencia 4.7k ohm 1/4W (Amarillo morado rojo) (Victronics) (Global)
• R7: POT 25 VUELTAS 10K OHM 3296W (Victronics)
• D1: Diodo rectificador 1N4007 1A (Victronics)
• IC1: Circuito Integrado L297 (encapsulado DIP20) (CM2)
• Zócalo para L297 (Encapsulado DIP20) (Victronics)
• IC2: REG. VOLT L7805CV 5V/1,5A (Victronics)

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 plantilla
monocromática a utilizar:

8.1.1 Placa de puente H doble (L298N)


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 la hoja de datos entregada por el
fabricante.

El esquema circuital presente en esta placa se muestra a continuación:

31
La distribución de los componentes presentes en el circuito en la placa se presentan en la siguiente imagen:

Componentes:

• X1, X3: HEADER 2T 90º PCB 3.96mm (Victronics).


• HOUSING 2T PASO 3.96mm P/CABLE (Victronics)
• X2, X4: HEADER 3T paso 3.96mm (Victronics)
• HOUSING 3T PASO 3.96mm P/CABLE (Victronics)
• Terminal para HEADER 2T (Victronics)
• JP1,JP3: HEADER PCB 2P 0.1" RECTO (Victronics).
• HOUSING 2t 0.1" CABLE (Victronics).
• JP2,JP4: HEADER PCB 4P 0.1" RECTO (Victronics).
• HOUSING 4t 0.1" CABLE (Victronics).
• Terminal para Header PCB 0.1" (Victronics).
• D1 a D8: Diodo Shottky1N5822 40V 3A (Victronics)
• U1, U2: Circuito Integrado L298N. (Encapsulado Multiwatt15 vertical) (CM2)
• C1, C3: Condensador electrolítico 470uF 50V. (Victronics) (Global)
• C2, C4: Condensador cerámico 100nF. (Victronics) (Global)
• R1, R2: Resistencia cerámica 0.5 ohm 5W. (CM2)
• 2 discipadores de aluminio para L298N.
• JUEGO DE PERNOS PARA TO-3 (L298 a discipador) (Victronics)

32
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 plantilla
monocromática a utilizar:

8.1.2 Fotoherramientas en PDF


para la impresión de las fotoherramientas acceda al siguiente vínculo, en el cual podrá descargarlas en formato PDF.
Recuerde imprimir la transparencia en tamaño 100% (sin ajuste a escala) en impresión offset.

?Archivo:Fotoherramientas Driver DIY CNC v1.3.PDF

8.1.3 Fabricación de placas


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.

Para comenzar, se requiere de los siguientes materiales:

Insumos para fabricación de placas, interconexiones y estructura:

• 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

33

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 todos los residuos de
la placa.

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.

34
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 la laca
pierde sus propiedades de fotosensibilidad al sobrecalentarse.

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, permitiendo el paso de la luz ultravioleta por la parte
oscura de la fotoherramienta.

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 luz ambas fotoherramientas
con la parte frontal hacia abajo.

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.

• Error al crear miniatura: Falta archivo


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

35
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 para ayudar al proceso.

Comenzará a observarse que cada placa comenzará a soltar pintura y la imagen de nuestro circuito se revelará como
una fotografía.

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 solución de
soda cáustica.

36

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 todo el cobre no pintado.

37

Finalmente quedará listo el diseño del circuito en cobre para cada placa. luego de esto se lavan con abundante agua y
jabón para retirar la solución de las placas.

Si desea observar las fotografías en mayor detalle y fluidez de visualización vaya a las siguientes galerías fotográficas
elaboradas en Flickr.

Químicos fabricación de placas PCB Driver CNC

Pulido y lavado placas PCB para Driver CNC

Secado placas PCB Driver CNC

Fotoherramientas e insolación placas PCB Driver CNC

Revelado de serigrafía placas PCB Driver CNC

Reparación serigrafía placas PCB Driver CNC

Quemado con ácido placas PCB Driver CNC

8.1.4 Perforación de las placas


Las perforaciones para los componentes de este circuito se han realizado con distintas medidas de broca. Se sugiere
las siguientes medidas:

• resistencias, condensadores y puentes pequeños: 0.7 mm


• Diodos LED y pines zócalo L297: 0.8 mm.
• Pinheaders, conectores header 0.1", diodo rectificador y pines L298: 0.9 mm.
• Conectores header 3.96 mm: 1 mm
• Diodos Shottky y puentes grandes: 1.2 mm.
• Agujeros de soporte: 3 mm.

• Error al crear miniatura: Falta archivo


• Error al crear miniatura: Falta archivo
• Error al crear miniatura: Falta archivo
• Error al crear miniatura: Falta archivo
• Error al crear miniatura: Falta archivo

Si desea observar las fotografías en mayor detalle y fluidez de visualización vaya a la siguiente galería fotográfica
elaborada en Flickr.

Perforado de placas PCB Driver CNC

8.1.5 Corte y lijado de placas


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.

38

Si desea observar las fotografías en mayor detalle y fluidez de visualización vaya a la galería fotográfica siguiente
elaborada en Flickr.

Cortado y lijado placas PCB Driver CNC

8.1.6 Soldado de placas


Material adicional

• Pasta discipadora (Casa Royal)

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 toda la pintura. El
cobre de la placa debe quedar brillante.

39

Se procede a soldar cada uno de los componentes. Se muestran a continuación fotografías de dicho proceso:

PLACA L297

40

PLACA L298

41

42

Si desea observar las fotografías en mayor detalle y fluidez de visualización vaya a las siguientes galerías fotograficas
elaboradas en Flickr.

Limpieza de laca fotosensible Placas PCB Driver CNC

Componentes electrónicos placa PCB L297 y placa PCB L298 Driver CNC

Soldaje placa PCB L297 Driver CNC

Soldaje placa PCB L298 Driver CNC

8.1.7 Sellado de la superficie de cobre en las placas


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.

43

Si desea observar las fotografías en mayor detalle y fluidez de visualización vaya a la siguiente galería fotográfica
elaborada en Flickr.

Protección de placas PCB con laca Driver CNC

8.1.8 Conexión entre placas


Cada placa se interconecta a partir de cables con enchufes.

Materiales adicionales

• Cable AWG 24 (Varios colores) (Victronics)

La conexiones entre placas y confección de enchufes se detallan a continuación en la siguiente galería fotográfica.

44

45

46

Si desea observar las fotografías en mayor detalle y fluidez de visualización vaya a la siguiente galería fotográfica
elaborada en Flickr.

Conexión de cables entre placas PCB Driver CNC

8.1.9 Separación estructural de placas


La estructura de unión de ambas placas consiste en 4 pernos largos con 3 tuercas cada uno. Esto permitirá la unión
de ambas placas y a su vez una separación entre las mismas.

Materiales adicionales

• Pernos 1/8X3 Pulgadas con 3 tuercas y 4 golillas planas c/u (4 unidades)(Ferretería)

La instalación de los pernos para crear la estructura del driver se detalla en la siguiente galería de fotos.

47

48

Si desea observar las fotografías en mayor detalle y fluidez de visualización vaya a la siguiente galería fotográfica
elaborada en Flickr.

Colocación de pernos estructura placas PCB Driver CNC

8.1.10 Conexión del driver para su funcionamiento


Una sugerencia de conexión del driver para probar su funcionamiento se puede visualizar en la siguiente secuencia
fotográfica.

• Error al crear miniatura: Falta archivo


• Error al crear miniatura: Falta archivo
• Error al crear miniatura: Falta archivo
• Error al crear miniatura: Falta archivo
• Error al crear miniatura: Falta archivo
• Error al crear miniatura: Falta archivo
• Error al crear miniatura: Falta archivo

49

50

Si desea observar las fotografías en mayor detalle y fluidez de visualización vaya a la siguiente galería fotográfica
elaborada en Flickr.

Cableado externo Driver CNC

8.1.11 Galería de imágenes (completa)

Si desea observar todas las fotografías de la fabricación de este driver DIY en mayor detalle y fluidez de visualización
vaya a la siguiente galería fotográfica elaborada en Flickr.

Fabricación de driver CNC para motores paso a paso (Completo)

51
9 Introducción al control numérico computarizado (CNC)

Caso de Estudio
Nombre Juan José Peters
Autor Juan José Peters
Noviembre
«Noviembre» no es un número.
Período -Diciembre
«Diciembre» no es un número.
Palabras CNC, Electrónica, Juan José Peters, Código G, GRBL, DIYLILCNC, Drivers, Arduino, cnt, MadLab
Clave
Relacionado Desarrollo Electrónica DIYLILCNC, CNC_DIY, Funcionamiento del driver CNC DIY para motores
paso a paso (Marco teórico)
Estudiado por Juan José Peters

52
10 Artículos Previos
10.1 Desarrollados por el MADLAB
1. Proyecto DIYLILCNC
2. Proyecto RepRap
3. CNC_DIY

53
11 Introducción al Control Numérico Computarizado
11.1 Antecedentes históricos
El CNC tuvo su origen a principio de los años 50 en el Instituto Tecnológico de Massachusets (MIT), en donde se
automatizó por primera vez una gran fresadora.

En esta época, las computadoras estaban en sus inicios y eran tan grandes que el espacio ocupado por la
computadora era mayor que el de la máquina.

Hoy día las computadoras son cada vez mas pequeñas y económicas, con lo que el uso del CNC se ha extendido a
todo tipo de maquinaria: Tornos, rectificadoras, electroerosionadoras, máquinas de coser, etc.

CNC Significa "Control Numérico Computarizado". En una máquina CNC, a diferencia de una máquina convencional o
manual, una computadora controla la posición y velocidad de los motores que accionan los ejes de la máquina.
Gracias a esto puede hacer movimientos que no se pueden lograr manualmente como círculos, lineas diagonales y
figuras complejas tridimensionales.

Las máquinas CNC son capaces de mover la herramienta al mismo tiempo en los 3 ejes para ejecutar trayectorias
tridimensionales como las que se requieren para el maquinado de moldes y troquueles, como se muestra en la
siguiente imagen.

En una máquina CNC una computadora controla el movimiento de la mesa, el carro y el husillo. Una vez programada
la máquina esta ejecuta todas las operaciones por sí sola, sin necesidad de que el operador esté manejándola. En el
caso de una industria o un taller, esto permite aprovechar mejor el tiempo del personal para que sea mas productivo.

El término "Control Numérico" se debe a que las órdenes dadas a la máquina son indicadas mediante códigos
numéricos. Por ejemplo, para indicarle a la máquina que mueva la herramienta describiendo un cuadrado de 10 mm
por lado se le darían los siguientes códigos:

54
Un conjunto de órdenes que siguen una secuencia lógica constituyen un programa de maquinado. Dándole las
órdenes o instrucciones adecuadas a la máquina, esta es capaz de maquinar una simple ranura, una cavidad
irregular, la cara de una persona en autorrelieve o bajorrelieve, un grabado artístico, un molde de inyección de una
cuchara o el de una botella... lo que se quiera.

Al principio hacer un maquinado era muy dificil y tedioso, pues había que planear e indicarle manualmente a la
máquina cada uno de los movimientos que tenía que hacer. Era un proceso que podía durar horas, días o semanas.
Aún así, era un ahorro de tiempo comparado con los métodos convencionales.

Actualmente, muchas de las máquinas modernas trabajan con lo que se conoce como "lenguaje conversacional" en el
que el programador escoje la operación que desea y la máquina le pregunta los datos que se requieren. Cada
instrucción de este lenguaje conversacional puede representar decenas de códigos numéricos. Por ejemplo, el
maquinado de una cavidad completa se puede hacer con una sola instrucción que especifica el largo, alto,
profundidad, posición, radios de las esquinas, etc. Algunos controles incluso cuentan con graficación en pantaya y
funciones de ayuda geométrica. Todo esto hace la programación mucho mas rápida y sencilla.

También se emplean sistemas CAD/CAM que generan el programa de maquinado de forma automática.

Para la realización de un programa de maquinado se pueden utilizar dos métodos:

• Programación Manual: En este caso, el programa pieza se escribe únicamente por medio de
razonamientos y cálculos que realiza un operario.

• Programación Automática: En este caso, los cálculos los realiza un computador, que suministra en su
salida el programa de la pieza en lenguaje máquina. Por esta razón recibe el nombre de programación
asistida por computador. De este método hablaremos más adelante.

11.1.1 Programación Manual


El lenguaje máquina comprende todo el conjunto de datos que el control necesita para la mecanización de la pieza. Al
conjunto de informaciones que corresponde a una misma fase del mecanizado se le denomina bloque o secuencia,
que se numeran para facilitar su búsqueda. Este conjunto de informaciones es interpretado por el intérprete de
órdenes. El programa de mecanizado contiene todas las instrucciones necesarias para el proceso de mecanizado.

55
Una secuencia o bloque de programa debe contener todas las funciones geométricas, funciones máquina y funciones
tecnológicas del mecanizado, de tal modo, un bloque de programa consta de varias instrucciones. El comienzo del
control numérico ha estado caracterizado por un desarrollo anárquico de los códigos de programación. Cada
constructor utilizaba el suyo particular. Posteriormente, se vio la necesidad de normalizar los códigos de programación
como condición indispensable para que un mismo programa pudiera servir para diversas máquinas con tal de que
fuesen del mismo tipo.

Los caracteres más usados comúnmente, regidos bajo la norma DIN 66024 y 66025 son, entre otros, los siguientes:

N es la dirección correspondiente al número de bloque o secuencia. Esta dirección va seguida normalmente de un


número de tres o cuatro cifras. En el caso del formato N03, el número máximo de bloques que pueden programarse es
1000 (N000 a N999).

X, Y, Z son las direcciones correspondientes a las cotas según los ejes X, Y, Z de la máquina herramienta. Dichas
cotas se pueden programar en forma absoluta o relativa, es decir, con respecto al cero pieza o con respecto a la
última cota respectivamente.

G es la dirección correspondiente a las funciones preparatorias. Se utilizan para informar al control de las
características de las funciones de mecanizado, como por ejemplo, forma de la trayectoria, tipo de corrección de
herramienta, parada temporizada, ciclos automáticos, programación absoluta y relativa, etc. La función G va seguida
de un número de dos cifras que permite programar hasta 100 funciones preparatorias diferentes.

Ejemplos:

G00: El trayecto programado se realiza a la máxima velocidad posible, es decir, a la velocidad de desplazamiento en
rápido.

G01: Los ejes se gobiernan de tal forma que la herramienta se mueve a lo largo de una línea recta.

G02: Interpolación lineal en sentido horario.

G03: Interpolación lineal en sentido antihorario.

G33: Indica ciclo automático de roscado.

G77: Es un ciclo automático que permite programar con un único bloque el torneado de un cilindro, etc.

M es la dirección correspondiente a las funciones auxiliares o complementarias.

Se usan para indicar a la máquina herramienta que se deben realizar operaciones tales como: parada programada,
rotación del husillo a derechas o a izquierdas, cambio de útil, etc. La dirección m va seguida de un número de dos
cifras que permite programar hasta 100 funciones auxiliares diferentes.

Ejemplos:

M00: Provoca una parada incondicional del programa, detiene el husillo y la refrigeración.

M02: Indica el fin del programa. Se debe escribir en el último bloque del programa y posibilita la parada del control una
vez ejecutadas el resto de las operaciones contenidas en el mismo bloque.

M03: Permite programar la rotación del husillo en sentido horario.

M04: Permite programar la rotación del husillo en sentido antihorario, etc.

F es la dirección correspondiente a la velocidad de avance. Va seguida de un número de cuatro cifras que indica la
velocidad de avance en mm/min.

S es la dirección correspondiente a la velocidad de rotación del husillo principal. Se programa directamente en


revoluciones por minuto, usando cuatro dígitos.

I, J, K son direcciones utilizadas para programar arcos de circunferencia. Cuando la interpolación se realiza en el
plano X-Y, se utilizan las direcciones I y J. Análogamente, en el plano X-Z, se utilizan las direcciones I y K, y en el
plano Y-Z, las direcciones J y K.

T es la dirección correspondiente al número de herramienta. Va seguido de un número de cuatro cifras en el cual los
dos primeros indican el número de herramienta y los dos últimos el número de corrección de las mismas.

11.2 LOS BLOCKS (Bloque de instrucciones) en Control Numérico


11.2.1 Estructura de Bloque
Es el modo de dar ordenes a la maquina para que se los ejecute. Esto tiene ciertas características que se debe
cumplir. La maquina ejecuta las ordenes (operaciones) de acuerdo a los datos entregados por dicha operación, por lo
que cada orden tiene una estructura definida. A cada orden se le denomina block o bloque de programa.

De manera general cada bloque tiene la siguiente estructura:

a) Numero de bloque (número de linea de programa)

b) Código de orden de configuración (función de maquinado)

c) Parámetros de la función de maquinado (Coordenadas X, Y, Z y parámetros complementarios)

d) Comentarios

11.2.2 Formato de Bloque


El modo básico de comunicarse con la maquina herramienta es a través de los elementos que forman la estructura de
un bloque de instrucciones, en donde cada uno de los caracteres alfanuméricos tienen un significado y una
representación propia.

56
11.2.3 Comandos G (funciónes de desplazamiento de la fresa)
Los comandos G son las órdenes mas utilizadas. Son las órdenes de movimientos de las herramientas. Son las
funciones básicas del lenguaje de programación G y las que determinarán las coordenadas y la forma final de la pieza
mecanizada.

Ejemplo:

G2: Arco de circunferencia

Datos requeridos:

• Coordenada de punto final


• Radio de la curva

G2 X100 Y100 I100 F1000

57
12 Funcionamiento de DIYLILCNC como máquina CNC (Marco
teórico)
La siguiente presentación reúne los conceptos principales para comprender el funcionamiento de la máquina
fresadora CNC DIYLILCNC, prototipo desarrollado para fines de investigación y diseño de piezas. Esto es el
preámbulo para comprender el funcionamiento de esta máquina herramienta.

El proceso para transformar un modelo virtual de 2 o 3 dimensiones en una pieza de maquinado final pasa por seis
etapas, las cuales son realizadas de forma individual o en etapas agrupadas, dependiendo de cada fabricante o
diseñador de máquinas CNC, tanto en hardware como en software. Estas etapas son:

• Diseño asistido por computadora (CAD)


• Manufactura asistida por computadora (CAM)
• Envío de codigo G hacia la máquina (Sender)
• Controlador CNC
• Drivers de motores paso a paso (Stepper Driver)
• Movimiento de ejes (Motores paso a paso)

Las 3 primeras etapas se ejecutan en la computadora y las siguientes 3 etapas son parte de la máquina CNC.

Se detallará a continuación cada una de estas etapas.

12.1 Sistemas CAD, CAM y código G


En el sistema CAD (Diseño asistido por computadora) la pieza que se desea maquinar se diseña en la computadora
con herramientas de dibujo y modelado sólido. Para la fabricación sustractiva de 3D o archivos de diseño en 2D, por lo
general se utiliza la extensión de archivos CAD DXF. DXF (acrónimo del inglés Drawing Exchange Format) es un
formato de archivo informático para dibujos de diseño asistido por computadora, creado fundamentalmente para
posibilitar la interoperabilidad entre los archivos .DWG, usados por el programa AutoCAD, y el resto de programas del
mercado.

Para fabricación aditiva se utiliza principalmente la extensión STL. STL (siglas provinientes del inglés "'STereo
Lithography'"') es un formato de archivo informático de diseño asistido por computadora (CAD) que define geometría
de objetos 3D, excluyendo información como color, texturas o propiedades físicas que sí incluyen otros formatos CAD.
Fue creado por la empresa 3D Systems, concebido para su uso en la industria del prototipado rápido y sistemas de
fabricación asistida por ordenador. En especial desde los años 2011-2012 con la aparición en el mercado de
impresoras 3D de extrusión de plástico termofusible (personales y asequibles), el formato STL está siendo utilizado
ampliamente por el software de control de estas máquinas.

Posteriormente el sistema CAM (manufactura asistida por computadora) toma la información del diseño y genera la
ruta de corte que tiene que seguir la herramienta para fabricar la pieza deseada. A partir de esta ruta de corte se crea
automáticamente el programa de maquinado, el cual puede ser introducido a la máquina mediante un dispositivo de
almacentamiento (Pendrive, CD, etc) o enviado directamente desde una computadora.

Hoy día los equipos CNC con la ayuda de los lenguajes conversacionales y los sistemas CAD/CAM permiten a los
usuarios producir piezas con mucha mayor rapidez y calidad, sin necesidad de tener una alta especialización.

El código G es un formato de texto que se puede escribir con la mano o generada por un script. Aplicaciones de CAM
se utilizan generalmente para generar el código G. Se utiliza principalmente las extensiones de archivo .tap y .nc,
aunque existen decenas de otras extensiones que cumplen la misma función. Finalmente, todas son extensiones de
texto tipo .txt.

Se puede utilizar cualquier editor de texto para hacer o editar el archivo (es decir, el bloc de notas, Wordpad), pues
son archivos de texto.

58
12.2 Sender
Un software Sender tiene como misión principal enviar la información de código G a través de un protocolo de
comunicación desde la computadora hacia la máquina. Este no es el único método, ya que muchas máquinas CNC
permiten cargar los datos de maquinado desde dispositivos de almacenamiento como pendrives o tarjetas SD
(antiguamente desde tarjetas perforadas y diskettes). En la actualidad, se utiliza comunicación por puerto paralelo o
puerto serial. Sin embargo, debido a que este tipo de puertos se encuentra obsoleto para las distintas marcas de
computadoras se está emigrando todo el desarrollo CNC a comunicación por puerto USB. El software sender también
controla el flujo de datos enviados funcionando como "Buffer", de modo que si una máquina CNC acumula muchas
instrucciones o queda vacía de datos, puede comunicarse con el programa sender para detener el envío de datos o
para solicitar mas.

Los Software sender han ido evolucionando en el tiempo, y en la actualidad ofrecen importantes características entre
las cuales están:

• Permiten una interacción entre los distintos recursos y características a través de interfaz gráfica de
usuario (GUI).
• permiten ejecutar movimientos en la máquina de forma manual (código G desde teclado) o automática a
través de la carga de un script (programa de mecanizado).
• Permiten la visualización del objeto virtual y de la trayectoria que seguirá la herramienta en su recorrido.

Para DIYLILCNC se ha utilizado como interfáz Sender el Software Universal GcodeSender, el cual es una interfaz
gráfica de usuario con todas las funciones requeridas en la gestión de código G y recomendada para su uso por el
desarrollador del firmware controlador CNC usado también en esta máquina.

12.3 Controlador CNC


Un controlador CNC que permite la calibración, configuración y el control de fresadoras CNC. Es el encargado de
procesar cada linea de proceso de un programa de maquinado (Programa en codigo G) para que la máquina
herramienta ejecute los movimientos necesarios para realizar una rutina de fresado.

GRBL es un firmware libre y de código abierto utilizado en DIYLILCNC. Este programa ha sido diseñado para ser
cargado en plataformas de desarrollo Arduino.

En DIYLILCNC el controlador Grbl recibe secuencias de código de maquinado desde una interfaz sender por USB
(que es un puerto de serie) y utiliza esta comunicación serial para controlar el flujo de código, es decir, cuando el
GRBL envía una señal de "estoy lleno" detiene la transmisión hasta que GRBL pide más datos.

59
Un software CNC Controler ejecuta cuatro unidades principales de procesamiento de control numérico:

• Unidad de entrada y salida de datos.


• Unidad de memoria interna e interpretación de órdenes.
• Unidad de cálculo.
• Unidad de enlace con la máquina herramienta.

12.3.1 UNIDAD DE ENTRADA ? SALIDA DE DATOS


La unidad entrada de datos sirve para introducir los programas de mecanizado en el equipo de control numérico,
utilizando un lenguaje inteligible para éste. En los sistemas antiguos se utilizaron para la introducción de datos
sistemas tipo ficha (Data Modul) o preselectores (conmutadores rotativos codificados); los grandes inconvenientes que
presentaron estos métodos, sobre todo en programas extensos, provocó su total eliminación. Posteriormente se
utilizaba para dicho propósito la cinta perforada (de papel, milar o aluminio), por lo que el lector de cinta se constituía
en el órgano principal de entrada de datos. Esta cinta era previamente perforada utilizando un perforador de cinta o un
teletipo. El número de agujeros máximo por cada carácter era de ocho (cinta de ocho canales). Además de estos
agujeros, existía otro de menor tamaño, ubicado entre los canales 3 y 4 que permitía el arrastre de la cinta.

60
Los primeros lectores de cinta fueron electromecánicos; los cuales utilizaban un sistema de agujas palpadoras que
determinaban la existencia de agujeros o no en cada canal de la cinta, luego esto actuaba sobre un conmutador cuyos
contactos se abren o cierran dependiendo de la existencia o no de dichos agujeros. Luego se utilizaron lectores de
cinta fotoeléctricos, los cuales permitían una velocidad de lectura de cinta muy superior. Los mismos constaban de
células fotoeléctricas, fotodiodos o fototransistores como elementos sensores. Estos elementos sensibles a la luz,
ubicados bajo cada canal de la cinta (incluso bajo el canal de arrastre). Una fuente luminosa se colocaba sobre la
cinta, de tal forma que cada sensor producía una señal indicando la presencia de un agujero que sería amplificada y
suministrada al equipo de control como datos de entrada. Otro medio que se utilizaba para la entrada de datos era el
cassette, robusto y pequeño, era más fácil de utilizar, guardar y transportar que la cinta, siendo óptima su utilización
en medios hostiles. Su capacidad variaba entra 1 y 5 Mb. Luego comenzó a utilizarse el diskette. Su característica
más importante era la de tener acceso aleatorio, lo cual permitía acceder a cualquier parte del disco en menos de
medio segundo. La velocidad de transferencia de datos variaba entre 250 y 500 Kb / s. Con la aparición del teclado
como órgano de entrada de datos, se solucionó el problema de la modificación del programa, que no podía realizarse
con la cinta perforada, además de una rápida edición de programas y una cómoda inserción y borrado de bloques,
búsqueda de una dirección en memoria, etc.

12.3.2 UNIDAD DE MEMORIA INTERNA E INTERPRETACIÓN DE ÓRDENES


Tanto en los equipos de programación manual como en los de programación mixta (cinta perforada o cassette y
teclado), la unidad de memoria interna almacenaba no sólo el programa sino también los datos máquina y las
compensaciones (aceleración y desaceleración, compensaciones y correcciones de la herramienta, etc.). Son los
llamdos datos de puesta en operación. En las máquinas que poseían sólo cinta perforada como entrada de datos, se
utilizaba memorias buffer. Luego, con el surgimiento del teclado y la necesidad de ampliar significativamente la
memoria (debido a que se debía almacenar en la misma un programa completo de mecanizado) se comenzaron a
utilizar memorias no volátiles (su información permanece almacenada aunque desaparezca la fuente de potencia del
circuito, por ejemplo en el caso de un fallo en la red) de acceso aleatorio (denominadas RAM) del tipo CMOS.

Además poseían una batería denominada tampón, generalmente de níquel ? cadmio, que cumplían la función de
guardar durante algunos días (al menos tres) todos los datos máquina en caso de fallo en la red. Una vez almacenado
el programa en memoria, inicia su lectura para su posterior ejecución. Los bloques se van leyendo secuencialmente.
En ellos se encuentra toda la información necesaria para la ejecución de una operación de mecanizado.

61
12.3.3 UNIDAD DE CÁLCULO
Una vez interpretado un bloque de información, esta unidad se encarga de crear el conjunto de órdenes que serán
utilizadas para gobernar la máquina herramienta. Como ya se dijo, este bloque de información suministra la
información necesaria para la ejecución de una operación de mecanizado. Por lo tanto, una vez el programa en
memoria, se inicia su ejecución. El control lee un número de bloques necesario para la realización de un ciclo de
trabajo. Estos bloques del programa son interpretados por el control, que identifica: la nueva cota a alcanzar (x, y, z
del nuevo punto en el caso de un equipo de tres ejes), velocidad de avance con la que se realizará el trayecto, forma a
realizar el trayecto, otras informaciones como compensación de herramientas, cambio de útil, rotación o no del mismo,
sentido, refrigeración, etc.). La unidad de cálculo, de acuerdo con la nueva cota a alcanzar, calcula el camino a
recorrer según los diversos ejes.

12.3.4 Unidad de enlace con la máquina herramienta y servomecanismos.


La función principal de un control numérico es gobernar los motores (servomotores) de una máquina herramienta, los
cuales provocan un desplazamiento relativo entre el útil y la pieza situada sobre la mesa. Si consideramos un
desplazamiento en el plano, será necesario accionar dos motores, en el espacio, tres motores, y así sucesivamente.
En el caso de un control numérico punto a punto y paraxial, las órdenes suministradas a cada uno de los motores no
tienen ninguna relación entre sí; en cambio en un control numérico de contorneo, las órdenes deberán estar
relacionadas según una ley bien definida. Para el control de los motores de la máquina herramienta se pueden utilizar
dos tipos de servomecanismos, a lazo abierto y a lazo cerrado. En los de lazo abierto, las órdenes a los motores se
envían a partir de la información suministrada por la unidad de cálculo, y el servomecanismo no recibe ninguna
información ni de la posición real de la herramienta ni de su velocidad. No así en un sistema de lazo cerrado, donde
las órdenes suministradas a los motores dependen a la vez de las informaciones enviadas por la unidad de cálculo y
de las informaciones suministradas por un sistema de medidas de la posición real por medio de un captador de
posición (generalmente un encoder), y uno de medida de la velocidad real (tacómetro), montados ambos sobre la
máquina.

Para el caso de DIYLILCNC su funcionamiento es en lazo abierto, por lo que una perdida de pasos en el movimiento
de los motores implica perder los parámetros de referencia en el proceso de maquinado. GRBL posee algunos
elementos en su programación para reducir esta posibilidad, como la desaceleración del movimiento de los ejes para
el frenado o cambios en la dirección de desplazamiento de la herramienta de fresado.

12.3.5 Drivers para control de motores paso a paso


La palabra Driver puede tener muchos significados (en software, la palabra driver se asocia a un "controlador de
dispositivos"). Aquí tenemos que limitar nuestra definición a cualquier equipo electrónico inteligente que proporcione
un control ajustable de la velocidad para un motor. El driver para un motor paso a paso corresponde a un circuito
electrónico, el cual tiene la característica de conmutar cada una de las bobinas del Stepper y a su vez, generar la
secuencia en que debe alimentarse cada bobina para generar un paso. Junto con ello, permite invertir el giro del motor
invirtiendo la secuencia en que las bobinas son conmutadas.

12.3.6 motores paso a paso


Los motores paso a paso permiten realizar el desplazamiento de cada uno de los ejes de la máquina sin manipulación
humana directa. Proporcionan movimiento mecánico según la secuencia de energización entregada por su
correspondiente driver. Los motores normalmente usados tipo stepper son los motores unipolares, bipolares e
híbridos.

DIYLILCNC utiliza motores paso a paso bipolares para sus 3 ejes en formato NEMA 23 de 3A de intensidad de
corriente nominal, lo cual le permite ejercer un torque nominal de 1.8 N-m. Posee 200 pasos por giro, por lo que
permite posiciones angulares de 1.8° de separación.

62
63

Potrebbero piacerti anche