Desarrollo de Soft para control de Fresadora CNC

Muchas gracias carferu.

Tienes toda la razón, la funcionalidad actual del gamepad es un poco escasa, pero como solo lo usaba para movimientos cortos pues ya me iba bien, ademas hay que tener en cuenta que el arduino tiene limitaciones de hardware, me gustan mucho las sugerencias que haces. la verdad que hasta ahora no tenia constancia de si alguien usaba el software, con lo que soy el único testeador, eso implica un desarrollo lento de la aplicación, y que este diseñada para mis necesidades, te animo a que pongas incidencias tanto de errores que puedas encontrar como de mejoras que se te ocurran, así los que estén interesados pueden opinar y yo puedo gestionar mejor el desarrollo.

Un saludo.

He puesto una nueva versión con cambios en la conexión, en esta nueva versión, el programa intenta conectar con el arduino durante 25 segundos, si consigue comunicarse antes de ese tiempo el programa continua normalmente, si durante los 25 segundos no ha conseguido comunicarse con el da un error.

Enlace de descarga: Software de Control de máquinas CNC con Arduino
Enlace de incidencias: CNC Control - Incidencias

Un saludo.

Buenas.

Hacía tiempo que no ponía nada aquí, pero no dejo de mirar a ver que novedades pones ngc1300, ahora ando en un par de cosas y tengo el láser otra vez averiado, así que la tengo un poco aparcada... tengo que ponerme con ella de nuevo, pero empezaré como tu, a utilizar como base un paper-duino y montar una solo placa, que por cierto ¿como llevas la que estabas proyectando?.

Bueno, a lo que iba. he estado probando las nuevas versiones de tu programa y me pasa algo raro al abrir los archivos. Yo los genero con el inkscape y la extensión laserengraber, todas la versiones anteriores a la 2 me los abren perfectamente, pero de la 2 en adelante me sale "El archivo no es válido" (sin tener el arduino conectado, solo para abrir el archivo). Lo veo extraño ya que siendo simple archivo de texto, no debería dar problemas, ¿no?.
Y ahora que me estoy fijando, si tengo un archivo seleccionado para abrirlo y en vez de abrir cierro la ventana, me sale el mismo mensaje de error.
Adjunto uno de los archivos por si le puedes echar un vistazo.

saludos.

2mm_1.gco (6.97 KB)

Hola miguel75

En la versión 2 implemente un sistema para evitar abrir archivos que no tuviesen gcodes, mañana miro a ver que ocurre con el archivo que me adjuntas.

Un saludo.

Haced la siguiente prueba con el firmware:

En el setup, antes de llamar a nada pon un delay de 1s.

Tengo una ligera sospecha de por donde van los tiros.

Sin la librería fastIO no vais a conseguir mucha velocidad con microstepping.

La siguiente prueba:
delay de 10 segundos y ver si aparece algo en el terminal.
Yo no puedo hacer las pruebas porque sólo uso la vinciduino con interfaz nativa USB y eso no pasa.

Hola a todos, de momento no he podido probar la nueva version de software de control en mi Arduino Mega, pero si he podido ver el problema de Miguel75. He visto el programa en código G y por lo que veo le falta referenciar al eje Z su programa. Aunque se que él no usa ese eje ya que por lo que veo corta con laser, se ve que el simulador necesita esta referencia.
Su programa al principio empieza :

G90
G21
G0 X102.6346 Y25.2278

M03
G1 F90.000000
G1 X118.7912 Y25.2278
G1 X118.7912 Y5.4486
G1 X102.6346 Y5.4486
G1 X102.6346 Y25.2278
G1 X102.6346 Y25.2278
M05

Le he puesto despues del G0 X102.6346 Y25.2278, un G0 Z-0.125, es decir, que la maquina baje 0.125 mm, que en su caso no sería mucho y el programa se abre y puedo ver la simulacion.

El programa quedaría en sus primeras lineas como sigue:
G90
G21
G0 X102.6346 Y25.2278
G0 Z-0.125
M03
G1 F90.000000
G1 X118.7912 Y25.2278
G1 X118.7912 Y5.4486
G1 X102.6346 Y5.4486
G1 X102.6346 Y25.2278
G1 X102.6346 Y25.2278
M05

Por si acaso lo adjunto para que lo probeis. He definido una pieza de 1001003 mm.
Tan pronto como pueda probaré tambien el cambio en el firmware que comenta fm.

Un saludo.

2mm_1.gco (6.97 KB)

Buenas noches/madrugada.

A falta de que ngc1300 mire a ver si tiene otra solución, carferu ha dado en el clavo. Lo he probado con la referencia al eje z y ya lo abre el programa sin problemas.
Muchas gracias.

ngc1300, dado que si no me equivoco soy él único que usa un láser, y que por ello mi cnc es un poco a medias por no tener nada del eje z, tampoco te compliques con este tema, edito el archivo, hago la referencia al eje y listo.
Lo que si te comento es que en la última versión, en la pestaña del gcode me desaparecen todos los comandos menos los M3 y M5, adjunto una captura para que veas a que me refiero.

Saludos.

Exactamente carferu.

Miguel75 ya he hecho los cambios para que no tenga en cuenta el eje Z a la hora de comprobar si el archivo es correcto, también he añadido las extensión gco para que aparezca con los archivos de gcode y no tengas que seleccionar todos los archivos en la pantalla de abrir.

En cuanto a lo que comentas de abrir el gcode, parece que modifique una linea en la ultima modificación que corregía la conexión que omitía el resto de lineas, fue un error no haberlo detectado, pero como solo estuve enfocado en la conexión se me paso por alto abrir un archivo.

he borrado el ultimo archivo y he colocado uno nuevo con el mismo nombre.

Enlace de descarga: jadiazg / cncControl / Downloads — Bitbucket
Enlace de incidencias: jadiazg / cncControl / issues — Bitbucket

fm:
Haced la siguiente prueba con el firmware:

En el setup, antes de llamar a nada pon un delay de 1s.

Tengo una ligera sospecha de por donde van los tiros.

Sin la librería fastIO no vais a conseguir mucha velocidad con microstepping.

hola fm.

He puesto un delay de 1 segundo como indicas y ya no me aparecen los caracteres extraños, incluso puedo mandar un texto al programa justo después del Serial.begin y aparece perfectamente. Si es cierto que el programa detecta que el firmware le manda algo nada mas establecer la conexión, aunque en el firmware no lo hago, pero debe ser una cadena vacía con lo que no tiene importancia.

he modificado el programa y espero que con lo que comentas y la modificación ya pueda conectar todo el mundo de forma correcta.

Un saludo y muchas gracias por la ayuda.

Miguel75:
Buenas.

Hacía tiempo que no ponía nada aquí, pero no dejo de mirar a ver que novedades pones ngc1300, ahora ando en un par de cosas y tengo el láser otra vez averiado, así que la tengo un poco aparcada... tengo que ponerme con ella de nuevo, pero empezaré como tu, a utilizar como base un paper-duino y montar una solo placa, que por cierto ¿como llevas la que estabas proyectando?.

Hola Miguel75

Con respecto a la placa que lo integra todo, después de mucho pegarme con los programas de diseño conseguí meterlo todo en una sola cara, frese una placa, pero era la primera placa que intentaba fresar y no me quedo del todo bien, ademas se me rompió la fresa (hay que tener mucho cuidado con ellas). Hace un par de semanas pedí nuevas fresas y ahora estoy a la espera de recibir nuevas fresas para fresar las pistas y hacer taladros, en cuanto la tenga comento algo.

Te pongo unas imágenes de como es la placa, tanto de la cara de arriba como la de abajo.

Un saludo.

Hola ngc1300, enhorabuena por la buena aportación que estás realizando.

Quería comentarte una dudilla, un poco tonta seguro, he acabado practicamente mi cnc y quería probarlo, estaba probando tu software y es super chulo, pero estoy intentando abrir ficheros de ejmplo gcode y siempre me da un error y no puedo cargarlos. sabes cual es el motivo. Los ficheros tienen una extensión .gcode ¿verdad? porque no me los reconoce...
Y si le doy a todas las extensiones, les doy todos los archivos y fuerzo a abrir cualquier fichero de los visto aquí y me da error me dice "El archivo no es valido"
¿Alguna sugerencia?

Muchas gracias por esta formidable aportación

Bueno, tal y como sospechaba esta relacionado con el hecho de que el AVR se resetea cuando se establece una conexión serie y entra el bootloader.

hola fariceos.

Esta mañana he sustituido la versión 2.0.3 por una nueva versión que debería solucionar los problemas a la hora de abrir archivos, aun así si tienes algún problema envíame el archivo y analizo a ver que esta ocurriendo.

De todas formas este error puede ocurrir por que yo analizo el archivo para comprobar que tiene gcodes, ya que un usuario añadió una incidencia de que se podía abrir cualquier archivo. para detectar esto yo compruebo que en el archivo aparezcan los códigos M, G, X, Y, hasta esta mañana el Z también, si alguno de los anteriores no aparece a excepción del Z el archivo lo toma como erróneo y no se puede abrir.

Un saludo.

Esta tarde me he liado la manta a la cabeza y he desmontado la electrónica de cnc, con el shield que hice para el arduino no he conseguido hacer funcionar ni el firmware de fm ni tu programa ngc1300. He montado lo esencial en una proto con la configuración que traía el firmware y a probar.
Gracias por las modificaciones del eje z y la extensión de mis archivos ngc1300, respecto al software... bueno, solo puedo decir que es una pasada, aun me quedan cosas que probar pero de momento me gusta el funcionamiento.

Esta noche a ir diseñando la placa del paperduino... una pregunta, ¿con que lo conectas al pc?, yo había pensado en un "USB 2.0 to UART TTL 6PIN Connector Module Serial Converter CP2102" que tengo de hace tiempo guardado por ahí.

Saludos.

hola miguel75

Estoy un poco confuso, no se si te funciona o no el software, ya que por un lado me dices que no has conseguido hacerlo funcionar, pero por el otro indicas que de momento te gusta el funcionamiento. Me gustaría saber si sigue siendo un problema de conexión, ya que con la ultima versión tendría que poder conectar todo el mundo.

en cuanto a la conexión del paperduino, en principio tenia pensado usar un cable de los de nokia que creía tener por casa de un antiguo movil, pero al final no lo pude encontrar a si que como el ordenador que uso para la cnc tiene puerto serie, usare un paperRS232.

Es que lo he resumido tanto que al final lo he liado más de la cuenta.

El programa a mi me conecta en unos 5 segundos más o menos, la verdad salvo el problema con la configuración de los pines que te comenté en su día, siempre me ha conectado bien.

Aunque tu programa y el firmware con mi configuración de pines conectaban bien, lo que no me funcionaba en el shield que me hice para mi cnc eran los motores. O no se movían o solo un poco, y cuando cargo un archivo y le doy a iniciar, activa el rele y pasa por todo el gcode en un segundo y los motores ni caso.
Por eso al final he sacado los drivers, los he pinchado en una proto, y los he conectado directamente al arduino y con la configuración por defecto del firmware de fm que tienes colgada, va perfectamente. Ahora es cuando he podido probar bien tu programa y en lo que a mi respecta de momento va perfecto.

hola NGC1300,
he estado haciendo pruebas con un grabado y el programa ha funcionado muy bien. Se me ocurren un par de cambios relacionados con el botón de fijar el origen de coordenadas y el de desplazarse al origen. Te he creado un par de sugerencias para que puedas estudiarlas y ver si merece la pena implementarlas.

un saludo y gracias.

Hola ngc1300, despues de dos semanas siguiendo el foro, pero sin poderme poner a hacer pruebas con mi maquina y el arduino Mega, hoy he probado la versión 2.0.3 de tu programa y he añadido la modificacion que comentaba fm al firmware.
En la pestaña CNC del firmware he añadido el delay de 1 segundo, quedando de la siguiente manera

void setup()

{
delay (1000);

// Initialise all the electronics
Serial.begin(57600);

El resultado ha sido que al conectarme a 57600, el led L hace un parpadeo pequeño, ya no se queda los diez segundos encendidos y conecta la máquina, saliendome dos ok seguido en el CNCControl. El problema ha sido cuando he bajado la velocidad a 19200, ya que el programa no llega a conectarse con la placa. Se ve que no hay manera de que funcione a 19200. He probado desde la IDE de arduino y en principio a 19200, el led se enciende los 10 segundos y cuando se apaga si le envío un M114 y un M115 responde sin problema.

En cuanto al programa la barra de tiempo para la conexion con la máquina está muy bien. Te comento que he probado a cambiar el idioma por curiosidad a ingles, y cuando he cerrado el programa y lo he vuelto a abrir seguía todo en español.
En cuanto posibles mejoras te pongo alguna de las que he pensado para que la gente opine:

  • Inclusion de un pulsador de emergencia en la pantalla del CNCControl para parar de golpe el programa en caso de riesgo.Modificacion en el firmware para detener las ordenes, y posibilidad de configurar una entrada física del Arduino para poner una seta de emergencia al lado de la maquina. Yo esto lo tengo hecho pasando la alimentacion de +24Vdc de los drivers de los stepper por la seta, pero no deja de ser un apaño.

-Configuracion de botones del gamepad, segun quiera el usuario para poder poner en marcha el motor, para poner en ejecucion el programa, etc. Esto ya lo había sugerido en un anterior post.

  • Posibilidad de desplazamiento continuo de los motores desde el gamepad. Tambien sugerido anteriormente.

  • Añadir posibilidad de mas patillas de entrada y salida dependiendo del modelo de Arduino. Sugerido en otro post.

  • Teclas para hacer ceros independientes en cada eje. Esto a veces es interesante ya que igual en una pieza, la cota cero del eje z, no coincide con el Y0 e Y0.

  • Previsualizacion en una ventana pequeña al seleccionar un fichero de codigo G, antes de abrir el fichero.Vamos un previsualizar el fichero antes de abrirlo.

  • Posibilidad de configurar un directorio de trabajo, donde tenga habitualmente mis ficheros de codigo G. Aunque pueda navegar por todo el disco duro para buscar en otra ubicacion.

  • Simulación del programa en codigo G. Esto sería una de las ultimas modificaciones a hacer, ya que creo llevaría bastante tiempo.

Espero que la gente vaya opinando sobre todas estas opciones, y diga que le parecen.

Un saludo.

Hola carferu!!

carferu:
Hola ngc1300, despues de dos semanas siguiendo el foro, pero sin poderme poner a hacer pruebas con mi maquina y el arduino Mega, hoy he probado la versión 2.0.3 de tu programa y he añadido la modificacion que comentaba fm al firmware.
En la pestaña CNC del firmware he añadido el delay de 1 segundo, quedando de la siguiente manera

void setup()

{
delay (1000);

// Initialise all the electronics
Serial.begin(57600);

El resultado ha sido que al conectarme a 57600, el led L hace un parpadeo pequeño, ya no se queda los diez segundos encendidos y conecta la máquina, saliendome dos ok seguido en el CNCControl. El problema ha sido cuando he bajado la velocidad a 19200, ya que el programa no llega a conectarse con la placa. Se ve que no hay manera de que funcione a 19200. He probado desde la IDE de arduino y en principio a 19200, el led se enciende los 10 segundos y cuando se apaga si le envío un M114 y un M115 responde sin problema.

La ultima modificación que tiene el programa para conectar es realizar la conexión de varias formas, lo primero que hace es durante 5 segundos espera recibir un dato del arduino, en el caso de no recibir ningún dado, durante 25 segundos va mandando un "/" esto el firmware lo interpreta como un comentario y responde con un OK, si durante este tiempo no ha recibido un ok, da la conexión como erronea, en caso de recibir un ok envía un "M115" para obtener datos del firmware.

En tu caso concreto y como no tengo una mega no puedo depurar a ver que ocurre, aunque en el peor caso el proceso de conexión dura 30 segundos yo creo que es tiempo suficiente, en la próxima versión del programa intentare implementar un log a ver si así podemos trazar que esta pasando, de todas formas no ocurre nada por que te conectes a 57600, incluso diría yo que seria mejor ya que mas rápida es la comunicación con el arduino.

carferu:

  • Inclusion de un pulsador de emergencia en la pantalla del CNCControl para parar de golpe el programa en caso de riesgo.Modificacion en el firmware para detener las ordenes, y posibilidad de configurar una entrada física del Arduino para poner una seta de emergencia al lado de la maquina. Yo esto lo tengo hecho pasando la alimentacion de +24Vdc de los drivers de los stepper por la seta, pero no deja de ser un apaño.

El tema de la emergencia es complicado ya que el programa no controla los motores, si no que es el firmware, y hay momentos en los que el firmware trabaja de forma independiente, y durante estos momentos yo no puedo tener comunicación con el, a no ser que queramos sacrificar mucho el rendimiento. La solución mas sencilla que se me ocurre es crear un puente entre los finales de carrera y el pulsador de manera que cuando demos al pulsador active todos los finales de carrera con lo que la maquina se parara. Yo esta acción si que la puedo capturar desde el programa y parar a su ver el programa (en la nueva versión que estoy trabajando hay parte de esto, utilizar una sonda de contacto para fijar el eje Z).

Seguramente esta solución que te indico es la que implementare yo en mi maquina.

carferu:
-Configuracion de botones del gamepad, segun quiera el usuario para poder poner en marcha el motor, para poner en ejecucion el programa, etc. Esto ya lo había sugerido en un anterior post.

Es una buena idea y lo tengo puesto en la lista de cosas a hacer, pero me gustaría desarrollarla un poco mas, haber si hay mas sugerencias de la gente al respecto, que tareas son posibles programar, cuantos botones, etc.

carferu:

  • Posibilidad de desplazamiento continuo de los motores desde el gamepad. Tambien sugerido anteriormente.

Esta opción la llevo pensando desde hace tiempo, en la siguiente versión no estará, pero es muy probable que este en la siguiente.

carferu:

  • Añadir posibilidad de mas patillas de entrada y salida dependiendo del modelo de Arduino. Sugerido en otro post.

Esta en la lista de cosas que tendrá la siguiente versión. añadiré todos los pines del arduino mega, así como una opción de personalización de las varillas para los que usan husillo.

carferu:

  • Teclas para hacer ceros independientes en cada eje. Esto a veces es interesante ya que igual en una pieza, la cota cero del eje z, no coincide con el Y0 e Y0.

Actualmente estoy trabajando en poder asignar el eje Z con una sonda de contacto, ademas de poder utilizar los finales de carrera para asignar los limites, con lo que todo esto estará cambiado, y se podrá asignar cada eje de forma independiente.

carferu:

  • Previsualizacion en una ventana pequeña al seleccionar un fichero de codigo G, antes de abrir el fichero.Vamos un previsualizar el fichero antes de abrirlo.

Supongo que te refieres a pre visualizar la representación 3D, es una opción que he pensado muchas veces, pero en ficheros muy grandes esto supone un tiempo considerable y por eso no lo he implementado, esperemos a ver que opina el resto de usuarios.

carferu:

  • Posibilidad de configurar un directorio de trabajo, donde tenga habitualmente mis ficheros de codigo G. Aunque pueda navegar por todo el disco duro para buscar en otra ubicacion.

En principio el programa almacena la ultima posición donde se recupero un archivo, pero me parece una buena opción, lo incluyo en la lista de cosas a hacer en la siguiente versión.

carferu:

  • Simulación del programa en código G. Esto sería una de las ultimas modificaciones a hacer, ya que creo llevaría bastante tiempo.

A que te refieres con simulación? la representación gráfica en 3D muestra exactamente por donde va a pasar la maquina ya que se usa el mismo gCode para generarlo, cuéntame con mas detalle en que estas pensado.

A ver si creo un archivo con los cambios que tendrá cada versión que voy planificando para tener un mejor seguimiento.