QIDI X-MAX 3 - Technical Guide

Changelog

08/12/2023 - Añadida información base para el nuevo 3Dwork Klipper Bundle - QIDI Edition para poder desplegar todas las mejoras de esta guía de una forma simplificada y modular

Hardware

Os vamos a sugerir algunos tips o soluciones para un mejor ajuste y funcionamiento de nuestra QIDI.

Nivelación manual de cama:

En ocasiones podemos encontrarnos con desviaciones de cama importantes por un mal ajuste mecánico de esta, normalmente las veremos desde la interfaz web en la previsualización del mallado. Para poder minimizar ese desajuste mecánico contamos con 4 tornillos y podemos utilizar la función [screws_tilt_adjust] (macro SCREWS_TILT_CALCULATE) de Klipper que, gracias a contar con un sensor de nivelación, podremos utilizar para ajustar al máximo mecánicamente nuestra cama.

Podéis encontrar más información de la configuración y proceso aquí.

Configuraciones de ejemplo:

QIDI X-MAX 3

[screws_tilt_adjust]		
screw1: 122.5,158.1		
screw1_name: Central Base		
screw2: 5,30.6		
screw2_name: Left Front		
screw3: 250,30.6		
screw3_name: Right Front			
screw4: 250,285.6		
screw4_name: Right Rear		
screw5: 5,285.6		
screw5_name: Left Rear				
		
horizontal_move_z: 10		
speed: 150		
screw_thread: CW-M3	

También disponéis del método tradicional manual y del cual QIDI dispone de una video guía en su documentación de troubleshooting. Que podemos mejorar el método sugerido por QIDI utilizando la función de Klipper [bed_screws] (macro BED_SCREWS_ADJUST) para que se posicione el nozzle en las áreas de ajuste de una forma más precisa.

En cualquier caso os aconsejamos utilizar el método asistido por el sensor anterior.

Toolhead, electrónica del cabezal de impresión

Disponemos de una electrónica de control en nuestro cabezal de impresión que se encarga de la gestión del sistema de extrusión, sensor de nivelación, etc... Os vamos a recomendar algunas cosas a tener en cuenta.

Mejora en la temperatura del driver del extrusor

Teniendo en cuenta las características y el acabado de alguno de los componentes de esta máquina, el driver del toolhead puede verse sometido a temperaturas extremas que pueden afectar a su correcto funcionamiento y al resto de componentes electrónicos.

Para mejorar este aspecto es interesante sustituir el disipador del driver (cuadro rojo) por uno de mayores dimensiones que permita disipar mejor la temperatura.

El disipador retirado podemos utilizarlo para la MCU (cuadro azul) y que esta también sufra menos.

También nos aseguraremos que tanto la goma que utilizan como separador así como el cableado quede mejor ordenado y evite una incorrecta refrigeración o incluso daños en el cableado por temperatura.

eMMC

La eMMS que incluyen nuestras QIDI tiene una capacidad limitada (8 GB) donde tenemos almacenado el sistema operativo (Armbian), Klipper quedando apenas 1 GB para almacenar nuestros gcodes y otro contenido.

QIDI dispone de ampliaciones eMMC y podemos encontrar otras alternativas que podemos adaptar.

Normalmente incluyen un adaptador para poder conectar la eMMC a tu ordenador utilizando USB.

Vamos a sugerir los pasos a seguir para realizar un backup y que podamos restaurar después en nuestra nueva eMMC:

  • haremos un backup completo de nuestra eMMC, para ello podemos utilizar el proceso explicado en la siguiente guía

  • con la imagen de nuestra eMMC original podemos restaurarla en la nueva eMMC siguiendo el proceso explicado en la siguiente guía

  • con esto ya tenemos nuestra nueva eMMC con una imagen de la actual que podemos instalar de nuevo en nuestra electrónica y comprobar que el sistema arranca correctamente

La siguiente parte del proceso, al cambiar de una eMMC de más tamaño a la que originalmente teníamos, será ajustar las particiones para poder obtener todo el espacio de nuestra nueva eMMC.

  • podemos utilizar el comando df -h para revisar el tamaño de la partición

  • también podemos utilizar el comando fdisk -l /dev/mmcblk1 para ver la información de las particiones existentes

  • Realizaremos los siguientes pasos para modificar el tamaño de la partición actual y adaptarla al nuevo tamaño

    • fdisk /dev/mmcblk1

      • p muestra información de la partición

      • d eliminará la segunda partición, solamente la entrada los datos siguen en la eMMC

      • n crea una nueva partición en el mismo lugar que la anterior del macimo tamaño posible manteniendo el tipo de partición ext4

      • w escribe la tabla de particiones

    • Anora lanzamos touch /forcefsck para que en el siguiente reinicio haga un check del sistema de archivos, esto puede tardar unos minutos!!

    • Una vez finalizado ejecutamos resize2fs /dev/mmcblk1p2 para ajustar el tamaño nuevo en el sistema y reiniciamos nuestro sistema con shutdown -r now

  • Para verificar que todo ha quedado correcto podemos realizar un df -h de nuevo

Klipper

También podemos mejorar significativamente algunos aspectos de Klipper que aunque esté personalizado por QIDI y use versiones antiguas.

Antes de entrar en detalle nos gustaría comentar algunos aspectos sobre la implementación de Klipper por parte de QIDI vamos a revisar sus componentes electrónicos:

  • Utiliza una electrónica customizada, mutilada, de la MKS SKIPR

    • Procesador Rockchip RK3328, Quad-core Cortex-A53, 1.5Ghz, con dos módulos DDR3 RAM de 512 KB y disponemos de 1 GB en total...

    • MCU STM32F402RCT6 Dual core Cortex M4 con 256KB de memoria flash... mientras que la MKS SKIPR suele utilizar una MCU STM32F407 ligeramente más potente

    • Drivers TMC2209 para controlar los ejes X, Y y Z que se montan en zócalo con lo que podemos en caso de avería poderlos reemplazar.

    • Puerto ethernet para red cableada

    • Wifi 2.4Ghz, es curioso como en este caso es un dongle USB el cual podremos sustituir en el caso que se estropee o queramos mejorar

    • EMMC de 8GB, algo justa dado que con la instalación de Klipper se quedan disponibles unos 1GB para nuestros gcodes, timelapses, etc... un componente que puede ser interesante mejorar o buscar fórmulas para aligerar el tamaño de la distribución utilizada por QIDI

  • MCU Toolhead es de nuevo una personalización de la MKS THR donde se han limitado el número de conectores a los necesarios para la implementación de QIDI, cuenta con un procesador Raspberry Pi RP2240.

  • Pantalla 5" que no se tiene mucha información, simplemente que se comunica por serial con Klipper y que por ellos QIDI ha integrado modificaciones en Klipper.

Entrando en la parte de software Klipper:

  • Distribución Armbian MKS y personalizada por QIDI utilizando una versión "buster" antigua en lugar de la actual "bullseye"

  • Versiones bastante desactualizadas de Klipper y componentes de este:

IMPORTANTE!!!

NO ACTUALIZAR NINGÚN COMPONENTE CORE (KLIPPER/MOONRAKER/SYSTEM) DADO QUE PUEDEN ROMPER LA CONFIGURACIÓN Y PERSONALIZACIONES DE QIDI Y DEJAR EL SISTEMA INUSABLE.

  • Acceso al interfaz web de gestión, Fluidd, a través del puerto http://IP_HOST:10088

  • Disponemos de acceso SSH utilizando cualquier cliente y utilizando la IP junto con el usuario/password de la siguiente tabla. La instalación de klipper parece encontrarse dentro del usuario mks y utilizando una estructura de directorios de configuración bastante antigua y que va a dar problemas si actualizamos o añadimos componentes Klipper.

rol

root

root

makerbase

user (o user2)

mks

makerbase

Actualizaciones firmware

Como ya os hemos comentado las QIDI son algo peculiares en cuanto a su firmware, os vamos a dar algunas sugerencias:

  • SIEMPRE utilizar el firmware que encontremos en https://qidi3d.com/pages/software-firmware NO utilicemos nunca el de su Github!!!

  • Los archivos de actualización normalmente tienen el nombre QD_Update.zip, su contenido suele ser:

    • printer.cfg, donde incluyen las nuevas mejoras en configuracion y que normalmente es lo que más suele cambiar en las últimas versiones

    • QD_Max_SOC, en este caso la parte Max dependera del modelo de impresora Max Plus etc..., básicamente es un fichero comprimido donde dentro encontraremos otro data.rar con:

      • /home/mks/klipper, donde se incluyen todas las personalizaciones de MKS/QIDI sobre Klipper, algunas de ellas para el correcto funcionamiento de la pantalla

      • /home/moonraker, igual que el punto anterior pero para Moonraker

      • /home/klipper_config, otras configuraciones para Klipper extras a lo que contiene/use el printer.cfg

      • /root, más personalizaciones del sistema de MKS/QIDI

    • En ocasiones el firmware de la pantalla se puede corromper, para ello podemos disponemos del mksscreen.recovery que copiando en la raiz de un USB y reiniciando la impresora realizará el proceso de recuperación. SOLICITAR SIEMPRE AL SOPORTE QIDI LA VERSIÓN CORRECTA PARA VUESTRA MÁQUINA!!!

Actualización horaria

Dado que la electrónica no dispone de una batería para mantener los ajustes horarios lo ideal es que configuremos el sistema para que lo haga automáticamente. Es importante porque de esta forma tendremos estimaciones correctas de tiempos de impresión, además de poder realizar actualizaciones software mediante internet.

El proceso es muy sencillo lanzando los siguientes comandos, disponemos de dos opciones:

Lo primero de todo ajustaremos nuestra zona horaria con los siguientes comandos:

timedatectl list-timezones # to list available time zones
sudo timedatectl set-timezone Europe/Madrid # to set Europe/Madrid timezone
timedatectl # to check timezone was ok

Desactivaremos systemd-timesync:

systemctl status systemd-timesyncd # to check current status
systemctl stop systemd-timesyncd # to stop systemd-timesyncd daemon
systemctl disable --now systemd-timesyncd.service # to disable systemd-timesyncd daemon
systemctl status systemd-timesyncd # to check systemd-timesyncd is disabled

Instalaremos chrony:

sudo apt install chrony -y # to install chrony

Reiniciamos el servicio:

sudo systemctl restart chronyd # to restart chrony daemon

Podemos revisar la configuración en el caso que queramos ajustar algo, no suele ser necesario:

sudo nano /etc/chrony/chrony.conf

Revisamos el estado de la sincronizacion con estos comandos:

chronyc sources
chronyc tracking

Podemos lanzar un comando date para verificar que todo este sincronizado.

Ahora al apagar nuestra máquina esta se ajustará la hora al iniciarse.

Kiauh

También disponemos de Kiauh preinstalado que podremos lanzar ejecutando ./kiauh/kiauh.sh, probablemente nos solicite actualizarlo:

Analisis printer.cfg y resto configuraciones

En esta sección revisaremos algunas partes de la configuración de la máquina como referencia para futuras personalizaciones.

MCU

Tenemos 3 MCUs en nuestra QIDI:

  • MCU host Klipper, ubicada en la electrónica principal:

printer.cfg
[mcu rpi]
serial: /tmp/klipper_host_mcu
  • MCU electrónica impresión, integrada en la electrónica principal. El método de conexión serial utilizado es USART 1 (PA10/PA9).

printer.cfg
[mcu]
# The hardware use USART1 PA10/PA9 connect to RK3328
#serial: /dev/serial/by-id/usb-Klipper_stm32f407xx_4D0045001850314335393520-if00
serial: /dev/ttyS0
restart_method: command
  • MCU toolhead, en el cabezal de impresión. En este caso utiliza un método de conexión USART mediante cable USB:

KMS_THR.cfg
[mcu MKS_THR]
serial:/dev/serial/by-id/usb-Klipper_rp2040_E5D94D9517D45658-if00

Ventiladores

Contamos con 4 ventiladores gestionables:

  • Ventilador de capa (FAN0), controlado por la MCU Toolhead

printer.cfg
[output_pin fan0]
pin: MKS_THR:gpio2
pwm: True
cycle_time: 0.0100
hardware_pwm: false
value: 0
scale: 255
shutdown_value: 0.0
  • Ventilador de capa auxiliar (FAN2), controlado por la MCU principal

printer.cfg
[output_pin fan2]
pin: PA8
pwm: True
cycle_time: 0.0100
hardware_pwm: false
value: 0.00
scale: 255
shutdown_value: 0.0
  • Ventilador de recirculación de aire (FAN3), controlado por la MCU principal

printer.cfg
[output_pin fan3]
pin: PC9
pwm: True
cycle_time: 0.0100
hardware_pwm: false
value: 0.0
scale: 255
shutdown_value: 0.0
  • Ventilador del hotend (hotend_fan), controlado por la MCU Toolhead

printer.cfg
[heater_fan hotend_fan]
pin:MKS_THR:gpio1
max_power: 1.0
kick_start_time: 0.5
heater: extruder
heater_temp: 50.0
fan_speed: 1.0
off_below: 0

Sensor de filamentos

Otro apartado de configuración es el de sensor de filamentos que podemos encontrar su configuración en printer.cfg:

printer.cfg
[filament_switch_sensor fila]
pause_on_runout: True
runout_gcode:
            PAUSE
            SET_FILAMENT_SENSOR SENSOR=fila ENABLE=1
event_delay: 3.0
pause_delay: 0.5
switch_pin: !PC1

Al activarse lanza la macro PAUSE que hace un parking del cabezal:

[gcode_macro PAUSE]
rename_existing: BASE_PAUSE
gcode:
    # Parameters
    <div data-gb-custom-block data-tag="set" data-0='50' data-1='50' data-2='50' data-3='50' data-4='50' data-5='50' data-6='50' data-7='50' data-8='50' data-9='50' data-10='50' data-11='0'></div>                                                   ; z hop amount
    
    <div data-gb-custom-block data-tag="if" data-0='pause_resume' data-1='0' data-2='0' data-3='0' data-4='0' data-5='0' data-6='0' data-7='0' data-8='0' data-9='0' data-10='0' data-11='0' data-12='0' data-13='0' data-14='0'>     
        SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=zhop VALUE={z}                              ; set z hop variable for reference in resume macro
        SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=etemp VALUE={printer['extruder'].target}    ; set hotend temp variable for reference in resume macro
                                
#       SET_FILAMENT_SENSOR SENSOR=fila ENABLE=0                                             ; disable filament sensor       
        SAVE_GCODE_STATE NAME=PAUSE                                                          ; save current print position for resume                
        BASE_PAUSE                                                                           ; pause print
        <div data-gb-custom-block data-tag="if">       ; check that zhop doesn't exceed z max
            G91                                                                              ; relative positioning
            G1 Z{z} F600                                                                     ; raise Z up by z hop amount
        <div data-gb-custom-block data-tag="else"></div>

#            { action_respond_info("Pause zhop exceeds maximum Z height.") }                  ; if z max is exceeded, show message and set zhop value for resume to 0
            SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=zhop VALUE=0
        

</div>

        SAVE_GCODE_STATE NAME=PAUSEPARK2
        G90                                                                                  ; absolute positioning
        G1 X{printer.toolhead.axis_maximum.x/2} Y{printer.toolhead.axis_maximum.y} F6000   ; park toolhead at front center
        SAVE_GCODE_STATE NAME=PAUSEPARK                                                      ; save parked position in case toolhead is moved during the pause (otherwise the return zhop can error) 
        M104 S0                                                                              ; turn off hotend
        SET_IDLE_TIMEOUT TIMEOUT=43200                                                       ; set timeout to 12 hours
        
        SET_STEPPER_ENABLE STEPPER=extruder enable=0
    

</div>

Y después deberemos seguir desde la pantalla para el cambio de filamento, tenéis un video del proceso aquí.

Backup ficheros configuración en Github

Antes de realizar ningún cambio o incluse ante futuras actualizaciones es importante tener un backup de los ficheros de nuestra configuración (path ~/klipper_config).

Utilizando la guía genérica de backup en Github podremos hacerlo per teniendo en cuenta algunas peculiaridades de nuestra QIDI:

# access Klipper config step
cd ~/printer_data/config ->  cd ~/klipper_config
# download autocommit script
wget -O /home/pi/printer_data/config/3dwork-autocommit.sh https://raw.githubusercontent.com/3dwork-io/3dwork-klipper/master/scripts/3dwork-autocommit.sh
-> wget -O ~/klipper_config/3dwork-autocommit.sh https://raw.githubusercontent.com/3dwork-io/3dwork-klipper/master/scripts/3dwork-autocommit.sh

En el paso de editar la configuración del script 3dwork-autocommit.sh:

nano /home/pi/printer_data/config/3dwork-autocommit.sh
-> nano ~/klipper_config/3dwork-autocommit.sh
### Path to your config folder you want to backup
config_folder=~/printer_data/config
-> config_folder=~/klipper_config/

### Path to your Mainsail folder, by default that is '~/mainsail'
mainsail_folder=~/mainsail
-> # mainsail_folder=~/mainsail

### Path to your Fluidd folder, by default that is '~/fluidd'
#fluidd_folder=~/fluidd
-> fluidd_folder=~/fluidd

En el apartado de configurando el repositorio local:

# access Klipper config step
cd ~/printer_data/config ->  cd ~/klipper_config

En el apartado de añadir las macros esta seria la macro a añadir creando un fichero de configuración shell_command.cfg tal como tienes explicado más abajo en la sección de Input Shaper:

### 3DWORK - Backup config to Github
### https://klipper.3dwork.io/klipper/mejoras/backup-klipper

[gcode_shell_command backup_cfg_github]
command: sh /home/mks/klipper_config/3dwork-autocommit.sh
timeout: 30.
verbose: True

[gcode_macro BACKUP_CFG_GITHUB]
gcode:
    RUN_SHELL_COMMAND CMD=backup_cfg_github

Si todo ha ido bien ya tendremos backups de nuestra QIDI en Github!!

Añadir reporte de temperaturas de MCUs

Por defecto, QIDI incluye únicamente la temperatura del cerramiento, extrusor y cama caliente en la su configuración. De nuevo teniendo en cuenta las características de la máquina y para tener bajo control las condiciones de los componentes y tener referencias cuando se producen atascos lo aconsejable es añadir las temperaturas de la electrónica principal (host y mcu ya que están integradas) y el toolhead.

Para ello y dentro del printer.cfg en la parte final, pero siempre por encima de la sección SAVE_CONFIG que se incluye en el ejemplo anterior solamente como referencia, añadiremos esta configuración para las temperaturas del host y mcu de la electrónica principal:

printer.cfg
### 3DWORK - Temperatures host + μcontroler
[temperature_sensor host]
sensor_type: temperature_host
min_temp: 10
max_temp: 75

[temperature_sensor mcu]
sensor_type: temperature_mcu
min_temp: 10
max_temp: 75

#*# <---------------------- SAVE_CONFIG ---------------------->

Continuaremos en el fichero MKS_THR.cfg donde añadiremos al final de este:

MKS_THR.cfg
### 3DWORK Toolhead Temperature
[temperature_sensor toolboard]
sensor_type: temperature_mcu
sensor_mcu: MKS_THR

Si hemos realizado correctamente los pasos podremos ver desde nuestra interfaz las temperaturas de todos los componentes y tenerlas bajo control:

Input Shaping

El proceso de Input Shaper realizado por QIDI es totalmente desasistido, lo cual está bien porque no has de hacer nada pero, por otro lado, tienes el problema que no sabes como se encuentra tu máquina verdaderamente o como intentar ajustarla de forma óptima.

Vamos a mejorar el proceso para poder generar las gráficas y poder ver el resultado de Input Shaper.

El primer paso y desde Kiauh instalaremos G-Code Shell Command, opciones Advanced (4) y G-Code Shell Command (8)... nos preguntará primero si queremos instalar la extensión yu le diremos que Yes, segundo preguntará si crea un ejemplo de gcode shell y le diremos que No:

Iremos a nuestra interfaz web y dentro de la sección CONFIGURATION de Fluidd crearemos un nuevo fichero shell_command.cfg:

Dentro de shell_command.cfg incluiremos las siguientes macros shell:

[respond]
### 3DWORK - Input Shaper csv->png
[gcode_macro SHAPER_CALIBRATE_XY]
description: process csv file to png
gcode:
    RESPOND MSG="Homing"
    G28
    RESPOND MSG="Testing Input Shaper XY!"
    SHAPER_CALIBRATE
    RESPOND MSG="Generating Input Shaper X Graphs!"
    RESPOND MSG="Generating Input Shaper Y Graphs!"
    RUN_SHELL_COMMAND CMD=adxl_x
    RUN_SHELL_COMMAND CMD=adxl_y
    RESPOND MSG="Input shaper graphs generated for X and Y. You'll find them in your config/input_shaper folder in the CONFIGURATION tab!"
  
[gcode_shell_command adxl_x]
command: sh /home/mks/klipper_config/shell_commands/adxl_x.sh 
timeout: 300.
verbose: True

[gcode_shell_command adxl_y]
command: sh /home/mks/klipper_config/shell_commands/adxl_y.sh 
timeout: 300.
verbose: True

[gcode_macro SHAPER_CALIBRATE_COREXY_BELT_TENSION]
description: Generates resonance graph used to ensure belts are equally tensioned.
gcode:
    RESPOND MSG="Homing!"
    G28
    RESPOND MSG="Testing Upper Belt!"
    TEST_RESONANCES AXIS=1,1  OUTPUT=raw_data NAME=belt-tension-upper
    RESPOND MSG="Testing Lower Belt!"
    TEST_RESONANCES AXIS=1,-1 OUTPUT=raw_data NAME=belt-tension-lower
    RESPOND MSG="Generating Input Shaper Belt Tension Graphs!"
    RUN_SHELL_COMMAND CMD=adxl_belt
    RESPOND MSG="Belt tension graphs generated. You'll find them in your config/input_shaper folder in the CONFIGURATION tab!"

[gcode_shell_command adxl_belt]
command: sh /home/mks/klipper_config/shell_commands/adxl_belt.sh 
timeout: 300.
verbose: True

### 3DWORK - Backup config to Github
### https://klipper.3dwork.io/klipper/mejoras/backup-klipper
[gcode_shell_command backup_cfg]
command: sh /home/mks/klipper_config/shell_commands/autocommit.sh
timeout: 30.
verbose: True

[gcode_macro BACKUP_CFG]
gcode:
    RUN_SHELL_COMMAND CMD=backup_cfg

Iremos a nuestra interfaz web y dentro de la sección CONFIGURATION de Fluidd crearemos una carpeta llamada shell_commands:

Dentro de esta carpeta añadiremos un fichero llamado adxl_x.sh con el siguiente contenido:

shell_commands/adxl_x.sh
#!/bin/bash

NEWX=$(ls -Art /tmp/calibration_data_x_*.csv | tail -n 1)
DATE=$(date +'%Y-%m-%d-%H%M%S')

outdir=/home/mks/klipper_config/input_shaper
if [ ! -d "${outdir}" ]; then
    mkdir "${outdir}"
fi

/home/mks/klipper/scripts/calibrate_shaper.py $NEWX -o "${outdir}/resonances_x_$DATE.png"

rm /tmp/calibration_data_x_*.csv

Añadiremos un segundo fichero llamado adxl_y.sh con el siguiente contenido:

shell_commands/adxl_y.sh
#!/bin/bash

NEWX=$(ls -Art /tmp/calibration_data_y_*.csv | tail -n 1)
DATE=$(date +'%Y-%m-%d-%H%M%S')

outdir=/home/mks/klipper_config/input_shaper
if [ ! -d "${outdir}" ]; then
    mkdir "${outdir}"
fi

/home/mks/klipper/scripts/calibrate_shaper.py $NEWX -o "${outdir}/resonances_y_$DATE.png"

rm /tmp/calibration_data_y_*.csv

Añadiremos un segundo fichero llamado adxl_belt.sh con el siguiente contenido:

shell_commands/adxl_belt.sh
#!/bin/bash
#set -e -u -o pipefail

## the TEST_RESONANCES command seems to return before all data is completely
## written. it'd be better to poll for the files to be completely written,
## but this has been reliable for me so far…
sleep 10

outdir=/home/mks/klipper_config/input_shaper
if [ ! -d "${outdir}" ]; then
    mkdir "${outdir}"
fi

/home/mks/klipper/scripts/graph_accelerometer.py \
    -c /tmp/*.csv \
    -o "${outdir}/belt-tension-resonances-$( date +'%Y-%m-%d-%H%M%S' ).png"

rm /tmp/raw_data_axis*

Dentro de nuestro printer.cfg añadiremos un include para que cargue nuestro nuevo shell_command.cfg al final de este, pero recuerda que como siempre por encima de la sección SAVE_CONFIG!!!:

printer.cfg
### 3DWORK - Shell Macros/Commands
[include shell_command.cfg]

#*# <---------------------- SAVE_CONFIG ---------------------->

Reiniciaremos nuestro Klipper y deberemos encontrar una nueva macro SHAPER_CALIBRATE_XY que podremos lanzar y realizará un proceso de homing, test en XY de Input Shaper y nos generará las gráficas para poderlas revisar:

IMPORTANTE SOBRE PROCESO!!!

Las macros de SHAPER_CALIBRATE original de QIDI como la de SHAPER_CALIBRATE_XY creada por nosotros utilizan la macro SHAPER_CALIBRATE de Klipper... esto significa que hace el test Input Shaper, selecciona automáticamente la configuración que cree más adecuada y la aplica a la configuración.

Esto aunque es lo más cómodo en ocasiones no es óptimo por lo que os aconsejamos revisar la guía de Input Shaper para más detalles.

Encontraremos las gráficas generadas en una nueva carpeta en nuestro /config llamada input_shaper:

Dentro de esta encontraréis las gráficas de cada eje:

Como podéis ver en el ejemplo anterior hay mucho que mejorar!!! Si queréis aprender a interpretarlas podéis encontrar información en nuestra guía de Input Shaper.

Empecemos por ver la tensión de nuestras correas utilizando la nueva macro SHAPER_CALIBRATE_COREXY_BELT_TENSION que realizará un proceso similar a la anterior pero nos va a mostrar una gráfica de tensión de las correas para tener una referencia.

Ahora os mostraremos, en la práctica, cómo estos tests nos van a ayudar a mejorar significativamente el rendimiento y calidad de nuestra máquina.

Comenzaremos por las gráficas de correas, el procedimiento para el ajuste de las correas lo podéis encontrar en el troubleshooting de la wiki de QIDI, básicamente en nuestro caso lo que hicimos fué un homing de todos lo ejes y movimos el eje Y a su coordenada 0. Con una aplicación para móviles estilo Spectroid que analice el sonido intentaremos ajustar que la frecuencia en ambas correas en la mitad de su recorrido lateral nos den una frecuencia de unos 75-85Hz, también podemos usar el tacto o oído para realizar este primer ajuste ya que después con la gráfica iremos jugando con los ajustes.

El objetivo es obtener una gráfica de correas que se solapen lo máximo posible!!! tampoco hay que ser un paranoico en que sean exactas pero si que se solapen lo máximo y que el pico de estas sea de la frecuendia alta similar.

Os mostramos un ejemplo de nuestra máquina:

Como se puede observar el pico se encuentra en unos deseables 50Hz, además de tener muchas menos variaciones en respuestas.

Pero con esto que obtenemos? Ahora lo veremos en las siguientes gráficas... comencemos por e eje X:

En este caso con el ajuste, medianamente, correcto de nuestras correas hemos pasado a una gráfica de vibraciones bastante más limpia con un pico de frecuencias bien marcado y en unas frecuencias altas lo cual es genial. Además el tipo de Input Shaper sugerido es más aconsejable con unas aceleraciones muy buenas, y lejanas al valor original, con rangos de vibraciones y smooth bastante buenos.

Pasamos también a revisar la gráfica del eje Y:

En este caso aunque la gráfica original no estaba mal se ha mejorado de nuevo significativamente, un mejor tipo de Input Shaper sugerido, un significativo aumento de aceleraciones y unos valores de vibraciones/smooth muy buenos.

Ya podemos guardar estos valores de Input Shaper y en el caso de las acceleraciones máximas es aconsejable seleccionar el valor que no supere los valores calculados en el ejes X e Y (usaremos el más bajo de ellos) además de añadir un cierto margen de seguridad como por ejemplo el 90-95% del valor que obtuvimos en los tests (de nuevo sobre el eje que nos dio el valor más bajo). De igual forma ajustaremos max_accel_to_decel a 1/2 del valor anterior.

[input_shaper]
shaper_freq_x: 64.4
shaper_freq_y: 48.2
shaper_type_x: mzv
shaper_type_y: zv

[printer]
kinematics:corexy
max_velocity: 600
max_accel: 9000
max_accel_to_decel: 4500
max_z_velocity: 20
max_z_accel: 500
square_corner_velocity: 8

Como podéis ver y aunque se "venden" unas aceleraciones y velocidades de vértigo la realidad suele ser bastante dura y se quedan bastante lejos de ellas.

Además os aconsejamos ajustar estas aceleraciones en vuestro laminador para que estén alineadas.

3Dwork Klipper Bundle - QIDI Edition

Última actualización