Arduino
Inkscape Laser Tool Plug-in
GRBL, Universal GcodeSender
PARTE 5
Inkscape Laser Tool Plug-in
GRBL, Universal GcodeSender
PARTE 5
En la primera parte de este montaje había realizado un CNC con un lenguaje propio. PARTE1
En la segunda parte de montaje, realizo una sencilla interface gráfica con Gambas (Visual Basic para linux). PARTE2
En la tercera parte mostré como utilizar el CNC con un programa comercial llamado Benbox. PARTE3
En la cuarta entrega de está serie de artículos sobre CNC (plotters), explico como utilizar el programa Inkscape para crear ficheros con extensión ngc y se utiliza la extensión Gcodetools.
En esta quinta entrega utilizo también Inscape, pero utilizo la extensión Laser Tool Plug-in.
https://jtechphotonics.com/?page_id=2012
En la parte de hardware (arduino) se utiliza una versión del programa GRBL (grbl-servo-master) que tiene eliminado el eje Z y añade el control de un servo.
https://jtechphotonics.com/?page_id=2012
En programas se encuentra los programa compilados y las fuentes.
Ahora los comandos utilizados para pintar son:
M03 S30 baja el lapiz.
M05 sube el lapiz.
Código del dibujo de una línea en formato GCODE |
M05 S0 G90 G21 G1 F3000 G1 X49.4661 Y48.9082 G4 P0 M03 S30 G4 P0 G1 F750.000000 G1 X0. Y-0. G4 P0 M05 S0 G1 F3000 G1 X0 Y0 |
He visto que funciona perfectamente a velocidad de 115200 BAUD_RATE, por lo que se queda como está.
Como yo tengo arduino nano, debo cambiar la configuración del programador en el fichero Makefile.
#Para arduino NANO
PROGRAMMER = -c stk500v1 -P /dev/ttyUSB0 -b 57600 -p atmega328p
Lo que viene ahora es para los que tengan una placa como la mía un poco particular, tiene los pins cambiados, lo normal es que no tengan que hacer esto. En el fichero cpu_map_atmega328p.h cambiar la configuración de los pins. /* ORIGINAL #define STEP_DDR DDRD #define STEP_PORT PORTD #define X_STEP_BIT 2 // Uno Digital Pin 2 #define Y_STEP_BIT 3 // Uno Digital Pin 3 #define Z_STEP_BIT 4 // Uno Digital Pin 4 */ //SETA43 #define STEP_DDR DDRD #define STEP_PORT PORTD #define X_STEP_BIT 5 #define Y_STEP_BIT 6 #define Z_STEP_BIT 7 /* ORIGINAL #define DIRECTION_DDR DDRD #define DIRECTION_PORT PORTD #define X_DIRECTION_BIT 5 // Uno Digital Pin 5 #define Y_DIRECTION_BIT 6 // Uno Digital Pin 6 #define Z_DIRECTION_BIT 7 // Uno Digital Pin 7 */ //SETA43 #define DIRECTION_DDR DDRD #define DIRECTION_PORT PORTD #define X_DIRECTION_BIT 2 #define Y_DIRECTION_BIT 3 #define Z_DIRECTION_BIT 4 |
Ya solo nos que compilar el programa GRBL con: make.
Cargamos el programa en el arduino con: make flash.
Ya con cualquier terminal serie podemos ver y cambiar la configuración del GRBL.
Yo suelo utilizar CuteCom o gtkterm , pero también sirve el terminal de arduino.
Para ver la configuración del GRBL que se almacena en la EEPROM del arduino debemos teclear la orden :$$
La configuración que tengo cambiada para mi es:
OK pwn spine ___SERVO____
Grbl 0.9j ['$' for help]
$0=10 (step pulse, usec)
$1=25 (step idle delay, msec)
$2=0 (step port invert mask:00000000)
$3=0 (dir port invert mask:00000000)
$4=0 (step enable invert, bool)
$5=0 (limit pins invert, bool)
$6=0 (probe pin invert, bool)
$10=3 (status report mask:00000011)
$11=0.010 (junction deviation, mm)
$12=0.002 (arc tolerance, mm)
$13=0 (report inches, bool)
$20=0 (soft limits, bool)
$21=0 (hard limits, bool)
$22=0 (homing cycle, bool)
$23=0 (homing dir invert mask:00000000)
$24=25.000 (homing feed, mm/min)
$25=500.000 (homing seek, mm/min)
$26=250 (homing debounce, msec)
$27=1.000 (homing pull-off, mm)
$100=5.200 (x, step/mm)
$101=3.200 (y, step/mm)
$102=250.000 (z, step/mm)
$110=2000.000 (x max rate, mm/min)
$111=2000.000 (y max rate, mm/min)
$112=2000.000 (z max rate, mm/min)
$120=300.000 (x accel, mm/sec^2)
$121=300.000 (y accel, mm/sec^2)
$122=300.000 (z accel, mm/sec^2)
$130=200.000 (x max travel, mm)
$131=200.000 (y max travel, mm)
$132=200.000 (z max travel, mm)
ok
El principal cambio que debemos hacer para adaptar nuestro plotter es (x, step/mm) y (y, step/mm).
Como el trayecto a recorrer (Eje X) es de 50 mm y se necesita 260 pasos, y para el eje Y se necesita 160 pasos (el mio es un caso particular al tener diferente tipo de pasos 260x160) el cálculo es el siguiente:
Eje X 260/50=5.2
Eje Y 160/50=3.2
Cambiamos la configuración con las ordenes.
$100=5.2
$101=3.2
Las demás configuraciones debemos cambiarlas dependiendo el tipo de motor paso a paso que tengamos.
Normalmente funciona sin tocar nada mas, pero cambiando algún que otro parámetro veremos como aumenta la velocidad de pintado.
Ya podemos mandar ordenes a la placa.
Como en mi CNC (plotter) no tiene interruptores de fin de carrera, tengo que ajustar el CNC a la posición inicial X=0 y Y=0.
G0 X0 Y0
Ahora manualmente coloco el CNC al punto 0,0 .
Tenemos todo preparado para recibir ordenes con el formato Gcode.
Para crear los gráficos utilizamos el programa Inkscape , y la extensión Laser Tool Plug-in para generar el código Gcode.
Nuestra superficie de pintado es de 50mmx50mm por lo que empezamos cambiando las propiedades del documento.
Creamos dos tipos de letras, una de single line y otra normal.
Pasamos las letras a trayecto.
En extensiones vamos a la extensión J Tech Photonics Laser Tools y generar el archivo en formato Gcode.
Ya tenemos el fichero en formato Gcode, ahora nos toca mandarlo al CNC(plotter), y esto lo hacemos con el programa Universal Gcode Sender.
PROGRAMAS
VIDEO DE FUNCIONAMIENTO
Todo el montaje y programación está realizado bajo Linux y con la distribución DEBIAN 9.
Saludos.
Juan Galaz
Bibliografía:
PARTE1
PARTE2
PARTE3
PARTE4
https://jtechphotonics.com/?page_id=2012
https://github.com/robottini/grbl-servo
http://akirasan.net/drawingbot-un-plotter-casero/
https://github.com/cnc-club/gcodetools
https://github.com/grbl/grbl
https://reprap.org/wiki/G-code/es
https://en.wikipedia.org/wiki/G-code
http://gcode.ws/
http://replicat.org/gcodes
http://diwo.bq.com/cnc-gcode-controller-instalacion-y-uso/
https://github.com/grbl/grbl/wiki/Configuring-Grbl-v0.9
https://github.com/grbl/grbl/wiki/Using-Grbl
https://www.staticboards.es/blog/dominar-motor-paso-a-paso-con-grbl/
http://www.holdme.cn/thread-1566-1-1.html
https://mega.nz/#!u8RnBDRa!G39BvWg0dSnv0Iwr49dDxI_rFS3fQuSBxM0wBUSxZcQ
https://www.instructables.com/id/Configurando-La-Grabadora-Laser-Benbox-DIY/#CTDIJIHITCH84HX
http://www.electronoobs.com/eng_impresoras_eleksmaker_2.php
https://www.doovi.com/video/how-to-make-homework-writing-machine-at-home/sUdAwUOaPX0
https://www.luisllamas.es/motores-paso-paso-arduino-driver-a4988-drv8825/
https://es.aliexpress.com/item/3DV4-CNC-Shield-V4-engraving-machine-Nano-3-0-with-USB-A4988-Reprap-Stepper-Drivers-for/32809568484.html
http://wiki.keyestudio.com/index.php/Ks0096_keyestudio_CNC_Kit_/_CNC_Shield_V4.0_%2B_Nano_3.0%2B3pcs_a4988_Driver_/_GRBL_Compatible
http://osoyoo.com/2017/04/07/arduino-nano-cnc-shield-v4-0a4988/