Professional Documents
Culture Documents
staticboards.es
¿No sería increíble que pudieses crear tu propia maquina robotizada casera?
Hoy voy a enseñarte el software que necesitas para convertir un sencillo Arduino
en una controladora para tus motores paso a paso.
No hay nada que nos fascine más que tener nuestro propia máquina controlada por
ordenador. Yo mismo me paso horas asombrado mirando como se mueve la
impresora 3D.
En este mega post vas a aprender todo lo que necesitas para configurar tu
propia máquina.
La teoría es sencilla. Necesitas unos motores paso a paso, unas correas, unas
poleas, unos drivers y un Arduino que controle todo.
Pero cuando te pones a buscar motor paso a paso es cuando la cosa se complica.
Que si hay que mandar un pulso, que si el driver va a 12V, que si la interrupción
1 de 22 17/12/17 18:27
Guía definitiva para dominar GRBL [actualizado... about:reader?url=https://www.staticboards.es/...
del timer…
Te encuentras con una cantidad enorme de datos, técnicas, y lo que es peor, líneas
y líneas de código fuente.
Esta técnica es muy popular en las máquinas robotizadas porque como sabes
cuantos pulsos has enviado, sabes cuánto ha avanzado la máquina.
Por decirlo de alguna manera, cuando hablamos con el motor, le decimos: quiero
que avances 200 pulsos. Pero asi es difícil saber lo que va a hacer la máquina
exáctamente.
Lenguaje G-CODE
CNC y G-Code
Las máquinas robotizadas se denominan CNC, y viene de “Computador de
Control Numérico”. Es la forma común para no decir “maquina robotizada con
motores”.
El lenguaje universal de las máquinas CNC se llama G-Code. Es un fichero de
2 de 22 17/12/17 18:27
Guía definitiva para dominar GRBL [actualizado... about:reader?url=https://www.staticboards.es/...
No voy a entrar en los detalles del g code, pero para que os hagáis una idea, os voy
a poner unos comandos de ejemplo:
G00 X0Y0Z0
G01 Z1 F5
Avanza todos los ejes de tal forma que llegue lo antes posible.
¿Qué ocurre en ese caso? Que la velocidad de movimiento es la máxima, pero los
movimientos no van en línea recta. Si los motores X e Y avanzan la velocidad
máxima (por ejemplo, a 200 mm por minuto) la máquina hace una linea de 45º,
hasta que uno de los motores llega al borde.
G01 es avance en línea recta. Se usa cuando estamos cortando y si que nos
importa la ruta que tome la máquina.
Si queremos que la máquina haga una línea recta, uno de los motores tiene que ir
más lento que el otro, para que se mantenga por el rumbo que queremos.
Lo mejor es verlo con esta infografía (no seáis muy malos conmigo):
3 de 22 17/12/17 18:27
Guía definitiva para dominar GRBL [actualizado... about:reader?url=https://www.staticboards.es/...
Puedes diseñar sus logotipos en Adobe Illustrator, Corel Draw o Inkscape (si
quieres tener todo Open Source) y exportar a G-code usando un plugin.
Si estás usando una impresora 3D, programas como Cura o Slic3r, precisamente lo
que hacen es convertir tu modelo 3D en un programa de G-Code que luego
enviamos a la impresora.
Aqui te dejo un completo tutorial para generar código G-Code desde un logotipo,
usando Ink Scape
Poco tiempo después de publicar el código, Sonny Jeon estaba buscando una
forma de controlar sus motores, y descubrió este firmware. En menos de un año, se
convirtió en uno de los principales desarrolladores del firmware.
Puedes ver este hangout con Sonny Jeon, contando su experiencia con el firmware,
4 de 22 17/12/17 18:27
Guía definitiva para dominar GRBL [actualizado... about:reader?url=https://www.staticboards.es/...
GRBL es un firmware que está funcionando en muchos proyectos, con una base de
usuarios importante. Si tienes dudas o algo no te funciona, va a ser muy fácil
encontrar ayuda.
Asi que, con un Arduino, una placa preparada para CNC (hablaremos de esto en
muy poco tiempo!), unos drivers como los Pololu A4988 o los más potentes
DRV8825, y unos motores paso a paso, ya tienes toda la electrónica para empezar.
Pero voy a destacar el más popular de todos: la CNC Shapeoko. Esta CNC tiene un
precio muy asequible, sobre los $1000, y tiene una comunidad muy potente detrás.
Es bastante normal ver una Shapeoko en los fablabs más conocidos.
Si quieres algo más lowcost, un proyecto muy barato (menos de $60) es Cartesio,
un plotter que hace unos dibujos artísticos muy buenos, con unas piezas impresas
en 3D, dos motores paso a paso y un servo.
5 de 22 17/12/17 18:27
Guía definitiva para dominar GRBL [actualizado... about:reader?url=https://www.staticboards.es/...
La primera vez que pensamos en mover motores paso a paso, nos imaginamos el
arduino enviando un pulso para mover el motor. Pero aquí hay un problema: la
inercia.
Cuando el motor está parado, cuesta mucho trabajo hacer que la máquina pase de
estar en reposo a estar en movimiento. Por este motivo, tenemos que ir acelerando
poco a poco (igual que cuando arrancamos el coche).
6 de 22 17/12/17 18:27
Guía definitiva para dominar GRBL [actualizado... about:reader?url=https://www.staticboards.es/...
El G-Code nos define los movimientos línea a línea. Avanza tantos centímetros a
la derecha, ahora avanza en otra dirección, y así hasta terminar de cortar nuestra
pieza
Imagínate que el programa le dice que avance en linea recta a toda velocidad
durante un buen rato. El cabezal de la máquina irá a toda pastilla hasta el final.
La primera opción es que el siguiente movimiento sea un giro brusco, por ejemplo,
en una esquina. El cabezal tiene que empezar a frenar mucho antes de llegar al la
esquina, si no, con la inercia, se pasará de frenada y nos quedará una marca fea.
¿Pero qué pasa si la en vez de un giro brusco, la línea continua pero con una
mínima diferencia? Por ejemplo, si solo nos desviamos unos grados de nuestro
rumbo. Entonces no hace falta frenar, el cabezal puede mantener la velocidad y
todo irá más suave. Incluso las marcas serán más limpias.
Lo que hace GRBL es leer las siguientes líneas del programa, y recalcular la lista
de trapecios y sus aceleraciones, teniendo en cuenta los siguientes movimientos.
De esta forma, el cabezal frenará antes, porque conoce lo que le va a venir más
adelante.
Recalcular la aceleración
GRBL lee los siguientes movimientos de la máquina, y ajusta la aceleración y
7 de 22 17/12/17 18:27
Guía definitiva para dominar GRBL [actualizado... about:reader?url=https://www.staticboards.es/...
GRBL usa el algoritmo de Bresenham para calcular el movimiento de los ejes. Los
que sepan algo de programación gráfica conocerán este popular algoritmo. Lo que
hace GRBL es subdividir los movimientos rectos, y suavizarlos (como el antialias
de los videojuegos, pero aplicado a CNC). Esto se nota especialmente cuando un
eje es dominante en el movimiento. El único problema es que ahora hay una
velocidad mínima de avance. Si tu máquina necesita ir muy despacio (1 mm por
minuto o algo asi) entonces no podrás usar esta técnica, pero bueno, tu movimiento
ya será suave de todos modos
8 de 22 17/12/17 18:27
Guía definitiva para dominar GRBL [actualizado... about:reader?url=https://www.staticboards.es/...
procesador más potente para mover una CNC. Por ejemplo, porqué no usar una
Raspberry Pi para hacer los cálculos.
Por este motivo, dependemos del resto de programas para garantizar que todo se
llama a tiempo. Si un programa pide mucha CPU, el kernel haría que nuestro
programa funcionase más lento. Y si estamos cortando un círculo con la CNC,
puede que perdamos pasos, y el circulo se parezca más a un huevo.
En todo lo que tiene que ver con motores usamos un procesador tipo Arduino.
Técnicamente lo llamamos de tiempo real, porque si programas para que se lance
una interrupción cada 100 milisegundos, va a hacerlo exactamente en ese
momento.
Linux
Las máquinas con linux no sirven para controlar una máquina CNC por la
forma en la que gestiona la multitarea.
Estoy seguro que has escuchado alguna vez sobre el firmware Marlin para las
impresoras 3D. Es el firmware más usado para la RAMPS 1.4, por ejemplo.
9 de 22 17/12/17 18:27
Guía definitiva para dominar GRBL [actualizado... about:reader?url=https://www.staticboards.es/...
Pues si miras el código, sobre todo la parte de movimientos, verás que el Marlin no
es más que un GRBL con vitaminas.
Además de eso, el GCODE tiene una sección de comandos, M (de “machine”). Por
decirlo de alguna manera, cada máquina tiene sus peculiaridades. Por ejemplo, una
máquina puede necesitar que hagamos un pitido. En el caso de Marlin, han
programado el comando M300.
El firmware GRBL está pensado para trabajar con Arduino Uno. Todos los pines
de salida está ocupados, y el pobre, ya no puede más.
Pero si estás pensando en usar 4 ejes, y necesitas más potencia, hay versiones
adaptadas para Arduino Mega.
10 de 22 17/12/17 18:27
Guía definitiva para dominar GRBL [actualizado... about:reader?url=https://www.staticboards.es/...
Compilar GRBL
Este proyecto está muy testeado y ya ha pasado por varias revisiones completas.
Afortunadamente, el código se compila sin problema desde el IDE de Arduino.
11 de 22 17/12/17 18:27
Guía definitiva para dominar GRBL [actualizado... about:reader?url=https://www.staticboards.es/...
Lo que vamos a hacer es agregar el GRBL como una librería. Para ello,
añadimos la carpeta grbl desde el menú add library en el IDE de Arduino.
12 de 22 17/12/17 18:27
Guía definitiva para dominar GRBL [actualizado... about:reader?url=https://www.staticboards.es/...
Una vez hagamos esto, si queremos compilar el GRBL, tenemos que ir al menú de
programas de ejemplo de Arduino, y buscar el grbl (sí, al agregar la librería, te
agrega automáticamente el GRBL como programa de ejemplo!)
13 de 22 17/12/17 18:27
Guía definitiva para dominar GRBL [actualizado... about:reader?url=https://www.staticboards.es/...
Recuerda que hay que seleccionar la placa Arduino Uno! (GRBL por defecto viene
preparado para esta placa)
Si estás usando linux, no es necesario que compiles desde Arduino, puedes hacerlo
desde línea de comandos, siempre que tengas instalado el avr-gcc (el compilador
de c para AVR) y el paquete avr-libc. Para enviar el binaro a nuestro arduino
usaremos avrdude. La propia distribución de GRBL incluye las instrucciones para
compilar todo.
14 de 22 17/12/17 18:27
Guía definitiva para dominar GRBL [actualizado... about:reader?url=https://www.staticboards.es/...
make clean
make grbl.hex
sudo avrdude -p m328p -D -P /dev/ttyUSB0 -c arduino -b 115200 -U
flash:w:grbl.hex
Otro programa que está muy de moda es el bCNC. En windows es algo más
complicado de instalar porque funciona con python, y hay que instalar alguna
libería. Te lo recomiendo sólo si eres un usuario experimentado.
Si utilizas windows, para conectarte por primera vez y ver si el GRBL funciona, te
recomiendo usar putty. Es un ejecutable muy sencillo que nos abre el puerto serie
sin tener que instalar nada.
Esta es una aplicacion en Java que nos permite enviar ficheros gcode e interactuar
con nuestra CNC de forma sencilla.
GRBL interpreta directamente G-CODE, pero para configurar tu CNC, el
intérprete incluye una serie de comandos especiales.
$$ : Esto nos muestra una lista con todos los parámetros que podemos
configurar.
Lo primero es ajustar los pasos por milímetro. Esto es, cuantos pasos tiene que
enviar el Arduino al motor para que tu CNC avance 1 mm.
Vamos a hacer los cálculos. El motor stepper normalmente es de 200 pasos. Esto
quiere decir que con 200 pasos, el motor da una vuelta completa.
Necesitamos el paso de nuestra varilla roscada. Una varilla de 8mm tiene un paso
de 1.25mm. Esto quiere decir, que en cada vuelta, avanza 1.25mm (tienes que
mirar el paso de la varilla que has comprado)
15 de 22 17/12/17 18:27
Guía definitiva para dominar GRBL [actualizado... about:reader?url=https://www.staticboards.es/...
Los drivers suelen tener micropasos. Esto es, que dividen 1 paso completo, en 16
pequeños avances, para que el movimiento sea más suave y fluido. Asi que, si
tenemos una varilla roscada de 8mm, con un motor de 200 pasos, a 16 micropasos,
la fórmula seria :
$101 = 2560
El siguiente valor que vamos a cambiar es la velocidad por defecto. Esto depende
muchísimo de nuestra máquina. Si está bien engrasada, si usa husillos o patines
lineales, etc.
Con esto nos aseguramos que el taladro no se va a romper cuando está cortando,
porque pusimos demasiada velocidad en el gcode, o que el láser va a pasar
demasiado rápido sobre el metacrilato, por poner un ejemplo.
16 de 22 17/12/17 18:27
Guía definitiva para dominar GRBL [actualizado... about:reader?url=https://www.staticboards.es/...
A mi me ha pasado que una máquina parece que está bien calibrada, pero cuando
se calienta, por ejemplo, o al funcionar durante una hora, la fricción hace que le
cueste más esfuerzo a los motores moverse, y acaban bloqueados.
Si quieres profundizar en las opciones que hay disponibles, en este enlace tienes
toda la información sobre cómo configurar GRBL
En la propia página del projecto también tenéis una lista de programas para usar
GRBL.
17 de 22 17/12/17 18:27
Guía definitiva para dominar GRBL [actualizado... about:reader?url=https://www.staticboards.es/...
Para poder hacer esto, tenemos que incluir unos botones que nos indican donde
está exáctamente el principio del movimiento.
La máquina se mueve despacio hasta que hace click en el botón, y entonces sabe
que tiene que empezar desde ese punto. Por este motivo, los botones se denominan
límites.
18 de 22 17/12/17 18:27
Guía definitiva para dominar GRBL [actualizado... about:reader?url=https://www.staticboards.es/...
Si usas una placa tipo Arduino CNC Shield, no tienes más que conectar los
drivers en el lugar adecuado.
Pero quizás estás montando tu propio proyecto, y vas a conectar los drivers
mediante cables, porque quieres probar antes, o por el motivo que sea.
En ese caso, te dejo el esquema de cómo conectar los pines del Arduino Uno, al
driver de los motores, limites, etc.
19 de 22 17/12/17 18:27
Guía definitiva para dominar GRBL [actualizado... about:reader?url=https://www.staticboards.es/...
20 de 22 17/12/17 18:27
Guía definitiva para dominar GRBL [actualizado... about:reader?url=https://www.staticboards.es/...
En el código del grbl hay un fichero de texto, gcode.c, donde se analizan los
comandos que vamos recibiendo.
Si miras la parte donde se analizan los comandos de tipo M (de machine), ves que
tiene un gran case donde va configurando los valores. Como es muy especifico de
la máquina, hay muy pocos.
Si quieres hacer algo especifico, tienes que asignarte un numero, por ejemplo, el
1234, y escribir:
case 1234:
{
}
Ahora te toca a tí
Madre mía!!!
21 de 22 17/12/17 18:27
Guía definitiva para dominar GRBL [actualizado... about:reader?url=https://www.staticboards.es/...
Si has llegado hasta el final del artículo, entonces sí que tienes ganas de usar
GRBL y montar tu CNC casera.
Asi que ya sabes, sólo necesitas unos perfiles de aluminio, unos motores paso a
paso, un Arduino, una controladora, y ganas de montar tu propia máquina.
Por ejemplo, si ya conocías el GRBL, o si ya tienes una CNC, nos puedes contar tu
experiencia.
Y si además, este post te ha ayudado a decidirte sobre tu próxima CNC, tienes que
decirlo!
22 de 22 17/12/17 18:27