Anda di halaman 1dari 21

Cmo dominar tu motor paso a paso (sin ser un experto

programador)
https://www.staticboards.es/blog/dominar-motor-paso-a-pasocon-grbl/

No sera increble que pudieses crear tu propia maquina robotizada


casera?
Siempre has tenido ganas de montar una, estoy seguro.
Hoy voy a ensearte el software que necesitas para convertir un
sencillo Arduino en una controladora para tus motores paso a paso.
No hay nada que nos fascine ms que tener nuestro propia mquina
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 mquina.
La teora 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 interrupcin del timer
Te encuentras con una cantidad enorme de datos, tcnicas, y lo que
es peor, lneas y lneas de cdigo fuente.
Por eso existe GRBL
ndice

Hablar el mismo lenguaje que el motor paso a paso

Lenguaje G-CODE

GRBL aparece en la escena del Arduino

Porqu deberas usar GRBL

Qu proyectos usan GRBL?

Quieres una aceleracin suave? Este es tu firmware

Qu es el Look Ahead Planning y porqu lo necesitas

Adaptive Multi-Axis Step Smoothing

Linux y Mquinas CNC

Marlin para la Impresora 3D

Ahora te toca Instalar GRBL

Compilar GRBL
Compilar GRBL desde lnea de comandos (para usuarios
expertos)

Cmo Configurar GRBL

Qu es y cmo configurar el Homing

Conectando los drivers a mano

Cmo Hackear el GRBL y hacer tus propios comandos

Ahora te toca a t

Hablar el mismo lenguaje que el motor paso a paso


La teora de los motores paso a paso es sencilla. Cuando el Arduino
manda un pulso al driver del motor, este avanza un pasito.
Esta tcnica es muy popular en las mquinas robotizadas porque
como sabes cuantos pulsos has enviado, sabes cunto ha avanzado
la mquina.
Lo que necesitas es pasar de un lenguaje de pulsos, a algo ms
sencillo de explicar, como son las coordenadas de los motores.
Por decirlo de alguna manera, cuando hablamos con el motor, le
decimos: quiero que avances 200 pulsos. Pero asi es difcil saber lo
que va a hacer la mquina exactamente.
Lo que queremos es decir avanza 10 centmetros. Mucho ms til.
Lenguaje G-CODE
La forma ms o menos estndard de comunicarse con un robot es
usando el lenguaje G Code. Es un sencillo sistema de texto con los
movimientos de la mquina. Es uno de los formatos ms veteranos,
ya que su primera versin se remonta a los aos 50.
CNC y G-Code
Las mquinas robotizadas se denominan CNC, y viene de
Computador de Control Numrico. Es la forma comn para no
decir maquina robotizada con motores.
El lenguaje universal de las mquinas CNC se llama G-Code. Es un
fichero de texto con todos los movimientos de la mquina.

No voy a entrar en los detalles del g code, pero para que os hagis
una idea, os voy a poner unos comandos de ejemplo:
G00 X0Y0Z0
Esto nos lleva a la posicin 0,0,0
G01 Z1 F5
Esto avanza lentamente la altura 1 mm, a la velocidad de 5
mm/minuto (feed rate)
G00 es avance rpido.
Avanza todos los ejes de tal forma que llegue lo antes posible.
Qu ocurre en ese caso? Que la velocidad de movimiento es la
mxima, pero los movimientos no van en lnea recta. Si los motores X
e Y avanzan la velocidad mxima (por ejemplo, a 200 mm por
minuto) la mquina hace una linea de 45, hasta que uno de los
motores llega al borde.
Este comando se usa cuando la CNC no est cortando, y queremos
mover el cabezal a una posicin concreta, y no nos importa la ruta
que tome, slo la velocidad.
G01 es avance en lnea recta. Se usa cuando estamos cortando y si
que nos importa la ruta que tome la mquina.
Si queremos que la mquina haga una lnea recta, uno de los
motores tiene que ir ms lento que el otro, para que se mantenga
por el rumbo que queremos.
Lo mejor es verlo con esta infografa (no seis muy malos conmigo):

La buena noticia es que no tenemos que escribir el G Code a mano.


La mayora de programas tienen formas de exportar y generar G
Code por nosotros.
Puedes disear sus logotipos en Adobe Illustrator, Corel Draw o
Inkscape (si quieres tener todo Open Source) y exportar a G-code
usando un plugin.
Si ests 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 cdigo G-Code desde
un logotipo, usando Ink Scape
https://youtu.be/NY2tDlMPqKQ
GRBL aparece en la escena del Arduino
El autor original del firmware GRBL es el noruego Simen Svale
Skogsrud. En el 2007 se encontr exctamente con el mismo
problema que tienes ahora: cmo controlar un motor paso a paso.
As que decidi investigar, disear un planificador (usando el
software mathematica) y comenz a desarrollar para Arduino, que

estaba hacindose popular en aquel tiempo. Adems est basado en


el chip de Atmel AVR (que estoy seguro que no sabas que se dise
en Noruega!)
Poco tiempo despus de publicar el cdigo, Sonny Jeon estaba
buscando una forma de controlar sus motores, y descubri este
firmware. En menos de un ao, se convirti en uno de los principales
desarrolladores del firmware.
Puedes ver este hangout con Sonny Jeon, contando su experiencia
con el firmware, ideas para futuros desarrollos, etc.
https://youtu.be/wQJjMkKGOf4
Porqu deberas usar GRBL
Todo el mundo tiene un Arduino cerca para cacharraear y probar. Y
el entorno de desarrollo es popular y muy documentado.
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 fcil 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 ms potentesDRV8825, y unos motores paso a paso, ya tienes
toda la electrnica para empezar.
Una comunidad enorme
GRBL est presente en multitud de proyectos y es sencillo encontrar
mucha gente que te puede ayudar.
Qu proyectos usan GRBL?
La lista es enorme, y no voy a intentar hacer un recopilacin de
proyectos que usan GRBL. Es un poco excesivo.

Pero voy a destacar el ms popular de todos: la CNC Shapeoko. Esta


CNC tiene un precio muy asequible, sobre los $1000, y tiene una
comunidad muy potente detrs. Es bastante normal ver
una Shapeoko en los fablabs ms conocidos.
https://youtu.be/NZKJnbgCphU
Si quieres algo ms lowcost, un proyecto muy barato (menos de $60)
es Cartesio, un plotter que hace unos dibujos artsticos muy buenos,
con unas piezas impresas en 3D, dos motores paso a paso y un servo.
https://youtu.be/rF37Ew_WrGE
Quieres una aceleracin suave? Este es tu firmware
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
mquina 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).
Al principio del movimiento, el firmware va subiendo la velocidad
poco a poco hasta llegar a la velocidad deseada, y ah se mantiene
hasta que va llegando al final del movimiento. Entonces
va decelerando poco a poco hasta que se para, o comienza un nuevo
segmento.
Lo que hace el GRBL es convertir cada movimiento en una lista
de trapecios.

Este es el ncleo del algoritmo de GRBL. Despedazar los movimientos


en trapecios para cada motor. Dividir los movimientos en una lista de
lneas rectas y calcular la aceleracin y frenada de cada segmento, en
cada eje.
La lista de trapecios se envan a la parte ms importante del
programa, lainterrupcin de timer, donde se transforman esos
trapecios en pulsos, a una velocidad perfectamente definida para
que los motores se muevan de forma coordinada. Todo esto se tiene
que ejecutar de forma perfectamente sincronizada.
Qu es el Look Ahead Planning y porqu lo necesitas
Hablamos de la aceleracin en un movimiento sencillo, pero el GRBL
va un paso ms all y calcula las aceleraciones segn los
movimientos futuros de la mquina. Una caracterstica fundamental
para que las lneas y las curvas sean suaves y fluidas.
El G-Code nos define los movimientos lnea a lnea. Avanza tantos
centmetros a la derecha, ahora avanza en otra direccin, y as hasta
terminar de cortar nuestra pieza

Imagnate que el programa le dice que avance en linea recta a toda


velocidad durante un buen rato. El cabezal de la mquina ir a toda
pastilla hasta el final.
Entonces pueden pasar 2 cosas.
La primera opcin 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 lnea continua pero
con una mnima 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 ms suave. Incluso las
marcas sern ms limpias.
Lo que hace GRBL es leer las siguientes lneas 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 ms adelante.
Recalcular la aceleracin
GRBL lee los siguientes movimientos de la mquina, y ajusta la
aceleracin y frenada para que todo vaya suave y fluido.

Adaptive Multi-Axis Step Smoothing


GRBL usa el algoritmo de Bresenham para calcular el movimiento de
los ejes. Los que sepan algo de programacin grfica conocern 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 mnima de avance. Si tu mquina necesita ir muy


despacio (1 mm por minuto o algo asi) entonces no podrs usar esta
tcnica, pero bueno, tu movimiento ya ser suave de todos
modos
Linux y Mquinas CNC
Estoy seguro que en algn momento te has preguntado porqu no
usar un procesador ms potente para mover una CNC. Por ejemplo,
porqu no usar una Raspberry Pi para hacer los clculos.
El problema est en cmo linux maneja el tiempo.
En un procesador ms avanzado (que ejecuta linux), es el kernel
quin gestiona la interrupcin del timer, y bloquea el acceso al resto
de programas. Y esto es algo positivo, ya que es lo que permite que
podamos usar las Raspberry Pi o un ordenador normal. Si un
programa logra tomar el control de esta interrupcin, es posible que
bloquee todo. Y cuando digo todo, digo absolutamente todo: el
ratn, la tarjeta de video, la conexin de internet, etc. Por eso el
kernel nos protege para que eso no ocurra.
El kernel de linux asigna un tiempo a cada programa. El servidor web,
el gestor de ventanas, etc. Segn la CPU disponible, y los recursos
que estn usando en ese momento, permite ejecutar un programa u
otro.
Por este motivo, dependemos del resto de programas para
garantizar que todo se llama a tiempo. Si un programa pide mucha
CPU, el kernel hara que nuestro programa funcionase ms lento. Y si
estamos cortando un crculo con la CNC, puede que perdamos pasos,
y el circulo se parezca ms a un huevo.
En todo lo que tiene que ver con motores usamos un procesador tipo
Arduino. Tcnicamente lo llamamos de tiempo real, porque si
programas para que se lance una interrupcin cada 100
milisegundos, va a hacerlo exactamente en ese momento.

Linux
Las mquinas con linux no sirven para controlar una mquina CNC
por la forma en la que gestiona la multitarea.
Marlin para la Impresora 3D
Estoy seguro que has escuchado alguna vez sobre el
firmware Marlin para las impresoras 3D. Es el firmware ms usado
para la RAMPS 1.4, por ejemplo.
Pues si miras el cdigo, sobre todo la parte de movimientos, vers
que el Marlin no es ms que un GRBL con vitaminas.
La base es la misma. Lo que han aadido los programadores es toda
la gestin de temperaturas, lo que mantiene el extrusor caliente
mientras hacemos la pieza. Tambin han metido la parte del men y
la pantalla LCD, que es un trabajo importante.
Adems de eso, el GCODE tiene una seccin de comandos, M (de
machine). Por decirlo de alguna manera, cada mquina tiene sus
peculiaridades. Por ejemplo, una mquina puede necesitar que
hagamos un pitido. En el caso de Marlin, han programado el
comando M300.
M300 S300 P1000
Aqui tienes la lista de comandos GCODE que se usan en Marlin y en
los firmwares ms comunes de impresoras 3D.
Ahora te toca Instalar GRBL
GRBL mantiene toda su configuracin en la memoria EEPROM, que
es una memoria permanente que llevan los procesadores. Puede
pasar que en algn caso, los datos que ya estaban almacenado en el
arduino, afecte a la configuracin por defecto. Si has usado el
Arduino antes, es aconsejable borrar la memoria EEPROM.
Compilar GRBL

Este proyecto est muy testeado y ya ha pasado por varias revisiones


completas. Afortunadamente, el cdigo se compila sin problema
desde el IDE de Arduino.
Lo primero de todo es descargar el cdigo fuente de GRBL
desde github.com
Lo que vamos a hacer es agregar el GRBL como una librera. Para
ello, aadimos la carpeta grbl desde el men add library en el IDE de
Arduino.
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 librera, te agrega automticamente el GRBL como
programa de ejemplo!)
Recordad que hay que seleccionar la placa Arduino Uno! (GRBL por
defecto viene preparado para esta placa).
Y antes de compilar, seleccionamos el puerto serie donde tenemos
conectado el Arduino.
Ya est! Le damos a compilar y upload, y nos subir el nuevo
firmware a nuestro Arduino.
Ahora podremos ver si est correctamente configurado,
simplemente conectndonos al puerto serie (recuerda que la
velocidad es de 115200 baudios)
Compilar GRBL desde lnea de comandos (para usuarios expertos)
Si ests usando linux, no es necesario que compiles desde Arduino,
puedes hacerlo desde lnea de comandos, siempre que tengas
instalado el avr-gcc (el compilador de c para AVR) y el paquete avrlibc. Para enviar el binaro a nuestro arduino usaremos avrdude. La
propia distribucin de GRBL incluye las instrucciones para compilar
todo.

make clean
make grbl.hex
sudo avrdude -p m328p -D -P /dev/ttyUSB0 -c arduino -b 115200 -U
flash:w:grbl.hex
Cmo Configurar GRBL
Para comunicarnos con el GRBL, lo podemos hacer directamente a
travs de un terminal serie, como minicom. Pero si preferimos algo
ms grfico, podemos usar el programa Universal-G-Code-Sender
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 intrprete incluye una serie de comandos especiales.
$$ : Esto nos muestra una lista con todos los parmetros que
podemos configurar.
Lo primero es ajustar los pasos por milmetro. Esto es, cuantos
pasos tiene que enviar el Arduino al motor para que tu CNC avance 1
mm.
Vamos a hacer los clculos. 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. Si es de
8mm, con 200 pasos avanzaremos esos 8 mm. Dividiendo tenemos
que 25 pasos avanza 1 mm.
Los drivers suelen tener micropasos. Esto es, que dividen 1 paso
completo, en 16 pequeos avances, para que el movimiento sea ms
suave y fluido. Asi que, si tenemos una varilla roscada de 8mm, con
un motor de 200 pasos, a 16 micropasos, la frmula seria :
(200*16) / 8 = 400 pasos!
De este modo, para configurar el eje X, escribiremos:
$0 = 400

Sencillo verdad! Y adems, automticamente queda almacenado en


la memoria EEPROM.
El siguiente valor que vamos a cambiar es la velocidad por defecto.
Esto depende muchsimo de nuestra mquina. Si est bien
engrasada, si usa husillos o patines lineales, etc.
$4 es para la velocidad de avance. Imaginad que estamos cortando
madera con la mquina, o metacrilato con el lser. Con este
comando calibramos la velocidad mxima a la que podemos realizar
este corte (el comando G1 en gcode). Esto quiere decir que, aunque
el gcode diga que vamos a cortar a 1000mm por minuto, nosotros
nunca pasaremos de 500mm/min.
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 lser va a pasar demasiado rpido sobre el metacrilato, por
poner un ejemplo.
$5 es la velocidad de bsqueda. Esto es el movimiento cuando la
maquina no est cortando (el comando G0 en gcode). Por ejemplo,
cuando le decimos que vaya a una posicin antes de bajar para
cortar.
Obiamente, podemos ir ms rpido cuando la maquina no est
cortando, que cuando estamos cortando.
Lo mejor es bajar la velocidad, como a 50 mm/min. Probamos, y
vamos subiendo.
Si nos pasamos, lo que va a ocurrir es que el motor no es capaz de ir
tan rpido, y se bloquear. Asi que tenemos que ir buscando la
velocidad adecuada.
Si estamos cortando, lo que nos va a pasar es que se va a romper la
fresa, o el lser no va a quemar suficientemente. Pero depende
tambin del material, y de la fresa que estemos usando.

A mi me ha pasado que una mquina parece que est bien calibrada,


pero cuando se calienta, por ejemplo, o al funcionar durante una
hora, la friccin hace que le cueste ms esfuerzo a los motores
moverse, y acaban bloqueados.
Mi consejo personal aqu es que si ests empezando, no vayas a lo
ms rpido posible. Primero acostmbrate a usar la CNC y cntrate
en que el resultado del corte sea bueno y limpio. No pasa nada
porque tarde una hora ms en terminar. Cuando esto lo tengas
dominado, ya irs subiendo velocidad. Pero tendrs un resultado
anterior para comparar si te merece la pena ir ms rpido.
Si quieres profundizar en las opciones que hay disponibles, en este
enlace tienes toda la informacin sobre cmo configurar GRBL
En la propia pgina del projecto tambin tenis una lista de
programas para usar GRBL.
Lista de comandos de GRBL
$$ (mostrar los parmetros de GRBL)
$# (mostrar los parametros #)
$G (mostrar el estado del parseador de GCODE)
$I (mostar la informacion del firmware, build, etc)
$N (mostrar los bloques de inicio)
$x=value (almacenar un valor el la EEPROM)
$Nx=line (almacenar un bloque de inicio)
$C (comprobar el modo actual de GCODE)
$X (desactivar el bloqueo de alarma)
$H (hacer un ciclo homing)
! (pausar el avance)
~ (reiniciar un ciclo o el continuar despues de la pausa)
? (mostrar el estado actual, posicion, etc)
ctrl-x (reiniciar GRBL)
Qu es y cmo configurar el Homing

Una de las operaciones ms importantes en una CNC es el Home.


Cuando encendemos la mquina, el Arduino no tiene ni idea de
donde est y no sabe desde donde tiene que empezar a contar.
Para poder hacer esto, tenemos que incluir unos botones que nos
indican donde est exctamente el principio del movimiento.
La mquina se mueve despacio hasta que hace click en el botn, y
entonces sabe que tiene que empezar desde ese punto. Por este
motivo, los botones se denominan lmites.
Homing es el proceso de buscar estos botones y poner la posicin en
cero.
GRBL comienza buscando la Z mxima (para subir el cabezal si
tenemos una fresadora), y asi nos podemos mover tranquilamente
sin saber que vamos a tocar nada. Despus buscamos el eje X y el eje
Y.
Nota sobre los lmites
GRBL por defecto espera unos lmites que conecten los pines de la
placa a GND.
Hay que comprobar que los configuramos de esta forma:
Cuando no est pulsado, el pin debera de medir 5V.
Cuando est pulsado, el pin debera de medir 0V.
La mayora de los lmites (microswitches) tienen 3 patas que se
llaman: C (common), NO (normally open), NC (normally closed).
Deberas de usar C y NO, y dejar la patilla NC sin conectar.
Si activamos el Homing, la mquina estar bloqueada hasta que
hagamos el Homing! Esto es importante saberlo. Yo me pas un buen
rato enviando comandos sin recibir respuesta (forever alone!). Con
esto nos defendemos de error de posicionamiento.
Para activar el Homing, usaremos el comando $22=1 , para ejecutar
el homing, usamos el comando $H.

En una CNC casera, ajustar los lmites de la X y la Y no es tan crtico,


pero el lmite de la Z es muy importante. Nos dice dnde est la
punta de la fresa. Y tiene que estar exctamente en la posicin
adecuada si quieres que los cortes tengan la profundidad que has
configurado. Mi consejo es invertir un poco en un sensor inductivo (si
tenemos algo de metal) o un sensor capacitivo para que detecte
siempre la Z en el mismo punto. Yo he perdido incontables horas de
pruebas y ajustes por culpa de esto.
Os dejo aqu un vdeo en castellano para configurar el GRBL paso a
paso.
https://youtu.be/zf2RbZb45gw

Conectando los drivers a mano


Si usas una placa tipo Arduino CNC Shield, no tienes ms que
conectar los drivers en el lugar adecuado.
Pero quizs ests 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 cmo conectar los pines del
Arduino Uno, al driver de los motores, limites, etc.

Esquema de coneexin de Arduino uno y gbrl

Cmo Hackear el GRBL y hacer tus propios comandos


Huy, aqu ya nos metemos en el siguiente nivel.

Si realmente quieres llevar tu proyecto al siguiente nivel, y tienes


algo de conocimientos de programacin, puedes ir un paso ms all y
escribir comandos de GCODE especficos para tu proyecto.
A qu me refiero? igual que la impresora 3D tiene comandos para
encender y apagar el extrusor o la cama caliente, tu robot puede
necesitar un comando especial para que empiece a bailar o para que
se autodestruya (muahahaha!)
Cmo puedes hacerlo? Muy sencillo.
En el cdigo 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 mquina, hay muy pocos.

Ah es donde meteremos nuestras garras.


Si quieres hacer algo especifico, tienes que asignarte un numero, por
ejemplo, el 1234, y escribir:
case 1234:
{
}
Ahi meteramos el cdigo de lo que queremos ejecutar cuando
recibimos el G-CODE M1234 ,por ejemplo, encender un pin de
Arduino, o lo que se te ocurra. (ya te veo pensando la cantidad de
cosas que puedes hacer con este truco!)
Como os he dicho, esto ya depende de vuestro proyecto, y de
vuestra capacidad para programar. La ventaja del GRBL es que ya
hace todo lo dems, como el parseado de los comandos o la lectura
del puerto serie.
Ahora te toca a t
Madre ma!!!
Si has llegado hasta el final del artculo, entonces s que tienes ganas
de usar GRBL y montar tu CNC casera.
Asi que ya sabes, slo necesitas unos perfiles de aluminio, unos
motores paso a paso, un Arduino, una controladora, y ganas de
montar tu propia mquina.

Porqu no escribes un comentario y nos cuentas qu te ha


parecido? Tu opinin es lo ms importante para mejorar el blog y los
contenidos futuros.
Por ejemplo, si ya conocas el GRBL, o si ya tienes una CNC, nos
puedes contar tu experiencia.
Y si adems, este post te ha ayudado a decidirte sobre tu prxima
CNC, tienes que decirlo!

Anda mungkin juga menyukai