En este proyecto el objetivo es realizar una máquina de dibujo CNC (Control Numérico Computarizado). Reutilizando piezas y componentes de una impresora de papel, en donde además, diseñamos los demás componentes con un programa de diseño 3D donde una vez diseñada la imprimiremos con una impresora 3D. Y todo esto, controlado, a través de un arduino y una CNC shield del que hablaremos mas adelanteProyecto Robótica
Como son varios temas y apartados lo iremos dividiendo y organizando en este orden:
1- Diseño de componentes.
2- Impresión 3D.
3- Control Eléctrico.
4- Software de Control.
5- Vectorizar Imagen para convertirlo a Gcode
6- Comunicación y Envió de Datos
1- Diseño de componentes.
Para el diseño de componentes Utilizaremos el software (Solid Edge ST9) diseñamos todas las partes y luego la ensamblamos
Lo primero a sido realizar el diseño en formato Part en donde creamos las distintas partes y piezas
Husillo.
Con el husillo el primer problema que nos encontramos ha sido el del tamaño, ya que, la longitud que tenía no la podíamos imprimir con la impresora, y lo primero que hicimos fue partirlo en dos e imprimirlo en dos partes
No hemos tenido dificultades con las demás partes que hemos ido diseñando, los cuales según los diseñábamos los íbamos ensamblando en el SOLID EDGE para comprobar errores y ver que todas las piezas quedaban encajadas correctamente
![]() |
| Primera idea de diseño |
![]() |
| Piezas ensambladas del primer diseño |
Una vez comprobado los problemas del diseño a base prueba y error he decidido un cambio de diseño en donde en vez de desplazar todo el eje Y he optado por mover la base en el cual sería mas fácil de alinearlo y de moverlo. Además he puesto unas varillas pasantes de 8mm al cabezal para mantenerlo mas firme y que no se balancee de tal manera que el siguiente diseño que de está manera:
| Segundo Diseño |
2- Impresión 3D.
Ya una vez creado el diseño con el SOLID EDGE no hemos puesto a imprimir todas las piezas. Lo primero seria pasarlo a Gcode con un software para la impresora en el que utilizamos el CURA en este caso. En el que tuvimos que configurar la temperatura, el relleno deseado, las capas necesarias, teniendo en cuenta los requisitos de nuestro diseño y la carga que iría a soportar las piezas.
La impresión la hemos hecho con dos impresoras una de ellas es el modelo LionPro3D de la marca leon3D y el otro la A10M de la Marca Geeetech.
Al imprimir hemos tenido algunos problemas😤, tales como, ejemplos:
![]() |
| WARPING |
![]() |
| Extrusor Atascado |
![]() |
| Thermal Runaway |
![]() |
| Mal calibrado con la temperatura del material |
![]() |
| Al despegarse mover la pieza e imprimir en el aire |
Todas fueron impresas con PLA ya que es un material bastante fácil de imprimir que no genera muchos problemas, además es biodegradable y No es Toxico ya que esta hecho a base de vegetal. Ideal para imprimirlo en nuestro entorno de trabajo o en casa.
3- Control Eléctrico.
Los componentes eléctricos de control de la maquina serán:
- 1 Arduino UNO
- 1 CNC Shield
- 2 Drivers A4988
- 1 Motor paso a paso Nema 17 de 12v
- 1 Motor paso a paso de 5v 28BYJ-48 ULN2003
- 1 Servomotor SG90
- Fuente de alimentación de 5~12v
- 1 Arduino UNO
- 1 CNC Shield
- 2 Drivers A4988
- 1 Motor paso a paso Nema 17 de 12v
- 1 Motor paso a paso de 5v 28BYJ-48 ULN2003
- 1 Servomotor SG90
- Fuente de alimentación de 5~12v
El control se realizara mediante el Arduino y la CNC Shiel con los Drivers, donde la parte de los movimientos mecánicos se encargaran los Motores Paso a Paso para el control de los ejes. Y el Servo motor se encargara del levantar el bolígrafo.Todo esto alimentado con la fuente de alimentacíon externa.
4- Software de Control.
Como software de control tenemos varias. Empezando por el Arduino IDE donde lo primero sería configurar el puerto de conexión, y reconocer nuestro Arduino. Creamos un proyecto nuevo, donde lo primero sería descargar la libreria GRBL que es el interprete de nuestro G-code, que lo generaremos mas adelante con el InKskape. La versión de GRBL que utilizamos en esta ocasión es la 0.9j. Es una versión generica en donde tendremos que entrar en el codigo del programa e indicarle que tipo de máquina tenemos. Nuestro caso es una Core XY ya que tenemos dos ejes y el control del servo es mediante PWM.
Para modificar el codigo del programa nos dirigimos a la carpeta donde esta nuestra libreria y abrir el archivo txt CONFIG, buscamos la linea comentada donde pone //define COREXY y le borramos las dos barras, como podemos ver en la siguiente imagen
Una vez declarada y configurado nuestro programa sería compilarlo y cargarlo a nuestro Arduino, donde ya se encargaria el GRBL de realizarlo todo automaticamente.
5- Vectorizar Imagen para convertirlo a Gcode
Vectorizar una imagen es muy útil si estamos trabajando con redimensiones, por ejemplo. La vectorización consiste en convertir imágenes 'construidas' con píxeles (lo que se llama mapa de bits) en curvas formadas por vectores.Esto se logra dibujando todos los contornos y rellenos de la imagen mediante curvas Bezier.
Para generar los Gcode que son los datos que mandaremos a la Maquina CNC., utilizaremos un Software llamada InKskape lo que nos hace este programa es coger un dibujo ya hecho y lo vectoriza.
Para vectorizar la imagen, lo primero sería abrirlo en el InKscape, seleccionar el dibujo y usar las opciones de trayecto. Tendremos varias opciones, algunas de ellas son la de convertir el objeto a trayecto o el borde a trayecto.
Una vez realizada una de las dos opciones podremos Vectorizar mapa de bits en la que podemos configurar varias cosas, como el corte de luz, deteccion de bordes, filtro por colores, eliminar color de fondo, etc.
La extención para nuestra maquina cnc es J Tech Photonics Laser Tool, el cual al seleccionarlo nos da las coniguraciones y datos que nuestro programa GRBL dispone, en este caso lo mas importante es: - Seleccionar el comando que activa nuestro servo. - El comando que desativa el servo, y las pasadas que queremos que haga. Tambien podemos seleccionar la velocidad, el tiempo de retraso en enceder, etc. Para generar los Gcode que son los datos que mandaremos a la Maquina CNC., utilizaremos un Software llamada InKskape lo que nos hace este programa es coger un dibujo ya hecho y lo vectoriza.
Para vectorizar la imagen, lo primero sería abrirlo en el InKscape, seleccionar el dibujo y usar las opciones de trayecto. Tendremos varias opciones, algunas de ellas son la de convertir el objeto a trayecto o el borde a trayecto.
Una vez realizada una de las dos opciones podremos Vectorizar mapa de bits en la que podemos configurar varias cosas, como el corte de luz, deteccion de bordes, filtro por colores, eliminar color de fondo, etc.
| Ejemplo de prueba. |
| A la izquierda borde vectorizado, a la derecha relleno vectorizado. |
Una vez convertido a una imagen de vectores pasamos en este caso a los dos ejemplos antes seleccionados, que son las de pasar borde a Gcode y relleno a Gcode.
| Extensión para la impresora 3D de clase |
Para generar el Gcode tenemos varias opciones y extenciones, que s epueden descargar de internet según las necesidades que tengamos o las caracteristicas que tenga nuestra maquina.
En nuestro caso tenemos dos opciones, una es la de la impresora 3D Leon3D que disponemos en clase y la otra es la de nuestra maquina, que para ellos hemos descargado la extensión correspondiente que este caso es un generico para las maquina Tipo COREXY con salida PWM, al que le conectaremos luego un servomotor o bien un laser en proyectos futuros...
| Complemento para nuestra maquina CnC |
6- Configuración y Envió de Datos
Para cargar los datos a nuestro arduino será necesario un software, que este caso usamos el Universal Gcode Sender que es bastante ligero, facil de usar y bastante grafico.usamos la versión 2.0 que es menos problema nos ha creado desde el principio.
Para cargar el archivo, lo primero es conectar el arduino al puerto USB, buscamos en la opcion de Puerto y seleccionamos el COM6 que es nuestro caso. Luego seleccionamos los baudios en 115200 y el firmware GRBL uns vez seleccionado todo le damos a abrir.
Ahora tenemos que configurar algunos parámetros de nuestra máquina, pero antes debemos conocer los pasos que tiene dar nuestro motor para recorrer un milímetro y esto se saca conociendo 2 datos.
El primer dato es los pasos por vuelta que tiene nuestro motor, esto lo debemos sacar de los datos de nuestro fabricante. Por lo general el fabricante nos indica el angulo que recorre el motor en cada paso, suele ser 1,8 grados por paso en el caso del NEMA17; Una vuelta completa son 360 grados. Dividimos:
360 grados de la vuelta completa / 1,8 grados cada vuelta = 200 PASOS por vuelta
El otro dato que necesitamos conocer es cuanta distancia va a recorrer nuestro husillo cuando de una vuelta completa, en nuestro caso como lo hemos fabricado nosotros sabemos que nuestro husillo recorre 8mm en cada vuelta.Esto quiere decir que nuestro motor no tiene que dar una vuelta completa para recorrer 1mm, dividimos de nuevo:
200 paso por vuelta del motor / 8 mm que recorre el husillo = 25 pasos por mm
Ahora si estamos listos para configurar nuestra máquina. Vamos a linea de comandos y escribimos $$ y presionamos “enter”, esto nos dará la lista de todos los parámetros configurables de nuestro CNC.
Me voy a centrar lo primero en lo mas basico para hacer funcionar nuestra maquina.En este caso voy a tocar los pasos de cada eje y la velocidad.
Comando $100 son los paso del eje X.
Comando $101 son los paso del eje Y
En nuestro caso en el Eje X $100=2050 si instalo el motor de 5V 28byj-48 o $100=25 si instalo el NEMA17 y en el Eje Y como solo va a ir el NEMA17 $101=13.630.
Para la velocidadad los comando son $110 para el eje X y $111 para el eje Y . Los dos lo hemos pues a 200 mm/min $110=200 y $111=200.
Con esto ya tendriamos todo para poner a prueba nuestra maquina.
Para hacer la prueba podemos seguir este orden:
-Poner la maquina en el punto de inicio con el modo manual.
-Reset del punto de inicio.
-Explorar y buscamos el archivo generado con el InKscape.
Una vez enviado información, la maquina se pondra a imprimir el archivo, dejamos un video con la primera prueba realizada:
Una vez realizada la primera prueba nos hemos encontrado con algunos inconvenietes, el mas importante ha sido la falta de presición, aunque tambien la falta de potencia del motor de 5V en el eje X, por lo que hemos decidido cambiarlo por un nema 17.Tambien cambiamos el sistema de sujeción del boligrafo, por uno mas preciso, con menos holgura y un sistema estable de retorno posición inicial.
El diseño final a quedado de la siguiente manera:










Comentarios
Publicar un comentario