15 feb. 2017

Añadiendo cama caliente a la Impresora 3D BQ Hephestos: Instalación y compilación firmware

Si queremos imprimir en ABS, necesitaremos mesa calefactada

Hay instrucciones de cómo hacerlo en la página oficial de BQ España, pero están desfasadas y sólo explican cómo hacerlo en la versión 1.4.2, que difiere sustancialmente de las últimas versiones más afinadas del firmware, como la 2.3.1 o 2.4.0 (no lo intentéis con la 2.4.0; da error de compilación nada más empezar).

Bueno, resumiendo, os indicaré cómo compilar el firmware para que os sirva para éstas y sucesivas versiones, con la opción de cama caliente activada y que funcione correctamente. Pero antes de nada, os muestro cómo la he montado yo (ya hay tutos en youtube así que me ahorro esta parte - El chico de este vídeo, aunque de físico y ropa clavadito a mí, no soy yo jeje).
Un inciso... una empresa de la talla de BQ debería tener precompilados los firmwares con las diferentes opciones, y dejar elegir al usuario (incluso versiones con sensores de altura para autocalibrado de mesa), es inaudito que un usuario que no tiene por qué saber nada de compiladores, tenga que comerse la cabeza... aunque en el fondo de eso se trata cuando es una impresora que te montas enterita tú mismo... pero es una nimiedad compilarlo y ahorrar muchos quebraderos de cabeza (hay varios hilos en los foros de dudas sobre este tema).
Antes de nada, aparte de la mesa, cables y termistor, para alimentar la mesa necesitamos una fuente de alimentación de 12V de al menos 8A (mejor de 11 o algo más); cuanto más amperios antes calentará la mesa y más fácilmente la mantendrá caliente. Lo más económico y fiable es utilizar una vieja fuente de alimentación ATW de al menos 300W, fijándonos en los amperios que indica para la conexión de +12V, son duraderas y con el ventilador están bien refrigeradas:



Para encender la fuente, basta con puentear el cable verde con uno negro, o mejor colocar un interruptor por si queréis dejarla apagada cuando uséis PLA:


La placa que traen las impresoras de BQ traen un MOSFET con disipador que puede manejar perfectamente 10A, pero si la fuente es de más potencia, es mejor evitar que pase toda esa corriente por la alimentación de la placa Arduino 2560 y hacerlo aparte con un relé.

Este es el relé electrónico de estado sólido que usaré, hasta unos 80A pico.
Al utilizar un relé, de forma independiente de la electrónica Ramps/Arduino, también podéis usar una fuente de otro voltaje (entre 5 y 20V), ya que toda la energía se convierte en calor, hablaremos de Vatios, si el transformador es de 12V y 11A tendremos 132W, que con un ambiente de 20ºC son más que suficientes para calentar la cama en 2 minutos y mantenerla caliente a 70ºC.

Para que funcione la alimentación al relé, yo he puenteado con dos cables de la alimentación principal a la alimentación de la cama (el relé no consume casi nada, por lo que pueden ser cables finos):


No voy a entrar en demasiados detalles en la colocación de la mesa; para que no me estorbaran demasiado los cables lo que hice fue preparar primero por dónde los pasaría, de forma que pudieran doblarse sin estirarse ni engancharse en ningún sitio al moverse la mesa de atrás adelante y viceversa.

El termistor de la cama va conectado justo al lado del termistor del inyector, da igual polaridad
He utilizado cinta kapton para amarrarlos entre sí y hacer más rígido el conjunto, y que no anduviera cada cable por su lado.


Luego los he cortado calculando que con la máxima extensión, sobrara algo de cable, pasando por debajo hasta su sitio cada uno:


Seguidamente los he soldado, con el termistor metido en el hueco pero sin sobresalir demasiado (en este punto es conveniente poner por el otro un trocito de cinta Kapton y silicona transparente para fijar el termistor), 

y finalmente amarramos bien con cinta kapton.


La cama entonces se amarra con los muelles y tornillos sustituyendo a la base original, y justo debajo del cristal. El cristal aísla un poco el paso del calor, y hay gente que utiliza directamente la base caliente sin cristal a menor temperatura, pero no lo recomiendo, tarde o temprano dañaremos las pistas que la calientan.

He colocado el relé en la parte de atrás, cuando se alimenta de 12V activa el paso de la corriente, que directamente alimenta la cama caliente. Uno de los polos del transformador que alimentará la cama se conecta directamente, y el otro al interruptor. Una vez todo conectado y actualizado el firmware, se puede dejar justo debajo de la placa electrónica:

Es necesario amarrar el relé para que no se mueva con el vaivén de los cables que van a la mesa

Para conectar la alimentación a la mesa he utilizado un conector MOLEX hembra, para poder desconectarla en los mantenimientos que sean necesarios (el cable amarillo de la fuente ATX es el de 12V):

Y ahora es donde la matan... compilando el firm con soporte para la mesa

Antes de nada, descargar el código fuente 2.3.1 del repositorio github de BQ, (o la última versión donde se encuentran las diferentes actualizaciones), es el archivo "source code (zip)". Con la 2.4.0 no me compilaba (faltaban archivos)
Lo descomprimimos en una carpeta, da igual dónde, pero es conveniente dejarla por ej. en C:\Marlin para simplificar los pasos.
Requiere Arduino instalado en C:\ (ver indicaciones en la documentación de la web), además de los controladores USB, por lo que lo instalamos en C:\Arduino con los controladores (que además nos permitirá averiguar fácilmente qué puerto COM se le asigna en herramientas -> Puerto al abrir el IDE, que necesitaremos saber al inicio de la compilación).
Instala, por último, el compilador de código abierto Make para Windows, descargándolo de esta web.
Recientemente han hecho mejoras para que el mismo código soporte todas las impresoras BQ (bravo por ellos, más fácil de mantener y las mejoras se aplican a todas), de forma que antes de la compilación nos pregunta por el modelo de impresora (Hephestos en mi caso), el idioma (Español) y el puerto COM que Windows haya asignado a la impresora.
Ya no es necesario como en anteriores versiones usar el Arduino IDE, han creado un archivo de comandos que lo hace todo por nosotros; compila y flashea directamente, comprobando que todo ha ido bien.

Para que la cama caliente funcione, tenemos que hacer un par de cambios en el archivo Configuration.h que está dentro de la carpeta de nuestra impresora, en mi caso \Marlin\config\hephestos. Si lo véis complicado, aquí podéis descargar los fuentes ya modificados para esta impresora, versión 2.3.1, que sólo falta compilar.

Tenemos que buscar y descomentar (quitando las dos // del principio):

//#define HEATED_BED_SUPPORT   -->   #define HEATED_BED_SUPPORT

Y por último cambiar en este texto el 0 por un 1:

#define TEMP_SENSOR_BED 0  -->  #define TEMP_SENSOR_BED 1

Guardamos el archivo y ya podemos compilar. Antes de nada, conectamos el cable USB de la tarjeta al ordenador, y abrimos una ventana de comandos con 'cmd' y ejecutándolo como administrador (suele estar en la carpeta de Inicio -> 'Sistema de Windows' en Win10 o en accesorios en Win7 y anteriores).

Escribimos en la ventana de comandos:

'cd .. ' <enter> hasta que salgamos a la raíz C:\ (si no estamos en C:, cambiamos con 'C:').

'cd Marlin' (el directorio donde hemos dejado los archivos a compilar)

ejecutamos 'make.cmd' (todo sin las comillas), y respondemos a las preguntas (modelo, idioma y puerto COM con un número, que como hemos dicho arriba podemos averiguar con el IDE Arduino).

Si has instalado todo correctamente, el IDE y el GNU Make bien instalado, debería ponerse a compilar y en unos segundos ponerse a grabar el firmware en la placa (verás las luces de la placa parpadear al comunicarse por el puerto serie). La ventana de comandos tendrá un aspecto parecido a este:


Ahora, al reiniciar la impresora, verás un cambio en la pantalla:
Previamente con el firmware anterior veíamos esto:


Y ahora vemos esto, con indicación de la temperatura de la cama y la temperatura deseada por el programa a la derecha de la barra (y no se pondrá a imprimir hasta alcanzarla, y que se establece en el programa generador del Gcode, como el Cura u otro):


Hay que tener en cuenta que los programas anteriores, realizados sin cama caliente, no la activarán, así que no nos valen para ABS u otros que requieran cama caliente.
Yo utilizo dos perfiles diferentes en el Cura, uno para PLA y otro para ABS; 
  • En la pestaña de configuración avanzada, indicamos que tiene mesa caliente (Hotbed).
  • Desactivamos por completo el ventilador de enfriado, es mejor que enfríe poco a poco para que no agriete (es extremadamente duro).
  • Temperatura de inyección a 235ºC y mesa a 70ºC.

El ABS para que agarre bien al cristal lo mejor es mezclar acetona con restos de ABS en una proporción 6/1 (esperar que se vaya disolviendo) en un spray para pulverizar sobre el cristal (si aún así no agarra bien, un cristal pulido o esmerilado blanco agarra mejor).

El PLA al ser ecológico y más económico, lo utilizo para prototipos o piezas de repostería o juguetes de niños (no son tóxicas), en cambio el ABS para piezas más duraderas y resistentes que estén expuestas a la humedad o que queramos que duren más de 2 años con mucha humedad (el PLA por su naturaleza orgánica procedente de azúcares, con la humedad se vuelve quebradizo y enseguida se disuelve).
Además el ABS, si imprimimos en un local cerrado y mucho cantidad, genera vapores nocivos, por lo que es recomendable mantener ventilado, pero sin cambios bruscos de temperatura, que lo vuelven quebradizo durante la impresión.

Bibliografía:

3 comentarios:

  1. En primer lugar, muy buen aporte, interesante como siempre. Un consejo para mayor estabilidad de la fuente de alimentación sería recomendable poner una carga en la línea de +5V, una resistencia de potencia que disipe unos cuantos watios ayuda a que las tensiones de todas las salidas sean correctas.

    ResponderEliminar
    Respuestas
    1. Gracias a tí por el aporte Shuko, no sabía que pudiera afectar (¿tal vez en las fuentes de calidad no pase?). En mi caso no es necesario mantener estable el voltaje de salida, pero le vendrá bien a quien alimente a través de placa. Gracias!

      Eliminar
    2. En general las fuentes están pensadas para tener una carga aprox. equilibrada en las salidas. Las fuentes más modernas tienen una potencia mucho mayor en la línea de 12V, para las gráficas potentes, por lo que serán menos sensibles a este problema.

      Igual es un problema de las fuentes más antiguas, pero en cualquier caso si quieres saber más de fuentes, modelos que funcionan bien y cuales pueden dar problemas mi fuente principal de información es http://www.jonnyguru.com/index.php

      Una de las pruebas que hace es la carga desequilibrada de las líneas de 5V y 12V, y algunas fuentes lo llevan muy mal ;)

      Eliminar

Puede dejar su comentario. Los comentarios descalificativos o sin relación ninguna con el tema tratado serán eliminados sin previo aviso. Antes de plantear una duda, asegúrate de que la respuesta no está en otra entrada del tema visitando la etiqueta que hay al final del artículo para verlos todos; muchas veces lo que planteas puede haber sido corregido o comentado en otra entrada posterior.