Buenas,
Estoy intentando mover una máquina xy, tengo ya las instrucciones que tiene que hacer y las he probado en candle, pero ahora quiero programarlo para que lo haga desde arduino, alguien me podría decir cómo se hace eso?
Muchas gracias
Buenas,
Estoy intentando mover una máquina xy, tengo ya las instrucciones que tiene que hacer y las he probado en candle, pero ahora quiero programarlo para que lo haga desde arduino, alguien me podría decir cómo se hace eso?
Muchas gracias
Generalmente el caso que se suele exponer es el contrario. Hacer tu mismo el plotter con Arduino, pero tu propones utilizar un Arduino como si fuera el PC para mover la máquina.
Una máquina CNC lo que hace es interpretar código GCODE. Hay bastantes tutoriales de estos comandos por la red, resumiéndolo un poco, son comandos que le dicen a la máquina que se mueva hacia una dirección o que haga otra cosa.
Por lo tanto si quieres mover la máquina con Arduino lo que tienes que hacer es enviar ordenes GCODE.
El reto se plante de otra forma. Supongo que tu máquina CNC tiene una placa que via USB conectas al PC. No puedes conectar Arduino directamente por USB, por eso hay que ver que conexiónes tiene tu placa para poder conectar directamente el Arduino.
Así que lo prinpical en este momento es saber que placa tiene tu CNC.
Puedes poner una foto o algún número de identificación.
Hola, muchas gracias por responder.
Te paso el link con la documentación que tengo que la máquina XY: https://drive.google.com/file/d/1I7SODYxMxs7M051vjW0j522QRQjw1t6x/view?usp=sharing.
Soy nueva en todo esto y no sé cómo funciona. He visto lo del GCODE, con eso conseguí en Candle que la máquina hiciese lo que yo quería, la cosa es que quiero que sea una máquina autónoma, que no dependa del ordenador, entonces tengo que crear un programa en Arduino con las instrucciones que quiero que siga, luego iría conectado a una pantalla en la que puedes elegir velocidad y tiempo.
Un saludo.
Tu máquina CNC utiliza un CNC-SHIELD por lo tanto contamos con una ventaja ya que este módulo utiliza un Arduino de base.
Si observas la imagen, en la imagen superior izquierda verás que están disponibles los pines GND, TX y RX; los cuales puedes usar para conectar un dispositivo que se
comunique directamene por Serial.
En tu caso habrá dos Arduinos. El primero de ellos será el que tenga el código del GBRL. Ahora mismo lo utilizas para conectarlo al PC y via cable USB mandar el código G. Puedes dejar ese Arduino libre: alimentarlo a través del DC-Jack con una tensión superior a los 7 voltios sin conectarlo via USB.
El otro Arduino podrás conectarlo via Serial al puerto que dispone el CNC-Shield. Será este Arduino al que conectarás los mandos "manuales" para mover el plotter. Además de leer los mandos tendrá la función de enviar el código correspondiente al motor.
Esto depende de como quieras usar el modo manual, y ahi tendrás que pelear con el código para que haga lo que tu quieres.
Pongamos un ejemplo: tienes un botón para mover a la izquierda un milimetro. Cuando pulses dicho botón deberá enviar una instrucción G1 X-1, estableciendo previamente el modo de movimiento a relativo con respecto la coordenada actual (comando G91)...
BotonSimple izq(pin);
void loop()
if ( izq.read()==APRETANDOLO ) {
Serial.println("G91");
Serial.println("G1X-1");
}
Esto es una idea. Puede que haya otra posible solución. Y el código deberá ajustarse.
Eso si, te recomiendo que aprendas como funciona el CNC-SHIELD, que aprendas los códigos G más importantes. Hay bastantes tutoriales y videos en la red para ello.
En mi caso, estoy realizando un proyecto muy similar digitalizando un torno CNC que iré desarrolando en mi tiempo libre poco a poco, y cuando tenga algo bien avanzado lo publicaré en el foro, pero puede que tarde unos meses.
Muchas gracias por tu ayuda!
Ya estoy más centrada en lo que tengo que hacer. No quiero que haga un control manual, tengo que meter en el arduino de la pantalla el código que quiero que haga y tiene que hacer siempre el mismo, para lo único que sirven los botones es para seleccionar la velocidad y ver durante cuanto tiempo quiere que se haga el mismo movimiento.
Un saludo.
Buenas,
Estoy intentando meter en un Arduino una serie de comandos grbl que le tiene que mandar a otro Arduino que está conectado a la máquina XY. Cuando le escribo muchos serial.println con instrucciones es como que la máquina colapsa y no hace lo que debe. He visto que cuando usas un programa manda una serie de comandos, espera a que se ejecuten y la máquina responda ok y manda otro grupo de comandos, alguien me podría ayudar y decir cómo puedo programar eso en Arduino?
He probado a hacer un while( Serial.read() == 'ok') pero nada.
Muchas gracias de antemano.
Un saludo.
This page has information on writing your own control programs for grbl.
Esta página tiene información sobre cómo escribir sus propios programas de control para grbl.
Gracias por la página.
El problema es que no tengo mucha idea de Arduino y no se como implementarlo en mi código.
Con Serial.read() solo lees un byte y comparas con una cadena de texto. De hecho ese código que has posteado debería dar un error de compilación.
Puedes probar con Serial.readString o leer uno a uno los caracteres.
String s;
// Enviamos la linea de GCODE.
Serial.println(cmdg);
// Nos quedamos a la espera de que GRBL nos responda. Esté código bloquea el
programa y no nos dejará hacer nada hasta que GRBL diga "ok" o "error".
while ( !Serial.available() );
// Si sale del while es que ya hay datos en el puerto serie, así que lo
// leemos con la función readString.
s = Serial.readString();
// No comparo directamente con una cadena, si no que busco dentro la subcadena
// "ok". Esto evita problemas con el retorno de carro y retorno de linea y de
// otros problemas.
if ( s.indexOf("ok")!=-1 ) {
// La cadena está por lo tanto podemos indicar que todo ha ido bien
}
Un consejo, si vas a postear mucho sobre el tema (creo que es la segunda vez que te respondo), en vez de abrir un post cada vez, abre solo uno genérico y pon todas las
dudas que te vayan surgiendo en él.
Muchas gracias por tu ayuda!
Siento lo del post, a partir de ahora lo haré así.
Un saludo.
Moderador:
Gracias a la observacion de @victorjam advertí que se trataba de un doble posteo.
En este caso porque nunca cerraste el hilo anterior para recomenzar este.
Debes prestar atención a esta falta que es la peor en el foro, junto con los insultos.
Ten mucho cuidado. Por esta vez pasa pero no la siguiente, okay?
Los hilos fueron unidos en el mismo.
This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.