Problemas Arduino uno + CNC Shield V3

Buenas, lo primero las presentaciones, ya que no encontré un apartado a tal efecto lo hago aquí mismo y disculparme sino es el sitio correcto ...

Me llamo Francisco José, me encuentro en Madrid(España) y acabo de meter la cabeza en un proyecto de construcción de una CNC de 3 ejes, construida con perfiles de aluminio, 1 arduino uno + Cnc shield v3 con drv´s 4988 de pololu y 3 motores nema 17 de 3,1v y 2,5 A.

Me he encontrado con un problema para el que no encuentro solución, he cargado GRBL 8c en el arduino, y como programas de control utilizo Universal Gcode Sender y CNC_Control, después ajustar la limitación de corriente de los motores en los 4988, configurar GRBL con pasos, avances y demás zarandajas consigo arrancar los motores y que estos funcionen pero lo hacen en un solo sentido, tanto si mandas ordenes de avance positivo como negativo los 3 ejes solo hacen avances en sentido horario, se cumplen los pasos de cada motor sin problemas pero hace caso omiso de la dirección de los mismos.

Ya no se que pensar, problema de Drivers ..?, de la Shield ...?, del Arduino ..?, si podeis orientarme os estaría agradecido pues llevo 4 días peleando con este tema y no saco nada en claro ...

Os dejo como tengo configurado el GRBL por si hubiera metido la pata en alguna configuración ya que es la primera vez que trasteo con el ...

$0 = 200.000 (x, step/mm)
$1 = 200.000 (y, step/mm)
$2 = 200.000 (z, step/mm)
$3 = 15 (step pulse, usec)
$4 = 1000.000 (default feed, mm/min)
$5 = 1000.000 (default seek, mm/min)
$6 = 0 (step port invert mask, int:00000000)
$7 = 25 (step idle delay, msec)
$8 = 20.000 (acceleration, mm/sec^2)
$9 = 0.050 (junction deviation, mm)
$10 = 0.100 (arc, mm/segment)
$11 = 25 (n-arc correction, int)
$12 = 3 (n-decimals, int)
$13 = 0 (report inches, bool)
$14 = 1 (auto start, bool)
$15 = 0 (invert step enable, bool)
$16 = 0 (hard limits, bool)
$17 = 0 (homing cycle, bool)
$18 = 0 (homing dir invert mask, int:00000000)
$19 = 25.000 (homing feed, mm/min)
$20 = 250.000 (homing seek, mm/min)
$21 = 100 (homing debounce, msec)
$22 = 1.000 (homing pull-off, mm)

Aunque tengo colocados finales de carrera (normalmente abiertos), también he realizado pruebas con ellos, activandolos y también activando el ciclo homing y al no funcionar los tengo deshabilitados en el GRBL pues aunque el soft si los detecta y para al encontrase con ellos en cualquier eje, existe el problema de que una vez los encuentra no cambian de dirección los motores y fuerza la mecánica en la misma dirección en lugar de inviertirla.

Cualquier idéa o correción será bienvenida pues me encuentro totalmente desorientado en este momento, gracias y saludos !!!

20170101_145804[1].jpg

Parece un problema de que no le llega la señal dir a los drivers necesaria para para que el motor gire en sentido contrario,pero por otro lado es raro que no funcione en ningun eje pues la señal viene de 3 pines diferentes.La version de grbl que usas es antigua y pudiera ser no compatible con la version v3 del shield o que hubieran cambiado el mapeo de algunos pines de una version a otra,prueba con una version mas moderna de grbl ,a ver que pasa:

Hola Jose, gracias por la respuesta, te comento :

La Shield v3.0 que es la que tengo es compatible con GRBL 8c, no es compatible con la 9 ya que para esta versión cambian algunos pines, para utilizar las últimas versiones de GRBL es necesario contar con una versión de Shield 3.1 o superior pues cambian los pines 11 y 12 para poder controlar la fresadora por PWM, según pude comprobar en estos post de los cuales dejo el link.

Modificación CNC Shield 3.0 para adaptarla a GRBL 9

http://cnccontrol.byethost13.com/smf/index.php?topic=813.0

Experiencias negativas con Shield 3.0 y GRBL 9

http://forum.arduino.cc/index.php?topic=419904.0

ya que no funciona probaré a hacer las modificaciones que se detallan en el primer post linkado para adaptarla a GRBL 9 y a ver que pasa, lo que me extraña es que ocurra lo mismo en los 3 ejes que la señal de DIR sea obviada ya que solo se mueven en sentido horario, solo consigo hacer que se muevan en sentido antihorario invirtiendo la conexión de los motores a la Shield, claro está que en este caso solo mueven hacia ese sentido obviando la otra dirección ...

Saludos.

La mia tambien es la version 3.00 y esta funcionando con la version grbl 0.9 del enlace que te puse.
Lo que puedes hacer es simplemente probar la libreria que te enlazo y probar los ejes ,si funciona bien ,descartas fallos de hardware....

Hola Jose !

Te comento que como puse en el post anterior realizé la modificación de pines en la CNC Shield 3,0, le he cargado GRBL 9j y cambió el comportamiento ahora funcionan los ejes Y/Z con normalidad pero el X sigue haciendo lo mismo que hacía, como ya me tenía un poco mosca tanto el arduino como la Shield (les he hecho perrerías mientras investigaba como funcionaba el asunto) pues esta mañana me he acercado a por otro arduino y otra shield con 4 4988 nuevos (30 pavos tienen la culpa y así tengo para hacer mas inventos), en esta segunda tanda ya más o menos sabía como había que hacerlo y cargando GRBL 8c ha funcionado a la primera sin problemas respondiendo los 3 ejes como deben hacerlo (esto creo que indica que a las otras tarjetas no le gustaron algunas de las perrerías que les jugué), de todas maneras ya jugaré con ellas ...

Ahora estoy con otro dilema, a saber :

A ver si con un poco veis algo de luz con este tema, ahora que todo parecía funcionar no me aclaro para calibrar y/o ajustar la posición 0 de máquina, tengo instalados finales de carrera en ambos extremos de los 3 ejes y funcionan o al menos los detecta la máquina, realiza el homing primero en el eje Z y luego en el X e Y simultaneamente, el problema viene despues de hacer el homing, cualquier movimiento que le envio no se realiza y me indica "Invalid Statement" utilizando Universal GCode Sender y "Alarm Lock " utilizando CNCControl, no se si estoy realizando bien el proceso de Homing o debo configurar algo más que el GRBL, os dejo como lo tengo por si alguien viera la luz y me indicase el camino que no encuentro, gracias anticipadas !!!

Configuración GRBL 8c (utilizo esta versión ya que la CNC Shield 3.0 es compatible con ella y no con la 9j bailan pines 11 y 12)

$0 = 200.000 (x, step/mm)
$1 = 200.000 (y, step/mm)
$2 = 200.000 (z, step/mm)
$3 = 15 (step pulse, usec)
$4 = 350.000 (default feed, mm/min)
$5 = 500.000 (default seek, mm/min)
$6 = 0 (step port invert mask, int:00000000)
$7 = 25 (step idle delay, msec)
$8 = 25.000 (acceleration, mm/sec^2)
$9 = 0.050 (junction deviation, mm)
$10 = 0.100 (arc, mm/segment)
$11 = 25 (n-arc correction, int)
$12 = 3 (n-decimals, int)
$13 = 0 (report inches, bool)
$14 = 1 (auto start, bool)
$15 = 0 (invert step enable, bool)
$16 = 1 (hard limits, bool)
$17 = 1 (homing cycle, bool)
$18 = 0 (homing dir invert mask, int:00000000)
$19 = 25.000 (homing feed, mm/min)
$20 = 250.000 (homing seek, mm/min)
$21 = 100 (homing debounce, msec)
$22 = 2.000 (homing pull-off, mm)

Saludos !!!

Bueno entre pitos y flautas como el GRBL 8 seguía dándome problemas he realizado la inversión de pines en la nueva Shield y he cargado GRBL 9j, algo solucionó pero no acaba de ir como debe ...

Ahora los ejes funcionan correctamente y hace el homing perfecto pero una vez realizado el homing muevo los ejes y esporadicamente salta "Hard Limit" sin que se haya activado ningún límite de carrera, no creo que sea ruido ya que los finales de carrera son mecánicos aunque podría ser, que opinión teneis sobre el asunto ...?

Saludos !

Hay unos parametros que limitan los recorridos aunque no lleguen al final carrera mecanico,($130,$131 y $132),mira a ver que tienes:

Si Jose, los tuve encuenta y están configurados, te pego la configuración ya que dicen que cuatro ojos ven más que dos ...

$0 = 15 (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 = 1 (hard limits, bool)
$22 = 1 (homing cycle, bool)
$23 = 0 (homing dir invert mask:00000000)
$24 = 350.000 (homing feed, mm/min)
$25 = 500.000 (homing seek, mm/min)
$26 = 250 (homing debounce, msec)
$27 = 2.000 (homing pull-off, mm)
$100 = 200.000 (x, step/mm)
$101 = 200.000 (y, step/mm)
$102 = 200.000 (z, step/mm)
$110 = 500.000 (x max rate, mm/min)
$111 = 500.000 (y max rate, mm/min)
$112 = 500.000 (z max rate, mm/min)
$120 = 100.000 (x accel, mm/sec^2)
$121 = 100.000 (y accel, mm/sec^2)
$122 = 100.000 (z accel, mm/sec^2)
$130 = 194.000 (x max travel, mm)
$131 = 179.000 (y max travel, mm)
$132 = 69.000 (z max travel, mm)

Saludos !

De tus valores ,no me cuadran los pasos por milimetro ,que diametro usas de varilla roscada? que micropasos en el driver?el motor supongo que sera de 200 pasos.Otro problema que puedes tener es que estes perdiendo pasos si la mecanica no esta fina o los motores no tienen la intensidad para mover la maquina ,que por lo que vi en las fotos te ha quedado un poco "troncho" si como creo las varillas lisas son de 8mm(medaque tendras problemas de flexiones y pandeos...) por lo que la maquina creeria que esta en un sitio en el que no esta.Con los motores desconectados tendrias que poder mover los ejes rotando las varillas con la mano sin mucho esfuerzo.

Si la maquina es mas bien tipo "IKEA", pero va bastante fina, muevo los ejes con dos dedos sin problemas, para no sufrir "Backs" el arrastre esta hecho con un perfil de aluminio en el cual alojé 2 tuercas que se compensan una con la otra para no tener holguras, quizás si exista un poco de pandeo en el eje Y por varillas de acero 8 mm calibrada la cual posiblemente sustituya por 10 ó 12 mm, en general en cuestión de holguras no presenta practicamente ninguna así como tampoco resistencia al arrastre, hoy le he puesto la cama y como puedes ver el aspecto cambia ...

https://drive.google.com/open?id=0B1Mi5VKFxWjaVnh4X1lKazBxaDA

no creo que sea desfase de posiciones, me inclino mas bien a ruido eléctrico en los finales de carrera, para estos utilizé retales de cablecillos que tenía desperdigados, sustituiré estos por cable apantallado y veremos que pasa.

Saludos !

Se me olvidó ponerte los pasos y la medida de varilla roscada, los pasos estoy con pasos completos no le he puesto micropasos de momento y la varilla roscada es de 8 mm, en principio no he medido exactamente el avance estoy en ello con pruebas y demás zarandajas pero en principio es de 1 mm por vuelta, los motores son NEMA 17 DE 1,8º Y 200 pasos, concretamente el modelo 42BYGHW811 de 3,1v y 2,5 A (los 3 ejes iguales)

Saludos !

Diste en el clavo Jose !

Uno que toma las medidas como le viene en gana jejeje, ahora si es correcto ...

$0 = 15 (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 = 1 (hard limits, bool)
$22 = 1 (homing cycle, bool)
$23 = 0 (homing dir invert mask:00000000)
$24 = 350.000 (homing feed, mm/min)
$25 = 500.000 (homing seek, mm/min)
$26 = 250 (homing debounce, msec)
$27 = 2.000 (homing pull-off, mm)
$100 = 160.000 (x, step/mm)
$101 = 160.000 (y, step/mm)
$102 = 160.000 (z, step/mm)
$110 = 500.000 (x max rate, mm/min)
$111 = 500.000 (y max rate, mm/min)
$112 = 500.000 (z max rate, mm/min)
$120 = 100.000 (x accel, mm/sec^2)
$121 = 100.000 (y accel, mm/sec^2)
$122 = 100.000 (z accel, mm/sec^2)
$130 = 250.000 (x max travel, mm)
$131 = 230.000 (y max travel, mm)
$132 = 90.000 (z max travel, mm)

Ya no salta "Hard Limit" ni nigún aviso durante las carreras de los ejes, ahora a pillar un cacho madera y a probar si la cosa me ha salido medio bien !!!

Saludos !

Creo que el paso de la varilla M8 es 1.25mm por vuelta por lo que efectivamente 200/1,25 = 160 ,pero te recomiendo los micropasos porque la maquina va mas fina y consigues mas resolucion ,me parece que para el 4988 tenias que poner los 3 jumpers para conseguir 1/16 .Los pasos por mm serian (200*16)/1,25=2560 .

Si exacto con los tres jumpers puestos esa sería la resolución, antes de meterme en ello prefiero afinarla sin micropasos, cuando la tenga "a punto" le meteré micropasos ya que considero que es más fácil "afinar" con saltos grandes que pequeños.

Por otro lado si que deberé cambiar las varillas de acero calibradas a un mayor diámetro ya que sobre todo en el eje Y flexan debido al peso del "andamio" de soporte para el eje X y Z, posiblemente tiraré a 12 mm en cuanto localize rodamientos lineales para dicho diámetro.

Gracias por los apuntes Jose fueron provechosos.

Saludotes !