IMPRESORA 3D _ ARDUINO – Móstoles, GRUPO 20

IMPRESORA 3D _ ARDUINO

Proyecto realizado por Daniel Pérez Bartolomé, Javier Redondo Antón y Rubén Sebastián Morán (GRUPO 20, Móstoles)

/* —————————————— */

Índice de contenidos:

1.     Introducción. 3


2.     Lista
de materiales
. 4


3.     Montaje
de la parte Hardware


4.     Software


5.     Resultados. 12


6.     Problemas
encontrados
. 13


7.     Posibles
mejoras
. 14


8.     Enlaces
de interés
. 14

/* —————————————— */

1.   Introducción

Las impresoras 3D son cada vez
más populares entre la población; pero, aunque hayan bajado algo el precio
desde que aparecieron, aun siguen siendo bastante caras como para comprarlas
únicamente como hobbie. Nuestra propuesta con este proyecto es utilizar todas
las posibilidades que nos brinda Arduino para crear nuestra propia impresora 3D
por alrededor de 100€.
Empezaremos determinando cuáles
son las partes básicas para construir una impresora 3D:
·     
Una máquina CNC con ejes X, Y y Z.
·     
Filamento de plástico.
·     
Un HotEnd que funda el filamento plástico.
·     
Un extrusor que empuje dicho filamento a través
del HotEnd.
La parte de la máquina CNC no suponía
mucha dificultad, porque existen muchas maneras de construirla con materiales más comunes. Buscando información en Internet, vimos
que podía hacerse utilizando viejas disqueteras de ordenadores antiguos, ya que
éstas llevan un motor y unos raíles. Pensamos hacerlo así y encontramos 3
disqueteras viejas, pero el problema que surgió, fue que los raíles de nuestras
disqueteras eran demasiado cortos para lo que teníamos pensado hacer. Entonces
decidimos hacerlo comprando directamente los motores, las varillas metálicas y
el resto de componentes como ya detallaremos más tarde.
Lo más difícil sin embargo, fue el resto de las
otras tres partes, relacionadas con la expulsión del plástico caliente.
Buscando la manera de hacerlo, encontramos un bolígrafo
3D
, no solo barato sino que también contaba con extrusor, HotEnd y filamentos de
plástico.

2.  
Lista de materiales

Dicho todo lo anterior, la lista
final de materiales utilizados para la construcción de la impresora 3D con sus
respectivos precios es la siguiente:
*: material proporcionado por el profesor
**: material propio





3.  
Montaje de la parte Hardware

3.1.       
Máquina CNC

Como ya hemos mencionado
anteriormente, la máquina CNC consta de 3 ejes: uno que se desplace hacia
delante y hacia atrás (eje Y), otro que se desplace a la derecha y a la
izquierda (eje X) y el último que se mueva arriba y abajo (eje Z). Cada uno de
ellos se monta de forma prácticamente idéntica.

Al no utilizar disqueteras de
ordenadores viejos, tuvimos que unir todos los componentes por separado:

  • La estructura básica de los ejes la montamos
    utilizando madera, piezas de Mecano y piezas de Lego.
  • Para la parte móvil de los ejes utilizamos un
    motor 28BYJ-48, junto con una rueda con muescas y una correa.
  • Todo ello unido con cola.
                  

Estructura del eje Y
Estructura del eje X
Lo que resultó un poco más complicado de montar, fue el eje Z ya que, aunque la estructura es
exactamente la misma que la de los otros dos ejes, éste debe ir acoplado al eje
X y además debe aguantar el peso del bolígrafo 3D, el cual ya es bastante más pesado
que un bolígrafo normal.
Estructura con los 3 ejes completamente montados


3.2.       
Hackeo del bolígrafo 3D

El bolígrafo 3D tiene tres controladores. Éstos son: el de grosor del plástico, el de extrusión hacia atrás
y el de extrusión hacia delante. El único de estos controladores que es
realmente necesario automatizar es el de extrusión hacia delante, ya que es el
encargado de expulsar el filamento fuera del HotEnd, una acción necesaria para
la impresión en 3D.
Lo que hay que hacer para
automatizar el funcionamiento de dicho controlador es crear un circuito
conectado al botón de extrusión hacia delante que permitirá a Arduino simular
las pulsaciones del botón. Para acceder al botón, lo primero que tuvimos que
hacer fue desmontar el bolígrafo como vemos en la siguiente imagen:
Una vez desmontado el bolígrafo,
pudimos acceder fácilmente al botón de extrusión. Este botón tenía cuatro salidas, por lo que debimos comprobar cuáles dos eran las que activaban el botón. Para ello,
conectamos el bolígrafo a la corriente eléctrica con el adaptador incluido y
fuimos probando con una resistencia de 1kW
hasta encontrar la combinación adecuada (la combinación que activaba el motor
del extrusor del bolígrafo).
A continuación, soldamos un cable
a las dos salidas correctas y, antes de volver a montar el bolígrafo,
comprobamos tocando ambos cables con la resistencia de 1kW que el motor se movía. A
la hora de volver a montarlo, hicimos un pequeño agujero en la carcasa del
bolígrafo con un taladro para sacar al exterior los cables previamente soldados.
Prueba con la resistencia de 1kW
Agujero para la salida de los cables
  

3.3.       
Circuito

A la hora de conectar todos los
componentes, dividimos la tarea en dos partes:

3.3.1.    
Circuito de la máquina CNC

Al conectar los tres
motores – recordemos que había uno para cada eje – lo único que tuvimos que
hacer fue conectar cada motor a un motor driver y cada motor driver a los pines
correctos en Arduino, ya que, si conectabamos simplemente los motores sin los
drivers, no podrían ser controlados directamente con Arduino. Además, de cada
uno de los motor drivers, saldría un cable conectado al pin de 5V de Arduino y
otro a GND para suministrarles energía.
El esquema general sería el
siguiente:
Esquema general del circuito para la máquina CNC
Y si nos enfocamos en cada motor
driver por separado, tendríamos lo siguiente:

Driver para el eje X
Driver para el eje Y

Driver para el eje Z

3.3.2.    
Circuito para controlar el bolígrafo 3D

En este caso, el circuito es más
sencillo incluso que el anterior. La clave de este circuito es un transistor.
Todo lo que tenemos que hacer es conectar uno de los cables que salen del
bolígrafo con el colector del transistor y el otro cable, con el emisor. Tras
esto, conectamos el transistor con nuestro Arduino, uniendo el colector del
transistor con GND y conectando la base de éste con el pin 12 de nuestra placa.
Para hacer esta última conexión, conectamos una resistencia por medio que, en
nuestro caso y tras varias pruebas, resultó ser de 22kW.
Un esquema de este circuito
podría ser el siguiente:
Esquema general del circuito para controlar el bolígrafo 3D
Quedando de la siguiente manera:

Esquema general del circuito con transistor

4.  
Software

En cuanto al software, implementamos
los siguientes archivos para probar todas las funciones de nuestra impresora
3D:

4.1.       
Código para mover un motor

Lo primero que hicimos fue
implementar un código que movía un único motor. Este código lo usamos para
comprobar por separado que los 3 motores se desplazaban correctamente. La parte
importante del código es la siguiente:
Lo que hace este código es
provocar el avance del motor un número determinado de pasos (indicado por la
variable steps_left) y al acabar, que avance otro número de pasos en dirección
contraria. Con este código pudimos comprobar que todos los motores se
desplazaban correctamente.
El código completo puede
encontrarse en el siguiente enlace de GitHub bajo una licencia de Creative Commons: https://github.com/jarudaSeytr/3dprinter-arduino/blob/master/stepper_1_motor.ino

4.2.       
Código para mover los tres motores a la vez

A continuación, implementamos
otro código muy similar al anterior, pero, en este caso, desplazaba los tres
motores a la vez. Con él pudimos comprobar que los 3 ejes podían desplazarse al
mismo tiempo sin problema: el voltaje era suficiente para mover los 3 motores a
la vez y no se producían conflictos entre ellos.
Como este código es casi idéntico
al del apartado 4.1, dejaremos simplemente el enlace de GitHub para su
consulta: https://github.com/jarudaSeytr/3dprinter-arduino/blob/master/stepper_3_motors.ino

4.3.       
Código para imprimir un cuadrado

Por último, creamos el código
final con el que ya imprimimos una figura. Por su sencillez, decidimos que
dicha figura iba a ser un cuadrado. Los cambios respecto a los dos códigos
anteriores son los siguientes:


  • Separamos los tres motores para poder moverlos
    independientes.
  • Creamos una nueva variable ‘niveles’ que indica
    el número de niveles que tendrá la figura a imprimir: cuántos más niveles, más
    altura tendrá la figura.
  • Para imprimir el cuadrado, el algoritmo que
    utilizamos fue el siguiente:

          mover(eje_X);
          mover(eje_Y);
          moverDireccionContraria(eje_X);
          moverDireccionContraria(eje_Y);
          subir(eje_Z);

Y esto se repite
el número de veces indicadas por la variable ‘niveles’.

Asimismo, cabe mencionar que tras
cada movimiento del motor incluimos un pequeño delay para no sobrecargarlos, lo
que además nos permitía indirectamente controlar la velocidad de impresión –
cuánto más delay, más lento se imprimiría –.
Por tanto, cada lado del cuadrado
lleva asociado el siguiente código:
  • El
    límite superior de la variable i del
    bucle
    for indica la longitud del lado
    del cuadrado (expresada en pasos del motor).
  • En
    stepper2(); podemos ver que el motor
    que se va a desplazar será el 2 en este caso.
  • Con
    el delay interno del for indicamos el retraso que habrá tras
    cada paso del motor.
  • Con
    el delay externo, indicamos el restraso
    que se producirá tras acabar el lado y empezar el siguiente.
Como en los casos anteriores, el código completo puede
encontrarse online y bajo una licencia de Creative
Commons
accediendo al siguiente enlace: https://github.com/jarudaSeytr/3dprinter-arduino/blob/master/square_CNC.ino

5.  
Resultados

Una vez llevado a cabo todo lo
anterior, y tras algunos intentos fallidos, obtuvimos un cuadrado como el que
podemos ver a continuación:
Resultado de la impresión
Como se puede ver, no tiene mucha
altura ya que para esa prueba imprimimos únicamente tres niveles, pero podemos
ver como tiene forma de cuadrado perfecto como le indicamos.

A continuación, encontraréis un video con el funcionamiento de los ejes y un ejemplo de impresión:

6.  
Problemas encontrados

Durante la realización de la práctica se encontraron los siguientes problemas:
o   Como
ya hemos mencionado anteriormente, al principio teníamos pensado construir la
máquina CNC con disqueteras viejas, pero debido a su escaso tamaño, nos
decantamos por construir los ejes con unos motores, varillas y una correa.
o   A
la hora de montar el eje Z, fue bastante dificil por el hecho de estar unido al
eje X. Además tuvimos que hacer una pieza de madera especial en la que encajara
nuestro bolígrafo 3D para que no se desplazara a la hora de imprimir.
o   A
la hora de hackear el bolígrafo 3D, tuvimos que tener extremo cuidado al soldar
los cables, ya que no podíamos estropear el bolígrafo porque si no, no
tendríamos el tiempo suficiente para pedir otro por Internet. Además, los componentes del
bolígrafo son muy pequeños, y nos podríamos equivocar fácilmente.
o   Cuando
probamos por primera vez el movimiento de los ejes, vimos que no iban tan
ligeros como esperábamos. Esto se debe a que la armadura fue hecha con
madera y por ende, las varillas no deslizaban bien. Aunque lijamos la madera lo máximo
posible, aun sigue habiendo momentos en los que se atasca.
o   En
cuanto al código, no nos supuso mucho problema; lo único que nos costó un poco
más fue calibrar la longitud que tendría que tener el cuadrado (a veces se
salía de la base) y los delays necesarios para que todo el proceso se
desarrollara correctamente.
o   Por
último, hubo otro problema con el material sobre el que imprimíamos.
Probamos con distintos tipos de materiales y había algunos en los que el
plástico, como no se solidifica instantáneamente, no agarraba bien, por lo que
el bolígrafo iba arrastrando el plástico según imprimía. Por culpa de este
problema, tuvimos que hacer gran cantidad de pruebas.

7.  
Posibles mejoras

En cuanto a las posibles mejoras,
se nos han ocurrido las siguientes:
o   Utilizar
la librería <Stepper.h> para simplificar el código. Esta librería
incorpora una serie de funciones que hacen que el movimiento de los motores sea
mucho más sencillo. En nuestro caso no ha sido un gran problema no utilizarla
porque la figura que hemos decidido imprimir no es muy compleja.
o   Además,
tal y como está desarrollado el proyecto, si queremos imprimir una nueva
figura, tendremos que cambiar todo el código programando el movimiento de los
motores para la nueva figura. Buscando información en Internet descubrimos la
existencia de la librería grbl, a la
que se le puede pasar como parámetro las coordenadas de los movimientos de los
tres ejes en un archivo G-CODE (creado fácilmente a través de una página web
como http://www.makercam.com), la cual permite transmitir esa información a los motores sin tener que cambiar código.
No decidimos
utilizar dicha librería por dos razones fundamentales:

a.    
Si la hubiéramos utilizado, no hubiéramos tenido
que implementar nada de código, ya que las distintas figuras se pasan como
coordenadas a dicha librería.
b.    
Además, la librería estaba preparada para una
CNC de dos ejes en el caso de Arduino UNO y nosotros necesitábamos los 3 ejes.
o   Por
último, y como mejora poco esencial, pensamos que se podría seguir el mismo
esquema expuesto en esta guía para construir otra impresora 3D pero de mayores
dimensiones, ya que esta solo puede imprimir figuras de tamaño muy reducido
(unos 5×5 centímetros) y tapar el cableado de alguna manera para que no
interfiera con el movimiento de los ejes.

8.  
Enlaces de interés

[1]. Podéis acceder a una memoria más detallada del proyecto (PDF) a través del siguiente enlace:
https://drive.google.com/file/d/1X1N3c-fvXRcOwas4xsX4Hiczj2phn3QL/view?usp=sharing

[2]. Enlace a la presentación (PPT) del proyecto: https://drive.google.com/file/d/1XQCd2AJdn02wT-4N9JEiNfp-44XB2Z3n/view?usp=sharing

[3]. Enlace a la presentación (PDF) del proyecto:
https://drive.google.com/file/d/1OEzsG3CNLepqLR030kEStQH_j8E9pAdS/view?usp=sharing

[4]. Enlace a la página de GitHub del proyecto: https://github.com/jarudaSeytr/3dprinter-arduino
[5]. Enlace al vídeo de YouTube
con el funcionamiento de nuestra impresora:

[6]. Enlace al blog de la
asignatura, dónde, además de este proyecto, se pueden ver otros muy
interesantes: http://dse-urjc.blogspot.com.es

También te podría gustar...

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *