Pages: 1 2 [3] 4 5 ... 26   Go Down
Author Topic: Desarrollo de Soft para control de Fresadora CNC  (Read 22216 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Offline Offline
Full Member
***
Karma: 2
Posts: 227
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Offline Offline
Full Member
***
Karma: 2
Posts: 227
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.




Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Full Member
***
Karma: 2
Posts: 227
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Offline Offline
Full Member
***
Karma: 2
Posts: 227
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola jucarar

Que velocidad tienes fijada en el firmware?

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

Offline Offline
Full Member
***
Karma: 2
Posts: 227
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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: https://bitbucket.org/jadiazg/cnccontrol/downloads#download-253358
Enlace incidencias: https://bitbucket.org/jadiazg/cnccontrol/issues?status=new&status=open
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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,
Logged

Offline Offline
Full Member
***
Karma: 2
Posts: 227
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 https://bitbucket.org/jadiazg/cnccontrol/issues?status=new&status=open así puedo hacer un seguimiento mejor de lo que esta mal y si se ha arreglado o no.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola ngc1300, he estado probando la nueva versión del software y sigo sin poder conectarme, pero por lo menos ahora no se queda colgada la ventana del programa. Al intentar hacer la conexión pasa un tiempo de unos 10 segundos, y a continuacion me sale una ventana en la cual me dice que no se ha podido obtener la version de firmware y al darle a aceptar me sale otra ventana que pone error al conectar, a continuacion me queda la tecla de conexión en color verde pero no se me activa ningun boton del programa para poder mover la maquina.
Como curiosidad te diré que cuando me conecto desde la IDE de  Arduino, segun abro el serial monitor durante unos 10 segundos tengo encendido el led L de la placa de Arduino y si durante ese tiempo si envío alguna orden el Arduino no responde, una vez que se ha apagado dicho led, mas o menos  10 segundos, cualquier orden que envie me la ejecuta la maquina a la primera, incluso el M115.
Me he dado cuenta que cuando intento conectarme con tu software a la maquina, tambien  se enciende dicho led L, y cuando se apaga es cuando me da las ventanas de no poder cargar el firmware y de error de conexión, y claro si luego intento tocar alguna tecla para desplazar la maquina no puedo ya que no estan activas.
Por lo que observo a razón del serial monitor de laIDE de Arduino, siempre que se conecta uno hay que esperar unos 10 segundos, hasta que se apague el led L de la placa de Arduino, y a continuación enviar la orden que deseemos, en este caso sería el M115, ya que si segun abrimos la conexión enviamos el M115 no obtengo ningun resultado.
No se si tendrás programado algún atributo en el cual no sea posible manipular los botones del programa si no hay conexión, en mi caso y por lo que te he comentado, primero habría que habilitar la conexión del puerto, esperar unos 10 segundos (se apaga el led Lde la placa Arduino), y a continuación enviar el M115 para ver el firmware.
Tambien te comento que he probado a variar la velocidad de conexión a 57600 y el resultado ha sido negativo, ya que ni me funcionaba el software ni la interfaz IDE del Arduino. Al enviar cualquier comando en vez de devolverme un ok, siempre me devolvia los siguientes caracteres el arduino:

üüüü   à

En cuanto restablecí la velocidad de conexión a 19200 todo empezó a ir bien desde la IDE de Arduino y ver los ok.

Un saludo.
Logged

Offline Offline
Full Member
***
Karma: 2
Posts: 227
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Muchas gracias por las pistas que me estas dando, creo que ahora hemos dado con el problema, como yo no tengo la mega no se muy bien como funciona, yo tengo una arduino UNO y cuando me conecto desde el IDE con el monitor, se me enciende el led L durante 1 segundo o menos, es cierto que durante ese tiempo el arduino no admite ninguna comunicación, por eso el programa espera 2 segundos antes de mandar datos, pensaba que este tiempo era igual para todos los arduinos pero me temo que no va a ser a si, he probado a bajar el tiempo de espera a medio segundo y me pasa lo mismo que a ti.

Para probar que realmente sea eso he borrado la versión que puse ayer y ahora estoy colocando una nueva con un tiempo de espera de 15 segundos antes de empezar la comunicación, he puesto 15 para curarnos en salud y ver que realmente es eso, mirare a ver en la documentación y el código fuente de arduino a ver si se menciona algo sobre el tema, ya que me da que este tiempo incluso entre los mismos arduinos UNO puede variar.

En cuando a lo que te pasaba con la velocidad de 57600 es por que tienes que cambiar la velocidad también en el firmware y subirlo a la placa, ya que si no esta descompensada y con el monitor mandas a 57600 y la placa espera recibir a 19200 y por eso de los códigos raros.

gracias otra vez por la ayuda
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola de nuevo, acabo de probar la ultima modificacion del software y veo que sigue sin conectarme. En principio cuando le doy a conectar el led L esta 10 segundos encendido, a continuación se apaga y a los aproximadamente 4 o 5 segundos sale la ventana diciendo que no puede encontrar la version de firmware y error de conexion.
Como prueba, me ha dado por conectarme desde ubuntu con la interfaz de Txapuzas y lo curioso es que cuando arranco el programa,el led L parpadea 2 segundos y ya tengo la maquina operativa, es decir, no me esta 10 segundos dicho led encendido. Eso si una vez que muevo un eje el led L permanece ya siempre encendido.
No se si esto puede ser debido a que la interfaz de Txapuzas está programada en Gambas 3, y la que estas desarrollando por lo que veo usa componentes de java y puede ocasionar este tipo de problema.
La verdad es que me tiene un poco mosca, por lo que veo el tiempo de respuesta va a depender del software de programacion y no del firmware que hay cargado en el Arduino.
No se si seria posible usar una version de tu programa que simplemente no necesitase obtener la version de firmware, ya que así probaria si conecta, vería tambien si al poder pulsar los botones se envían comandos al ver parpadear los leds RX y TX, simplemente tal y como va la versión del software de Txapuzas, ya que desde ella no leo datos de la version firmware, simplemente conecto y luego al pulsar los botones envios ordenes y veo a la maquina moverse.

Un saludo.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola ngc1300, estoy probando mas cosas para ver por donde puede venir el tema, te comento:
Desde Ubuntu y desde la IDE  de Arduino, el Mega al abrir el monitor del puerto serie, el led L parpadea 2 segundos y ya se puede recibir ordenes. Por lo que veo el tema de los 10 segundos con el led L encendido va a ser cuestion del sistema operativo, ya que en Ubuntu no me pasa.
He probado tambien el universal Gcode Sender que esta escrito en java desde windows, y una vez que le doy a conectar pasado los 10 segundos de rigor, le puedo enviar a la maquina ordenes que esta se mueve sin ningun problema, con lo que veo que el estar programado en java tampoco influye.
Creo que el problema me esta apareciendo en principio debido a la comprobacion de la version de firmware, y que al no encontrarla no se me habilita la posibilidad de mover algun eje.
Seira interesante poder probar tu software tal y como te comente, solo habilitando la conexión y que no lea version de firmware y tenga habilitada la posibilidad de enviar comandos independientemente del estado de la conexión. Simplemente como prueba.

Un saludo de nuevo.
Logged

Pages: 1 2 [3] 4 5 ... 26   Go Up
Jump to: