Ajustes avanzados TMC (VFA)

TEST AVANZADO!!! REALIZAR SOLAMENTE SI TIENES UNOS CONOCIMIENTOS MINIMOS DE IMPRESORAS/FIRMWARE

- English

Klipper pone a nuestra disposición diferentes funciones para optimizar movimientos y extrusión de la máquina como puede ser Pressure Advance, Input Shaper, y otros...

En este caso vamos a atacar la configuración avanzada de nuestros drivers TMC para mejorar la calidad de sus ajustes junto con nuestros motores. En concreto, vamos a intentar eliminar o disminuir los artefactos verticales (VFA - Vertical Fine Artifacts) que suelen aparecer en nuestras impresiones.

Ejemplo de VFA a diferentes velocidades
Resultados una vez realizado el ajuste fino de nuestros TMC para nuestros motores

Klipper, en las secciones driver_xxx, dispone de ajustes avanzados para TMC que normalmente no son usados o nos los facilitan algunos fabricantes. Básicamente, estos ajustes que vamos a emplear nos permitirán alterar la forma de onda generada por nuestros drivers para la gestión de nuestros motores.

Procedimiento

En esta guía vamos a intentar explicar como encontrar esos valores para vuestra máquina.

Queremos dejar claro que el proceso de ajuste correcto para estos parámetros sería realizando una batería de tests usando un osciloscopio tal y como podéis encontrar en el siguiente PDF con el proceso. En nuestro caso y dado que no todos tenemos un osciloscopio en casa vamos a ajustar esos parámetros mediante unos cálculos en base a nuestros drivers y motores.

Para realizar el proceso descrito en esta guía vamos a necesitar dos cosas:

  • Encontrar el datasheet de nuestro motor

El primer paso será revisar en nuestro printer.cfg, o si tenemos una configuración modular en el include que los contenga, las secciones que hacen referencia a nuestros drivers y motores:

  • [stepper_x] donde encontramos la configuración del motor, en especial el valor de micropasos que se usarán

  • [tmc2209 stepper_x] donde veremos la configuración TMC para un eje/motor en concreto

Si tenías actualmente en tu configuración habilitada la opción de interpolate, el driver dinámicamente según las necesidades ajustaba los micropasos desde el valor establecido hasta 256, para realizar el ajuste fino usaremos un valor de micropasos medio en este caso podemos comenzar en 64.

Como norma os diremos que con lo explicado anteriormente nuestra experiencia con los micropasos es que NO siempre es beneficioso usar un número alto de micropasos ya que nos van a limitar considerablemente el rendimiento/velocidad por pérdida de torque, añadir más imprecisión y aumentar exponencialmente la carga del sistema.

Como consejo para máquinas de entrada o gama media (Ender 3, Artillery, etc...) os aconsejamos 16... 32 a lo sumo. Para máquinas de gama media/alta con un buen conjunto cinemática/motores/electrónica y dependiendo de sus características podremos utilizar un valor de micropasos superiores... SIEMPRE realizando los tests oportunos para ver las posibles mejoras en calidad e impacto en velocidad y fiabilidad.

El motor de extrusión va a ser un caso especial, lo que se recomienda dejarlos en 16 micropasos al igual que no tener activo el modo Stealthchop con stealthchop_threshold: 0.

No suele ser aconsejable utilizar este ajuste fino en ellos ya que como se indicó al inicio de la guía se cuentan con otras funciones para ajustar el control de la extrusión.

Las propiedades de nuestra sección TMC que nos vamos a centrar serán las siguientes:

  • driver_TBL: Blanking Time

  • driver_TOFF: Time to Slow Decay

  • driver_HSTRT: Hysteresis start

  • driver_HEND: Hysteresis end

Básicamente lo que haremos ajustando estos valores será ajustar los tiempos y configuraciones de histéresis de las señales de nuestros drivers.

Si queréis información más detallada de estas opciones os aconsejamos leeros la sección SpreadCycle Settings de, por ejemplo, el datasheet de los TMC2209

Como siguiente paso vamos a centrarnos en los cálculos de la hoja de excel comentadas en puntos anteriores, en concreto en la segunda hoja donde encontraremos Chopper Parameters donde ajustaremos los valores de las celdas en color amarillo:

  • fCLK, normalmente 12Mhz que suele ser el valor por defecto para unos TMC2209 (no hace referencia al reloj de nuestra electrónica!!!)

  • VM[V], indicaremos el voltaje de nuestra fuente o en su defecto al que alimentemos nuestra electrónica o motores si estos disponen de una fuente dedicada a otro voltaje diferente

  • TBL, normalmente lo dejaremos en 1 ya que es un valor que suele ir bien en todos los motores de hasta 2A.

Dependiendo del fabricante se puede dar el caso que a partir de 1.5A (o si usamos drivers/motores HighVoltage) se puede sugerir utilizar 2. Es aconsejable en estos casos realizar los cálculos con ambos valores y revisar resultados.

  • L[H], la inductancia de nuestro motor que encontraremos en su datasheet en mH normalmente. Por ejemplo si nuestro datasheet nos indica 1.6mH pondremos 0.0016 como valor en la celda de a hoja

  • Rcoil[Ohm], este valor también lo obtendremos del datasheet de nuestro motor aunque también lo podremos obtener midiendo con un multímetro las bobinas de nuestro motor

  • Icoil(peak)[A], la corriente de pico de nuestros motores y que debería indicar nuestro datasheet, este valor no es el mismo que usamos en current en nuestro cfg de Klipper

  • toff, es un valor reactivo, lo dejaremos a 3 inicialmente

  • CS, este valor lo ajusta el driver basado en la corriente (y su resistencia) y lo usaremos para simular más adelante

Ejemplo TMC5160

En el caso que pongamos valores que esten en límites la hoja de cálculo nos mostrará avisos.

Una vez ajustado todo los valores que nos van a interesar son los que aparecen en la sección de color azul Register values for CHOPCONF register bits, no las dos celdas bajo Desired value.

Lo siguiente será ajustar manualmente los valores de CS hasta que RSENSE using VSENSE=1 al final de la hoja sea igual a nuestro sense resistor, normalmente 0.110 Ohms en motores de impresora 3D. Nos interesa mantener el valor CS bastante alto para que nuestros micropasos funcionen correctamente, la propia hoja de cálculo nos avisará si usamos un valor demasiado bajo.

Cuando encontremos nuestro valor CS óptimo:

  • usaremos los valores en la sección azul antes comentada y los ajustaremos en nuestra configuración de Klipper en driver_HSTRT y driver_HEND

  • también ajustaremos driver_TBL y driver_TOFF con los valores indicados en la parte de arriba de nuestra hoja... normalmente 1 y 3 respectivamente

  • ajustaremos nuestro valor run_current usando Icoil (RMS)[A]

Realizaremos los mismos cálculos para el resto de ejes de movimiento en el caso que usemos diferentes componentes/ajustes.

Pruebas y ajuste fino

Es importante recalcar que estos valores obtenidos son simplemente como punto de referencia y que es posible que, ya sea por hacer los cásculos de forma incorrecta o por peculiaridades de los componentes/mecánica de nuestra máquina, requieran de ajustes manuales en base a tests o simplemente mejor dejarlos deshabilitados.

En cualquier caso si se hace un ajuste manual solamente os aconsejariamos tocar los siguientes valores:

  • driver_TBL, este tiempo debe cubrir de forma segura los eventos de conmutación del driver TMC. Tal como comentamos anteriormente un valor de 1 o 2 (dependiendo de las especificaciones o características del motor) debería funcionar bien para la mayoría de máquinas normales, pero cargas capacitivas más altas pueden requerir que se ajuste en 3. Podemos utilizar este valor de 0 a 3. Aunque no suele ser aconsejable habilitar StealthChop, en el caso de que por requerimientos sea necesario, lo ideal es establecer este valor en 0.

  • driver_TOFF, establece el tiempo de caída lenta (tiempo de apagado) del ciclo de corte. Esta configuración también limita la frecuencia máxima de corte. Podemos usar este valor de 0 a 15. Si utilizamos velocidades muy altas en nuestra máquina a veces suele funcionar mejor ajustar el valor driver_TOFF a 1 o 2 y establecer un valor para driver_TBL corto de 1 o 0

Recursos relacionados

Os aconsejamos este vídeo donde podréis ver el proceso:

Créditos y agradecimientos a MakerBogans

Última actualización

¿Te fue útil?