Se ti sei approcciato alla stampa 3D da poco, avrai sicuramente notato che dopo la prima fase di euforia iniziale data da questo aggeggio infernale che si muove avanti e indietro, è subentrata la seconda fase del “cavoli ma è proprio lenta ! “. Eh si c’è poco da fare, la stampa 3D è davvero lenta in certi casi ! E non si può nemmeno semplicemente schiacciare sul tasto accelera perché si arriva ad un punto in cui semplicemente non estrude, smette di muoversi o magari completa la stampa ma in malo modo (es: vibrazioni).
Per aumentare la velocità di una stampante servono principalmente:
- Un buon telaio progettato per muovere con il minimo delle vibrazioni le masse sospese come hotend e feeder oppure pesanti piani di stampa in movimento
- Movimentazioni adeguate per raggiungere alte velocità di stampa (motori, guide lineari, driver ecc ecc) e di comprovata durabilità nel tempo
- Se meccanicamente risolvi la parte della velocità e puoi arrivare a velocità altissime con relative accelerazioni, accertati di montare un gruppo di estrusione (feeder + hotend + ugello) che possa estrudere correttamente alla portata volumetrica che ovviamente aumenta con la velocità di stampa
- Ultimo ma non per ultimo… il filamento. Hai eseguito alla perfezione i primi due punti e ti ritrovi con un mostro che viaggia a 1000 mm/s di velocità e accelerazioni da 30.000 ? Bene, puoi anche accantonare quei risultati ottenuti perchè tanto non troverai un filamento che possa essere estruso a quelle velocità (almeno ad oggi nel 2023, in futuro chissà !)
L’articolo di oggi in realtà si focalizza più sul primo punto e in particolare su capire come è possibile smorzare le vibrazioni che inevitabilmente si generano durante i movimenti della stampante. Ogni asse della stampante entra in “risonanza” in maniera differente e varia al variare dell’accelerazione e della velocità di stampa. Questo vuol dire che andando più lenti avrò sicuramente al 100% stampe non vibrate ? Tecnicamente si ma nella pratica esistono dei casi in cui andando più lenti addirittura generi una risonanza che a velocità maggiori quindi questo assunto è da prendere con le pinze perchè tutto dipende dalla stampante che hai sotto mano.
⚠️ Attenzione: ricorda che più vai veloce e più è necessario aumentare la temperatura di stampa. Se hai una scarsa ventilazione che soffia sul pezzo ti troverai con parti inevitabilmente deformate dal troppo calore che non si riesce a smaltire con le ventole stock.
Ogni stampante è diversa dall’altra e ciò che incide fortemente nella generazione di queste frequenze di risonanza / vibrazioni sono in particolare le masse sospese (hotend per esempio e relativo feeder) soggette a repentini cambi di direzione. Come detto prima ricorda che un buon telaio correttamente assemblato permette di arrivare ad alte velocità, ma se parti da una stampante in compensato non ti aspettare miracoli…
Da qualche anno si sente molto parlare di Klipper, è un firmware di gestione della stampante che si installa in un Raspberry Pi (non sulla scheda di controllo motori) il quale sfrutta un algoritmo di smorzamento vibrazioni/ compensazione della risonanza chiamato “Input Shaper / Input shaping”, algoritmo che è comunque già utilizzato in altri ambiti come la movimentazione delle gru da cantiere per evitare che oscillino paurosamente durante il movimento. Tutta questa mole di calcoli viene gestita dal Raspberry Pi che ha una potenza di calcolo più che dignitosa e sufficiente per gestire questo tipo di algoritmo (assieme ovviamente ad altri migliaia di calcoli), in alcuni casi far gestire la cosa direttamente alla scheda della stampante potrebbe dare risultati disastrosi ma lo vedremo più tardi. L’installazione di Klipper non è semplicissima e richiede hardware da comprare a parte (Raspberry, microSD, dissipatori, alimentatore) e in questo preciso momento il Raspi ha costi fuori da ogni ragione .
Ma che cosa fa in pratica questo compensatore di frequenze di risonanza ? Detta in maniera veloce e molto brutta (ma che rende l’idea…) l’algoritmo fa muovere i motori in modo tale da “accompagnare” le vibrazioni e non andando contro queste.
“Input shaping reduces residual vibration by generating an input that cancels its own vibration. The simplest selfcanceling input consists of two impulses. The first impulse, which starts the system vibrating, is located at time zero, and the second impulse is delayed by one half period of the system vibration. The vibration caused by the second impulse is out of phase with the first vibration, thereby canceling it.”
Data una frequenza di risonanza l’algoritmo calcola con quanto ritardo dare il successivo comando di movimento al motore in modo tale da annullare la vibrazione generata dal primo movimento.
Prova a pensare quando spingi qualcuno in altalena, se provi a dargli la spinta quando deve ancora raggiungere il suo punto più alto che succede ? Ti arriva un bel contraccolpo ! In sostanza la rampa di accelerazione del movimento dei motori viene “spezzata” per far sì che le vibrazioni non si trasmettano al pezzo stampato. Sembrano cose che prendono tempo ma ti posso assicurare che non si nota nulla nei movimenti, anzi sono decisamente più fluidi e naturali (e i motori ronzano meno). Se fai viaggiare una stampante ad alta velocità e accelerazioni senza input shaping ti accorgerai quanto tutto inizierà a vibrare, non solo la stampante ma anche il tavolo sul quale lavora. Alla fine ti toccherà spegnerla per evitare che si smonti tutto !
⚠️ Attenzione: so che la spiegazione indicata è tutto tranne che scientifica e precisa, purtroppo con la matematica e relative formule non sono in grande amicizia… A tal proposito in fondo all’articolo troverai diversi link di approfondimento che ti aiuteranno a capire meglio come funziona questo input shaping.
La seconda soluzione è di utilizzare la nuova versione di Marlin appena rilasciata che ha al suo interno una versione alpha dell’input shaper similare a quello di Klipper. Tale soluzione è davvero comoda perchè basta aggiornare il proprio Firmware all’ultima versione abilitando l’algoritmo di calcolo e ricaricare il tutto sulla stampante. C’è però un grosso svantaggio in questo caso, come accennavo prima, questo firmware si carica direttamente dentro alla scheda di controllo della stampante. Se questa è di ultima generazione e ha un buon processore allora si può pensare di attivare tale funzionalità senza incappare in perdite di prestazione e movimenti non fluidi (specialmente per le Delta e le CoreXY che viaggiano a velocità molto elevate). Diversamente, se possiedi ancora una scheda a 8 bit con il classico Mega 2560 beh… ci potrebbero essere dei problemi ad attivare l’input shaping a causa della scarsa capacità di calcolo.
Se possiedi quindi una ottima scheda a 8 bit devi per forza buttarla e comprarne una nuova ? Certo che no ! Fortunatamente da qualche mese la GH ENTERPRISE (Italianissima…) ha rilasciato sul mercato dei driver motori stepper davvero molto molto interessanti: sono dei classici TMC2225 controllabili in UART o Standalone che però hanno una particolarità… una CPU dedicata ai calcoli dell’input shaper. In sostanza hanno un loro firmware interno (al quale non si accede) che intercetta i segnali di movimento dei motori e poi li fa arrivare ai motori in modo tale da compensare le risonanze che si generano sul telaio della stampante. Basta solo ricompilare il firmware che attualmente monti variando i driver inserendo la dicitura TMC2208 (si hai letto bene, al momento non sono ancora direttamente supportati ma a breve inseriranno su Marlin quelli GH). Flashi il tutto e poi segui la breve guida qui sotto oppure quella del loro sito che è fatta molto bene.
Ma come si rilevano queste frequenze di risonanza ?
- Se utilizzi Klipper puoi usare la calibrazione manuale o quella con un accelerometro (molto accurata ma richiede il collegamento e configurazione di quest’ultimo)
- Se utilizzi Marlin puoi stampare un test di stampa con frequenze di smorzamento variabili al crescere della stampa e poi selezionare quello che visivamente appaga di più
- Se utilizzi i driver GH Enterprise la calibrazione è solamente manuale e personalmente ho seguito la guida del loro sito ma anche quella fornita dal Klipper
Il semplice test prevede di stampare una “L” (mi raccomando a non girarla sul piano di stampa) con accelerazioni crescenti ma a velocità costante (consiglio 100 mm/s). Per quanto riguarda l’accelerazione, molto dipende dal telaio della tua stampante parti ragionevolmente da 1.500 o 2.000 a salire di step da 500 fino a che non vedi il pezzo molto vibrato, a quel punto puoi anche interrompere il test e procedere con le misurazioni.
⚠️ Attenzione: ricorda di disattivare il linear advance / pressure advance se attivi e imposta un valore di accelerazione massima del firmware in modo tale che supporti le nuove accelerazioni e che non le blocchi. Puoi anche utilizzare il comando M201 e poi salvi in eeprom.
Il calcolo della frequenza è davvero semplice perchè basta individuare una riga in cui ci sono ben visibili le vibrazioni delle “mezzelune”, segna con una matita le crestine di queste vibrazioni e poi conti quante ne riesci a vedere. Misura poi con un calibro la distanza tra la prima e l’ultima e poi applica questa formula:
f (Hz) = V (N−1) / D dove
- V =100 mm/s
- D = la distanza tra la prima e l’ultima cresta
- N= il numero di crestine individuate
Esempio: se individui 7 crestine di oscillazione e la distanza tra la prima e l’ultima è di 19.8 mm allora la frequenza sarà: f = 100(7−1) 19.8 ≈31 Hz
Per concludere ti basterà aprire questa pagina , scegliere il tipo di stampante che possiedi (cartesiana o Corexy), il tipo di algoritmo di smorzamento (EI, ZV, ZVD, MZV provali tutti e vedi quale fa al caso tuo) e inserisci la frequenza trovata per l’asse che stai configurando. Premendo su “genera gcode” ti verrà creato un semplice Gcode da copiare/incollare nello start gcode del tuo profilo di stampa dopo il comando G28 (o dove vuoi basta che sia dopo il G28). Ne devi creare uno per X e uno per Y è indifferente se posizioni prima o uno o l’altro.
⚠️ Attenzione: più aumentano le accelerazioni e più si farà notare l’input shaper nella stampa andando a “stondare” notevolmente gli spigoli. Ci sono algoritmi come lo ZV (Zero Vibration) che intervengono poco oppure l’EI (Extra intensitive) che interviene decisamente di più. Provali tutti non c’è il migliore o il peggiore.
La sequenza di movimenti generata dal gcode farà attivare la CPU del driver facendole intercettare da quel momento in poi tutti i movimenti da impartire ai motori applicando l’algoritmo di input shaping. Come fa ? Molto semplice, i programmatori hanno fatto in modo che piccole variazioni in quel piccolissimo movimento possano far attivare le diverse funzionalità (o frequenze) che si impostano dal configuratore online. Geniale ! In futuro verranno comunque supportati direttamente da Marlin e tutta questa procedura di copia/incolla non si dovrà più fare. L’input shaping resterà attivo fino allo spegnimento/accensione della stampante, se hai inserito il gcode nello start gcode del tuo profilo di stampa allora ti basterà solo lanciare la stampa e basta. Nel mio caso ho preferito creare dei Gcode separati per l’attivazione di differenti algoritmi di smorzamento (attenzione che alcuni attenuano molto di più di altri e portano ad effetti indesiderati con accelerazioni molto alte).
I risultati ottenuti sono davvero interessanti nonostante la stampante utilizzata (Artillery X1 e X2) non sia proprio una stampante fatta per andare ad alte velocità. Nonostante i rinforzi e tutto non sono riuscito ad andare oltre i 5K di accelerazione e 150/180 mm/s di velocità. Però il pezzo è uscito praticamente perfetto e… in metà del tempo rispetto al profilo classico che sono abituato ad utilizzare ! Non mi spingerò oltre con questa stampante anche perchè con l’hotend standard e il feeder che non fa un grossissimo grip non si possono raggiungere comunque velocità elevatissime. Però è interessante confrontare:
- Cubo stampato senza driver GH a bassa velocità = Successo, stampa con qualche classica vibrazione ma tutto sommato accettabile ( i valori di jerk sono molto bassi)
- Cubo stampato senza driver GH a alta velocità = Disastro ad ogni stampa, per via delle accelerazioni troppo elevate ho riscontrato sempre un layer shifting esagerato che non mi ha permesso di completare la stampa
- Cubo stampato CON driver GH e input shaping ativo + profilo alta velocità (150 mm/s e 4K accel) = Stampe sempre perfette e addirittura superiori a quelle fatte a bassa velocità senza i driver GH e input shaping disattivato
Può quindi essere un upgrade che consiglio ? Certamente, e lo consiglio anche a quelli che montano già delle schede che potrebbero attivarlo direttamente su Marlin. I risultati derivanti dall’utilizzo dell’input shaping sono troppo evidenti per essere ignorati. Su stampanti più blasonate o costruite meglio si arriva tranquillamente a 500 mm/s ma poi i problemi arrivano con l’estrusione del filamento (vedi Voron, Raise3D, Bambulab, Ratirig, Vez3D ecc ecc).
Servono solo per andare più veloci questi driver oppure vanno bene anche per andare lenti ? Sicuramente l’utilizzo dell’input shaping ha senso se utilizzato dove ci sono vibrazioni che non si riescono ad eliminare intervenendo sul telaio e relative masse in movimento. Alle alte velocità e vibrazioni il tutto si esaspera notevolmente rispetto alle basse velocità. Però, come detto prima, esistono dei casi in cui anche andando piano la stampante tende a vibrare un po’ e l’attivazione dell’input shaper può sicuramente essere di aiuto.
Ma ci sono comunque delle cose che ci tengo a ribadire:
- La tua stampante stampa già male e pensi di risolvere i tuoi problemi con questi driver magici ? No lascia perdere, questo è un upgrade che OTTIMIZZA la tua stampante per le alte velocità ma di certo non te la trasforma in qualcosa che non è ! Se vibra molto senza input shaping pensa prima a metter mano al telaio prima di andare di finezze di questo tipo…
- Presta molta attenzione al fatto che aumentando velocità e accelerazioni andrai a stressare molto di più la stampante e, se questa non è dotata di componentistica di qualità, rischierà di “usurarsi” prima del dovuto
- Le frequenze di risonanza sono poi fortemente influenzate dal peso complessivo delle masse in movimento, più pesanti sono e più potresti avere vibrazioni a basse frequenze. Se punti alla leggerezza ti troverai alte frequenze da smorzare.
- Se tensioni le cinghie varia la frequenza
- Se stampi su un tavolo che a sua volta traballa allora troverai frequenze differenti da un piano solido
- Se stampi oggetti MOLTO pesanti su stampanti con piano mobile tieni conto che tutto il peso man mano che la stampa cresce potrebbe far variare la frequenza di risonanza della stampante
Quindi in sostanza la calibrazione che stai facendo tiene conto di un sacco di fattori che cambiando vanno a variare anche le frequenze di risonanza. Ricorda inoltre che sia la Corner velocity di Klipper, sia la Junction deviation o il Jerk influenzano la generazione delle frequenze.
Link utili:
- Vibration Reduction Using Multi-Hump Extra-Insensitive Input Shapers
- Video che spiega il funzionamento dell’input shaping
- Dispensa di Dinamica e misura delle vibrazioni
- Input Shaping for Motion Control Vibration Reduction
- Input Shaping Algorithm – Advanced Crane Control Laboratory
- Klipper – Measuring Resonances
- Klipper – Resonance Compensation
- TMC2225 – GH ENTERPRISE Manuale utente
2 Comments
ciaoo in teoria lunedi mi arrivano questi benedetti draiwer gh enterprise credo di aver capito tutto nel casoi poisso disturbarti per qualche chiarimento se dovessi riscontrare qualche prolema? ciao e grazieee
Ciao Fabio, senti direttamente GH perchè da loro sicuramente otterrai una migliore e più puntuale assistenza !