Página principal
Arduino
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
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/