Con la adquisición de la CNC 3018 y despues de un par de prototipos de maquinas DIY CNC, que en un princiio expuse, y despues opte por omitir, me quedo con lo aprendido y por eso quiero hacer un resumen de mis experiencias como viene siendo gala en mis exposiciones.
Consideraciones:
Primero quiero remarcar mi mala experiencia con el shield V3 de arduino uno y Shield V4 de arduino nano,pues solo me dieron dolores de cabeza , el primero por las interferencias emi y el segundo por el error de diseño de su placa. Pero señalar que la shield v3 me sirvio para aprender el pinedo de los drivers A4988 y TMC2208.
Por eso aconsejo que compreis cualquier control board tipo ” Woodpecker” CNC Router” como la que lleva nuestra CNC 3018 y se puede conseguir por unos 25€ si quereis montar vuestra propia DIY CNC. Este router viene actualmente con la versión 1.1F de GRBL.
puesto que la CNC3018 viene con su cableado de fabrica y terminales de insersión de una sola posición no tendras problemas a la hora de conectar los motores. Pero vamos a suponer que has comprado la placa aisladamente y tienes varios motores perdidos por los cajones de tu taller.
En la imagen de abajo, vemos un cablaedo tipico de motores paso a paso. Son cuatro hilos, puesto que un motor bipolar tiene dos bobinados. Cada fabricante puede o no respetar el orden de los hilos. Lo normal es que los pares negro-verde y rojo- azul correspondan a cada bobina, pero a veces hay que cruzar el azul y el verde. Siempre podremos identificar los bobinados utilizando un tester.

Sobre los tipos de motores paso a paso que se suelen usar.





Como vemos, los motores tienen diferencias en su voltaje de funcionamiento, pero eso no nos debe preocupar porque los drivers llevan unos ajustes que van reflejar una tensión de referencia que será menor en función del consumo de corriente del motor. Personalmente ese ajuste lo hago partiendo del motor sin giro,sin fuerza amentando poco el valor hasta obtener la fuerza deseada . Como ejemplo indicare que para un motor de 1,2A el valor del potenciometro para un TMC2208 es de 0,43V y para un motor de 0,4A como el popular 17HD48002H-22B el ajuste es de 0,17V

Configuración para una CNC DIY
Supongamos el montaje de una CNC casera de doble eje Y movible y varillas roscadas T8 , o sea 8mm de avance por revolución. Los valores en negrita son los modificados. La maquina dispondría de tres hards limit y utiliza el ciclo homing.
VERSION GRBL 1.1F
$0 – Pulso de paso, microsegundos
Los controladores paso a paso están clasificados para una cierta longitud mínima de pulso de paso. Consulte la hoja de datos o simplemente pruebe algunos números. un valor de 10 useg es la mejor opción.
$1 – Retardo de inactividad del paso, milisegundos
Cada vez que sus steppers completen un movimiento y se detengan, Grbl retrasará la desactivación de los steppers por este valor. O bien, siempre puede mantener sus ejes habilitados (alimentados para mantener la posición) configurando este valor al máximo de 255 milisegundos. Nuevamente, solo para repetir, puede mantener todos los ejes siempre habilitados configurando $ 1 = 255. Los motores consumiran la corriente maxima que se haya ajustado previamente.
El tiempo de bloqueo de inactividad del paso a paso es el tiempo que Grbl mantendrá los pasos bloqueados antes de desactivarlos. Dependiendo del sistema, puede establecerlo en cero y deshabilitarlo. En otros, es posible que necesite de 25 a 50 milisegundos para asegurarse de que sus ejes se detengan por completo antes de desactivarlos. Esto es para ayudar a tener en cuenta los motores de las máquinas a los que no les gusta permanecer encendidos durante largos períodos de tiempo sin hacer nada. Además, tenga en cuenta que algunos controladores paso a paso no recuerdan en qué micropaso se detuvieron, por lo que cuando vuelva a habilitarlos, es posible que vea algunos pasos “perdidos” debido a esto. En este caso, simplemente mantenga sus motores paso a paso habilitados a través de $1=255.
Settings and sample values | Description |
---|---|
$0=10 | Step pulse, microseconds |
$1=25 | Step idle delay, milliseconds |
$2=0 | Step port invert, mask |
$3=5 | Direction port invert, mask |
$4=0 | Step enable invert, boolean |
$5=0 | Limit pins invert, boolean |
$6=0 | Probe pin invert, boolean |
$10=2 | Status report, mask |
$11=0.010 | Junction deviation, mm |
$12=0.002 | Arc tolerance, mm |
$13=0 | Report inches, boolean |
$20=0 | Soft limits, boolean |
$21=1 | Hard limits, boolean |
$22=1 | Homing cycle, boolean |
$23=1 | Homing dir invert, mask |
$24=25 | Homing feed, mm/min |
$25=500 | Homing seek, mm/min |
$26=250 | Homing debounce, milliseconds |
$27=1 | Homing pull-off, mm |
$30=1000 | Max spindle speed, RPM |
$31=0. | Min spindle speed, RPM |
$32=0 | Laser mode, boolean |
$100=400 | X steps/mm |
$101=400 | Y steps/mm |
$102=400 | Z steps/mm |
$110=1000 | X Max rate, mm/min |
$111=1000 | Y Max rate, mm/min |
$112=600 | Z Max rate, mm/min |
$120=30 | X Acceleration, mm/sec^2 |
$121=30 | Y Acceleration, mm/sec^2 |
$122=30 | Z Acceleration, mm/sec^2 |
$130=185 | X Max travel, mm |
$131=135 | Y Max travel, mm |
$132=47 | Z Max travel, mm |
$3=5…Segun la mascara los ejes estan invertidos excepto el eje Y. Si cambiamos el orden de insersión,seria lo contrario. El hecho deque el eje Y este invertido o no se debe a que al mverse el eje positivo se invierte por dicha razon. Recordemos que optamos por positivo los movimientos a la derecha y hacia arriba
Setting Value | Mask | Invert X | Invert Y | Invert Z |
---|---|---|---|---|
0 | 00000000 | N | N | N |
1 | 00000001 | Y | N | N |
2 | 00000010 | N | Y | N |
3 | 00000011 | Y | Y | N |
4 | 00000100 | N | N | Y |
5 | 00000101 | Y | N | Y |
6 | 00000110 | N | Y | Y |
7 | 00000111 | Y | Y | Y |
$10=2, status report
Por ejemplo, el informe predeterminado con la posición de la máquina y sin configuración de informes de datos de búfer es $ 10 = 1. Si se desean la posición de trabajo y los datos del búfer, la configuración será $ 10 = 2.
Report Type | Value | Description |
---|---|---|
Position Type | 0 | Enable WPos: Disable MPos: . |
Position Type | 1 | Enable MPos: . Disable WPos: . |
Buffer Data | 2 | Enabled Buf: field appears with planner and serial RX available buffer. |
$21=1 ,activa los “hard limits” que hayas instalado. Veremos que por cada eje hay dos pares de pines, ya que se podrían instalar hasta seis, correspondientes a los finales del movimiento de cada uno.Cuidado con esta placa que viene con un error, ya que donde indica el eje Z es el eje X y viceversa.
$22=1, activa el ciclo Homing.
$23=1, nos indica segun la siguiente tabla que ejes se invertiran para que en Home la maquina vaya a la esquina que deseemos. En mi caso quiero que la posición Homesea la esquina superior izquierda, o sea que solo quiero que se invierta el movimiento X, que tiene que quedarse a la izquierda,porque tanto el eje Y como el Z buscaran el tope en el sentido positivo.
Homing direction | Value |
---|---|
X+ Y+ Z+ | 0 |
X- Y+ Z+ | 1 |
X+ Y- Z+ | 2 |
X- Y- Z+ | 3 |
X+ Y+ Z- | 4 |
X- Y+ Z- | 5 |
X+ Y- Z- | 6 |
X- Y- Z- | 7 |
$24 a $27, son parametros de velocidad, tiempo de rebote con el tope y distancia de separacion del limite cuando se separe.
$30 y $31 ,nos daran la velocidad maxima y minima del spindle en RPM.Son los limites superior e inferior de la velocidad de giro que limitaran parametros posteriores.
$100 a $102, son valores de ajuste que no podemos equivocarnos, lo que no debemos olvidar es que estos motores necesitan 200 pasos para completar 360 grados de giro, y que un paso equivale a 1,8 grados. Lo que nos define es la cantidad de pasos que necesita para desplazarse 1 mm-. Tambien necesitamos saber el tipo de varilla roscada que utilizamos: si marca T8, quiere decir que en una revolucion se desplaza 8 mm. Luego con una simple division de 200/8= 25, entonces de donde sale el valor 400?.
Asi aprovechamos para entender lo del “Microstepping”. Si queremos que el motor no sea ruidoso a bajas velocidades, los drivers tienen unos pines marcados como ms, que si estan a nivel alto nos daran el maximo numero de micropasos posible que son 16. O sea que un paso lo divide en 16 micropasos, entonces 1 revolución seria 200×16=3200 micropasos que dividido entre 8 mm de deslazamiento se convertiran en 400 micropasos para poder desplazarse 1 mm.
La CNC 3018 utiliza varillas roscadas T4, entonces este valor se ajusta a 800, repetimos 800 micropasos necesarios para completar 1 mm de desplazamiento.
resumen;
T8 | 1 revolucion/8mm deslazamiento | 3200/8=400 micropasos / mm de desplazamiento |
T4 | 1 revolucion/4mm dsplazamiento | 3200/4=800 micropasos / mm de desplazamiento |
MICROSTEP 16(16*200=3200 micropasos)
Cada revolución de nuestro motor estara relacionado con un desplazamiento igual al cociente 3200/valor $100.
$100 | mm | revoluciones |
400 | 8 | 1 |
800 | 4 | 1 |
x | 3200/x | 1 |


$110 A $112…..Estableceremos la velocidad maxima que podrán alcanzar los motores de los tres ejes en mm/minutos-
$120 a $122....Valor de la aceleracion, se establecio en 30 porque se comprobó que es aceptable.
$130 a $132…. Los valores introducidos son aproximadamente los recorridos maximos de los ejes, pero solo tienen interes si se activan los soft limits que en mi caso no lo hice pero prefiero ponerlos porque corresponden a los parámetros de ‘Coordenadas de la máquina’ en grblControl.
APLICACIONES USO GRBL
Fundalmente,creo que se diseño pensando en las maquinas CNC, pero podemos buscar otras aplicaciones donde se necesite un control muy ajustado del movimiento que se quiera transmitir usando los comandos jogging a traves de un enlace serial.
Instalación en Arduino Nano:
- Buscaremos la ultima release;
https://github.com/gnea/grbl/releases

- Descargue y extraiga la carpeta ZIP que contiene el firmware GRBL desde la página de GitHub en su PC.
- Buscar carpeta grbl y copiala a arduino librerias
- Haga clic en el menú Archivo. Luego ve a Ejemplos > grbl > cargar grbl. Aparecerá una nueva ventana de Arduino IDE.
- Conecta tu Arduino a la computadora.
- Asegúrese de que la placa se muestre como Arduino Nano
Es muy importante limpiar la memoria eeprom antes de cargar el software grbl, para ello iremos otra vez al menu Archivo y “ejemplos” y buscaremos EEPROM, desplegamos y aparecerá “limpiar eeprom”.