domingo, 1 de enero de 2017

Parte 10. Instalación del software y primeras pruebas

Décima entrega, aunque tengamos mucho hardware relacionado con la impresora 3d, necesitamos un software que nos permita utilizarla. Esta entrega será corta ya que no pretendo hacer un super manual de los programas a utilizar.

Como podéis observar ha habido mucha distancia temporal entre el último post y este... la vacaciones, vuelta al trabajo, los problemas que me ha dado la configuración de la impresora 3d y alguna cosilla más me han retrasado (incluida las pocas ganas de escribir... para que os voy a engañar).

Sprinter

Fue el primer firmware que utilicé en la impresora, junto al Pronterface fue mi primera iniciación en la parte de configuración y control de la misma. Este es el enlace a la web de RepRapWiki donde podéis informaros sobre él y descargarlo.

Para poder configurarlo debemos abrirlo con el Arduino IDE, elegir el tipo de placa, la configuración de la conexión a la placa, la configuración del firmware (sobre el archivo configuration.h) y subirlo.

Pronterface

Es un software gratuito (enlace) que nos permite realizar los pasos con nuestra impresora.

Yo lo utilice para:
  • Saber si los motores de la impresora funcionaban como debían, para ello puse los ejes a la mitad, conecté y hice que se movieran un poco hacia el lugar donde deberían y actuar (invirtiéndolos si fuera necesario).
  • Para lanzar códigos G-code (explicados más abajo) y observar su ejecución (un poco pruebas, un poco curiosidad).
  • Para realizar pruebas en el extrusor, en mi caso el gran generador de problemas... el extrusor (llegando incluso en plantear un cambio de sistema de extrusión).

Marlin

Este es el segundo firmware que he utilizado (enlace a RepRapWiki) y que tiene mejores comentarios, más opciones, etc. que el anterior. Yo me he basado en la configuración que he visto en la web de Zona Maker.

El modo de funcionamiento y configuración es igual que el Sprinter, también se usa el archivo configuration.h. Os pongo un enlace a la configuración que yo he puesto por si queréis hacerle algún cambio, mejora, etc.

Aún así os voy a poner cada uno de los elementos que he modificado en la configuración base y la descripción del mismo (veréis que pongo entre comentarios los valores previos, para tener posibles vueltas atrás) (al abrirlo veremos que es un archivo de configuración del lenguaje de programación C) (pongo primero el nombre del factor en negrita, después el valor que le puse en cursiva, dos puntos para separar y por último una breve descripción):

  • BAUDRATE 115200: Es el número de bits por segundo (velocidad) para la comunicación entre la impresora y el equipo.
  • MOTHERBOARD BOARD_RAMPS_13_EFB: Indica el tipo de placa y la conexión de las mismas, debemos ir al archivo boards.h y elegir el apropiado (en mi caso: RAMPS 1.3 con Extrusor, Ventilador y Cama).
  • TEMP_SENSOR_X 1: Es la configuración del sensor de temperatura de un elemento, el X que indica el número (de 0 a 2) o la cama. Justo por encima hay una descripción numérica de los valores aceptados.
  • HEATER_X_MAXTEMP 240: Lo utilizamos para indicarle al extrusor marcado por la X (de 0 a 2) cual es la máxima temperatura (en grados centígrados) que soportará. El valor predefinido es 275, que no sé si es mucho o poco... yo lo puse a 240 porque voy a trabajar en 220ºC con un margen de 20ºC extra.
  • BED_MAXTEMP 130: Similar al valor anterior, pero esta aplicada a la cama. El valor predefinido era 150 y al igual que el anterior lo baje un poco... aunque aún no está conectado y si algún día lo conecto debería reconfigurarlo. Si os fijáis en la documentación oficial (enlace a la wiki) veréis que os dice que el máximo de temperatura es de 180ºC.
  • X_MAX_POS 200: Con este valor le indicamos el ancho máximo (en milímetros) que tendrá nuestra área de impresión. Debéis pensar que esto equivale a crear un cubo sobre nuestra cama caliente y aquí le estamos dando el ancho (visto desde el frontal), también deciros que la cama tiene un margen que os permite aprovecharlo en alguna circunstancia.
  • Y_MAX_POS 200: Profundidad del área de impresión, valor íntimamente ligado al anterior y al siguiente.
  • Z_MAX_POS 250: Altura del área de impresión.
  • XY_TRAVEL_SPEED 1000: Es la velocidad (medida en milímetros por minuto) en la que se moverán los ejes X e Y. Aumentar este valor haría que nuestra impresora se moviera más rápidamente en cada capa, pero implicaría que necesitamos una alta densidad de extrusión y tener cuidado con la inercia (cuando se mueva muy rápido, al llegar al final puede pasarse y tener que retroceder un poco, lo cual puede hacer que las paredes verticales de la pieza tengan pequeños sobrantes de plástico y el detalle sea menor). Yo personalmente prefiero empezar con una impresora lenta que imprima bien y, puede que en el futuro, ir optimizándola para que sea más eficiente en tiempo y acabado.
  • DEFAULT_AXIS_STEPS_PER_UNIT {80, 80, 4000, 200}: Este valor de la configuración es el más importante, por ese motivo, le voy a dedicar un apartado específicamente (el siguiente).
  • DEFAULT_MAX_FEEDRATE {330, 330, 3.3, 45}: Es un grupo de valores que determina la velocidad máxima (a través de número de pasos por unidad de tiempo) que usará cada motor para realizar movimientos aunque las traducciones son un poco confusas (como siempre: X, Y, Z y E). Es muy útil bajar este valor para evitar perdida de pasos (lo cuál me pasó con el extrusor).
  • DEFAULT_MAX_ACCELERATION {1500, 1500, 100, 10000}: Similar al anterior, pero en este caso es la aceleración máxima que usará en cada eje. Es bueno tenerlo alto porque así la impresión es más rápida, pero tenerla alto implica que cuando la aguja llegue a un punto donde tenga que hacer un cambio radical de velocidad (p.e. en esquina del borde de una pieza) puede que se pase y tenga que volver atrás, dejando una pequeña rebaba que hace la pieza menos detallada (aunque sea fácil de quitar).
  • DEFAULT_ACCELERATION 1000: En este caso le configuramos la aceleración estándar o media que tendrá cada motor, todos por igual.
  • DEFAULT_RETRACT_ACCELERATION 2000: Es la aceleración que utilizará cada motor cuando retroceda y vuelva hacia atrás, es especialmente útil para que el extrusor retraiga al filamento cuando deje de imprimir.
  • DEFAULT_XYJERK 15.0: Más valores de configuración de la velocidad, en este caso son de tirones en los eje X e Y pero siendo sinceros no sé a que se refieren.
  • DEFAULT_EJERK 1: Similar al anterior pero para el extrusor.

DEFAULT_AXIS_STEPS_PER_UNIT

Es el número de pasos que debe moverse cada motor de cada eje para avanzar o retroceder 1 milímetro. Tiene 4 valores encerrados en una llave (a modo de array) que tienen una distribución específica: Eje X, Eje Y, Eje Z, Extrusor.

Para hacer el cálculo del valor correcto tenemos que colocar cada eje en una posición y tomarla de referencia, después realizar una medida base, hacer un movimiento grande (al menos 50 milímetros, a mayor medida localizaremos el error mejor), volver a hacer una medida y comprobar que está correcto. En caso de que estuviera incorrecto, se hace una regla de tres o lo hacemos por la cuenta de la vieja (menos recomendable).

En el caso del extrusor lo más correcto es mandar extruir unos milímetro y medir la longitud de un hilo creado.

G-code

Es el código interno que utiliza la impresora para ejecutar ordenes, si habláramos de un microprocesador este sería el juego de instrucciones.

En este enlace tenéis acceso a la wiki que os da información sobre cada G-code donde podéis encontrar información por si necesitáis usar alguno en concreto.


Repetier

Este es el programa final que he usado para imprimir piezas, instala un servidor y un host. Con el host podemos conectarnos a los servidores que deseemos y así imprimir en varias impresoras desde el mismo equipo (estén estas más cerca o más lejos). Con el servidor podemos configurar una impresora para que imprima las piezas enviadas desde diferentes host.

Nos lo descargaremos de forma gratuita desde la web del fabricante. Y lo instalaremos como cualquier otro software.

Extrusor

El extrusor me ha dado más de un problema, ha sido el que ha hecho tener parada la impresora más tiempo. He de agradecer que en este sentido me han ayudado mis compañeros de trabajo que tienen experiencia con impresoras 3d y en especial Juan José Gallego (un maker autodidacta sin parangón).

El primer problema fue a la hora de introducir el filamento, que no encajaba del todo y después de desmontarlo/montarlo, mirarlo y estudiarlo descubrí que el problema es de la rueda interna (el rodamiento interno del filamento) que está al otro lado de la rueda dentada que tiene el motor.
Esta rueda suele tener un muelle (en otros extrusores) para ajustar la presión, al no haberla aquí realizaba una gran presión que el motor no podía solventar.
La solución fue mover el bloque que contenía a esta pieza hacia el exterior (alejándolo de la rueda dentada del motor), al hacer esto descubrimos que esta pieza se sujeta en el motor con unos tornillos cónicos que al apretarlos vuelven a dicha pieza a la posición inicial. Por tanto, hubo que ponerle unas arandelas a los tornillos para que me permitieran apretarlo desplazándolo ligeramente hacia el exterior y voilá.

El segundo problema fue ver que tenía perdida de pasos en el extrusor con los consiguientes crujidos que daba al imprimir. Al principio pensamos que era cosa de que el driver tenía poca potencia (descartado en cuanto usamos el polímetro). Luego caímos en que era un problema de configurar la velocidad de extrusión, ya que este extrusor no tiene una reductora, hay que decirle que vaya más lento ya que con pocos grados añade más filamento que otro extrusor con los mismos grados (por ejemplo el Jonas). Una vez localizado el problema la solución fue sencilla... ir bajando poco a poco hasta que no sonara más (una forma práctica del principio de la navaja de Ockham). El parámetro de configuración tocado fue DEFAULT_AXIS_STEPS_PER_UNIT.

El tercer problema fue detectado prácticamente a la vez que el segundo problema, nos dimos cuenta que durante la impresión el bloque del calentador rezumaba plástico por arriba y por abajo, lo cual indicaba un exceso de filamento. También fue solucionado reduciendo la velocidad de extrusión. Además se nos ocurrió ponerle una tuerca M6 al tornillo que une el calentador con el bloque del extrusor y así evitar que se moviera innecesariamente.

Por último, encontré un cuarto problema que consistió en no haber ajustado bien la altura de la cama, para este fue el menos importante, ya que sólo tuve que desatornillar un poco cada uno de las tuercas que unen la cama y el cristal a la madera y hacerlas alejarse para subirse.


Para finalizar, os dejo un enlace al artículo principal donde están los enlaces a las siguientes partes, presupuesto, etc.

No hay comentarios:

Publicar un comentario