Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
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 e sul loro funzionamento, far 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 e cominciare il successivo, ovvero 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]]// |
- Ultima modifica: 01/06/2018 13:39
- da Simone Persiani