[[guide:junction_speed:jerk_limiting]]

Questa è una vecchia versione del documento!


Strategia

Uno dei problemi di questo sistema è che le accelerazioni e le decelerazioni richiedono tempo: un tempo relativamente piccolo che, moltiplicato per i milioni di movimenti richiesti per una stampa, può aumentare anche di molto i tempi di stampa.

Si è deciso quindi di evitare il più possibile tali fasi di accelerazione introducendo dei parametri modificabili dall'utente che qui chiameremo "max_jerk". In realtà tali valori si chiamano così perché incidono sul valore del jerk ma non possono essere considerati dei veri e propri jerk. Essi infatti dimensionalmente sono rappresentati da variazioni di velocità e sono quindi misurati in mm/s.

L'algoritmo

Riprendendo l'esempio di prima, avremo una variazione di velocità pari a \Delta \vec{v} = \vec{v}_k - \vec{v}_j:

  • se almeno una tra le componenti XYZ di \Delta \vec{v} supera il relativo "max_jerk" impostato, il firmware realizzerà il passaggio da \vec{v}_j a \vec{v}_k tramite accelerazioni. Stabilirà il valore incognito di \vec{v}_{junction} in modo tale che le variazioni di velocità lungo i tre assi non superino quelle impostate tramite max_jerk. In realtà l'algoritmo è nei fatti un po' più complesso di così: deve infatti tener conto anche di altri fattori tra i quali eventuali cambi di direzione degli assi (un qualunque asse deve rallentare fino a fermarsi prima di poter invertire la direzione del proprio moto);
  • altrimenti il passaggio da una velocità all'altra sarà istantaneo e non si perderà tempo per le accelerazioni/decelerazioni intermedie.

Configurazione dei parametri

Il "max_jerk" è quindi la minima variazione di velocità che richiede un'accelerazione: se \vec{v}_j e \vec{v}_k fossero abbastanza simili tra loro, il passaggio dall'una all'altra sarebbe istantaneo. Questo trucchetto permette di ridurre leggermente i tempi di stampa ma va impostato correttamente: più i valori di "max_jerk" vengono aumentati, maggiori saranno gli spostamenti (statisticamente) che verranno gestiti con il cambio di velocità istantaneo (e maggiori saranno quindi le vibrazioni prodotte).

Riassumendo, i "max_jerk" devono essere impostati tenendo a mente che abbassando tali valori si riducono le vibrazioni e i rumori prodotti dai motori ma si allungano conseguentemente i tempi di stampa, e viceversa.

Per abilitare il Jerk Limiting è sufficiente assicurarsi che il Junction Deviation sia disabilitato. Ecco un esempio di configurazione dei suoi parametri:

//#define JUNCTION_DEVIATION // per abilitare il Jerk Limiting e disabilitare il Junction Deviation
#define DEFAULT_XJERK 10
#define DEFAULT_YJERK 10
#define DEFAULT_ZJERK 0.4
#define DEFAULT_EJERK {5,5,5,5,5,5}