Creality K1 & K1 Max - Klipper

Root... ajusta tu máquina al detalle

Como ya hemos comentado la K1 tiene acceso limitado a su firmware Klipper, la propia Creality ha liberado el proceso aquí, en nuestro caso usaremos el método del compañero Guillouz que también tenéis disponible en su Github.

El porqué es importante, dependiendo del tipo de usuario que utilice la máquina, disponer de acceso root a la máquina?

Principalmente por el hecho de que Creality emplea una versión de Klipper personalizada, capada en ciertas funciones y desactualizada con respecto a las versiones oficiales lo que nos puede limitar en el uso y disfrute de ciertas funciones de Klipper que podrían mejorar considerablemente nuestra K1.

AGRADECIMIENTOS!!!

Os invitamos, por el gran trabajo y aporte, a invitar a un café al compañero Guillouz a través de su Ko-fi.

En los siguientes pasos os vamos a describir el proceso de tener acceso root a nuestra Creality K1 y K1 Max y añadir mejoras en la configuración y gestión de esta que, a día de hoy, no están disponibles en la máquina.

IMPORTANTE!!!

  • este proceso puede invalidar la garantía de tu máquina

  • el uso y modificación de la configuración y firmware de la máquina puede hacer que esta no funcione correctamente o se produzcan fallos

Si no tienes conocimientos de lo que vas a realizar te recomendamos NO realizar estos pasos.

Es responsabilidad de cada uno proceder a realizar estos cambios y cualquier posible fallo o daño originado en el proceso o uso.

Comenzamos el proceso:

En el caso de que nuestro firmware instalado no tenga opción de root, actualmente las versiones 1.3.2.1 (changelog) y 1.3.2.8 (changelog) o superiores ya cuentan con opciones root, deberemos actualizar.

ATENCIÓN!!!

Cuando actualizamos a una nueva versión de firmware el fichero gcode_macros.cfg será eliminado por lo que es aconsejable realizar un backup antes de realizar el proceso. Os incluiremos una forma de realizar esos backups a un repositorio de Github y tenerlo automatizado.

Por otro lado tu printer.cfg suele no ser modificado aunque en cualquier caso también es aconsejable realizar un backup.

Por supuesto lo anteriormente comentado solamente es posible una vez tengamos acceso root a nuestra máquina.

  • Utilizaremos un USB con formato FAT32/4096 donde copiaremos el .img del firmware, en el punto anterior tienes un link a ellos, que copiaremos en la raíz el USB. Los links a los firmwares de la parte superior son válidos tanto para el modelo K1 como el K1 Max.

  • Conectaremos, con la impresora encendida y en la pantalla de home, el USB y nos aparecerá un aviso indicando que tenemos un nuevo firmware. Pulsaremos Upgrade y esperaremos a que finalice el proceso.

  • Una vez finalizado el proceso, la impresora se reiniciará, cuando nos aparezca la pantalla home de nuevo podremos retirar el USB

  • Es más que aconsejable realizar un Reset Factory para restaurar los valores a los de fábrica.

Reset Factory:

Como ya hemos comentado es aconsejable realizar un Reset Factory antes de realizar el proceso de root. La forma más sencilla de realizar el proceso normalmente es utilizando la herramienta que Creality nos facilita que podemos descargar desde aquí.

Simplemente descomprimir el zip descargado y abrir el fichero con nuestro navegador web favorito (Chrome, Edge, Safari, etc..) Creality_K1_Reset_Utility.html.

Tan solo tendremos que poner la IP de nuestra impresora que podremos obtener en la parte de configuración de red desde la pantalla de la impresora y pulsar el botón RESET.

Si ya contamos con una versión de firmware que soporta root, realizaremos los siguientes pasos:

  • Desde la pantalla iremos a la opción Settings -> Root account information

  • Os aconsejamos leer detenidamente el texto y los avisos sobre realizar root sobre la máquina, si estamos de acuerdo marcaremos el check de I have understood the risks of root login y pulsaremos OK

IMPORTANTE!!!

El acceso root ha de reactivarse cada vez que realicemos un reset de nuestra impresora a los valores de fábrica.

Instalación de Helper Script para K1

Klipper está basado en Linux y su manejo interno va a requerir de ciertos conocimientos básicos de este para poder realizar ciertas acciones.

En este caso, para facilitar el proceso, el compañero Guillouz nos ha facilitado mucho la vida con una herramienta a base de menús, al estilo Kiauh. Para poder instalar este más que interesante asistente de instalación:

  • Accederemos por SSH, utilizando nuestro cliente favorito, a nuestra K1 utilizando la IP de esta y los datos de usuario/password que obtuvimos en el paso anterior. En nuestro caso utilizamos como cliente Terminus que es sencillo, potente, muy visual además de multiplataforma, también se puede usar otros como Putty:

  • desde la línea de comandos lanzaremos el siguiente comando para la instalación del Helper Script K1:

SSH CLI
git clone https://github.com/Guilouz/Creality-Helper-Script.git /usr/data/helper-script

En el caso que tengamos problemas para el clonado del repositorio del Helper Script K1:

  • Verificaremos con el comando date que tenemos la hora ajustada correctamente, es importante la zona horaria también. Podemos ajustar la fecha/hora con:

date -s "YYYY-MM-DD HH:MM:SS"

  • En caso que sigamos sin problemas podemos indicar que Git no verifique los certificados SSL, algo no óptimo pero que puede solventarnos el problema:

git config --global http.sslVerify false

  • Una vez instalado lanzaremos el Helper Script K1 utilizando el siguiente comando:

SSH CLI
sh /usr/data/helper-script/helper.sh

Actualización Helper Script K1:

Instalación componentes Klipper en K1

En este punto ya tenemos todo listo para verdaderamente transformar nuestra K1 para poder personalizarla y ajustarla a nuestro gusto libremente.

Utilizando el Helper Script K1 procederemos a:

ATENCIÓN!!! Errores durante la instalación de componentes/paquetes:

En el caso que tengamos errores durante la instalación de los componentes,ejemploo:

Connecting to github.com (20.248.137.48:443) wget: TLS error from peer (alert code 80): 80 wget: error getting response: Connection reset by peer Download failed. Exit code: 1 [/CODE]

Pueden estar relacionados con diferentes problemas:

  • Nuestra K1 se conectó a nuestra red pero no tiene acceso a internet, os aconsejamos revisar la configuración de red de vuestra K1 o vuestro router

  • Que necesitemos instalar el gestor de paquetes Entware, desde el Helper Script K1 elegiremos la opción 1 (Install) pulsaremos ENTER y en el siguiente menú la opción 5 (Entware) y volveremos a intentar la instalación.

  • Falta del paquete wget-ssl, en el caso que veamos errores de TSL/SSL es posible que nos falte este paquete en nuestro sistema. Desde la línea de comandos lanzaremos

    opkg install wget-ssl
  • Instalación Moonraker and Nginx, paso previo e imprescindible es la instalación de Moonraker que es la API que va a permitir a otros componentes que instalemos "hablar" con Klipper. Por otro lado, Nginx es un demonio web que permitirá el funcionamiento de Moonraker además de las UI que queramos instalar.

  • Instalación de UI Web, será la interfaz web con la cual podremos gestionar nuestra máquina y tenemos tres opciones en este caso:

Mainsail es una de las interfaces web para Klipper más utilizadas y con más opciones que podemos contar.

Para poder instalarla elegiremos la opción 1 (Install) pulsaremos ENTER y en el siguiente menú la opción 3 (Mainsail) y procederemos a la instalación.

Recuerda que una vez instalado y para acceder iremos a nuestro navegador de nuestro ordenador/móvil/tablet y pondremos <IP_K1>:4409 (donde sustituiremos <IP_K1> por la IP que obtuvimos en pasos anteriores y utilizamos para conectar por SSH).

Ya podremos gestionar nuestra impresora!!!

Instalación componentes extras de sistema

El sistema utilizado por Creality para estas K1 como ya hemos comentado está muy limitado lo cual de por si no es malo para un usuario que quiera utilizar la máquina tal como viene pero si queremos sacar más provecho de ella necesitaremos instalar componentes extras a este.

Entware

Entwaare es un respositorio de software para sistemas Linux que nos va a permitir la instalación de componentes extras a nuestro sistema.

La instalación es muy sencilla:

  • Lanzaremos Helper Script desde nuestro cliente SSH favorito cd && sh ./installer.sh

  • Una vez ya tenemos los menus de Helper Script iremos a la opción 1 [Install] y de las opciones, dentro de UTILITIES, elegiremos 4 [Install Entware]

  • Una vez instalado:

    • podemos encontrar la lista que paquetes/software disponibles aquí

    • podremos instalar un paquete/software mediante opkg install <packagename>

    • podremos revisar si tenemos actualizaciones pendientes y actualizar utilizando opkg update y opkg upgrade

Nano

Uno de los paquetes que os aconsejamos instalar es Nano que es un editor por linea de comandos y que seguro que nos va a ser util en algún momento.

Lo instalaremos lanzando opkg install nano

Para más información o como usarlo os aconsejamos revisar el siguiente link.

SFTP

El siguiente paquete a instalar es SFTP ya que no viene habilitado por defecto y en el caso que necesitemos transferir ficheros hacia o desde otro ordenador nos va a ser de gran ayuda.

Instalaremos el paquete con opkg install openssh-sftp-server; ln -s /opt/libexec/sftp-server /usr/libexec/sftp-server

Una vez instalado ya podremos utilizar cualquier cliente SFTP para poder acceder y transferir ficheros de forma cómoda, en nuestro caso os aconsejamos Cyberduck ya que es multiplataforma, fácil y sencillo de usar.

Copias de seguridad

Antes de empezar a añadir todas las mejoras que podréis ver a continuación nos gustaría que tuvierais en cuenta que en alguno de los procesos siguientes algo puede fallar por lo que es más que aconsejable disponer de un backup/copia de seguridad de los datos más importantes.

Para ello el Helper Script nos facilita la tarea con opciones para realizar un backup de nuestros ficheros de configuración Klipper.

Lanzaremos desde el Helper Script la opción 4 [Backup & Restore] y la opción 1 [Backup configuration files]:

Esto nos va a dejar un fichero backup_config.tar.gz con todo nuestro backup de configuraciones Klipper en el directorio /config (/usr/data/printer_data/config/) accesible desde nuestro interfaz web:

Mejoras con root

A continuación y ya que tenemos root en la máquina vamos a realizar algunos cambios que permitan mejorar el rendimiento y funcionalidad de nuestra K1:

Nivelación manual de cama asistida

Una funcionalidad muy interesante es Screws Tilt Adjust, la cual nos permite ajustar la nivelación manual de nuestra cama utilizando la precisión del sensor de nivelación de nuestra K1.

Es interesante, como veremos en siguientes puntos, que no siempre la cama de nuestras K1 se encuentra en las mejores condiciones. Para poder corregir esto este mod nos va a ir sensacional.

El proceso es muy sencillo gracias al Helper Script desde el cual seleccionaremos la opción 1 [Install] > 15 [Install Screws Tilt Adjust Support]:

Una vez instalado ya tendremos disponible las nuevas macros de Screws Tilt Adjust (SCREWS_CALIBRATION) y/o podremos lanzar el proceso desde nuestra interfaz web:

Nivelación automática de cama Klipper

Creality por defecto usa lagrange como método de interpolación en el cálculo de nuestra malla de nivelación mientras que el método que puede ser más beneficioso puede ser bicubic. Para modificar esto iremos a nuestro printer.cfg y en la sección [bed_mesh] añadiremos las siguientes lineas al final de dicha sección:

algorithm: bicubic
bicubic_tension: 0.1

Quedando nuestra sección [bed_mesh] así:

[bed_mesh]
speed: 150
mesh_min: 5,5
mesh_max: 295,295
probe_count: 6,6
fade_start: 3.0
fade_end: 10.0
algorithm: bicubic
bicubic_tension: 0.1

KAMP... nivelación y purga adaptativa

KAMP siempre es un componente que nos gusta añadir a nuestras impresoras, esta extensión a Klipper nos permite generar un mallado adaptativo al área de impresión de los objetos a imprimir con lo cual tendremos un área de mallado más definido a las necesidades mejorando considerablemente el resultado de nuestras primeras capas.

KAMP calcula el área de mallado teniendo en cuenta la información que proporciona el laminador al habilitar la función en estos de etiquetado de objetos.

Comenzamos con la instalación para nuestra K1:

En el caso que usemos una versión antigua de KAMP es aconsejable eliminar todas las configuraciones previas que hicimos ya que en las nuevas versiones del Helper Script K1 se automatizaron estas y no es necesario realizar ningún paso manualmente.

  • Volveremos a utilizar el Helper Script K1 desde SSH, en este caso usaremos las opciones 1 (Install) y 7 (Klipper Adaptative Meshing & Purging):

  • El Helper Script K1 va a realizar todas las tareas de ajustes en nuestra configuración de Klipper.

  • Tal como hemos comentado KAMP se basa en la función del laminador para etiquetar los objetos a imprimir por lo que tenemos que tener habilitada esta función para que KAMP funcione correctamente.

En OrcaSlicer podemos encontrarla en Others y marcaremos Exclude Objects y Label Objects.

  • Dependiendo de que queremos utilizar de KAMP, el nivelado adaptativo/Linea de purga normal o Voron adaptativa o el aparcado del cabezal al finalizar la impresion (este no se incluye en la guía dado que el proceso de la K1 ya lo hace), tenemos que habilitar unas líneas u otras del fichero KAMP_Settings.cfg que encontramos en el directorio raiz de ficheros de configuración:

En el caso que utilicemos PrusaSlicer o algún fork similar:

Si no definimos las aceleraciones en nuetra perfil de impresión deberemos añadir la siguiente línea debajo de _LINE_PURGE para poder tener las aceleraciones de nuestro printer.cfg

SET_VELOCITY_LIMIT ACCEL={printer.configfile.settings.printer.max_accel}

Por otro lado tambien es aconsejable, si vemos errores en la consola durante una impresion relacionados con las siguientes macros, añadir estas macros:

[gcode_macro DEFINE_OBJECT]
gcode:
  EXCLUDE_OBJECT_DEFINE {rawparams}

[gcode_macro START_CURRENT_OBJECT]
gcode:
  EXCLUDE_OBJECT_START NAME={params.NAME}

[gcode_macro END_CURRENT_OBJECT]
gcode:
  EXCLUDE_OBJECT_END {% if params.NAME %}NAME={params.NAME}{% endif %}

[gcode_macro LIST_OBJECTS]
gcode:
  EXCLUDE_OBJECT_DEFINE

[gcode_macro LIST_EXCLUDED_OBJECTS]
gcode:
  EXCLUDE_OBJECT

[gcode_macro REMOVE_ALL_EXCLUDED]
gcode:
  EXCLUDE_OBJECT RESET=1

Uso KAMP en K1

Dispondremos de dos controles de KAMP en nuestra interfaz web:

  • botón KAMP para habilitar o deshabilitar este componente... en el caso de estar habilitado se creará u usará una malla llamada kamp. En el caso de estar deshabilitado usará la malla default.

  • botón BED_LEVELING para habilitar o deshabilitar el mallado clásico cuando el botón KAMP anterior está deshabilitado, no hace nada en cuando KAMP está activo.

Ajuste fino de KAMP para nuestra K1

En los siguientes apartados encontrareis información de como customizar KAMP a nuestro gusto, estos cambios los realizaremos dentro del fichero KAMP_Settings.cfg ajustando las variables que mencionamos:

Para el mallado adaptativo contamos con algunas variables que pueden ser muy útiles:

  • mesh_margin : indica el margen en mm entre el área de impresión y la que KAMP realizará el mallado de cama. Por defecto es 0 pero en ocasiones puede ser interesante un valor de 10 (u otro) que permita crear un mallado más óptimo

  • fuzz_amount : en el caso de sensores de nivelación integrados en el propio nozzle, como la K1 permite que el punto de sondeo sea un poco random en base a este valor para por ejemplo si imprimimos de forma repetida el mismo modelo no acabemos dañando la superficie de impresión. Por defecto es 0 pero para la K1 podemos usar un valor entre 1 y 3.

Mejoras en ventilación

Nuestra K1 cuenta con tres ventiladores gestionables que utiliza por defecto en diferentes acciones durante la impresión.

  • Ajustando la ventilación capa durante los procesos de impresión, por defecto al finalizar una impresión vemos como el ventilador de capa se ponen al 100% haciendo que sea verdaderamente molesto en ocasiones. Aprovechando el acceso root vamos a ajustar esto a nuestro gusto. Abriremos el fichero de configuración de macros gcode_macro.cfg y buscaremos la sección [gcode_macro WAIT_TEMP_START] y la ajustaremos tal como vemos a continuación, que es bajando el % de ventilación del 100% al 80% para el ventilador de capa del hotend y 85% para el auxiliar:

    [gcode_macro WAIT_TEMP_START]
    gcode:
      UPDATE_DELAYED_GCODE ID=wait_temp DURATION=1
      M106 P0 S200
      M106 P2 S216

    También ajustaremos la siguiente sección [gcode_macro WAIT_TEMP_END] y la ajustaremos de la siguiente forma:

    [gcode_macro WAIT_TEMP_END]
    gcode:
      UPDATE_DELAYED_GCODE ID=wait_temp DURATION=0
      M106 P0 S0
      M106 P2 S0

    Una vez aplicados los cambios hacemos un SAVE & RESTART para guardar y aplicar los cambios.

  • Mejoras en ventilación de cerramiento (chamber fan), K1 cuenta con un sistema de ventilación de cerramiento que puede activarse dependiendo de la temperatura lo cual esta genial para imprimir filamentos como PLA/TPU en los que no interesa que tengamos mucha temperatura interna y se produzcan atascos. O por contra en filamentos más técnicos como ABS/ASA/etc que si que nos interesa altas temperaturas estas no sean tan altas como para afectar a la impresora. Para poder tener disponible este control nos iremos a nuestro printer.cfg y añadiremos estas lineas... RECUERDA!!! siempre por encima de la sección SAVE_CONFIG!!!:

    [duplicate_pin_override]
    pins: PC0, PC5
    
    [temperature_fan chamber_fan]
    pin: PC0
    cycle_time: 0.0100
    hardware_pwm: false
    max_power: 1
    shutdown_speed: 0
    sensor_type: EPCOS 100K B57560G104F
    sensor_pin: PC5
    min_temp: 0
    max_temp: 70
    control: watermark
    max_delta: 2
    target_temp: 35.0
    max_speed: 1.0
    min_speed: 0.0

    Y guardamos los cambios con SAVE & CLOSE, ahora vamos a editar nuestro gcode_macro.cfg y añadiremos una macro gcode que nos permita controlar este ventilador desde los laminadores mediante el gcode M141:

    [gcode_macro M141]
    description: Set Chamber Temperature with slicers
    gcode:
      SET_TEMPERATURE_FAN_TARGET TEMPERATURE_FAN=chamber_fan TARGET={params.S|default(35)}
  • [prtouch_v2_fan]
    max_speed: 0.5

    Donde ajustaremos el valor de max_speed a nuestro gusto, siendo 1 una velocidad del 100% y, por ejemplo, 0.5 un 50%. Pulsaremos sobre SAVE & RESTART para guardara y aplicar nuestros cambios.

Velocidades ventilador auxiliar de capa:

Para nuestro caso, K1 Max, el ventilador auxiliar de capa apenas genera flujo de aire hasta el 85% donde el nivel de ruido vs flujo de aire creemos que es bueno. A partir del 90% el flujo de aire es excelente pero por otro lado el ruído que genera puede ser considerablemente alto. Haz tus pruebas para obtener tu valor óptimo para tu máquina ya sea utilizando los controles desde tu interfaz web (Fan2), desde la propia pantalla de la impresora (Side Fan) o desde la consola también desde la interfaz web con el comando M106 P2 Sxxx o SET_PIN PIN=fan2 VALUE=xxx donde xxx será un valor de 0 a 255 que se traducirá en el % de ventilación.

Mejoras en Input Shaping

Creality parece que ha limitado el funcionamiento de Input Shaping solamente para el eje Y (y este es copiado para usarse como valores del X, lo cual no siempre es aconsejable) cuando por su cinemática y el sensor que lleva puede realizarlo para los ejes X e Y. Para solventar esto iremos a nuestro gcode_macro.cfg y buscaremos por la sección [gcode_macro AUTOTUNE_SHAPERS] donde deshabilitaremos (poniendo # al inicio de la línea) el valor variable_autotune_shapers:

[gcode_macro AUTOTUNE_SHAPERS]
#variable_autotune_shapers: 'ei'
gcode:

A continuación, y también en nuestro gcode_macro.cfg, buscaremos la sección [gcode_macro INPUTSHAPER] y eliminaremos AXIS=Y de la línea SHAPER_CALIBRATE, en el primer ejemplo tenemos la macro original y en el segundo la modificada:

[gcode_macro INPUTSHAPER]
gcode:
  SET_FILAMENT_SENSOR SENSOR=filament_sensor ENABLE=0
  SET_FILAMENT_SENSOR SENSOR=filament_sensor_2 ENABLE=0
  G90
  G28
  {% set POSITION_X = printer.configfile.settings['stepper_x'].position_max/2 %}
  {% set POSITION_Y = printer.configfile.settings['stepper_y'].position_max/2 %}
  G1 X{POSITION_X} Y{POSITION_Y} F6000
  G1 Z10 F600
  SHAPER_CALIBRATE AXIS=y
  CXSAVE_CONFIG
  SET_FILAMENT_SENSOR SENSOR=filament_sensor ENABLE=1
  SET_FILAMENT_SENSOR SENSOR=filament_sensor_2 ENABLE=1

[gcode_macro INPUTSHAPER]
gcode:
  SET_FILAMENT_SENSOR SENSOR=filament_sensor ENABLE=0
  SET_FILAMENT_SENSOR SENSOR=filament_sensor_2 ENABLE=0
  G90
  G28
  {% set POSITION_X = printer.configfile.settings['stepper_x'].position_max/2 %}
  {% set POSITION_Y = printer.configfile.settings['stepper_y'].position_max/2 %}
  G1 X{POSITION_X} Y{POSITION_Y} F6000
  G1 Z10 F600
  SHAPER_CALIBRATE
  CXSAVE_CONFIG
  SET_FILAMENT_SENSOR SENSOR=filament_sensor ENABLE=1
  SET_FILAMENT_SENSOR SENSOR=filament_sensor_2 ENABLE=1

Input Shaping desde nuestra interfaz para poder lanzarlo manualmente!!!

Es una función muy interesante para poder lanzar nuestro proceso de calibración de vibraciones de forma manual.

Para ello añadiremos la siguiente macro a nuestro gcode_macro.cfg :

[gcode_macro MANUAL_INPUT_SHAPER]
description: Measure X and Y axis resonances
gcode:
  G90
  {% if printer.toolhead.homed_axes != "xyz" %}
    G28
  {% endif %}
  SHAPER_CALIBRATE
  {% set y_park = printer.toolhead.axis_maximum.y/2 %}
  {% set x_park = printer.toolhead.axis_maximum.x|float - 10.0 %}
  G1 X{x_park} Y{y_park} F20000
  M84

Input Shaping manual y generando gráficas

En nuestro caso preferimos revisar las gráficas generadas para ver el estado de la máquina y realizar cualquier ajuste en esta, tal como puedes ver en nuestra guía de Input Shaper, para mejorar la efectividad de las correcciones Input Shaper.

Para ello en nuestra UI web lanzaremos las siguientes macros para generar el fichero de resonancias para cada eje:

TEST_RESONANCES AXIS=X

TEST_RESONANCES AXIS=X

Por descracia y dadas las limitaciones en el sistema de nuestras K1 vamos a necesitar otro Klipper para poder generar nuestras gráficas o si disponemos de una máquina Windows podemos usar esta herramienta.

Si optamos por generarlo desde otro Klipper subiremos los csv al directorio tmp, nos conectaremos por SSH y lanzaremos los siguientes comandos:

~/klipper/scripts/calibrate_shaper.py /tmp/resonances_x_*.csv -o /tmp/shaper_calibrate_x.png

~/klipper/scripts/calibrate_shaper.py /tmp/resonances_y_*.csv -o /tmp/shaper_calibrate_y.png

Una vez finalice el proceso tendremos nuestras gráficas estarán disponibles y podemos descargarlas para revisarlas:

La cinemática de la K1 es bastante mejorable, la falta de consistencia de la construcción del chasis y el sistema de cinemática hace que sea susceptible de que a poco que algo se desajuste afectar significativamente a las vibraciones.

Una de las cosas a revisar, si como en nuestro caso tenemos un resultado poco óptimo como el mostrado en el ejemplo anterior del eje X y que va a mermar significativamente el rendimiento si queremos evitar vibraciones y que Input Shaper sea efectivo, es la tensión de las correas. Tenéis un sistema que podéis imprimi vosotros mismos y que puede ayudaros a ajustar parcialmente esto.

Consta de dos partes:

  • el primero es para alinear perpendicularmente el gantry de X y evitar que pequeñas desviaciones introduzcan vibraciones y errores de geometría en nuestras piezas

  • la segunda es para verificar las tensiones en ambas correas que también es clave para un correcto rendimiento en máquinas Core XY

En el siguiente video tenéis como poder utilizar lo anterior para mejorar nuestra máquina!!!

Macro cambio de filamentos M600

Normalmente los laminadores suelen usar el gcode M600 para indicar a la máquina cuando se va a realizar un cambio de filamentos. Por desgracia la K1 no lleva una macro de este tipo por defecto y dado que si no tenemos root es complicado poder añadir estas a nuestra K1 podemos aprovechar el realizar root para mejorar esta y otras macros.

Vamos a utilizar una macro muy sencilla para hacer el M600 que viene en el propio core de Klipper como ejemplo pero siempre podéis utilizar otras más complejas y que mejoran el proceso como la que usamos en nuestro bundle para Klipper.

Revisaremos el fichero de ejemplos de macro de Klipper desde aqui. Y cogeremos la sección Filament Change :

https://github.com/Klipper3d/klipper/blob/master/config/sample-macros.cfg
######################################################################
# Filament Change
######################################################################

# M600: Filament Change. This macro will pause the printer, move the
# tool to the change position, and retract the filament 50mm. Adjust
# the retraction settings for your own extruder. After filament has
# been changed, the print can be resumed from its previous position
# with the "RESUME" gcode.

[pause_resume]

[gcode_macro M600]
gcode:
    {% set X = params.X|default(50)|float %}
    {% set Y = params.Y|default(0)|float %}
    {% set Z = params.Z|default(10)|float %}
    SAVE_GCODE_STATE NAME=M600_state
    PAUSE
    G91
    G1 E-.8 F2700
    G1 Z{Z}
    G90
    G1 X{X} Y{Y} F3000
    G91
    G1 E-50 F1000
    RESTORE_GCODE_STATE NAME=M600_state

Abriremos el fichero de configuración gcode_macro.cfg tal como hemos hecho en ocasiones anteriores desde nuestra interfaz web y copiaremos la macro M600 anterior al final de el y guardaremos los cambios SAVE AND RESTART. Al reiniciar deberemos tener disponible en el panel de macros nuestra M600.

A continuación iremos a nuestro laminador, en nuestro caso OrcaSlicer, y dentro del perfil de nuestra impresora en la pestaña de Machine G-code y apartado Change filament G-code donde pondremos nuestra macro M600, recordar guardar los cambios al perfil :) :

Guardado automático del Z Offset

Un problema recurrente es que si ajustamos nuestro Z Offset durante una impresión (babystepping) para realizar ajustes tenemos que recordar guardar estos cambios en nuestra configuración desde el interfaz web para poder conservarlos.

Con los siguientes cambios vamos a hacer que el Z Offset se guarde automáticamente y se cargue automáticamente al iniciar el sistema.

  • En nuestro printer.cfg añadiremos estas lineas:

[save_variables]
filename: /usr/data/printer_data/config/variables.cfg

[respond]
  • Ahora en gcode_macro.cfg añadiremos lo siguiente:

[gcode_macro SET_GCODE_OFFSET]
description: Saving Z-Offset
rename_existing: _SET_GCODE_OFFSET
gcode:
  {% if printer.save_variables.variables.zoffset %}
  {% set zoffset = printer.save_variables.variables.zoffset %}
  {% else %}
  {% set zoffset = {'z': None} %}
  {% endif %}
  {% set ns = namespace(zoffset={'z': zoffset.z}) %}
  _SET_GCODE_OFFSET {% for p in params %}{'%s=%s '% (p, params[p])}{% endfor %}
  {%if 'Z' in params %}{% set null = ns.zoffset.update({'z': params.Z}) %}{% endif %}
  {%if 'Z_ADJUST' in params %}
  {%if ns.zoffset.z == None %}{% set null = ns.zoffset.update({'z': 0}) %}{% endif %}
  {% set null = ns.zoffset.update({'z': (ns.zoffset.z | float) + (params.Z_ADJUST | float)}) %}
  {% endif %}
  SAVE_VARIABLE VARIABLE=zoffset VALUE="{ns.zoffset}"


[delayed_gcode LOAD_GCODE_OFFSETS]
initial_duration: 2
gcode:
  {% if printer.save_variables.variables.zoffset %}
  {% set zoffset = printer.save_variables.variables.zoffset %}
  _SET_GCODE_OFFSET {% for axis, offset in zoffset.items() if zoffset[axis] %}{ "%s=%s " % (axis, offset) }{% endfor %}
  { action_respond_info("Loaded Z-Offset from variables.cfg file: %s" % (zoffset)) }
  {% endif %}

Básicamente lo que hacemos es crear un fichero dentro del sistema para guardar nuestras propias variables /usr/data/printer_data/config/variables.cfg.

Se crea una nueva macro que sobreescribe a la de sistema llamada SET_GCODE_OFFSET que captura el valor usado durante ajuste babystepping lo aplica al sistema y lo guarda en nuestras variables comentado anteriormente.

Por último tenemos otra macro LOAD_GCODE_OFFSETS que se encarga de cargar de nuestro fichero de variables el valor Z Offset y aplicarlo al sistema.

Impresión directa desde laminadores no Creality

Una vez finalizados los pasos anteriores vamos a tener acceso a una funcionalidad que nos va a ahorrar mucho tiempo. Si bien el uso del laminador de Creality, un Cura personalizado, no esta mal en ocasiones se puede quedar corto en opciones o preferencias de uso. Por otro lado, y por defecto sin hacer root, el sistema va a estar capado para enviar nuestras impresiones únicamente desde el laminador de Creality, el Cloud de Creality o mediante un USB a la maquina. Ahora que tenemos más acceso al sistema podremos imprimir desde nuestro laminador favorito, en el siguiente ejemplo basado en OrcaSlicer que es nuestro laminador favorito tan solo tenemos que ir a la configuración de nuestra impresora a nivel de red, seleccionar en Host Type - Octo/Klipper y en Hostname, IP or URL poner la IP:puerto de nuestra K1... en nuestro caso usaremos como puerto el 4409 al tener instalado Mainsail:

Configurar cámara K1 en Mainsail/Fluidd

Teniendo en cuenta que el interfaz web de la K1 es bastante limitado en opciones una de las primeras cosas que aconsejamos, con root, es la instalación de otro interfaz con más opciones y funciones.

Una vez tenemos nuestro Mainsail, o Fluidd depende del que más te guste, podemos añadir a este la visualización de nuestra cámara. También si queremos hacer algo que nos sirva en ambos caso podemos hacerlo en Moonraker:

Personalmente nos gusta más Mainsail, para añadir nuestra cámara:

  • Iremos a Interface Settings, icono engranajes en la esquina superior derecha, y dentro de las opciones a WEBCAMS

  • Añadiremos una nueva cámara con las siguientes opciones:

    • Sustituiremos xxx.xxx.xxx.xxx por tu IP:

      • URL Stream: http://xxx.xxx.xxx.xxx:4409/webcam/?action=stream

      • URL Snapshot: http://xxx.xxx.xxx.xxx:4409/webcam/?action=snapshot

      • Service: MJPEG-Streamer o Adaptative MJPEG-Streamer (experimental)

Personalización del logo/animación de la pantalla al inicio

Aunque no nos va a mejorar ninguna función relacionada con la calidad o uso de nuestra impresora queda muy chulo personalizar esta.

El proceso es relativamente sencillo:

  • Crearemos nuestra animación utilizando cualquier herramienta que conozcamos... en nuestro caso os aconsejamos Canva porque es gratuita, potente y muy sencilla de utilizar. Creáis un proyecto de 480x800 pixeles... la exportaremos como Gif o Video

  • Una vez tengamos la animación, os aconsejamos llamarla pic.<el formato que hayáis elegido> podéis ir a un conversor de video a jpg y vamos al siguiente link donde podremos convertir, no es necesario tocar ningun ajuste tan solo que el nombre del fichero a convertir se llame pic para que las imágenes generadas sean pic_000.jpg (000 será numérico en orden de cada uno de los frames de nuestra animación). Una vez finalizado el proceso descargaremos las imágenes a nuestro ordenador

  • Ahora desde SSH y sobre nuestra K1 lanzaremos Helper Script con cd && sh ./installer.sh

  • Desde el menú seleccionaremos 3 [Customize] y 1 [Install Custom boot Display], tenemos opciones para poder restaurarlo después :)

  • Una vez aplicado el cambio desde Helper Script salimos de este y aplicamos un reboot para reiniciar nuestra impresora... si todo ha ido bien veremos la animación nueva instalada por Helper Script.

  • Ahora procederemos a sustituir la animación por la nuestra, para mayor comodidad os aconsejamos instalar SFTP, borrando los ficheros jpg en /etc/boot-display/part0/ por los creados por nosotros

Si no queréis habilitar SFTP podéis hacerlo de forma manual:

  • en nuestra interfaz web (Mainsail/Fluidd) crearemos una carpeta llamada part0 y dentro de esta subiremos todas las imágenes de nuestra animación creada anteriormente

  • borraremos todas las imágenes de la animación por defecto con rm /etc/boot-display/part0/*.jpg

  • una vez copiado y desde SSH lanzaremos el siguiente comando que copiará todas las imágenes cp /usr/data/printer_data/config/part0/pic_*.jpg /etc/boot-display/part0/

Y ya está!!! solamente tendremos que reiniciar nuestra máquina y ver nuestra obra de arte!!!

Personalización UI pantalla

El interfaz de nuestra K1 es bastante intuitivo y funcional pero carece de muchas opciones avanzadas de gestión como las que podamos encontrar en KlipperScreen

Gracias al compañero ballaswag que ha creado una nueva UI, llamada Guppy,con funciones avanzadas podemos mejorar significativamente el control desde esta en nuestra K1.

Como podéis ver en las capturas anteriores si bien el interfaz no esta tan pulido como el de Creality se cuentan con un montón de opciones avanzadas que seguro son del agrado de cualquier buen maker :).

A destacar...

  • lanzar Input Shaper para XY además de comprobar la tensión de correas y lo más cool poder ver las gráficas del test para ayudarnos a ajustar nuestra K1 de una forma sencilla

  • Acceso al nivelado de cama donde podremos ver el mapa de nuestra cama

  • Controles avanzados durante la impresión para ajustar flujo, factor de velocidad, etc...

  • Integración con Spoolman

La instalación es muy muy sencilla:

Como siempre nuestro mejor aliado para la K1 es nuestro Helper Script desde el cual tenemos la posibilidad de instalar, y desinstalar, facilmente este nuevo interfaz Guppy.

  • Lanzaremos el Helper Script desde SSH cd && sh ./installer.sh

  • Iremos a 3 [Customize] > 5 [Install Guppy Screen]

  • Nos solicitará confirmación y que tipo de interfaz queremos utilizar (material,zbolt) y si queremos eliminar los servicios Creality Cloud

  • Es todo!!! ya tendremos el nuevo interfaz listo!!!

En el caso que queramos desinstalarlo y volver al interfaz de Creality tan solo iremos a 3 [Customize] > 6 [Remove Guppy Screen].

Habilitar el Buzzer/Altavoz integrado

Otra mejora que podemos realizar, y que puede ser muy útil, es habilitar el buzzer/altavoz que cuenta la electrónica de nuestra K1.

El proceso es muy sencillo gracias al Helper Script desde el cual seleccionaremos la opción 1 [Install] > 9 [Install Buzzer Support]:

Al finalizar el proceso ya dispondremos de la macro de sistema BEEP que podremos utilizar en nuestras macros como pausa, cambios de filamentos o finalización de impresión para tener una notificación sonora. Os ponemos un ejemplo del uso en la macro de final de impresión END_PRINT:

[gcode_macro END_PRINT]
gcode:
  Qmode_exit
  EXCLUDE_OBJECT_RESET
  PRINT_PREPARE_CLEAR
  M220 S100
  SET_VELOCITY_LIMIT ACCEL=5000 ACCEL_TO_DECEL=2500
  TURN_OFF_HEATERS
  M107 P1
  M107 P2
  END_PRINT_POINT
  BEEP
  WAIT_TEMP_START
  M84

La macro que se instala no es visible desde el interfaz pero disponemos de un mp3, dentro de nuestro host en /usr/data/beep.mp3, donde podemos personalizar el tono del sonido, aquí disponemos de más información:

Este proceso hemos de volver a realizarlo cada vez que restauremos nuestra impresora a los valores de fábrica!!!

Paths de Sistema

Os incluimos la ubicación de paths en el sistema de nuestra K1:

FunciónPath

Videos time-lapse (Creality)

/usr/data/creality/userdata/delay_image/video/

Videos time-lapse (Moonraker)

/usr/data/printer_data/timelapse/

Gcodes

/usr/data/printer_data/gcodes/

Configuración Klipper

/usr/data/printer_data/config/

Animación pantalla al iniciar

/etc/boot-display/

Mods

Os dejamos algunos mods interesantes para vuestras máquinas:

ModK1K1 MaxLink

Podéis encontrar más en nuestra colección de Printables para Creality K1 & K1 Max!!!

Cinemática

Ya sea por resolución de problemas o simplemente para realizar modificaciones en la cinemática de nuestra máquina os facilitamos paso a paso como desmontar esta, gracias al equipo D3vil Design donde podéis encontrar mucha información y mods de nuestra K1:

  • Desmontaremos los anclajes del portón frontal:

  • Cortaremos la goma foam del perfil derecho donde apoya el portón al estar cerrado, lo haremos en la parte superior donde vemos la unión entre la parte superior de la carcasa con la central, para tener acceso a los tornillos de anclaje:

  • Haremos lo mismo en la parte izquierda retirando en este caso la pieza plástica con cuidado:

  • Quitaremos los tornillos inferiores en ambos lados:

  • Retirando los paneles laterales antes, quitaremos los tornillos de los laterales indicados en las siguientes capturas:

  • Haremos lo mismo con la cubierta posterior:

  • Retiraremos los cables de conexión a los motores XY en ambos lados:

  • Quitaremos los tornillos de anclaje de la cadena y el sensor de filamentos:

  • Desmontaremos el toolhead/cabezal de impresión y cortaremos la brida de sujeción del cableado al chasis:

  • Ya tenemos nuestra cinemática lista para realizar nuestro mod o un mantenimiento!!!

Problemas

  • Con PLA, y tal como avisan, hay que intentar abrir la maquina para que no se atasque

  • Falta de controles durante la impresion en la pantalla para por ejemplo el ajuste de zoffset, feedrate, extrusion

  • Sistema de extrusion solamente cuenta con una palanca para el ajuste de la tensión que es para apretar o no apretar el filamento... problemas de agarre probablemente con determinados filamentos

  • La ubicación del sensor de filamentos no es cómoda a la hora de tener que realizar un cambio por falta de filamento

  • El PTFE del extrusor entra muy forzado y en un ángulo poco óptimo que crea tensiones, es aconsejable retirar la última grapa para que entre con mejor ángulo y evitar trabajo extra del sistema de extrusion

  • La cadena del extrusor es un poco larga y, al menos en la K1 Max, llega a tocar con la guía del eje X pudiendo desgastar ambos componentes con el tiempo. Retirando un eslabón o dos probablemente quede mejor

  • No es posible imprimir desde otros laminadores que no sean el de Creality, desde el Cloud de Creality o por USB. Para poder hacerlo debemos instalar root en la máquina

  • No cuenta con una macro de cambio de filamentos, M600 suele ser el estandard

  • Posición del porta rollos de filamento en la parte trasera poco accesible para manipular la maquina en funcionamiento

  • Alta carga durante una impresión en la MCU del host y RPI ademas

  • El Input Shaper se calcula automaticamente y esta capado a utilizar EI y solamente para el eja Y

Última actualización