"Después del juego es antes del juego"
Sepp Herberger

miércoles, 27 de febrero de 2019

Configuración e impresión con impresora 3D Geeetech Prusa I3 pro B

En el centro compramos hace tiempo una impresora 3D Geeetech Prusa I3 pro B que hemos estado afinando y probando hasta hacerla funcionar con bastante buen rendimiento.


Llega totalmente desmontada, como un mueble de Ikea, por lo que la primera tarea es montarla con paciencia y maña.

1. Software usado.

Una vez montada viene la entretenida parte de calibración y ajuste fino. Lo primero es decidirnos por el software para imprimir, el cual se suele dividir en dos partes: el programa de impresión y el slicer. El programa de impresión permite controlar la impresora y enviar tanto órdenes individuales como un modelo 3d para imprimir. El slicer (loncheador) es el programa que decide a partir del modelo 3D como se enviarán las diferentes capas para imprimir. Realmente el slicer recibe un fichero 3D en formato .STL y genera un fichero G-Code que es el idioma que conoce la impresora.

El manual que viene con la Geeetech Prusa sugiere Repetier Host como programa de impresión y Slic3r como slicer. En principio empezamos con él, pero nos pareció demasiado complejo y burdo, resultando muy sencillo tocar donde no se debía y meter la pata.

Posteriormente, Geeetech sacó su propio programa, el Easy Print 3D que tiene la ventaja de que ya trae de serie casi toda la configuración para la Prusa i3 Pro B lista, de tal forma que podemos empezar a calibrar e imprimir de forma inmediata con él. Internamente usa el slicer Cura3D. Los inconvenientes son que solo hay versión para Windows y que es bastante poco configurable.

Por último nos decantamos por Ultimaker Cura 3.6, que aunque está orientado a impresoras 3D Ultimaker si tiene perfiles para impresoras Prusa y otros modelos. Los motivos:

  • Aunque está orientado a impresoras 3D Ultimaker tiene perfiles bastante completos para impresoras Prusa y otros modelos
  • Se basa, evidentemente en el slicer Cura3D, bastante potente.
  • Tiene versiones idénticas para Linux, Windows y Mac. La versión para Linux es una aplicación .appimage autocontenida que no necesita instalación. Es el equivalente a un "programa portable" de Windows.
  • Goza de un entorno gráfico limpio y fluido.
  • Tiene un nivel intermedio en la complejidad de sus opciones

2. Configuración de Ultimaker Cura.

Tras la instalación del software llega el momento de la configuración y las pruebas para ver que tal calibrado está todo. Pondré pantallazos con la configuración óptima que he encontrado para una impresión correcta.

En primer lugar, la versión de Ultimaker usada:


Ultimaker trae preconfiguraciones para muchos modelos de impresoras 3D (preferentemente las de la marca Ultimaker) incluyendolas Prusa. En nuestro caso el modelo que elegimos es la Prusa i3 MK2:


Entrando en Machine Settings este sería el tamaño de la cama y otras configuraciones para nuestra impresora:


Y esta es la configuración del extrusor (nuestro nozzle es de 0.3mm, pero también se vende esta impresora con nozzle de 0.4mm):


Y esta seria la configuración del filamento, que en mi caso es PLA de 1.75mm:


Este un resumen de la configuración de impresión para ese filamento. En esta pantalla solo se visualiza, los valores mostrados se definen realmente en otro lugar:


A continuación vemos los distintos de perfiles de impresión disponibles. Yo partí del perfil "Fine", que imprime con un diámetro de extrusión de 0.1mm (el cual es adecuado para impresiones finas y con buen nivel de detalle) e hice una copia del perfil para trabajar con él. Al nuevo perfil lo he llamado "profile-easyprint3d-ok".


Una vez creado el perfil vamos a afinarlo en la ventana principal de la aplicación, en la parte derecha. Allí seleccionamos el Material y el Perfil creado anteriormente y podemos modificar todos los parámetros de la impresión. Como es una lista muy larga pongo varias capturas mostrando todos los valores:






Varios comentarios sobre el interface de configuración:

  • No sólo tenemos estas opciones, hay muchas más ocultas que podemos mostrar desde la configuración del perfil. Esa es una de las ventajas de esta aplicación: por defecto aparecen visibles las opciones mas usadas, pero luego podemos hacer aparecer para configurar otras menos usuales conforme vamos cogiendo dominio del proceso. Esto se hace desde Preferencias/Settings/Setting Visibility:
  • Marca usando letra cursiva las opciones modificadas respecto a la plantilla original y permite volver al valor por defecto.
  • Muestra en color naranja aquellas opciones que, en su opinión, están pasadas de rosca. Eso no quiere decir que no vayan a funcionar, pero el programa considera que son un poco audaces y te avisa de ello.
  • El número de opciones puede aumentar o disminuir en función de lo seleccionado. Por ejemplo si marcamos el check Support aparecerán nuevas opciones para configurar dicho Support.
  • Cuando unos parámetros dependen de otros vienen marcados con la etiqueta "fx" y al pasar el ratón sobre ellos nos indican cual es la dependencia.

Una vez definidos todos los parámetros como queremos, damos al botón prepare para que el slicer haga los cálculos...


Y finalmente nos muestra una estimación del tiempo y material que se usará, junto con un botón que nos permite enviar a la impresora el modelo 3D o bien guardarlo en diversos soportes como fichero G-Code para imprimirlo en otro momento....


3. Consejos para la impresión.

El proceso de calibración y optimización de una de estas impresoras es un proceso casi artesanal basado en prueba-error. Te sientes como un pionero montando y haciendo un Altair 8800. Acabas con una caja llena de objetos amorfos que sustancian los fracasos hasta llegar a una exitosa primera impresión decente.

Ahora unos cuantos consejos con todo lo que hay que tener en cuenta:

  • La altura inicial del extrusor sobre la cama es un proceso crítico. Lo ideal es que cuando imprime la primera capa esté tan cerca que apenas quepa un folio entre el nozzle y la cama. Cualquier fracción de milímetro de más o de menos hace que el objeto no se adhiera o se quede muy pegado. Esta altura se gradua en el final de carrera del eje-z con una llave allen y lo mas conveniente es ajustar girando el tornillo 90º o incluso 45º entre prueba y prueba hasta conseguir una buena primera capa.
  • Si el objeto se despega casi sin esfuerzo es porque el nozzle está demasiado alto.
  • Si el objeto queda muy pegado a la cama y cuesta mucho quitarlo es que el nozzle está demasiado bajo.
  • La laca Nelly sobe la cama antes de cada impresión es tu amiga. Una buena rociada y se mejora la adherencia. Acabas cogiendo gusto al olor.
  • La cama se limpia de vez en cuando sacando el cristal y poniéndolo bajo el grifo con agua y jabón.
  • Una vez finalizada la impresión hay que esperar 2 o 3 minutos al menos para quitar el objeto, danto tiempo a que se enfríe.
  • Es muy conveniente tener una espátula para despegar las piezas de la cama una vez impresas.
  • Para mejor acabado es conveniente poner varias capas en la parte inferior y superior. Yo tengo los parámetros Top Layer y Bottom Layer con 6.
  • Aunque la temperatura por defecto de extrusión es 200º al inicio y 185º para el resto, a mi me ha funcionado mucho mejor 200º todo el tiempo. Si no es asi no extruye bastante filamento y quedan huecos y mal acabado por todos lados.
  • Para que las esquinas queden bien pegadas y no se levanten de la cama (el temido warping) lo mejor es seleccionar el "Brim" en Build Plate Adhesion Type. Aquí hay una buena explicación de lo que es el skirt/brim/raft.
  • Cuando el objeto tiene voladizos (overhangs), que son las zonas en las que se imprime y no hay nada debajo (por ejemplo un puente o un saliente) lo normal es que queden hilos colgando con aspecto de "barbas". Para evitar eso hay que activar el parámetro Support, que crea una estructura de sostén por debajo del voladizo. Esta estructura es muy poco densa y se quita luego fácilmente a mano al acabar la impresión.
El resultado es bastante decente, como puede verse con este giróscopo con partes móviles impreso de una sola pieza:


O este puñetero puzzle:


Esta otra imagen es una de las pruebas realizadas, con un diámetro de extrusión mayor y luego pintada con acrílico:






domingo, 24 de febrero de 2019

Activación automática de la wifi en Network Manager

Tengo un aula de portátiles en los que cada cierto tiempo se quejaban de que la wifi dejaba de funcionar. Realmente lo que pasaba es que de alguna forma en el Network Manager se desmarcaba la opción "Activar inalámbrica".

Antes de nada me he aseguré de que no se daba ninguna de las posibles causas:

  • acer_wmi: verifico que esté modulo está blacklistado y no se carga al arrancar. Por algún motivo está documentado que causa apagados de la wifi.
  • ath9k: en mi caso este es el driver que usan las tarjetas wifi. Con "modinfo ath9k" veo que tiene un parametro powersave que activa el ahorro de energia, apagando la wifi. Con este método compruebo que está a 0.
  • /etc/NetworkManager/conf.d/default-wifi-powersave-on.conf: verifico que en este fichero tenemos "wifi.powersave = 2". El valor 2 significa "disabled"

Si aún así se sigue desactivando de forma aleatoria de una manera que no puedo controlar no me queda otra opción que, para facilitar la vida al usuario, hacer que se compruebe el estado cada poco tiempo y activarla si es necesario. Para ello uso un script que se basa en nmcli para interacturar con la tarjeta wifi desde bash.
# cat /usr/bin/watchdog_wifi
#!/bin/bash
while :
do
   estado=$(nmcli radio wifi)
   test "$estado" = "disabled"  && nmcli radio wifi on
   sleep 15
done
exit 0
Es muy sencillo: un bucle infinito que cada 15 segundos comprueba si la wifi está desactivada y la activa en caso afirmativo. Este script se debe ejecutar con la identidad del usuario que ha iniciado sesión, para ello lo mas adecuado es lanzarlo desde /etc/xdg/autosart:
# cat  /etc/xdg/autostart/wifi_watchdog.desktop 
[Desktop Entry]
Version=2.0-2
Encoding=UTF-8
Name=Evita Apagado Wifi
Type=Application
Exec=/usr/bin/wifi_watchdog
Icon=/usr/share/icons/elementary-xfce/status/48/wifi-100.png
Terminal=false
Name[es_ES]=Evita Apagado Wifi
Categories=Application;Education
Con esto el problema se resuelve de forma bastante efectiva.

Aun así puede seguir existiendo un problema: que la wifi se desactive de forma física (hard) mediante el interruptor que tiene el portátil (normalmente una tecla de función mas la tecla Fn). En ese caso no se puede activar por software, pero si se podría detectar está situación usando el programa "rfkill" y mostrar un mensaje al usuario para que pulse de nuevo el interruptor. Ejemplo de wifi bloqueado por botón físico:
# rfkill 
ID TYPE      DEVICE         SOFT         HARD
 0 wlan      phy0   desbloqueado      bloqueado
 1 bluetooth hci0   desbloqueado      desbloqueado
Sería sencillo procesar la salida de rfkill (tiene varios parámetros para filtrar la salida) y si tenemos bloqueada físicamente la wifi lanzar el aviso.


Opportunity ya no responde, hace 10 días que la NASA dió la misión por finalizada. Estoy seguro de que está esperando que alguien llegue, limpie de polvo las placas solares y cambie las baterías para empezar a trabajar de nuevo.

Hagamos un homenaje a esa maravillos máquina y su 45Km recorridos (44 más de los esperados):

Por otro lado, la Curiosity se ha reiniciado tras un fallo inesperado, pero todo va bien. Ya habia pasado antes. Eso de que una máquina tan crítica tenga que hace reinicios es un alivio para cualquier sysadmin. Es buena señal saber que en todas partes cuecen habas.