Sensorless
Esta funcionalidad nos permitirá realizar la función de endstop o final de carrera sin necesidad de estos
Última actualización
Esta funcionalidad nos permitirá realizar la función de endstop o final de carrera sin necesidad de estos
Última actualización
Algunos drivers TMC pueden detectar el choque contra un obstáculo que evita que se pueda mover normalmente. Esta funcionalidad es usada desde Marlin para realizar la función de endstop o final de carrera.
Os recordamos que tienes más guías de ayuda en nuestro bot de Telegram @ThreeDWorkHelpBot
Es muy importante recordar/recomendar que esta función se habilite solamente en los ejes X e Y porque el nivel de precisión dista del requerido en un eje Z donde se aconsejan otros métodos como sensores de nivelación automática.
En esta guía no vamos a entrar en la configuración hardware para poder habilitar físicamente la impresora y su electrónica, sino la parte de configuración de Marlin.
En cualquier caso, recordar que es imprescindible que los drivers estén instalados y configurados en modo UART, o SPI dependiendo del driver que utilicemos, y dependiendo de la placa es necesario habilitar el jumper dedicado para DIAG/Sensorless.
Recordad que si vuestra placa no dispone de jumpers para habilitar/deshabilitar sensorless:
en drivers que se use sensorless (X e Y) el pin DIAG debe de estar conectado a la placa
en drivers que no se use sensorless el ping DIAG debe doblarse/cortarse/desoldarse para que no este conectado a la placa
En cualquier caso revisar el manual del fabricante de vuestra placa para más detalle.
Una vez ya tengamos la parte hardware correctamente configurada/instalada tendremos que habilitar la función Sensorless en Marlin. Empezaremos por verificar que los la lógica de los finales de carrera de X e Y están correctos en configuration.h
El ejemplo anterior es para una máquina que realice el proceso de homing en MIN, normalmente en la esquina inferior izquierda, en el caso que tu máquina realice el homing en MAX deberías realizar el cambio en X e Y MAX_ENDSTOP_INVERTING
Continuaremos los cambios en configuration_adv.h habilitaremos lo siguiente:
Una parte clave para que el funcionamiento de Sensorless sea óptimo es tener en cuenta los siguientes puntos que trataremos a continuación con detalle:
Velocidad de Homing
Corriente del driver
Sensibilidad
Es importante recordar que la funcionalidad de Sensorless solo funciona correctamente con los drivers en modo stealChop habilitado
Habilitar el homing por eje, nos será extremadamente útil para el proceso de ajuste de la sensibilidad, que podremos encontrar en configuration.h
Marlin dispone de una configuración de velocidades específicas para el Homing que se pueden encontrar dentro de configuration.h:
Los siguientes valores de velocidades de homing SON ORIENTATIVOS deberás averiguar cuáles funcionan mejor con tu máquina.
Para versiones <= Marlin 2.0.7.x
Para versiones >= Marlin 2.0.8.x
Valores bajos/medios hacen que el proceso de Homing sea más lento pero mejoran la detección y precisión si usamos sensorless.
Por otro lado versiones recientes de Marlin incluyen una función adapta/ajusta los valores de aceleración y jerk/junction durante el proceso de homing
Como comantamos anteriormente esta función de los drivers TMC permiten detectar el choque contra un objeto y esto lo hacen comprobando el consumo de corriente del driver. Durante un movimiento normal del motor el consumo, a una velocidad estable, suele ser siempre el mismo... ahora bien cuando encuentra algún obstáculo el motor aumenta el consumo para continuar su camino y es en ese punto donde los drivers TMC interpretan como un choque y por tanto como un final de carrera/endstop en nuestras impresoras.
Como norma lo ideal es usar el minimo de corriente sin que nuestro motor pierda pasos en este caso Marlin dispone de una configuración especialmente útil para Sensorless que podemos encontrar en configuration_adv.h
Esta opción nos permite ajustar la corriente en ese punto crítico para Sensorless, normalmente bajando un poco la corriente normal por poner un ejemplo podríamos reducir en 20 unidades ese valor para mejorar las lecturas
Es imprescindible que antes tengas ajustado correctamente el vref de tus motores, revisa como hacerlo en nuestra guía de calibración.
El valor de -20 es orientativo deberás encontrar el valor óptimo para tu máquina.
En todo caso la velocidad de homing y la sensibilidad suelen tener más peso normalmente.
En el caso de usar TMC2130 en modo SPI es aconsejable en caso de problemas habilitar:
#define SPI_ENDSTOPS
Para impresoras CoreXY o similares (el movimiento de los ejes X e Y se realice mediante el uso de dos motores) es aconsejable deshabilitar la siguiente función de Marlin para que los movimientos del homing no realicen movimientos diagonales que hagan funcionan ambos motores a la vez
// #define QUICK_HOME // 3DWORK sensorless CoreXY
Dependiendo de la mecánica, motores, etc de nuestra impresora los valores para detectar esos obstáculos no es siempre la misma, es por eso que en Marlin permiten configurar unos umbrales llamados comúnmente sensibilidad
El valor de sensibilidad del siguiente ejemplo es meramente orientativo y deberás encontrar el valor correcto para tu máquina.
Es importante que antes tengas ajustado correctamente el vref de tus motores, revisa como hacerlo en nuestra guía de calibración.
Estos valores van desde el valor más bajo donde no detectará ningún cambio en la corriente hasta el valor máximo en el cual cualquier variación en el consumo de corriente disparará la señal de final de carrera.
Este valor máximo varía dependiendo del tipo de TMC que tengamos:
TMC2209/TMC2226 donde el valor más bajo es 0 y el más alto es 255
Otros TMC, TMC2130/TMC2160/TMC2660/TMC5130/TMC5160, donde el valor más bajo es +63 y el más alto -64
Relacionado con el ajuste de sensibilidad, hay otros dos valores de Marlin que deberemos ajustar siempre que habilitemos Sensorless:
SENSORLESS_BACKOFF_MM el cual siempre hará una retracción de 2 mm en el lado opuesto del Homing para asegurar que el movimiento de homing no es en una posición de bloqueo
HOMING_BUMP_MM con este y al igual que la anterior le decimos que una vez hecha la primera aproximación no retroceda para la segunda aproximación
Una vez ya tenemos nuestro firmware compilado y aplicado a nuestra impresora, el siguiente paso es verificar y ajustar la sensibilidad de nuestros ejes.
IMPORTANTE!!!
Os caconsejamos encarecidamente que antes de realizar vuestro primer homing:
nuestros drivers están en UART/SPI funcionando correctamente, usando M122 para verificar comunicación
verificar que nuestros drivers cuentan con pin DIAG correctamente conectado siguiendo las instrucciones del fabricante
si nuestra placa tiene jumpers para habilitar sensorless, que estos estén instalados correctamente
que nuestros antiguos finales de carrera físicos NO estén conectados a la placa
comprobar que los valores de sensibilidades están cargados en la EEPROM, esto se puede hacer...
desde los menús clásicos de Marlin en Configuracion/Avanzado/TMC
mediante un terminal, Pronterface o cualquier otro, usando de nuevo M122 y fijándonos en los valores para X e Y de la fila Stallguard thrs
si disponéis de una pantalla TFT táctil, serial, dentro de sus menús de configuración si ofrecen esas opciones
En el caso que no tengamos los valores correctos cargados en vuestra EEPROM, que son los que va a usar la máquina, deberemos realizar la recarga de valores en ella:
desde los menús clásicos de Marlin en Configuracion mediante Reset/Load/Save EEPROM
desde terminal usando M502, M500
desde una pantalla TFT táctil si disponemos de las opciones en ella
Comenzaremos por lanzar un home en el eje X ya sea desde el menú de nuestra pantalla o desde un terminal, como Pronterface, lanzando el comando G28 X.
Deberemos estar muy atentos por si el ajuste de la sensibilidad no es la adecuada y tenemos que apagar la corriente de la impresora!!!
Nos podremos encontrar con dos situaciones:
Que se pare al mover unos mm realizando el proceso de homing, en ese caso reduciremos la sensibilidad y volveremos a realizar el proceso.
Que no pare o que lo haga dando un golpe fuerte, en este caso aumentaremos la sensibilidad y volveremos a realizar el proceso.
El ajuste de la sensibilidad podremos realizarlo desde la propia pantalla desde Configuracion/Avanzado/TMC o mediante el comando M914 X10 (ejemplo para el eje X ajustando la sensibilidad a 10
Es aconsejable que los ajustes los hagamos de 10-5 unidades en cada ajuste para encontrar el punto correcto para nuestra máquina.
Una vez encontremos los valores correctos para nuestra máquina, guardaremos los valores en nuestra EEPROM desde el menú Configuración o usando el comando M500. También os aconsejamos anotar esos valores en los ficheros de configuración fuentes de Marlin para que en futuras compilaciones no se pierdan.
IMPORTANTE!!!
Os caconsejamos encarecidamente que antes de realizar vuestro primer homing:
nuestros drivers están en UART/SPI funcionando correctamente, usando M122 para verificar comunicación
verificar que nuestros drivers cuentan con pin DIAG correctamente conectado siguiendo las instrucciones del fabricante
si nuestra placa tiene jumpers para habilitar sensorless, que estos estén instalados correctamente
que nuestros antiguos finales de carrera físicos NO estén conectados a la placa
comprobar que los valores de sensibilidades están cargados en la EEPROM, esto se puede hacer...
desde los menús clásicos de Marlin en Configuracion/Avanzado/TMC
mediante un terminal, Pronterface o cualquier otro, usando de nuevo M122 y fijándonos en los valores para X e Y de la fila Stallguard thrs
si disponéis de una pantalla TFT táctil, serial, dentro de sus menús de configuración si ofrecen esas opciones
En el caso que no tengamos los valores correctos cargados en vuestra EEPROM, que son los que va a usar la máquina, deberemos realizar la recarga de valores en ella:
desde los menús clásicos de Marlin en Configuracion mediante Reset/Load/Save EEPROM
desde terminal usando M502, M500
desde una pantalla TFT táctil si disponemos de las opciones en ella