viernes, 12 de enero de 2018

Control de CNC mediante tarjeta SD y mando a distancia (sin necesidad de pc)

Buenas señores/as, en este proyecto os voy a explicar como seguir el procedimiento para  conseguir controlar una CNC sin necesidad de tener un ordenador a mano y poder así realizar cortes por medio del fichero previamente guardado en una tarjeta sd. Este no es un tutorial para explicar como montar una CNC casera, eso lo dejaremos para otro proyecto, simplemente aquí aprenderemos a crear un control para esta.
Lo primero que necesitamos es tener una máquina CNC ya terminada  controlada por medio de un controlador Arduino con el firmware GRBL. Usaremos los pines 0 y 1 de comunicación serial para conectarlo con otro arduino el cual controlara tanto el display LCD como el lector de tarjetas y el mando a distancia.

Lista de materiales:

A continuación expondré una lista de los diferentes materiales que usaremos para poder realizar nuestro proyecto  ademas de un enlace de compra y como se conecta a nuestro arduino.


-Arduino, en este caso podemos elegir el modelo que más nos guste siempre que cuente con un puerto de comunicación serie. Los mejores para utilizar en nuestro proyecto son tanto el arduino UNO como el Nano.
Enlace de compra amazon
Enlace de compra aliexpress





-Mando a distancia con sensor:
Os dejo un enlace de un mando igual al mio ya que si usáis un mando diferente los códigos que usa el mando serán diferentes por tanto si cambiáis de mando se deberá modificar el código de arduino. Os dejo un enlace con el mando igual al mio y un enlace del sensor infrarrojo.
Enlace Mando a distancia (enlace nuevo)
Enlace sensor infrarrojo arduino
Por ahora no he encontrado este producto con un mando igual en Amazon pero os dejo un enlace que incluye mando y sensor
Enlace de otra tienda (enlace renovado)
(La salida esta conectada al pin 3 de arduino, vcc=5v )






-Pantalla lcd I2c:(Se debe conocer la dirección de nuestro LCD para la hora de cargar el programa)
Se conectan los pines de SDA y SCL a los pines respectivos de arduino.
Enlace de Aliexpress
Enlace de amazon








-Modulo SD (Podemos usar cualquier tipo de modulo):
Enlace aliexpress
Enlace de Amazon



Esquema conexionado modulo SD:




¿Que funciones le daremos a las teclas de nuestro mando a distancia?



Programas necesarios para compilar:

Lo primero que necesitamos tener el IDE de arduino para poder compilar el programa. En este caso yo estoy usando la versión (1.6.5-r5) la cual podéis descargar aquí. Con otras versiones posteriores me da errores por eso es mejor utilizar esta versión.

Librerías que debemos incluir:

En este programa necesitamos incluir una serie de librerias para que compile perfectamente, para ello deberemos descargar estas librerias e incluirlas dentro de la siguiente ruta:
\Documents\Arduino\libraries


Programa para arduino:

En el siguiente enlace dejare el programa que deberemos introducir en el arduino el cual controlara la pantalla el lector SD y el mando a distancia (versión beta).
Es recomendable sacar un botón de reset de arduino fuera de la caja por si alguna vez necesitamos reiniciar por que se quede trabado (por ahora no me a pasad, solo cuando acaba de fresar un archivo se necesita hacer reset para volver a cortar otro archivo)

El programa se puede cargar a arduino tal cual esta siempre que la dirección de nuestro display lcd (pantalla) sea igual que la que yo e usado, en este caso mi dirección es "0x27".
Para cambiar esto abrimos el archivo y nos vamos a la siguiente linea:



En caso de que en nuestro display no se vea nada deberemos averiguar la dirección del nuestro y cambiar "0x27" por el vuestro.
Todo lo demás se puede quedar tal cual esta en el programa.

Este programa esta funcional tal cual se encuentra en este momento sin embargo tiene algunas fallas sin importancia las cuales iré solucionando en posteriores versiones.

Importante: hay que tener en cuenta que a la hora de transferir el programa a Arduino debemos desconectar los pines de transmisión y recepción de arduino sino nos dará un error de conexión.

Esquema  del conexionado completo:

A continuación os mostrare un esquema completo de todo el cableado que debemos realizar.
lo que debemos de tener en cuenta es que para enlazar nuestro arduino con el display y el lector al arduino con el GRBL cargado debemos cruzar los cables de transmisión y recepción, ademas de unir ambos pines de gnd y alimentar los dos arduinos con la misma fuente de alimentación.

En mi caso he fabricado una caja donde alojar el arduino  con nuestro programa  el display lcd, el lector de tarjetas y el sensor infrarrojos que mas abajo mostrare.

Esquemático realizado con Fritzing:
Aquí os dejo un enlace del fichero de fritzing por si queréis analizarlo al detalle.

Resultado del montaje:

En esta imagen podemos observar el resultado final montando todos los elementos en una caja de las típicas de electricidad. Además he provisto dos botones para pausar  y reanudar el fresado. Estos botones irán conectados directamente a los pines dde Hold y Resumen de la shield CNC.
En esta imagen se puede observar el menú principal de movimiento manual de la máquina, en el cual se muestra en el display las coordenadas donde se encuentra la CNC. El "X1" que hay delante de las coordenadas significa que la máquina avanza de 1 en 1 milimetros su posición cuando pulsamos las teclas de movimientos ( esto se puede modificar  pulsando las teclas 1-"1mm"  4-"10mm" 7-"100mm")



En esta imagen podemos observar el menú de búsqueda de ficheros a través de nuestra tarjeta SD pulsando la tecla menú del mando y desplazándonos entre los ficheros con las teclas de dirección del mando.


Aquí OS dejo una imagen de la shield CNC de mi máquina la cual en este caso funciona con un arruinó nano:


Este es un vídeo demostrativo del funcionamiento, no tiene muy buena calidad pero eran las primeras pruebas.
Mas adelante subiré mas vídeos.

 

Vídeo de segunda prueba autónoma con archivo (sin cortar)

ACTUALIZACIÓN 26/03/2018

¿Como cambiamos entre modo manual SD o modo PC?

Antes de empezar tengo que decir que en las nuevas versiones del programa quiero integrar el cambio mediante el mando a distancia para poder elegir el modo..
Dicho lo anterior la forma mas sencilla es mediante un interruptor doble  el cual cortara los cables de transmisión y recepción que comunica ambos arduinos..
Subiré un esquema para que podáis verlo graficamente.
ACTUALIZACIÓN 15 DE MAYO
ACTUALMENTE DE ESTA TRABAJANDO PARA PODER CONTROLAR DESDE UN LCD FULL GRAPHIC COMO USAN LASPARA INPRESORAS 3D

BLOG EN CONSTRUCCIÓN....

CONTINUARÁ CON IMÁGENES DEL
MONTAJE Y VÍDEOS PARA  VER 
SU FUNCIONAMIENTO

29 comentarios:

  1. Muy interesante, acabo de montar mi primera cnc y me gustaria dotarla de una forma de control como la tuya. Muchas gracias por toda la información.

    ResponderEliminar
    Respuestas
    1. muchas gracias por ahora tiene algunos errores que poco a poco iré solucionando. También acepto los aportes que podáis hacer los que entiendan algo de programación :)

      Eliminar
  2. Hola. Me ha encantado la idea.... Pero tengo una pregunta:
    ¿Se puede tener conectado al mismo tiempo al PC y manejar por medio de software o por el mando independientemente o solo se puede elegir un modo?

    ResponderEliminar
    Respuestas
    1. Hola, se podria poner un interruptor que corte los dos cables de transmisión y recepción de datos de un arduino a otro, y así poder elegir entre modo sd y modo pc...
      En versiones posteriores me gustaría hacer esto a nivel de programación... ya iré publicando los avances.

      Eliminar
    2. Espero ansiosamente tus avances. Tengo pocos conocimientos de programación en Arduino y espero avanzar con la información que vas publicando aquí. Ya tengo pedidos todos los componentes... Salu2

      Eliminar
  3. Hello
    The project is interesting
    Bad there is no real control, the state of the CNC machine
    Wpos , Mpos

    ResponderEliminar
    Respuestas
    1. hello, you are working on subsequent versions to get exact coordinates of the machine

      Eliminar
  4. Ola!

    Bom trabalho!

    Será possivel acicionar possibilidade de controlar com Botoes ou joystick os menus e movimento em vez do comando IR?

    ResponderEliminar
    Respuestas
    1. Hola, si es posible cambiando un poco el codigo y reemplazandolo por un joystick.. mas tarde podría cambiarlo y subir esta alternativa al blog
      Un saludo

      Eliminar
  5. Hola, si es posible cambiando un poco el codigo y reemplazandolo por un joystick.. mas tarde podría cambiarlo y subir esta alternativa al blog
    Un saludo

    ResponderEliminar
  6. Obrigado, irei acompanhar a evolução!

    Grande Projecto!

    ResponderEliminar
  7. Hola
    Me interesa mucho este tema, muchas gracias por compartirlo.
    Comentas que se esta desarrollando una version para el lcd FULL GRAPHIC y como estoy interesado en hacer el control, me gustaria saber si esta adelantado como para esperarme o hacerlo tal como esta publicado ahora.
    Gracias!!

    ResponderEliminar
    Respuestas
    1. Hola buen dia, actualmente estoy teniendo problemas con la nueva version... Espero tenerlo pronto y muchas gracias :)

      Eliminar
    2. Este comentario ha sido eliminado por el autor.

      Eliminar
  8. Hola, tambien me interesa independizar a cnc de la pc, asi que tu proyecto me sirve de guía. Dices que estás teniendo problemas con la nueva versión, quieres publicarla y comentarnos que fallas le encuentras? Tal vez podamos ayudarte y ayudarnos.
    Un abrazo

    ResponderEliminar
  9. Me interesa la de Full Graphic pue tengo 2 y con la Ramp 1.4 tengo problemas con la targeta sd.Saludos

    ResponderEliminar
  10. Hola, muy interesante tu proyecto. Estoy intentando adaptar una botonera en vez de el mando.

    No se cual es la variable donde se guarda el dato del mando, y que dato corresponde con que botón.

    Se podría adaptar??
    Gracias

    ResponderEliminar
  11. Muy buenas alguien sabe algo para las ultimas versiones tanto de GRBL como UGS para usar una pantalla 128x64 para ver la posición de la maquina, y que mi CNC es de 2000x2000x600 y me vendría muy bien. Gracias

    ResponderEliminar
  12. Hola Ivan.
    Soy un poco novato aunque ya hago algunas cosillas con arduino.
    Yo tengo un torno cnc hecho por mi y quiero pasarlo a arduino, pero mi idea es que haga unas operaciones básicas programadas por mi y que tenga otra opción de usar grbl con pc para operaciones complejas.
    Mi pregunta es: ¿Cuando subes el firmware grbl a arduino, se puede programar con el id para como he dicho hacer operaciones basicas? ¿o por el contrario no se puede programar con ese firmware?.
    Si no se pudiera, supongo que tendria que montar dos placas como en tu proyecto para hacer lo que quiero hacer...
    Gracias por anticipado y pedazo de trabajo que te has currado...

    ResponderEliminar
  13. Muy buen proyecto y gracias por compartirlo.
    Lo estoy probando y veo que el archivo.txt con el gcode se desborda cuando lo envia al gbrl. Que puedo hacer?

    ResponderEliminar
  14. Amigo cómo está. Cómo van tus avances con la CNC controlada con la full graphics.
    Saludos excelente trabajo.

    ResponderEliminar
  15. holaa como vas con tus avances estaria bueno que agas un video con algunos procedimientos nos ayudarias mucho espero que sigas avanzando con esto ya que no hay mucha informacion sobre esto y la verdad que independizar una maquina cnc es una idea increible espero respuesta.....
    tengo una cnc pero mi pc no anda muy bien y aveces me deja tirado con tu idea me solucionarias este problema saludoss

    ResponderEliminar
    Respuestas
    1. I have this error

      exit status 1
      no matching function for call to 'LiquidCrystal_I2C::begin()'

      Eliminar
  16. Hola. Has podido avanzar algo? Me interesa mucho tu proyecto también. Gracias!

    ResponderEliminar
  17. Buenas, analizando esto,el corte de la transmisión se la podrías dar con un par de relee de 5v, asi desde el mismo arduino(el primero) controlas el corte de datos entre uno y otro. Saludos!

    ResponderEliminar
  18. hola, queria consultarte algo, he conseguido una pantalla de 20x4 y un shield de teclado tipo joystick, por que no puedo conseguir el receptor IR que tienes en el proyecto... se complicaría demasiado modificar el sketch del arduino para reemplazar estos componentes? consulto por que soy medio neofito... gracias

    ResponderEliminar