Desarrollo de Soft para control de Fresadora CNC

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

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.

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.

Hola ngc1300,
Yo también tengo un arduino mega. He probado la nueva versión y a mi si se me conecta, eso si, sólo a 57600. he hecho un pequeño cambio en el firmware, en la clase gcodeproces.cpp, donde ponía

if (Serial.available() > 1) {
Por
if (Serial.available()) {

Después del cambio, el tiempo de espera entre la conexion y que acepte ordenes ha desaparecido. :astonished:
Quizás podrías probar a ver si notas algo

Saludos

Hola, he estado probando a conectarme a 57600 y al final me han aparecido los tres ok y he conseguido mover mi maquina sin problema.
Tambien he realizado la modificacion que ha comentado jucarar y en principio el led no está los 10 segundos encendido al conectarse, aunque tal como comente en un anterior post, sin modificar el firmware, conectandome con ubuntu el led simplemente parpadea 2 segundos y estoy conectado.
Lo unico que he visto raro es que al conectarme desde la IDE de arduino, el led si está los 10 segundos encendido y en cuanto le envío las ordenes me responde con caracteres raros.
Tambien he probado a usar el Universal G code Sender a 57600 y va correctamente.
No entiendo muy bien porque el software no es capaz de conectarse a 19200, ni porque el IDE de Arduino no devuelve caracteres correctos a 57600 a pesar que todos los softwares que he probado si se conectan y reciben caracteres correctos del Arduino.
De momento voy a seguir probando el software, el cual me ha parecido muy bueno en comparación con el de Txapuzas, sobre todo las opciones de configuracion de ejes.

Un saludo.

Hola carferu y jucarar gracias de muevo los dos, yo con mi arduino UNO no tengo problemas de conexión ni a 19200 ni a 57600, he probado a casi todas las velocidades y funciona en todas ahora mismo lo tengo en 19200, el programa esta hecho en java, al igual que el IDE de arduino y uso las misma librería de comunicaciones que ellos, mañana me mirare a fondo a ver si encuentro algo en el firmware e intentare contactar con el autor a ver si me da alguna pista.

Se me olvido comentar que la ultima versión colgada no bloquea el programa, y solo informa del hecho de no recibir los datos del firmware, con lo que si no hay un problema real, se tendrían que poder mover los ejes aunque no se reciba la versión del firmware

He estado haciendo algunas pruebas con el firmware, y creo que hay un problema cuando se inicia la conexión, hay cosas que hace que ningún otro sketch que tengo en los que uso comunicaciones serie me ocurren, como yo no he programado el firmware me costara un poco mas mirarme todo el código a ver si detecto el error.

Me gustaría si podéis probar una cosa los que tenéis la arduino MEGA y es meter el firmware de txapuzas e intentar conectar con el programa, en principio os dirá que no ha podido cargar el firmware, pero después os tiene que dejar mover los ejes perfectamente, si podéis decirme que os pone en la ventanita de log

Hola, he realizado la prueba de cargarle al MEGA el firmware de Txapuzas. En principiole he puesto la velocidad a 19200. Cuando he arrancado tu software se ha encendido el led como unos 10 segundos, luego a continuacion me ha dado el error de que no podia cargar el firmware, y el error de conexión. Lo bueno es que he podido mover los ejes de la maquina sin ningun tipo de problema. Lo que me ha puesto en las primeras lineas de la ventana de log ha sido:
start
Huh?105
ok
Adjunto captura de pantalla.
Un tema que he visto es que aparece en la pestaña de informacion el estado como desconectado, cuando sabemos que no es así. Que no haya leido el firmware no debería implicar estado desconectado, aunque esto es un mal menor.
De todo esto, por lo que veo el tema de el led L encendido 10 segundos,me parece que va a ser debido en principio al tipo de sistema operativo, ya que tal como comente en un post anterior, si cogemos la IDE de Arduino, con el firmware de Txapuzas, en windows esta los 10 segundo encendido, y en ubuntu,hace un parpadeo y se conecta.
En cuanto a que no se conecte a 19200 si que puede ser un tema de firmware ya que el de Txapuzas se conecta a tu software a 19200 sin problema.
Otro problemilla que tengo ahora, es que me he comprado un gamepad para mover la maquina, en concreto un Thrustmaster Dual Analog 4. En windows aparece correctamente instalado, y cuando me meto en el test de dispositivo puedo chequear todos los botones del gamepad de manera correcta. El caso es que el icono de control me aparece desactivado y no tengo forma de activarlo, es como si no detectase el gamepad, (tambien te adjunto pantallazo).
Un saludo.
Un saludo

Hola ngc1300, he estado haciendo mas pruebas viendo el firmware de Txapuzas y el de fm. He mantenido la conexión a 19200 y le he añadido igual que tiene el firmware de Txapuzas la linea Serial.println("start"); en el sketch CNC, despues de ajustar la velocidad de conexion.
Serial.begin(19200);
Serial.println("start");
El resultado es que ahora si conecta la maquina a 19200, pero me da el error de lectura de firmware. En la ventana de log veo:
start
ok
Pero puedo mover la maquina, eso si con limitacion de ejes, ya que no puedo acceder a la configuracion de dichos limites.
Lo curioso es que si entro en la pestaña de informacion, no tengo la informacion del firmware ya que no la he podido obtener al conectarme, pero si envío el comando M115 si me responde el Arduino correctamente y me rellena los datos de la version de firmware en la pestaña de informacion.
Viendo estos resultados en principio el Arduino MEGA si se conectaria a 19200 si le hacemos que nos envie una orden en cuanto conectemos. Podría ser interesante cambiar la forma en la que compruebas la conexion al Arduino, primero habilitar la conexión desde el programa, una vez que recibimos un start por ejemplo, de esta manera tendriamos garantizada dicha conexion y a continuacion enviarle la peticion del M115 y en funcion de lo que nos devuelva habilitar las opciones de limites de ejes. No se que te parecerá la propuesta, ahora tal como lo tengo segun me devuelve el arduino el start y me aparece un ok, me sale la ventana de que no se puede leer el firmware,y a continuacion que hay un error de conexion.

Un saludo.

hola carferu, al final parece que el firmware es el que tiene un problema al hacer la conexión, en mi arduino UNO cuando conecto con el IDE de arduino el led L esta encendido menos de 1 segundo (esto es en windows), y en el monitor me aparece un carácter ilegible, he hecho lo mismo que tu de poner al establecer la conexión en el firmware a que mande un mensaje y desde el IDE me aparecen caracteres ilegibles. en cambio en el firmware de txapuzas esto no ocurre.

Una cosa que me parece muy extraña es que si tienes la ultima versión que puse te tiene que dar el aviso del firmware pero no te tiene que dar ningún error de conexión.

En cuanto a la propuesta que dices, en las primeras versiones del programa se hacia así, esperaba a recibir un dato, ya que como te he comentado antes cuando conecto mi arduino me manda siempre un dato (ilegible), pero un usuario tenia problemas y no le conectaba(ahora supongo que a el no le pasaba) y lo cambie a esta otra forma que parece que iba bien. Por lo que parece los arduinos no se comportan todos igual con lo que pensare a ver una solución para que nos funcione a todos y no sea muy dependiente de un firmware en concreto.

En cuanto al gamepad, en principio el programa lo detecta de forma automática, si el botón esta desactivado es por que lo ha detectado, si no lo detecta es cuando el botón se activa y lo tienes pulsar para conectar con el, esto ocurre en el caso de que conectes el gamepad una vez se ha abierto el programa.

Prueba a mover los ejes con el, no se si tiene modo analógico o no, en el mio tengo que activar el modo analógico, ademas para no saturar al arduino tienes que mover para donde quieres que vaya la maquina y mantener la posición como 1 segundo aproximadamente. Esta parte hay que refinar la un poco mas mas adelante.

Un saludo

Hola ngc1300, he estado probando el gamepad de nuevo y por fin me ha funcionado. El problema es que no esperaba el tiempo suficiente con el mando analogico en la posicion para que enviase la orden. En principio he estado moviendo la maquina sin problema. Como sugerencia para mas adelante, sería interesante que cuando el mando analogico se encontrase en una posicion fija, el motor se moviera sin parar hasta que se soltase el mando, es decir de forma continua. Ahora si lo dejo fijo en una posicion se va moviendo a intervalos, dependiendo del avance que tenga puesto en el software. He probado a poner avance 1, y dejar el mando fijo para que se mueva el motor y este se va moviendo a tirones, se mueve 1, para y acelera para avanzar 1 y se vuelve a parar.
Se podría crear algunas ordenes de tipo M especificas (parecida a la que envia la version de firmware), de manera que al llamarlas me hagan un movimiento seguido del motor, para evitar que constantemente se este parando y acelerando en avances pequeños.
Tambien sería interesante poder asignar los botones que hay en la pantalla a los del gamepad, de esta manera podriamos posicionar la maquina, arrancar los motores, hacer los cero de maquina o cero de pieza desde los botones que asignasemos al gamepad.
De momento estas sugerencias las propondría como mejora a largo plazo, ya que entiendo que ahora lo mas importante sería resolver el tema de la conexión a 19200 con el Arduino.
Por ahora todo lo que he estado probando me ha parecido genial, sobre todo la parte de configuracion de limites de maquina, y la posibilidad de tener un cero pieza y un cero maquina. Mi enhorabuena de nuevo por tu trabajo.

Un saludo.

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.