Questa è una vecchia versione del documento!
Algoritmo "Jerk Limiting"
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 :
- se almeno una tra le componenti XYZ di supera il relativo "max_jerk" impostato, il firmware realizzerà il passaggio da a tramite accelerazioni. Stabilirà il valore incognito di 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 e 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}
- Ultima modifica: 01/06/2018 13:02
- da Simone Persiani