Guida alla regolazione PID
A chi è capitato di ricevere l’errore Printer halted? A tutti… eh si è davvero molto comune.
Questo errore si manifesta quando la stampante non riesce a scaldare a dovere una sua parte: l’ugello o il piatto.
Questo problema, in assenza di guasti si manifesta la prima volta quando si installa il primo fanduct. La circolazione dell’aria a livello del piatto porta ad un raffreddamento dell’Hot-end e il software, tramite i valori preimpostati non riesce più a scaldare come dovrebbe. In questo caso una bella regolazione al P.I.D. può essere risolutivo.
Se si riceve il messaggio “Printer Halted” senza aver apportato alcuna modifica allora siamo alla presenza di un guasto, che andrà ricercato, ma anche in questo caso cominceremo con un Autotune P.I.D.
Ma cos’è questo P.I.D. ?
Il controllo Proporzionale-Integrale-Derivativo comunemente abbreviato come PID, è un sistema in retroattivo–negativo ampiamente impiegato nei sistemi di controllo per l’industria. È il sistema di controllo in retroazione di gran lunga più utilizzato più poiché è in grado, tramite un feedback, di reagire ad un errore positivo o negativo e tendere allo 0 impostato. La reazione all’errore può essere regolata, appunto tramite un processo chiamato Autotune.
Nella stampante 3D è proprio questo processo che si occupa della regolazione del riscaldamento, e tramite questo algoritmo dosa l’immissione di corrente. Il PID è il motivo per cui se impostiamo la temperatura dell’ugello a 200 gradi questa rimane tale e non oscilla, per esempio, da 205 a 195 gradi.
Quindi il PID serve nel nostro caso a prevedere il comportamento del riscaldamento tramite il feedback dato dalla sonda di temperatura. Questo sistema, molto facile da gestire, ha anche dei limiti: uno su tutti è la scarsa adattabilità al cambiamento dei parametri di processo. Sostanzialmente il motivo per cui se si aggiunge un fanduct si deve procedere alla ricalibrazione.
Se vi capita spesso di ricevere l’errore Printer Halted, o magari vedete che la vostra stampante non tiene la temperatura dell’ugello o del piatto, avendo variazioni anche di 10 gradi, è arrivato il momento di effettuare un PID tune.
Guida Pratica
Vediamo in pochi semplici passaggi come effettuare questa “autoregolazione”:
– Collegamento
Per prima cosa dovremo collegare la stampante ad un computer, tramite un software di controllo e dialogo: possiamo scegliere quale software usare tra Repetier Host, Pronterface, Astroprint e molti altri. (Questa guida è basata su Repetier Host, ma i passaggi e i comandi sono identici con qualunque software vogliate usare).
– Comando
Una volta collegati si dovrà andare nella scheda di controllo della stampante e digitare il seguente comando: M303 E0 S200 C8
Scomponiamo questo comando per capirlo:
M303 –> Comando per l’autotune, può anche essere usato singolarmente, usando i valori preimpostati del firmware, ma non è una bella idea. Conviene usare i dati che più ci interessano.
E0 –> Questo indica l’apparato che stiamo testando l’E0 rappresenta l’estrusore. In alcune stampanti (con doppio estrusore) avremo anche l’E1. Nelle macchine con piatto riscaldato potremmo usare BED o E1 o E2, in base a come è definito il piatto nel firmware.
S200 –> In questa parte di comando si indica la temperatura a cui vogliamo che la prova sia effettuata. 200 sta per 200°, possiamo impostare da 150° a 260° in base al materiale per cui vogliamo regolare la stampante. Se stampiamo principalmente PLA ricordiamo di accendere le ventole del fanduct e quindi procedere all’autotune nelle condizioni in cui normalmente stampiamo.
C8 –> Qui si va ad indicare il numero di cicli di riscaldamento che vogliamo il software effettui. Più cicli equivalgono ad un PID più preciso, con dei limiti. Già 8 cicli sono sufficienti ma andare oltre i 14/15 sarà del tutto inutile.
Una volta avviato il comando vedremo il grafico della temperatura, questa salirà fino a raggiungere il dato impostato con la lettera S- – -, e inzierà ad ondeggiare intorno al valore.
Prestando attenzione vedremo che ad ogni ciclo l’onda si ridurrà fino a diventare una linea.
Ultimata la serie di cicli impostati i software ci darà i nostri nuovi valori di PID: Kp, Ki e Kd.
Ottimo! Abbiamo i nuovi valori, ma dove li inseriamo?
– Settaggio PID
Per prima cosa potremmo inserirlo all’inizio di un Gcode, per effettuare una prima prova e vedere che effettivamente la stampante reagisca bene ai nuovi valori. Per indicarlo all’inizio di ogni Gcode, si deve andare su “start.gcode” , ad esempio di Cura, e digitare dopo al comando M303 i valori forniti dall’autoregolatore. Ad esempio M301 P14.82 I0.8 D68.25 (inserite al posto di questi valori quelli ottenuti, mantenete le lettere maiuscole). Però in questo modo dovremo modificare manualmente tutti i files, e una volta appurato che i dati sono validi è solo una perdita di tempo. Quindi possiamo impostarli sulla stampante tramite il comando M301 P14.82 I0.8 D68.25 e salvarle questi valori su eeprom con il comando M500. Oppure andiamo a modificare direttamente il firmware.
Modifica firmware
Possiamo modificare il firmware serguendo 2 strade:
- La prima, più veloce, è aggiungere direttamente i valori trovati al sistema operativo in macchina: basterà dare il codice M301 seguito dai valori trovati, sul software usato per effettuare l’autotune.
ES: M301 P14.82 I0.8 D68.25
NB: per il piatto il principio é identico. Semplicemente utilizzate il comando M 304 per comunicare I valori alla eeprom. Esempio: M304 P14.82 I0.8 D68.25.
Assicuratevi di salvare tali valori tramite l’opzione di salvataggio della stampante oppure tramite il comando M500
- La strada più lenta prevede di inserire i valori trovati all’interno del firmware e andare a sostituirlo all’interno della stampante. In questo modo avremo un’installazione pulita e con la possibilità di avere meno complicazioni.
Spiegheremo la procedura con MARLIN, forse il più diffuso tra i firmware:
Con il programma Arduino procediamo ad aprire Marlin.ino
Se non è stato mai fatto si dovrà selezionare la scheda corretta (ad esempio Arduino Mega 2560) e la porta seriale corretta (si vede solo a stampante collegata, es COM 4).
Aperto Marlin.ino andiamo sulla scheda configuration.h e ricerchiamo la sezione “PIDTEMP”, qui sostituiremo i valori alle variabili “DEFAULT_Kp”, “DEFAULT_Ki” e “DEFAULT_Kd” con quelli trovati con l’autotune.
Infine, premendo sull’icona a freccia destra (in alto a sinistra) si caricherà il codice. Ora avremo il PID regolato correttamente alle nostre condizioni e non avremo più messaggi d’errore o fastidiose oscillazioni di temperatura. E’ possibile ripetere questo processo più volte, al variare delle condizioni, per avere la stampante sempre in perfetta efficienza.
Se avete trovato utile questa guida mettete MI PIACE alla nostra pagina Facebook per ricevere aggiornamenti su tutte le novità del Blog! Potete trovare molte altre guide sulla stampa 3D nella nostra sezione GUIDE!
Domanda: Facendo l’autoTune dell’estrusore e l’autotune del bed ovviamante ottengo calori diversi.
Cosa bisogna fare? E’ necessario fare una media?
Ciao Vincenzo, in caso volessi fare l’autotune del piatto dovresti, come spiegato al punto GUIDA PRATICA -> COMANDO, indicare nella riga di comando il nome del piatto, come è indicato nel firmware della tua specifica stampante. Fai partire l’autotune e riporti i valori ottenuti di P I D alla voce configuration.h, nella parte riferita al piatto. Fare una media dei valori ottenuti con il PID dell’ Hot End e con il PID del piatto ti porterebbe ad aver entrambi non funzionanti.
ciao, innanzitutto ottimo articolo come al solito, ma non mi è chiara una cosa, digitando M303 E0 S200 C8 eseguo il test per l’estrusore, e fino all’estrusore tutto bene.. se sostituisco e0 con bed, fa il test al bed.. ma poi come imposto il pid del bed? perchè il comando con M301 non ha nulla che identifichi che sia l’estrusore e non il bed, c’è qualche metodo? un code alternativo ad m301?grazie
Questa è effettivamente una cosa che devo approfondire! Se però vuoi settare i valori per il piatto puoi farlo inserendoli nel firmware e ricaricando lo stesso, mi riservo qualche giorno per cercare la risposta che cerchi! Grazie per l’ottimo spunto!
scusate se mi intrometto e se magari apro una discussione vecchia, ma non sono uguali i valori, il bed viene indicato sul firmware come bedKp, bedKi, e bedKd e non solo come Kp, Ki, e Kd.
Dario, ho appena corretto l’articolo, finalmente ho avuto un po’ di tempo! Il comando per la modifica del piatto é l’M304. Puoi leggere come fare, se qualcosa é poco chiaro non esistere a domandare!
Salve, sto eseguendo l’autotune con pronterface collegato ad un alfawise U20 e devo fare l’autotune per l’estensore, ma oggi i volta che i seriali la stringa la stampante si spegne e si riaccende automaticamente. Il fw della stessa è “chiuso” da quel che ne so! Dove sta il problema?
Ciao Davide, immagino tu ti riferisca all’estrusore. Io purtroppo non ho mai provato pronterface, ma immagino funzioni come Repetier. Probabilmente il firmware da qualche problema. Ti consiglio di riferire questa tua problematica al supporto tecnico Alfawise. Normalmente sono propensi a rispondere in tempi brevi.
Come mai mi fa 1 comando in attesa. ( Ho una anet a8)
Detta così non capisco il tuo problema! Scusa
Ciao, sto provando a regolare il pid solo che la temperatura sale troppo e repetier host mi restituisce l’errore “PID Autotune failed! temperature too high” ho letto online che alcuni hanno provato a settare il pid a 0, ho provato anche io ma non è cambiato nulla a voi è mai capitato?
Grazie in anticipo!