Desarrollo de Soft para control de Fresadora CNC

Me tomo el atrevimiento de abrir un nuevo hilo, con el objetivo de potenciar el desarrollo de un programa específico para controlar una fresadora CNC, especialmente con las características que poseen aquellas que hemos construido y/o puesto a punto mediante el uso de este mismo foro.

Invito a todos aquellos que crean interesante la propuesta y sobre todo a aquellos que ya están trabajando en el tema desde el hilo sobre construcción y calibrado de CNC, ya que es todo parte de lo mismo y solo pretendo organizar el desarrollo!

Aún no se como se hace para citar formalmente a los diferentes usuarios (para que se enteren de la existencia de este hilo), pero intentaré darle difusión!

espero tomen la posta, ya que yo soy un simple interesado en tener un programa y no tengo la capacidad técnica para llevarlo adelante!

Gracias por al menos interesarse en leer la entrada y saludos para toda la comunidad!

PD.:Espero cualquier sugerencia y o consejo, ya que no soy muy experimentado en el uso del foro!

Oido cocina!

Wuenas¡¡¡¡
Aunque no escriba últimamente sigo leyendo vuestros progresos cada poco días, voy liado en muchas cosas prioritarias pero añorando el volver a compartir aprendizaje.
Suerte con el hilo.
Un saludo a todos

He añadido otra versión del programa en la que se corrigen los siguientes errores:

Modifica el tamaño de la pantalla para que se vea de forma correcta a una resolución de 1024x768 (issue #8).
Detecta la versión del firmware y si es superior la 1.0.9 manda comando G92 con la ultima posición de la maquina en caso contrario fija los ejes a 0
Corrige error al leer los comentarios (issue #1).
Avisa si no esta posicionado en las coordenadas 0,0,0 cuando se inicia un mecanizado (issue #2).
Establece la velocidad de conexión por defecto en 19200 (issue #7).
Corrige error en botón inicio, al parar el programa se quedaba en pausa (issue #6).
Corrige error al abrir mas de un archivo, no se representaba en 3D el contenido de este ultimo (issue #4).
Corrige error de no leer los códigos I y J en las lineas G2 y G3 (issue #9).

He desactivado la opción de referenciar con respecto a una pieza ya que me ha dado algún problema, cuando lo tenga solucionado lo volveré a activar.

El firmware que yo uso (1.0.10) tiene una modificación en el G92, he hecho un pullrequest en el repositorio de fm, pero si el quiere intento colgarlo con el programa, ahora estoy modificando el G0 cuando termine de hacer los test hago un pullrequest otra vez.

un saludo a todos

Enterado y bajando!

cuando tenga novedades aviso!

SALUDOS!

Me tomo el atrevimiento de colgar el enlace a las descargas, por si alguien mas quiere bajarlo y no lo encuentra!

https://bitbucket.org/jadiazg/cnccontrol/downloads

Ahora si, saludos!

Buenas a todos!!

Gracias por colgar el enlace animbius la otra vez se me paso.

He colgado otra versión con los siguientes cambios:

  • Se ha activado el seguimiento de la linea por la que va el programa mecanizando.
  • Se ha activado el referencia do respecto a una pieza.
  • Ahora una vez se inicia un mecanizado detecta si no se esta en las coordenadas 0,0,0 y si es así avisa, pudiendo establecerlos desde la misma pantalla de aviso o cancelar el mecanizado.

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

También he colgado la versión del firmware modificada por mi con los siguientes cambios:

  • Código G92: Ahora si se envía solo establece el origen a 0,0,0 y si se envían coordenadas se establecen estas como origen.
  • Código G00: Cuando se recibe un codigo G00 la maquina se mueve a la máxima velocidad configurada en el configMe.h y si recibe el código G01 la maquina se mueve a la ultima velocidad establecida.

Un saludo.

Buenas!

Fantástico trabajo ngc1300, el programa está muy bien.
Estoy probandolo para ver si lo puedo utilizar con mi cnc láser pero tengo un problema que te quería comentar a ver si se te ocurre algo.
El tema es que intento modificar en el firmware los pins que yo utilizo en el shield que me hice para mi arduino, pero cuando utilizo el programa de control se me queda bloqueado y no puedo hacer nada. Si cargo el arduino con el firmware tal como lo has publicado, tu programa funciona perfectamente... y tan solo cambio los pins de los drivers y los finales de carrera, nada más.
Tengo:
Windows 7 64b.
Ide Arduino ERW 1.0.5 también he probado con arduino-1.5.4-r2, con el mismo resultado.

También tengo una pequeñísima sugerencia, es una tontería en realidad pero no podrías hacer que recordara el directorio de trabajo?

Un saludo.

Miguel75:
Buenas!

Fantástico trabajo ngc1300, el programa está muy bien.
Estoy probandolo para ver si lo puedo utilizar con mi cnc láser pero tengo un problema que te quería comentar a ver si se te ocurre algo.
El tema es que intento modificar en el firmware los pins que yo utilizo en el shield que me hice para mi arduino, pero cuando utilizo el programa de control se me queda bloqueado y no puedo hacer nada. Si cargo el arduino con el firmware tal como lo has publicado, tu programa funciona perfectamente... y tan solo cambio los pins de los drivers y los finales de carrera, nada más.
Tengo:
Windows 7 64b.
Ide Arduino ERW 1.0.5 también he probado con arduino-1.5.4-r2, con el mismo resultado.

También tengo una pequeñísima sugerencia, es una tontería en realidad pero no podrías hacer que recordara el directorio de trabajo?

Un saludo.

Yo tampoco pude hacer andar el soft con el firmware que vengo usando (de Fm con mi configuración), pero no lo probé con el firm en bruto como está subido, ya que como estoy haciendo unos cortes importantes con la máquina, no quise apurarme a hacer pruebas. Cuando termine de fresar este trabajo voy a toquetear el firm a ver si arranca!

Miguel75:
Buenas!

Fantástico trabajo ngc1300, el programa está muy bien.
Estoy probandolo para ver si lo puedo utilizar con mi cnc láser pero tengo un problema que te quería comentar a ver si se te ocurre algo.
El tema es que intento modificar en el firmware los pins que yo utilizo en el shield que me hice para mi arduino, pero cuando utilizo el programa de control se me queda bloqueado y no puedo hacer nada. Si cargo el arduino con el firmware tal como lo has publicado, tu programa funciona perfectamente... y tan solo cambio los pins de los drivers y los finales de carrera, nada más.
Tengo:
Windows 7 64b.
Ide Arduino ERW 1.0.5 también he probado con arduino-1.5.4-r2, con el mismo resultado.

También tengo una pequeñísima sugerencia, es una tontería en realidad pero no podrías hacer que recordara el directorio de trabajo?

Un saludo.

La verdad que me tiene preocupado el hecho de que no podáis hacer funcionar el programa, he probado con el firmware 1.0.9 y con el firmware modificado 1.0.11 y no he podido detectar el problema, Yo en mi cnc tengo los pines cambiados también con respecto a la configuración base del firmware con lo que no es problema de cambiar los pines, el programa no controla nada del firmware solo se limita a mandarle ordenes, con lo que la configuración de los parámetros de la maquina no influye. Creo que debe ser un problema de comunicación.

No me ha quedado muy claro si te funciona con mi firmware o no. Si me pudieses explicar un poco mas que es lo que ocurre a ver si puedo detectar que es lo que pasa, te cuento que es lo que tendría que pasar cuando conectas y me dices que hay de diferente con lo que te ocurre.

Cuando le das al botón de conectar el programa busca al arduino en el puerto especificado en la configuración y se comunica a la velocidad indicada en la configuración, normalmente 19200, una vez hecho esto en la ventanita de abajo-izquierda (log) aparecerán 3 ok. Si vas a la pestaña de información tendrás datos del firmware, la versión y conectado en color verde.

Si aparece todo esto puedes ir a la pestaña control manual y mover cualquier eje, si le das a mover un eje los botones se desactivan y en la ventanita de log muestra las coordenadas que has mandado, una vez recibe el ok del arduino se vuelven a activar los botos y aparece el ok en la ventanita de log.

A ver si podemos detectar este problema, intentare de implementar un log interno por si esta detectando algún error en el programa a ver si se detecta que es lo que pasa.

Estoy haciendo la prueba tal como dices, y voy explicando mejor.
Ahora mismo el arduino tiene la versión del firmware de fm que has puesto junto al programa (sin modificar por mi).
ventana del log:

ÿ
ok
ok
ok
Enviado G1 X-1.0 F1500
ok
Enviado G1 X-11.0
ok
Enviado G1 Y10.0
ok

En la pestaña de información, tal como dices. La información del firmware y el conectado en verde.

Ahora con el ide 1.0 he realizado estos cambios, ni siquiera he guardado el archivo, solo lo he cargado en el arduino.

// X axis configuration
#define X_STEP_PIN      2  // Step control PIN.
#define X_DIR_PIN       5  // Direction control PIN.
#define X_MIN_PIN       9  // min detection switch PIN
#define X_MAX_PIN       9  // max detection switch PIN
#define X_ENABLE_PIN    8 // Driver enable pin

// Y axis configuration
#define Y_STEP_PIN      3  // Step control PIN.
#define Y_DIR_PIN       6  // Direction control PIN.
#define Y_MIN_PIN       10  // min detection switch PIN
#define Y_MAX_PIN       10  // max detection switch PIN
#define Y_ENABLE_PIN    8 // Driver enable pin

// Z axis configuration
#define Z_STEP_PIN      4  // Step control PIN.
#define Z_DIR_PIN       7 // Direction control PIN.
#define Z_MIN_PIN       11  // min detection switch PIN
#define Z_MAX_PIN       11  // max detection switch PIN
#define Z_ENABLE_PIN    8 // Driver enable pin


#define MOTOR_PIN       12 // Spindle motor control pin
#define FAN_PIN         A0    // Fan control pin
#define LCD_BL_PIN      A1 // LCD backlight control pin

He ejecutado el programa, le doy a conectar y ahí se queda bloqueado. El interruptor no se pone en verde y no puedo acceder a ninguna de las pestañas, de hecho tengo que irme al administrador de tareas para poder cerrar el programa ya que no me deja ni cerrarlo.
He intentado volver a cargar el firmware sin modificar (con tu programa colgado), pero el ide me dice que el com4 (en mi caso) está en uso, se queda pillado en el inicio de comunicación con el arduino, y luego con el firmware sin tocar va bien... no lo entiendo, ¿solo por cambiar los pins?.

Espero que te sirva para algo y ver donde está el problema.

Cuando el programa esta colgado, lo que esta haciendo es esperar a que el arduino le de un ok, y tiene el puerto abierto, solo un programa puede tener el puerto abierto a la vez, por eso te da error el ide de arduino, con los datos que me das voy a probar a ver que ocurre

he depurado el programa y por alguna razón que desconozco con esa combinación de pines el arduino no detecta la llegada de información por parte del programa, seguiré trabajando en el tema a ver por que con esos pines no funciona.

Bueno, después de leer tu último mensaje he probado otra cosa. La configuración de pines era la que utilizo en mi cnc, pero como el firmware que utilizo tiene botones específicos de play, pause, reset y un solo final de carrera por eje, el shield que me hice no me va a servir de mucho, y como el software me da muchos errores con el gcode hasta cancelando el trabajo por si solo, no me importa cambiar los pines y hacer uno nuevo... resumiendo

// X axis configuration
#define X_STEP_PIN      5  // Step control PIN.
#define X_DIR_PIN       6  // Direction control PIN.
#define X_MIN_PIN       2  // min detection switch PIN
#define X_MAX_PIN       2  // max detection switch PIN
#define X_ENABLE_PIN    12 // Driver enable pin

// Y axis configuration
#define Y_STEP_PIN      7  // Step control PIN.
#define Y_DIR_PIN       8  // Direction control PIN.
#define Y_MIN_PIN       11  // min detection switch PIN
#define Y_MAX_PIN       11  // max detection switch PIN
#define Y_ENABLE_PIN    12 // Driver enable pin

// Z axis configuration
#define Z_STEP_PIN      9  // Step control PIN.
#define Z_DIR_PIN       10 // Direction control PIN.
#define Z_MIN_PIN       A0  // min detection switch PIN
#define Z_MAX_PIN       A0  // max detection switch PIN
#define Z_ENABLE_PIN    12 // Driver enable pin

#define MOTOR_PIN       13 // Spindle motor control pin
#define FAN_PIN         3    // Fan control pin
#define LCD_BL_PIN      4 // LCD backlight control pin

He probado con esta configuración y va perfecto... es extraño que la que no funciona sea tan solo por el orden de la configuración :astonished:

Otra cosa, en la ventana de trayectorias tan solo sale el área de trabajo (creo), pero al trabajar no sale el diseño.

Al final después de mucho probar he detectado que por algún motivo con unos pines tarda mas que con otros en conectar, ademas tambien con algunos pines cuando conectas el arduino manda un carácter extraño que yo tenia que procesar, pero con esa combinación de pines no lo hace así, aunque no me gusta mucho la solución ha sido retardar un poco la conexión y omitir la lectura de ese carácter que manta el arduino hasta que encuentre por que a veces lo manda y a veces no.

He puesto una nueva versión con esos cambios, ademas también ya recuerda el ultimo sitio donde se abrió un archivo.

Descarga: jadiazg / cncControl / Downloads — Bitbucket
Incidencias: jadiazg / cncControl / issues — Bitbucket

Espero que ahora si a todos les conecte bien.

Siendo deciros que la versión del firmware que coloque tiene un bug, que no he podido detectar hasta hoy que me he puesto con la maquina, he borrado el incorrecto y he vuelto a subir el correcto.

El error es debido a que por error comprimí la ultima versión en la que estaba trabajando y no estaba probada al 100%, en vez de la que tenia probada en la maquina.

Espero no vuelva a ocurrir y perdón por las molestias.

Justo estaba por escribirte algunos errores que habia detectado, porque estoy trabajando y probando el soft.

De todas maneras te cuento lo que recopilé y si alguno de los errores es por esto que vos comentas, simplemente no le prestes atencion.
La buena noticia es que con el firmware modificado la maquina se conecta perfecto con el soft!
estoy haciendo las pruebas con el firm V1.0.11 y el soft 1_2_6, que son los que me aparecen en la pagina para descargar.

1- Los botones de control manual correspondientes al eje X, estan al revés.
2-la visualización está rotada, es decir visualiza al 0,0,0 arriba a la derecha y los ejes creciendo para abajo y para la izquierda.
3-No lee los comandos de las curvas (ya lo habia comentado)
4-No interpreta las lineas de codigo que tengan algún comentario entre parentesis, por ejemplo "G01 Z-5.000000 F1000.0(Penetrate)"
5-El tamaño de la pantalla no entra en una netbook (ya lo habia comentado)

Como sugerencias te diría:
1-Que la visualización durante el proceso de fresado muestre paso a paso lo que realiza y ya no el resultado final del trayecto.
2-Que ademas de recordar el ultimo directorio de trabajo, recuerde el ultimo material usado (en mi caso uso siempre el mismo).

Y me queda la duda de que son los tiempos que muestra en la solapa de informacion, los calcula segun la velocidad?

Estoy muy contento con como funciona el soft! es realmente facil e intuitivo, y sobre todo muy especializado para la tarea.

muy bueno!

SALUDOS!!

PD.: ya esta actualizado el archivo para descargar???

Lo primero de todo agradecerte que estés probando el programa, aunque yo lo intento probar todo, muchas cosas no las puedo probar del todo, ya que al no tener la maquina donde hago el programa es un poco mas difícil. Y aunque intento probar el programa en la maquina antes de colgarlo, a veces se me escapa alguna cosa.

Te contesto a todas tus preguntas.

El bug del firmware esta en que no hace caso al comando G92(la maquina no fija el origen 0,0,0), este comando en la primera versión que modifique lo hice de una forma que no me terminaba de convencer, ya que el código no estaba muy optimizado, hice una modificación para intentar optimizar mas el código y es esta ultima que yo iba a probar la que se colo en el RAR en vez la primera que tenia muy probada, pero en el enlace actual ya esta corregido, el erróneo lo borre para que no hay confusiones.

1- Los botones estaban colocados así, para poder relacionar el botón con el movimiento de la maquina, si le dabas al botón de la derecha la maquina mueve el eje X a la derecha y si le das a la izquierda lo mueve a la izquierda, pensé en esta forma por que es mas fácil para un novato no tener que pensar si derecha es mas o menos, le das al botón para donde quieres que se mueva la maquina, pero encuentro que puede ser mejor ponerlos como dices ya que hasta ahora es como la gente lo esta usando, con lo que la nueva versión ya los trae cambiados, pero es un cambio pequeño que puedo modificar en cualquier momento si os gusta mas mi idea.
2- la visualización es otro aspecto que pensé que era mejor ver como lo vas a ver tu en la maquina, claro que todo esto depende de como sea la maquina de cada uno, la mía por ejemplo es como la de la pagina de txapuzas, con lo que si yo miro la maquina de frente y miro las trayectorias me coincide con lo que hará la maquina, si lo rotase como tu dices no lo vería igual, ya que en mi maquina coincide el 0,0,0 arriba a la derecha. Creo que voy a parametrizar la visualización para que si otro usuario mira la maquina desde otro punto lo pueda ver igual que le quedara en su maquina.
3- Corregido a ver si estaba vez si que hace bien las curvas
4- Este apartado es un poco complicado, los comentarios si que los interpreta, pero en este caso que me pones no hay espacio entre los números y el "(", que es lo que yo utilizaba para diferenciar bloques, ahora eso ya lo he modificado, pero tengo que hacer cambios en este apartado, ya que hay muchos tipos de códigos G que pueden ser muy distintos los unos de los otros con lo que esto ira evolucionando poco a poco.
5- El tamaño de la pantalla lo modifique a 989x 691 es un tamaño suficiente para una una resolución mínima de 1024x768 yo en mi portátil lo tengo así, de todas formas dime que resolución usas y así intento hacer algo para resoluciones mas pequeñas.

La opción de visualizar lo que esta haciendo la maquina, esta pensado para hacerlo mas adelante, ahora quiero estabilizar esta versión que no haya bugs importantes y se pueda usar bien, una vez hecho esto iré a por las mejoras, al fin y al cabo lo que esta haciendo se ve en la propia maquina.

La opción de que recuerde las dimensiones del material ya esta hecho en esta nueva versión, es curioso pero ayer pensaba en esto mismo.

En cuanto a los tiempos.
tiempo proceso: es el tiempo que llevamos ejecutando el mecanizado actual.
tiempo restante: es la estimación del tiempo que queda para terminar, para no ralentizar mucho el programa esta estimación por ahora no es muy precisa y se calcula haciendo la media del tiempo empleado en ejecutar las lineas del programa y extrapolando al total de lineas, como he dicho antes quiero trabajar mas en esta opción una vez este estable el programa para afinar mas en la estimación.

Estoy muy contento de que te guste como esta quedando el programa, la idea es como dices algo sencillo y que nos ayude ha hacer las cosas un poco mas fáciles.

He colocado una nueva versión con esas correcciones.

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

Si queréis podéis usar el enlace de incidencias para crear incidencias de los errores o mejoras para el programa, a si podemos llevar un control y comentar sobre ellas.

Gracias otra vez a todos.

Se me olvido comentar una cosa con respecto a la visualización, se puede rotar, hacer zoom y trasladar con el ratón, botón izquierdo para rotar, botón derecho para trasladar y ruleta central para zoom, mas adelante tenia pensado poner botones también.

EXCELENTE ngc1300!!!!
estoy bajando la nueva V para probarla cuanto antes!
Coincido con vos en lo de estabilizar y pulir la versión para luego mejorarla.

Respecto a los botones, entiendo lo que me comentas, el tema creo que es el siguiente, en mi cnc los ejes corresponden el X crece para la derecha y el Y crece para arriba, es decir con el origen abajo a la izquierda, como sería comúnmente una terna de coordenadas. Sin dudas esto va a variar según las diferentes máquinas, pero creo que la convención mas lógica sería esa. Claro es mi opinión.

Respecto a la pantalla, la netbook que uso con la cnc tiene 1024x600. Pero entiendo que sea muy chica como para la visualización y demás. Por tal vez tener la opción de modificarla o simplemente de poder deslizar dentro de la ventana. no se cuan complejo sería cualquiera de las dos opciones....

SEGUIMOS!!!!