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.