[[guide:junction_speed:start]]

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:start [01/06/2018 13:39]
Simone Persiani
guide:junction_speed:start [03/06/2018 22:09] (versione attuale)
Simone Persiani
Linea 1: Linea 1:
 ====== Junction Speed ====== ====== Junction Speed ======
  
- ​--- ​//​[[iosonopersia@gmail.com|Simone Persiani]] ​26/05/2018 13:00//+//Autore: ​[[iosonopersia@gmail.com|Simone Persiani]]//​
  
 ==== Introduzione ==== ==== Introduzione ====
-I progetti ​''​Marlin'' ​ed ''​MK4duo'',​ a partire rispettivamente dalle versioni ''​1.1.9''​ e ''​4.3.6'',​ hanno introdotto ​una nuova funzionalità ​nel tentativo di superare l'​ormai ​datata gestione del jerk degli assi. Tale gestione non ha mai convinto del tutto gli sviluppatori di Marlin e ha causato loro molti grattacapi nel corso degli anni. Nel tentativo di superare tale algoritmo si sono ispirati ai codici sorgente di [[http://​reprap.org/​wiki/​Grbl#​Grbl|Grbl]],​ un ben noto firmware per la gestione di macchine CNC, prendendo spunto dall'​algoritmo della Junction Deviation (il tutto nel pieno rispetto delle licenze associate a tale prodotto). Ricordiamo che Marlin stesso è nato nell'​agosto del 2011 proprio come fork di [[http://​reprap.org/​wiki/​Grbl#​Grbl|Grbl]] e di [[http://​reprap.org/​wiki/​List_of_Firmware#​Sprinter|Sprinter]]+I progetti ​[[https://​marlinfw.org|Marlin]] ed ''​MK4duo'',​ a partire rispettivamente dalle versioni ''​1.1.9''​ e ''​4.3.6'',​ hanno introdotto ​un nuovo algoritmo ​nel tentativo di superare l'​ormai ​datato [[guide:​junction_speed:​jerk_limiting|Jerk Limiting]]. Tale gestione non ha mai convinto del tutto gli sviluppatori di [[https://​marlinfw.org|Marlin]] e ha causato loro molti grattacapi nel corso degli anni. Nel tentativo di superare tale algoritmo si sono ispirati ai codici sorgente di [[http://​reprap.org/​wiki/​Grbl#​Grbl|Grbl]],​ un ben noto firmware per la gestione di macchine CNC, ottenendo e migliorando il [[guide:​junction_speed:​junction_deviation|Junction Deviation]] (il tutto nel pieno rispetto delle licenze associate a tale prodotto). Ricordiamo che [[https://​marlinfw.org|Marlin]] stesso è nato nell'​agosto del 2011 proprio come fork di [[http://​reprap.org/​wiki/​Grbl#​Grbl|Grbl]] e di [[http://​reprap.org/​wiki/​List_of_Firmware#​Sprinter|Sprinter]].
- +
-Tali algoritmi (l'uno alternativo all'​altro),​ si rendono necessari nel momento in cui il ''​planner''​ (il modulo software che si occupa dell'​ottimizzazione dei movimenti della macchina) si trova a dover scegliere con quale velocità far terminare un blocco e cominciare il successivo, ovvero la velocità di giunzione dei due blocchi.+
  
 <WRAP center round info 100%> <WRAP center round info 100%>
-Per maggiori informazioni sui blocchi ​sul loro funzionamentofar riferimento alla guida [[guide:​s_curve_acceleration|S-Curve Acceleration]]+Tali algoritmi (l'uno alternativo all'​altro) si rendono necessari nel momento in cui il ''​planner''​ (il modulo software che si occupa dell'​ottimizzazione dei movimenti della macchina) si trova a dover scegliere con quale velocità far terminare un blocco ​cominciare il successivoovvero la ''​Junction Speed''​ (velocità di giunzione tra spostamenti successivi).
 </​WRAP>​ </​WRAP>​
 +
  
 ==== Premessa ==== ==== Premessa ====
Linea 19: Linea 18:
 È quindi possibile definire nel firmware le accelerazioni massime per ciascun asse (compresi gli estrusori!) in base alla loro **inerzia** (nel linguaggio comune diremmo //​lentezza//​ e/o //​pesantezza//​). Tali accelerazioni definiscono la rapidità con cui l'​attuale velocità di un asse possa essere variata per raggiungere una velocità target. **In questo modo gli spostamenti pianificati dalla macchina possono essere modellati tenendo correttamente in considerazione anche le masse in movimento.** È quindi possibile definire nel firmware le accelerazioni massime per ciascun asse (compresi gli estrusori!) in base alla loro **inerzia** (nel linguaggio comune diremmo //​lentezza//​ e/o //​pesantezza//​). Tali accelerazioni definiscono la rapidità con cui l'​attuale velocità di un asse possa essere variata per raggiungere una velocità target. **In questo modo gli spostamenti pianificati dalla macchina possono essere modellati tenendo correttamente in considerazione anche le masse in movimento.**
  
-Il ''​planner''​ si occupa inoltre di concatenare gli spostamenti in modo che la velocità con cui termina un blocco sia la stessa di quella con cui comincia il blocco successivo (<​m>​\vec{v^{i}}_{finale}=\vec{v^{i+1}}_{iniziale}</​m>​),​ con lo scopo di rendere più "​fluido"​ il passaggio da uno spostamento all'​altro. La scelta della **Junction Speed** non è così scontata come potrebbe apparire ad una prima analisi ed è un fattore critico in grado di produrre effetti apprezzabili sui tempi di stampa.+Il ''​planner''​ si occupa inoltre di concatenare gli spostamenti in modo che la velocità con cui termina un blocco sia la stessa di quella con cui comincia il blocco successivo (<​m>​\vec{v^{i}}_{finale}=\vec{v^{i+1}}_{iniziale}</​m>​),​ con lo scopo di rendere più "​fluido"​ il passaggio da uno spostamento all'​altro. La scelta della ''​Junction Speed'' ​non è così scontata come potrebbe apparire ad una prima analisi ed è un fattore critico in grado di produrre effetti apprezzabili sui tempi di stampa.
  
 ==== Il jerk ==== ==== Il jerk ====
Linea 28: Linea 27:
 <WRAP center round tip 100%> <WRAP center round tip 100%>
 Se i motori stepper incaricati di eseguire movimenti con jerk non nullo hanno abbastanza coppia (//torque// in inglese), allora saranno in grado di effettuare tali transizioni senza perdita di step (ovvero senza ridurre la precisione e la qualità di stampa). In caso contrario sarà necessario ridurre la massima accelerazione per gli assi che presentano problemi. Se i motori stepper incaricati di eseguire movimenti con jerk non nullo hanno abbastanza coppia (//torque// in inglese), allora saranno in grado di effettuare tali transizioni senza perdita di step (ovvero senza ridurre la precisione e la qualità di stampa). In caso contrario sarà necessario ridurre la massima accelerazione per gli assi che presentano problemi.
-Esiste però una funzionalità che permette di mantenere **sempre** il jerk a zero. Per informazioni,​ riferirsi alla guida [[guide:​s_curve_acceleration|S-Curve Acceleration]]+Esiste però una funzionalità che permette di mantenere **sempre** il jerk a zero. Per informazioni,​ riferirsi alla guida <wrap em>[[guide:​s_curve_acceleration|S-Curve Acceleration]]</​wrap>​
 </​WRAP>​ </​WRAP>​
  
Linea 36: Linea 35:
   * <wrap em>​[[guide:​junction_speed:​junction_deviation|Junction Deviation]] (nuovo)</​wrap>​   * <wrap em>​[[guide:​junction_speed:​junction_deviation|Junction Deviation]] (nuovo)</​wrap>​
  
- ​--- ​//​[[iosonopersia@gmail.com|Simone Persiani]] ​26/05/2018 13:00//+//Autore: ​[[iosonopersia@gmail.com|Simone Persiani]]//​