Desarrollo Electrónica DIYLILCNC

De Casiopea





Caso de Estudio
NombreViviana Acevedo
AutorJuan José Peters
PeríodoMarzo
«Marzo» no es un número.
-Diciembre
«Diciembre» no es un número.
Palabras ClaveElectrónica, Juan José Peters, Código G, GRBL, DIYLILCNC, Drivers, Arduino, cnt, MadLab
RelacionadoCNC_DIY, Introducción al control numérico computarizado (CNC), Funcionamiento del driver CNC DIY para motores paso a paso (Marco teórico)
Estudiado enCNC_DIY
Estudiado porJuan José Peters


Tabla de Contenidos

Artículos Previos

CNC2.gif

Desarrollados por el MADLAB

  1. Proyecto DIYLILCNC
  2. Proyecto RepRap
  3. CNC_DIY


Desarrollo Electrónica DIYLILCNC

Especificaciones Técnicas

Fresadora DIYLILCNC

IMG 2797limpio.jpg

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

Fusibles provistos

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

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

Área de Trabajo

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

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

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

Dimensiones

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

Altura de la mesa……………………………………812 mm.

Peso……………………………………………………………………… 60 Kg.

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.

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.



Especificaciones de motores de avance

Planosmaq1.png

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.


Características eléctricas

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

Resistencia de bobinas………………………………………………………. 1 Ohm.

Impedancia de Bobinas…………………………………...………………… 3.5 mH.


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.



Especificaciones de motor de fresado

Planosmaq2diylilcnc.png

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.

Configuración de pines en Arduino para GRBL

ArduinopreparadopinesDIYLILCNC.png

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.

Velocidad de cristal………………………………………………..……… 16Mhz.

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

Interfase/comunicación………………………………………………..……. USB.

Firmware utilizado………………………………………………...………. Grbl.hex.


Video Funcionamiento

GRBL: SOFTWARE DE CONTROL NUMÉRICO COMPUTARIZADO PARA DIYLILCNC

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.

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.

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.

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

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.

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.

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

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.

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.

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

MapeoArdtoMAqDIYLILCNC.png

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

1.0.6 command tableDIYLILCNC.png

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 interfaz gráfica refierase a la WIKI del desarrollador.

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

1.0.6 visualizerDIYLILCNC.png

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:


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

Instrucciones3diylilcnc.png

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.

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


JumperControl1.png
JumperControl2.png

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


JumperEnable1.png
JumperEnable2.png

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


JumperHome1.png
JumperHome2.png

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


JumperReset1.png
JumperReset2.png

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


JumperHalfFull1.png
JumperHalfFull2.png

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

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:

Grbl1.jpg

Escriba $ y pulse enter. Usted no debe ver ningún eco local del $ y enter, pero Grbl debe responder con un mensaje de ayuda:

MenuGRBL.jpg


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.

Comandos de configuración: “$$”, $X=val, $N y $Nx=line

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

ConfigActualGRBL2.jpg

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

Pulsopaso10us.jpg

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.

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

MensajeCorto.jpg

No hay mucho que seguir, pero esto sólo significa que no hay ningún bloque de código g almacenado en la línea $N0 en Grbl para ser ejecutada en el arranque. $N1 es la siguiente línea a ejecutar. (Si vuelve a compilar para tener más, se ejecutará en orden a $N4). Para definir un bloque de arranque, escriba $N0 = seguido de un bloque de código g válido y luego enter. Grbl ejecutará el bloque para comprobar si es válido y luego responderá con un 'ok' o un error: para decirle si tuvo éxito o algo salió mal.

Por ejemplo, digamos que usted desea utilizar su primer bloque de arranque $N0 para programar los modos de analizador de código de g como coordenadas trabajo G54, modo pulgadas G20 y plano XY G17. Usted debería escribir $N0 = G20 G54 G17 con un entra y usted debería ver una respuesta 'ok'. A continuación, puede comprobar si se consiguió almacenar escribiendo $ N y ahora debería ver una respuesta como $N0 = G20G54G17. Una vez que tenga un bloque de arranque almacenado en la EEPROM de Grbl, cada vez que se arranque o restablecer verá su bloque de arranque impreso por usted y una respuesta de Grbl para indicar si funcionara bien. Así que para el ejemplo anterior, verá:

Mensaje.jpg

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.

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

FormulaPasosxmm1.jpg

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

DefineBitStepConfigH.jpg

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

DefineBitDirConfigH.jpg

Que es igual a 96, por lo que al enviar este comando los invertirá:

Bitshifting.jpg


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

ComandoInvertDir.jpg
  • $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)

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.


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

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

OffsetCoordenadasAlmacenado.jpg

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:

RespuestaComandoInterrog.jpg

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.

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

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

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

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

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

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

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.

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.


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.

DiametroEngraneEjeX.JPG

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:

PerimetroEngraneX.jpg

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

PasoXmmEjeX.jpg

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:

ComandoConfigPasosXmmEjeX.jpg

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.

DiametroEngraneEjeY.JPG

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:

PerimetroEngraneY.jpg

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

PasoXmmEjeY.jpg

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:

ComandoConfigPasosXmmEjeY.jpg

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:

FormulaPasosxmmZ.png

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:

PasoXmmReglaDeTresEjeZ.jpg

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:

ComandoReglaDeTresEjeZ.jpg

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:

ConfigFeedRateSeekRate.jpg


Como valores apropiados. Con estos valores la máquina no avanza muy lento ni presenta movimientos bruscos en el desplazamiento de los ejes.

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

ConfigBotonDePartida.jpg

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

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:

ConfigInvertEnable.jpg

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:

ComandoHabilitHardLimit.jpg

Conexión de Hardware en DIYLILCNC

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:

Dremel S300.jpg
Dremel 4000.jpg


Herramienta Multi propósito dremel: Dremel S300 (Izquierda) y Dremel 4000 (derecha)


TablaDremelEspecificacionesTecnicas.png


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.

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.

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

Gabinete de Control

DIYLILCNC además incorpora un segundo Gabinete el cual posee los elementos de control de la máquina. La etapa de control se alimenta desde la salida del gabinete de energía y se encarga de traducir los comandos de código G o las rutinas de fresado en órdenes de movimiento para los motores paso a paso (o steppers) de cada eje. La interfáz encargada de la traducción de la información de movimiento para la máquina está a cargo de una tarjeta de desarrollo llamada Arduino UNO, la cual recibe las ordenes en codigo G desde la computadora en comunicación serial USB y desde pines específicos de salida de esta tarjeta envía las ordenes de numero de pasos y dirección de giro para los drivers. Cada driver de motor paso a paso cumple 2 funciones principales:

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

GabineteDeControl.JPG

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

ConexionesGabineteDeControl2.jpg

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

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


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


Esquematico2L297.png


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


BoardComponentesL297.png


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)
  • 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:


BoardFotoherramientaL297 1.png
BoardFotoherramientaL297 2.png


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:


Esquematico2L298.png


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


BoardComponentesL298.png


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)

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:


BoardFotoherramientaL298 1.png
BoardFotoherramientaL298 2.png


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


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

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.

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.

Transcurrido el tiempo de insolación, se retiran las placas. Ahora podemos trabajar con luz. Para limpiar las placas se debe sumergir cada una en una solución de agua con soda cáustica (2 litros de agua por 4 cucharadas soperas de soda). En un recipiente plástico se agrega una cantidad suficiente de solución para sumergir la placa completamente (Nota: Se debe tener precaución con la concentración de soda. Si nota que la placa se revela muy rápidamente agregar mas agua). Al sumergir la placa se sacude le recipiente suavemente 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.

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.

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


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.

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


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.

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


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.

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

PLACA L297

PLACA L298

Si desea observar las fotografías en mayor detalle y fluidez de visualización vaya a las siguientes galerías 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


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.


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


Conexión entre placas

Cada placa se interconecta a partir de cables con enchufes.

Materiales adicionales

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

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


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.

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


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.

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

Galería de imágenes (completa)

PaginaFlickr.png

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)