[[guide:junction_speed:junction_deviation]]

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisione Revisione precedente
Prossima revisione
Revisione precedente
guide:junction_speed:junction_deviation [03/06/2018 22:45]
Simone Persiani
guide:junction_speed:junction_deviation [01/07/2018 22:00] (versione attuale)
Simone Persiani
Linea 1: Linea 1:
-==== Algoritmo "​Junction Deviation"​ ====+====== Algoritmo "​Junction Deviation" ​======
  
 //Autore: [[iosonopersia@gmail.com|Simone Persiani]]//​ //Autore: [[iosonopersia@gmail.com|Simone Persiani]]//​
  
-=== Strategia ===+==== Strategia ​====
 L'​algoritmo [[guide:​junction_speed:​jerk_limiting|Jerk Limiting]] opera su ciascun asse separatamente,​ senza cioè tener in considerazione l'​effettiva traiettoria seguita dagli spostamenti che si succedono nel corso di una stampa. La [[guide:​junction_speed:​start|Junction Speed]] in questo modo non viene influenzata da un fattore fondamentale:​ l'​angolo <​m>​\Theta</​m>​ tra uno spostamento ed il successivo, ovvero la //"​curvatura"//​ della traiettoria. Si può facilmente intuire l'​importanza di tale angolo: più l'​angolo è grande meno sarà necessario rallentare, e viceversa. Il modello fisico implementato dal [[guide:​junction_speed:​jerk_limiting|Jerk Limiting]] è quindi inaccurato e porta, generalmente,​ ad eccessivi rallentamenti (che aumentano inutilmente i tempi di stampa). L'​algoritmo [[guide:​junction_speed:​jerk_limiting|Jerk Limiting]] opera su ciascun asse separatamente,​ senza cioè tener in considerazione l'​effettiva traiettoria seguita dagli spostamenti che si succedono nel corso di una stampa. La [[guide:​junction_speed:​start|Junction Speed]] in questo modo non viene influenzata da un fattore fondamentale:​ l'​angolo <​m>​\Theta</​m>​ tra uno spostamento ed il successivo, ovvero la //"​curvatura"//​ della traiettoria. Si può facilmente intuire l'​importanza di tale angolo: più l'​angolo è grande meno sarà necessario rallentare, e viceversa. Il modello fisico implementato dal [[guide:​junction_speed:​jerk_limiting|Jerk Limiting]] è quindi inaccurato e porta, generalmente,​ ad eccessivi rallentamenti (che aumentano inutilmente i tempi di stampa).
  
 L'​algoritmo ''​Junction Deviation''​ si propone invece di scegliere <​m>​\vec{v}_{junction}</​m>​ tenendo conto anche dell'​angolo <​m>​\Theta</​m>​. Il risultato è un algoritmo più semplice ed efficace, in grado di velocizzare la percorrenza di tratti curvilinei. Questo nuovo modello fisico permette di ottenere le <​m>​\vec{v}_{junction}</​m>​ corrette in ogni occasione, adattandosi alle più diverse situazioni. L'​algoritmo ''​Junction Deviation''​ si propone invece di scegliere <​m>​\vec{v}_{junction}</​m>​ tenendo conto anche dell'​angolo <​m>​\Theta</​m>​. Il risultato è un algoritmo più semplice ed efficace, in grado di velocizzare la percorrenza di tratti curvilinei. Questo nuovo modello fisico permette di ottenere le <​m>​\vec{v}_{junction}</​m>​ corrette in ogni occasione, adattandosi alle più diverse situazioni.
  
-=== L'​algoritmo ===+==== L'​algoritmo ​====
 <WRAP center round todo 100%> <WRAP center round todo 100%>
 **NOTA DELL'​AUTORE:​** **NOTA DELL'​AUTORE:​**
Linea 14: Linea 14:
 </​WRAP>​ </​WRAP>​
  
-=== Configurazione dei parametri === +==== Configurazione dei parametri ​==== 
-Per attivare questa funzionalità è necessario assicurarsi di aver abilitato l'​opzione ''​JUNCTION_DEVIATION''​. ​I parametri ​dell'​algoritmo ​sono i seguenti:+Per attivare questa funzionalità è necessario assicurarsi di aver abilitato l'​opzione ''​JUNCTION_DEVIATION''​. ​Il parametro ​dell'​algoritmo ​è il seguente:
 <​code>​ <​code>​
 #define JUNCTION_DEVIATION #define JUNCTION_DEVIATION
-#define JUNCTION_DEVIATION_MM 0.05 // valore decimale ​maggiore o uguale a 0 +#define JUNCTION_DEVIATION_MM 0.05 // valore decimale ​compreso tra 0.01 e 0.3 (estremi inclusi)
-//#define JUNCTION_DEVIATION_INCLUDE_E+
 </​code>​ </​code>​
  
-  * Per comprendere l'​opzione ''​JUNCTION_DEVIATION_MM''​ è strettamente necessario aver capito a fondo il funzionamento dell'​algoritmo. Si faccia riferimento alla guida di cui sopra è stato fornito il link. Si sappia che è un valore espresso in mm e che un range sicuro di possibili valori va da 0mm a 0,5mm. Ovviamente questi valori vanno testati sulla propria macchina procedendo per tentativi. Si tenga presente che questo parametro rappresenta l'​errore di approssimazione del modello fisico utilizzato dall'​algoritmo. Porlo a 0mm significa utilizzare un modello accurato al 100%, con l'​inconveniente che in questo modo le <​m>​v_{junction}</​m>​ saranno molto limitate. Nella pratica conviene cercare di aumentare progressivamente questo valore in modo da aumentare la velocità nei cambi di direzione, facendo attenzione a scegliere una quantità che non porti la stampante a produrre troppo rumore o troppe vibrazioni; +=== JUNCTION_DEVIATION_MM === 
-  Per fare in modo che per la valutazione dell'​angolo di curvatura venga tenuto in conto anche l'avanzamento/​ritrazione del filamento, è necessario abilitare l'opzione ​''​JUNCTION_DEVIATION_INCLUDE_E''​. ​Questa opzione è <wrap em>​assolutamente sperimentale</wrap>! A quanto risulta dai test degli sviluppatori,​ abilitandola verranno gestite correttamente anche le <​m>​v_{junction}</​m>​ dell'​estrusore in uso. Ciò dovrebbe ridurre le perdite di passi del trascinatore del filamento e rendere il suo comportamento affidabile anche durante stampe molto lunghe. Si consiglia perciò di attivare questa opzione e di disattivarla **solo** in caso di evidenti problemi direttamente riconducibili alla sua attivazione.+Per comprendere l'​opzione ''​JUNCTION_DEVIATION_MM''​ è strettamente necessario aver capito a fondo il funzionamento dell'​algoritmo. Si faccia riferimento alla guida di cui sopra è stato fornito il link. Si sappia che è un valore espresso in mm e che un range sicuro di possibili valori va da 0.01mm ​a 0,3mm. Ovviamente questi valori vanno testati sulla propria macchina procedendo per tentativi. Si tenga presente che questo parametro rappresenta l'​errore di approssimazione del modello fisico utilizzato dall'​algoritmo. Porlo a 0.01mm ​significa utilizzare un modello accurato ​quasi al 100%, con l'​inconveniente che in questo modo le <​m>​v_{junction}</​m>​ saranno molto limitate. Nella pratica conviene cercare di aumentare progressivamente questo valore in modo da aumentare la velocità nei cambi di direzione, facendo attenzione a scegliere una quantità che non porti la stampante a produrre troppo rumore o troppe vibrazioni. Aumentare questo valore significa infatti fornire più flessibilità all'​algoritmo,​ che potrà così decidere di percorrere i cambi di direzione con "​accelerazioni centripete"​ più alte. 
 +<WRAP center round info 100%> 
 +''​JUNCTION_DEVIATION_MM'' ​**è un parametro salvato ​in EEPROM e può essere modificato ​anche senza ricompilare il firmware:** basta utilizzare il comando ​''M205 J<?>''​. Al termine delle modifichese si è soddisfatti del valore impostato è possibile salvarlo permanentemente tramite comando ​''​M500'' ​(richiede l'attivazione del supporto alla EEPROM). 
 +</WRAP>
  
-=== L'​analogia dell'​automobile da corsa ===+=== DEFAULT_MAX_ACCELERATION === 
 +<wrap em>​Attenzione!</​wrap>​ Prima ancora di cominciare a sperimentare con i valori di ''​JUNCTION_DEVIATION_MM'',​ è assolutamente consigliabile ricontrollare i seguenti parametri:​ 
 +<​code>​ 
 +#define DEFAULT_MAX_ACCELERATION {3000,​3000,​100,​3000,​3000,​3000,​3000,​3000,​3000} 
 +// Nell'​ordine:​ max. accel. dell'​asse X, Y, Z, E0, E1, E2, E3, E4 ed E5 
 +</​code>​ 
 +Il ''​Junction Deviation'',​ infatti, si preoccupa di limitare le accelerazioni su ciascun asse in base ai limiti qui impostati. Si rivela fondamentale,​ quindi, aver impostato questi valori nel modo corretto. Essi devono rispecchiare l'​inerzia di ciascun asse. 
 +<WRAP center round info 100%> 
 +''​DEFAULT_MAX_ACCELERATION''​ **è un parametro salvato in EEPROM e può essere modificato anche senza ricompilare il firmware:** basta utilizzare il comando ''​M201 X<?> Y<?> Z<?>''​. Al termine delle modifiche, se si è soddisfatti del valore impostato è possibile salvarlo permanentemente tramite comando ''​M500''​ (richiede l'​attivazione del supporto alla EEPROM). 
 +</​WRAP>​ 
 +==== L'​analogia dell'​automobile da corsa ====
 Se volessimo utilizzare un'​analogia per far comprendere meglio il significato dei primi due parametri, faremmo sicuramente riferimento ad un'​auto da Formula 1 che si appresta ad affrontare una curva. Se volessimo utilizzare un'​analogia per far comprendere meglio il significato dei primi due parametri, faremmo sicuramente riferimento ad un'​auto da Formula 1 che si appresta ad affrontare una curva.
  
-In questa analogia, liberamente ispirata dalla guida sopra citata, ''​JUNCTION_DEVIATION_MM''​ rappresenta la larghezza della pista rispetto a quella dell'​auto:​ impostarlo a zero significa imporre che la pista sarà della stessa larghezza della vettura, la quale sarà costretta (come se fosse su di un binario) a rallentare ​molto per affrontare la curva senza uscire dalla carreggiata. Viceversa, aumentare tale valore renderà la strada più larga e permetterà al bolide di scegliere una traiettoria più veloce (con la sola differenza che nel caso della stampante la traiettoria rimarrà ovviamente la stessa ma sarà percorsa a velocità maggiore).+In questa analogia, liberamente ispirata dalla guida sopra citata, ''​JUNCTION_DEVIATION_MM''​ rappresenta la larghezza della pista rispetto a quella dell'​auto:​ impostarlo a zero significa imporre che la pista sia della stessa larghezza della vettura, la quale sarà costretta (come se fosse su di un binario) a rallentare ​moltissimo ​per affrontare la curva correttamente. Viceversa, aumentare tale valore renderà la strada più larga e permetterà al bolide di scegliere una traiettoria più veloce (con la sola differenza che nel caso della stampante la traiettoria rimarrà ovviamente la stessa ma sarà percorsa a velocità maggiore).
  
 Questo parametro va quindi impostato tenendo conto del suo significato fisico/​geometrico. L'​utente è libero di sperimentare per trovare i valori limite della propria stampante ma il consiglio è quello di non allontanarsi troppo dai quelli di default, a meno che non si sappia esattamente cosa si stia facendo. Questo parametro va quindi impostato tenendo conto del suo significato fisico/​geometrico. L'​utente è libero di sperimentare per trovare i valori limite della propria stampante ma il consiglio è quello di non allontanarsi troppo dai quelli di default, a meno che non si sappia esattamente cosa si stia facendo.
  
 //Autore: [[iosonopersia@gmail.com|Simone Persiani]]//​ //Autore: [[iosonopersia@gmail.com|Simone Persiani]]//​