QIDI X-MAX 3 - Technical Guide
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óntambién podemos utilizar el comando
fdisk -l /dev/mmcblk1
para ver la información de las particiones existentesRealizaremos 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ónd
eliminará la segunda partición, solamente la entrada los datos siguen en la eMMCn
crea una nueva partición en el mismo lugar que la anterior del macimo tamaño posible manteniendo el tipo de partición ext4w
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 conshutdown -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.
conexión SSH a nuestro host QIDI contenido /home/mks donde se encuentra la instalación de Klipper y sus componentes
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:
[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).
[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:
[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
[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
[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
[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
[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:
[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:
### 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:
### 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:
#!/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:
#!/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:
#!/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!!!:
### 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