IMPRESORA 3D _ ARDUINO – Móstoles, GRUPO 20
IMPRESORA 3D _ ARDUINO
Índice de contenidos:
2. Lista
de materiales
3. Montaje
de la parte Hardware
4. Software
5. Resultados
6. Problemas
encontrados
7. Posibles
mejoras
8. Enlaces
de interés
1. Introducción
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€.
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.
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.
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
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
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 |
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
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.
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:
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 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
componentes, dividimos la tarea en dos partes:
3.3.1.
Circuito de la máquina CNC
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.
siguiente:
Esquema general del circuito para la máquina CNC |
driver por separado, tendríamos lo siguiente:
Driver para el eje Y |
3.3.2.
Circuito para controlar el bolígrafo 3D
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.
podría ser el siguiente:
Esquema general del circuito para controlar el bolígrafo 3D |
Esquema general del circuito con transistor |
4.
Software
los siguientes archivos para probar todas las funciones de nuestra impresora
3D:
4.1.
Código para mover un motor
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:
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.
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
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.
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
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’.
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 –.
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.
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
anterior, y tras algunos intentos fallidos, obtuvimos un cuadrado como el que
podemos ver a continuación:
Resultado de la impresión |
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
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.
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.
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.
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.
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.
ú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
se nos han ocurrido las siguientes:
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.
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.
utilizar dicha librería por dos razones fundamentales:
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.
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.
ú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
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
con el funcionamiento de nuestra impresora:
asignatura, dónde, además de este proyecto, se pueden ver otros muy
interesantes: http://dse-urjc.blogspot.com.es