Desarrollo de Soft para control de Fresadora CNC

He añadido una nueva versión del programa, los cambio son los siguientes:

  • Modifica la pantalla para resoluciones inferiores a 1024x768.
  • Cuando se modifica el gcode y se abre un nuevo archivo pregunta si se desean guardar los cambios.
  • muestra una ventana cuando se carga un archivo indicando el estado de la carga.

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

Animbius has podido probar como te queda la pantalla en esta nueva versión?, la he ajustado a 600 puntos de alto, si pones la barra de tareas que se oculte de forma automática se debe ver toda la ventana.

He añadido una nueva versión, como tiene bastantes mejoras la he etiquetado como versión 2. En principio la cuelgo como beta ya que hay una mejora (compensar las distintas alturas de la base) que aunque he probado, quiero tenerlo unos días mas de prueba y a ver si alguno de vosotros la puede probar también.

Los cambios son los siguientes:

  • Añade al titulo el nombre del archivo que se ha abierto.
  • Añade la posibilidad de tener mas de un idioma, (he añadido el ingles aunque la traducción no es muy buena).
  • Añade un parámetro para establecer cada cuando tiempo se leen las temperaturas.
  • Modifica la forma de trazar las trayectorias en el dibujo para que tome como partida la esquina inferior izquierda en vez de la superior derecha, ademas el eje X es positivo hacia la derecha y negativo a la izquierda.
  • Corrige movimiento de gamepad (cuando se movía a derecha disminuía el eje X) se ha cambiado para que lo aumente.
  • Modifica la pantalla de configuración para poner los parámetros del fichero de configuración del firmware, también se ha añadido un botón con el que se puede modificar el firmware con esta configuración(solo modifica, no carga en arduino).
  • Cambia la pantalla de configuración sacando los limites a la pantalla principal y se añade funcionalidad para compensar las diferentes alturas de la base.
  • Añade asistente para asignar los limites de la maquina.
  • Añade asistente de configuración de alturas de la base.
  • En la pantalla de limites se puede cambiar las coordenadas de origen, re calculando los nuevos limites y re posicionando la maquina a las nuevas coordenadas.
  • Modifica el botón de establecer origen para que cuando se pulsa re calcule los limites con respecto a la nueva posición del 0,0,0.
  • Comprueba que el archivo que se va a abrir es un archivo con Gcodes (issue 13).

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

Es mi primer mensaje , hace mucho tiempo que estoy leyendo para poder fabricar una modesta Cnc , y me decidí a registrarme para agradecer el esfuerzo que haces para que las cosas funcionen .

se que no es demasiado , pero comencé con la idea de fabricarla a base de prueba y error , me he peleado con ubuntu a mas no poder , (3 semanas ya..) y con tu programa llevo 15 minutos y parece que he tocado el cielo con los dedos jajjaja

solo tengo muchas dudas , y todas son con respecto a si hay alguna modificación en la conección entre el arduino ( uno en mi caso) y los A4988, o el programa está echo para que se pueda utilizar en base a por ejemplo el txapu_pololu.

si alguien puede decirme por donde estan las presentaciones.... voy encantado , pero creo que mi alegria fué mas fuerte que la falta que se pueda cometer por no presentarme.

saludos a todos !!!

Me alegra que te sea útil el programa. No entiendo muy bien tu pregunta, pero intento contestarte, el programa no controla directamente los drivers de los motores,eso lo hace el firmware, en principio el programa es compatible con el firmware de txapuzas tanto la versión que usa pololus como la otra, así como con la versión 1.0.9 de fm, hay una versión 1.0.11 que es la misma de fm con algún cambio, yo te recomiendo esta ultima. Pero como te he dicho antes puedes usar cualquiera de ellas aunque perderás funcionalidad dependiendo de cual uses, para mas dudas no dudes en preguntar.

Entonces mi pregunta queda contestada , ya que la duda que tenia era sobre la conección entre los pololu y el arduino (tanto los pines de arduino como los de pololu)

Otra pregunta que si puedes contestarla me sacarás de una duda muy grande que tengo, y es sobre el tipo de motor (es)
Mi duda es especifica : quiero comprar unos motores de 2V , 1.2A y 1.7Ohm en el bobinado (nema 17) los cuales aun no los he comprado por temor a que no me sirvan.
Van a ir controlados por los A4988 , pero tengo dudas de que el pololu pueda con ellos y que no los queme , tanto el controlador como el motor; Tengo entendido que con el potenciometro que llevan los pololu se pueda regular el amperaje que se le entrega al motor y que los motores pueden trabajar a un poco mas de voltaje de lo que dicen que trabajan , pero tengo un poco de miedo a quemarlos.
¿que recomendacion de motor me da usted para montar una CNC de aproximadamente 40 x40 de area de trabajo para fresado de MDF y algun metacrilato? .

Desde ya muchas gracias por su colaboración ya que encuentro información si , pero un poco confusa y es dificil encontrar a gente con ganas de explicar !

saludos

El esquema es correcto, solo tienes que descargarte el firmware (CNC_V1.0.11.rar) y configurar el archivo configMe.h con los parámetros de tu maquina, desde la versión 2 también se puede modificar este archivo de forma mas sencilla. Una vez modificado se carga en el arduino.

En cuanto a los motores, lo mas importante es el torque que tengan, el voltaje normalmente se utilizan 12V y sobre todo no pasarse del amperaje que soporta el motor, se buscan motores que tengan mucha fuerza para que no se salten pasos y se pierda precisión, aquí hay muchas opciones en cuanto a amperaje que soportan y toque, eso ya depende de tu presupuesto a la hora de elegir unos u otros. Para los motores que indicas, yo pienso que van un poco justos los pololu, estos drivers ya van forzados a 1 A y los motores que indicas son 1.2A con lo que van a sufrir, puedes probar a ver que torque dan a 1A, pero yo no subiría los pololu mucho mas, de todas formas yo no soy el mas indicado para recomendarte, es mejor que te mires bien el siguiente post Montaje CNC, calibrar ejes configuración y software - Proyectos - Arduino Forum ya que es mas especifico del montaje de la maquina, es muy largo pero merece la pena leerlo entero, es en el que yo me base para montar mi maquina, allí puedes preguntar que hay muchos expertos en el tema. Este post esta mas orientado al programa que yo estoy desarrollando para el manejo de la maquina.

Espero que te haya sido de ayuda.

Un saludo.

Perdon por la demora en contestar .

TE cuento mis problemas ahora mismo con tu soft , tal vez puedas orientarme sobre mis errores...

Sobre Win7 funciona el que no es beta , la version 1.2.8 conecta con el arduino; la version beta no llega a conectar , se queda bloqueada completamente y tengo que matar el proceso para tener otra vez el control , me dá que el problema es entre el arduino y el programa , ¿algo de las velocidades de coneccion tal vez?

Ahora directamente sobre el problema que tengo con el que si conecta y envia ordenes al arduino y este , al parecer le envia un mensaje de ok, ya que aparece en la pantalla.

te cuento como lo hago y que error tengo:
Comienzo por enchufar al usb al arduino , acto seguido abro el sketch para cargarlo , modifico los pines a las de mi maquina

#define X_STEP_PIN      4  // Step control PIN.
#define X_DIR_PIN       5  // Direction control PIN.
#define X_MIN_PIN       0  // min detection switch PIN
#define X_MAX_PIN       0  // max detection switch PIN
#define X_ENABLE_PIN    8 // Driver enable pin

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

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

luego de Cargar correctamente el sketch , enciendo la fuente de los motores y los pololu , (pin verde y negro)
En ese preciso instante, los motores quedan como ``electrizados´´ y zumbando, como un ruido a electricidad; Inicio el programa e intento hacer que se muevan los motores pero no hay forma , no se mueven.

Te cuento otra cosa , el unico sketch que pude hacer funcionar fué el rep rapnew firmware sobre txapucnc , el unico problema que tengo es que el eje X no deja de moverse cuando se le da la orden Z=1.0 , hace como microsteppings por lo que el sistema funciona (los ejes X e Y giran sin problema y al parecer sin perder pasos. )

Si necesitas mas datos , por favor , no dudes en pedirme lo que sea , 8fotos o video)

saludos y felices fiestas.

Siento el retraso pero con las fiestas es difícil sacar algo de tiempo.

La conexión se realiza igual en todas las versiones del programa, no he hecho cambios en ese aspecto desde hace unas cuantas versiones, según me cuentas parece que sea un problema con el puerto y la velocidad de conexión, mas bien el puerto diría yo.

No me queda claro que versión del firmware usas, creo por lo que he leído que usas una de reprap pero esas versiones de firmware no están probadas con el software, en principio funciona con las versiones de fm y con la versión modificada que hay colgada donde el software Software de Control de máquinas CNC con Arduino.

La ventaja de la versión 2 beta es que si le indicas donde esta la carpeta del firmware puedes configurar la velocidad y los pines y el los modifica en los ficheros del firmware, luego tienes que poner este firmware en el arduino con el IDE de arduino.

En principio los pines no los tienes mas solo que usas distintos pines para el enable, con poner el mismo vale, ya que o están todos los motores funcionando o están todos parados(Aunque el motor no se mueva esta funcionando ya que tiene que mantener la posición).

Una vez has cargado el firmware modificado en el arduino, arrancas el programa, configuras el puerto (donde te detecta windows el arduino) y la velocidad. Ahora puedes darle al botón de conectar, si todo va bien aparecen 3 ok en el log y en la pestaña de información te sale información del firmware y la versión de este. Ahora ya puedes mover los ejes y cargar un archivo con un gcode para mecanizar lo.

Si no te funciona así no dudes en volver a preguntar.

Hola a todos, soy nuevo en este foro y me ha parecido interesante el tema de desarrollar un soft para controlar una
fresadora CNC con arduino. Actualmente poseo una pequeña fresadora casera, la cual manejo desde ubuntu. Tengo cargado el
firmware de Txapuzas CNC y la controlo desde su software. Al ver el desarrollo que estas preparando me he decidido a
probarlo y me he encontrado con algún problema que paso a comentar. En primer lugar el arduino que estoy usando es un
MEGA 2560, así que cuando me he puesto a configurar las patillas de control desde la aplicacion de la version 2.0 para modificar
el firmware, de acuerdo a como tengo configurada mi maquina con el firmware de Txapuzas, me he encontrado con que me
faltaban patillas para poder asignar, en principio esto no ha sido problematico ya que las he cambiado directamente desde
la interfaz de Arduino, he compilado y cargado sin problema.
Despues me he puesto desde el monitor del puerto serie de la interfaz de Arduino a enviar ordenes al mismo y este me ha
respondido sin problema a ordenes de G-Code, moviendo mi maquina, por cierto he notado una mejoria en la aceleración de los motores. El problema ha llegado cuando me he conectado desde el software (la version 2.0), el cual se queda bloqueado al darle al interruptor para que se conecte al arduino. Estoy usando una version de 64 bits de windows 7, he probado a ejecutar el programa incluso en un equipo con windows xp, pero el resultado es el mismo. Tambien he probado con el software cuya version es anterior a la 2 y el resultado tambien ha sido negativo. En cuanto al puerto y la velocidad de conexión tengo configurada la misma que desde la interfaz del Arduino, por supuesto nunca uso la interfaz de Arduino y la vuestra al mismo tiempo ya que se que hay que dejar el puerto COM libre. No se si tendrá que ver con la versión de Arduino.
Como el firmware que habeis desarrollado he visto que esta generado a partir de la idea de la cnc de Txapuzas, me ha
dado por probar el firmware vuestro sobre el programa de Txapuzas y el resultado ha sido satisfactorio, funcionando la
maquina correctamente. En principio el firmware de Txapuzas necesita para comenzar a funcionar que se envíe al Arduino
desde el software de control el comando start, pero como al vuestro no, en principio el Arduino ha funcionado
correctamente. Me gustaria poder manejar la maquina desde vuestro software ya que la opcion de poder usar un gamepad, como la forma de visualización de la pieza final es bastante mejor que el software de Txapuzas. Se que falta ir mejorando alguna cosilla, como tema que he leido en el foro de ver la trayectoria de la herramienta de la maquina segun se va ejecutando el codigo.
Ademas la opcion de configurar el firmware añadida a la última version me parece bastante interesante.
Saludos.

Si me puedes mandar la configuración, puerto, velocidad y pines que usas, pruebo a ver que puede estar pasando, eres el segundo que me indica este error, yo puedo conectar perfectamente tanto en la maquina de desarrollo que es un windows 7 64 bits como en el equipo de la CNC que es uno de 32 bits.

La verdad no tengo mucho feedback del programa, tuve un usuario que me hizo de tester pero ahora hace tiempo que no se conecta, y aunque hay algunas descargas no se si a la gente le funciona bien y lo usa o simplemente no le funciona y no lo vuelven a tocar, intentare poner también un fichero de log para poder detectar mejor estos errores. También modificare la posibilidad de asignar mas pines para los que tengáis el arduino mega.

Un saludo y gracias por probar el programa.

He estado mirando el código a ver que puede pasar, y el hecho de que se quede bloqueado el programa es por que esta esperando a recibir datos del arduino, en el proceso de conexión ademas de abrir el puerto lo que hace es pedir datos del firmware para así saber que versión es y poder utilizar algunas funciones que no están en el firmware original, para esto mando los mandatos "M115" y "M105" uno para ver la información del firmware y otra para ver la temperatura.

El caso es que el programa hasta que no recibe la informacion del firmware y obtiene la version no continua, esto ocurre si el arduino no responde con la version del firmware, pudiendo producirse por dos motivos:

  • que el firmware no sea el de fm o variaciones del mismo.
  • que no responda de forma correcta con el dato, (ya me paso en versiones anteriores que con diferentes combinaciones de pines hacia cosas raras en la comunicación.)

si quieres puedes probar desde el IDE de arduino a mandar esos dos mandatos a ver que te responde. en cuanto tenga un ratito modifico esa parte del programa para que no pase eso y solo informe al usuario.

un saludo

Hola de nuevo ngc1300, ante todo mis felicitaciones por el software y el firmware que has desarrollado.
Respondiendo a tu post, la configuracion de mis pines es la siguiente, aunque no dispongo de pantalla LCD y de ventilador de momento, les he asignado los pines que te pongo mas abajo.

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

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

// Z axis configuration
#define Z_STEP_PIN 12 // Step control PIN.
#define Z_DIR_PIN 13 // Direction control PIN.
#define Z_MIN_PIN 7 // min detection switch PIN
#define Z_MAX_PIN 6 // max detection switch PIN
#define Z_ENABLE_PIN 17 // Driver enable pin

#define MOTOR_PIN 19 // Spindle motor control pin

#define FAN_PIN 20 // Fan control pin

#define LCD_BL_PIN 18 // LCD backlight control pin

El puerto que uso es el COM2, y la velocidad 19200.

En principio no creo que sea problema de los pines definidos, si no que igual es la forma en que se habilita desde el software el puerto COM para comunicarse con el Arduino, ya que este tanto desde la interfaz de Arduino como desde la de Txapuzas se comunica sin problema. No se muy bien como habilitas el puerto al iniciarse el programa, pero tiene la pinta de que al conectarse uno al Arduino segun se pulsa el interruptor, se abre el puerto, pero como el Arduino no devuelve un ok, se queda el software esperando una respuesta. Quizas sería interesante según se produce la primera conexión, enviar por ejemplo un codigo que reconozca el Arduino y devuelva un ok. En el software de Txapuzas envían la palabra start, la cual la tienen definida en el firmware para que la reconozca el Arduino, yo simplemente creo que se podría probar con un G92, es decir en la primera conexión al darle al interruptor hacer un cero de maquina, ya que esta accion no importaria hacerla al principio de todo según arrancamos el programa, ya que despues moveriamos la maquina para posicionarla donde queremos empezar a mecanizar y haríamos un cero nuevo.

Otra duda que me gustaria preguntarte es si simplemente con conectar un gamepad de cualquier fabricante, el programa lo reconoce y puedo mover la maquina desde él. De momento y dado que no he podido conectarme no lo he probado, pero tengo la intencion de comprame uno , ya que es una opción que me interesaría bastante porque desde el software de Txapuzas no existe esa posibilidad.

Un saludo y muchas gracias.

Hola de nuevo ngc1300, he visto tus recomendaciones y te paso a comentar mis resultados.
Según abro el monitor serie desde el IDE de Arduino oigo un pequeño click en mis motores, y a continuacion si envío un M115 el interfaz ide no responde nada y al cabo de unos 10 segundo vuelvo a escuchar otro click en mis motores, es como si se quedara pillado.

Si por el contrario según abro el monitor del puerto serie pongo como primer comando el M105 el Arduino responde bien en concreto:

T:0.00
ok

y si luego le envío un M115, me responde :

FIRMWARE_NAME:ELFCNC FIRMWARE_URL:https://bitbucket.org/fmalpartida/cnc-controller VERSION: 1.0.11
ok

El problema veo que viene si se envía primeramente un M115, ya que si envío primero el M105 todos los comandos ya van bien, pero si de primera envío el M115 se queda el Arduino pillado como 10 segundos.
He probado a primeramente enviar un G92 tal como te comente en mi post anterior y despues de responderme un ok, le he enviado un M115 y no ha habido problema.
Por alguna razon hacer primeramente una petición M115 para ver el firmware no le viene bien al Arduino.

Espero que te sirvan de ayuda mis pruebas.

Un saludo.

Hola a todos, soy nuevo por aquí y estoy empezando con esto de las CNC. Ante todo, agradeceros el compartir vuestros conocimientos con los demás. Estoy haciendo las primeras pruebas de mi maquina artesanal con vuestro soft. Yo también estoy teniendo algunos problemas con el tema de la comunicación. En mi caso, a la hora de darle al botón de conectar el programa se queda esperando y no hace nada. He estado jugando con las velocidades y me falla con todas salvo con 57400. Es algo muy curioso. No se siióesto te ayudará a detectar el problema

Lo primero de todo agradecerte que sigas intentando usar el programa, ya que este error a mi no me ocurre y no tengo forma de arreglarlo si no es con alguien que si le pase.

Tengo que aclarar que el firmware no es obra mía si no de un usuario de este foro que se llama fm, yo solo he modificado algunas cosas para habilitar funciones del programa, el programa si que es mio por completo.

Por suerte hemos visto que es lo que esta ocurriendo en tu caso, ahora te explico por que se hacen las cosas así.

La conexión al arduino la hago como lo hace el IDE de arduino, el hecho de mandar el "M115" primero es por que necesito saber que versión del firmware hay instalada en el arduino cuando conectas. Una de las funcionalidades que tiene el programa es que memoriza la posición en la que se encuentra la maquina una vez has salido del programa, y cuando vuelves a conectar automáticamente fija esa posición, esto no se podía hacer con la versión del firmware de fm, pero si con la modificación que yo realice al firmware con lo que tengo que comprobar la versión.

Probare con la combinación de pines que me has dado, ya que me ha pasado ya alguna vez que con diferentes configuraciones de pines la comunicación se comporta de formas distintas, no obstante he modificado el programa para que si en 15 segundos no recibe respuesta de la versión informe al usuario y siga adelante como si fuese la versión original de fm.

En cuanto al gamepad, soporta cualquiera que windows pueda manejar, yo por ejemplo uso un gamepad de la ps2 con un adaptador a usb.

A lo largo de la mañana colocare esta nueva versión con alguna corrección mas que he encontrado.

Hola jucarar

Que velocidad tienes fijada en el firmware?

Te recupera bien la información del firmware y te funcionan correctamente los motores?

He colocado una nueva versión, sigo poniéndola en versión beta ya que no tengo probado al 100% la corrección de alturas de la base.

Los cambios son los siguientes:

Corrige error de bloqueo cuando el arduino no responde a la petición de información del firmware (incidencia 22)
Corrige error de visualización de limites cuando se cambia origen de coordenadas (incidencia 20)
Corrige error al mostrar la corrección de altura que se aplicara al eje Z (incidencia 21)
Corrige error al establecer limites (incidencia 17)

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

Hola ngc1300 ,
Muchas gracias por tu respuesta.
He hecho varias pruebas, en un equipo con XP y en otro con W7. Al final, como me funciona siempre es utilizando 57600 en el firmware.

Cuando conecta, me aparecen 3 ok. En la pestaña de información puedo ver los datos del firmware.

Lo que también he notado, es que una vez que se realiza la conexión y tienes los 3 ok, durante unos segundos (5-10) no hace caso a las instrucciones, p.ej. al pulsar los botones de movimiento de los ejes. Pasado ese tiempo ya funciona correctamente.
De todas formas voy ha seguir haciendo pruebas a medida que avance con la puesta en marcha de mi máquina.

En cuanto pueda, pruebo la nueva versión del programa.

Saludos,

hola jucarar.

Con la información que me has dado mirare bien el firmware, aunque como he dicho antes el firmware no es mio y no controlo al 100% el código, intentare mirar a ver que pasa, ya que he visto que alguna cosa rara hace a la hora de conectar con el.

El hecho de que te funcione a 57600 no es problema, incluso una ventaja, cuanta mas velocidad, mas rápida es la comunicación, y a estas velocidades no hay problema de perdida de datos, yo he utilizado esa velocidad sin problemas durante bastante tiempo.

Mirare a ver si se reproduce lo que me comentas de que los motores no responden durante 5-10 segundos.

Si encuentras algún problema mas y si no es molestia puedes poner incidencias en la pagina donde te descargas el software CNC Control - Incidencias así puedo hacer un seguimiento mejor de lo que esta mal y si se ha arreglado o no.