MK4duo

Come regolare i valori step/mm nel firmware

0 votes, average: 0,00 out of 50 votes, average: 0,00 out of 50 votes, average: 0,00 out of 50 votes, average: 0,00 out of 50 votes, average: 0,00 out of 5 (0 votes, average: 0,00 out of 5)
You need to be a registered member to rate this post.
Loading...

Una delle operazioni fondamentali da eseguire sulla propria stampante 3D, è la regolazione del valore firmware DEFAULT_AXIS_STEPS_PER_UNIT #define DEFAULT_AXIS_STEPS_PER_UNIT   {80, 80, 3200, 625, …

Source: Come regolare i valori step/mm nel firmware

3D-izionario – il mondo è pieno di cose che ancora non esistono …

0 votes, average: 0,00 out of 50 votes, average: 0,00 out of 50 votes, average: 0,00 out of 50 votes, average: 0,00 out of 50 votes, average: 0,00 out of 5 (0 votes, average: 0,00 out of 5)
You need to be a registered member to rate this post.
Loading...

piccolo dizionario della terminologia usata per descrivere le varie parti di una stampante 3d

Source: 3D-izionario – il mondo è pieno di cose che ancora non esistono …

Differenza tra velocità di stampa e velocità d’estrusione.

3 votes, average: 4,67 out of 53 votes, average: 4,67 out of 53 votes, average: 4,67 out of 53 votes, average: 4,67 out of 53 votes, average: 4,67 out of 5 (3 votes, average: 4,67 out of 5)
You need to be a registered member to rate this post.
Loading...

Spero di farvi cosa gradita, facendo questa piccola guida sulla differenza delle due velocità:

  1. Quella di stampa
  2. Quella di estrusione

Chiedo scusa se i calcoli li facilito per essere più comprensivo, normale che andrebbero fatti più seriamente, ma quello che conta è il risultato finale che più o meno è quello giusto.

Ho notato che anche dai più esperti c’è un po di confusione su queste due velocità, quindi vediamo di capirci…

Immaginiamo di stampare con un nozzle da 0,4 mm di diametro e di stampare esattamente a 100 mm/s un layer da 0,4 mm (faccio cosi per semplificare poi capirete del perché).

Ora se noi dobbiamo fare una linea di 100 mm alta quindi 0,4 mm impiegheremo 1 s alla velocità di stampa. Ma questo non vuol dire che stiamo estrudendo a 100 mm/s, perché no?? E ora ve lo spiego.

Se utilizziamo un filamento di 1,75 mm di diametro e ipotizziamo di estrudere a 100 mm/s in 1 s abbiamo estruso appunto 100 mm di filo, quindi un cilindro alto 100 mm e largo 1,75, ora sappiamo che il volume di questo cilindro si calcola con la formula:

V = (π • r • r) • h

Quindi nel nostro caso è 0,875 * 0,875 * 3,14 * 100 = 240,40 mm3

Ora calcoliamo invece il volume del nostro filo depositato sul piatto lungo 100 mm e alto 0,4 (ripeto per facilitare i calcoli mi baso su un cilindro depositato, anche se non è esattamente cosi)

0,2 * 0,2 * 3,14 * 100 = 12,56 mm3

Molto molto di meno di quello che l’estrusore ha estruso… Quindi??? Semplice l’estrusore non va a 100 mm/s. E a quanto va se deve estrudere solo 12,56 mm3 di materiale??

Sapendo il diametro del filo che è appunto 1,75 e di conseguenza il raggio che è di 0,875 sappiamo che il volume che deve estrudere quello che ci serve sapere quanto altro deve essere il cilindro, quindi la lunghezza di filo che deve spingere nell’hotend.

La formula è quindi H = 12,56 / (0,875 * 0,875 * 3,14) = 5, 2244 circa. Questo è la lunghezza di filo da 1,75 mm di diametro che l’estrusore deve spingere nel nozzle per fare uscire un cilindro di 0,4 di diametro per 100 mm di lunghezza. E in quanto tempo lo deve spingere? Semplicemente nello stesso tempo che lo deposita quindi 1s, di conseguenza la velocità dell’estrusore è “udite udite”:

5,22 mm/s

E si è proprio cosi 5 mm/s…

E se facessimo un layer da 0,2 mm sempre lungo 100 mm, più o meno la metà quindi si muoverà a 2,5 mm/s……

RIPETO sono calcoli grezzi non sono esattamente cosi, perché vanno tenute in considerazioni altre variabili oltre al fatto che reputo il filo depositato cilindrico, ma che non è esattamente cosi. Ma i valori sono approssimativamente molto vicini…

Quindi non impazzite a chiedere all’estrusore velocità oltre i 50 mm/s perché non avrebbe alcun senso, per estrudere a quella velocità dovreste stampare a velocità più alte di 10 volte i 100 mm/s cioè 1000 mm/s…

Cercate invece di inserire valori esatti per le velocità d’estrusione nel fw e non pensate di avere estrusori da F1 che non serve a nulla…

Questi calcoli vengono fatti appositamente dallo slicer che sapendo il filamento che avete calcola il volume da estrudere e in base a questo di quanto effettivamente deve muoversi l’estrusore.

Un altro sistema è quello di usare il volumetrico, quindi lo slicer non calcola più quanto deve estrudere il vostro estrusore in base al filo inserito, ma comanda la stampante con un numero che è il volume da estrudere, sarà poi il fw a calcolarne l’effettivo movimento in base al filo inserito nell’estrusore. Qual’è il vantaggio di questo sistema è quello di avere un gcode creato dallo slicer universale sia che usiate filo da 1,75 sia che usiate quello da 3. Ancora meglio se usate il sensore di grandezza del filamento in questo modo il fw si adatta in maniera dinamica a secondo del diametro rilevato dal sensore stesso…

Un saluto da vostro MagoKimbra.

Cosa sono i PID e l’autotune

2 votes, average: 5,00 out of 52 votes, average: 5,00 out of 52 votes, average: 5,00 out of 52 votes, average: 5,00 out of 52 votes, average: 5,00 out of 5 (2 votes, average: 5,00 out of 5)
You need to be a registered member to rate this post.
Loading...

PID sta per Proporzionale – Integrale – Derivata. Cerchiamo di capire cosa sono questi paroloni e cosa vogliono dire.

Se in un controllo automatizzato di temperatura usassimo un sistema semplice cioè quello di staccare il riscaldatore una volta raggiunta la temperatura voluta cosa accadrebbe?

Il riscaldatore, nel nostro caso una resistenza, conserverebbe ancora per un po della sua energia continuando a riscaldare il nozzle facendo superare la temperatura  impostata di alcuni gradi. Una volta persa la sua energia comincerebbe a raffreddarsi rifacendo scendere la temperatura del nozzle. A questo punto appena la temperatura rilevata scende al di sotto della temperatura impostata il circuito di controllo dovrà riaccendere il riscaldatore, ma quest’ultimo avrà un tempo t prima di tornare ad avere una energia tale per far risalire la temperatura del nozzle. Quindi la temperatura oscillerà di un dT rispetto alla temperatura impostata.

Oscillazione

Quindi questo metodo non è funzionale per il nostro scopo.

Si pilota, invece, la resistenza con un’onda di tipo PWM (Pulse Width Modulation) cioè un’onda quadra in cui quello che varia è il tempo in cui ha valore alto rispetto al tempo che ha un valore basso:

PWM

All’inizio quando il resistore è freddo il Duty Cycle sarà del 99%, cioè un impulso con una lunga durata alto e praticamente nulla basso.

Man mano che la temperatura si avvicina a quella impostata il Duty Cycle diminuirà, in questo modo la resistenza non avrà troppa energia per superare la soglia della temperatura impostata, ma ne avrà a sufficienza per essere ancora calda e tornare a scaldarsi per non scendere troppo al di sotto sempre della temperatura impostata.

Ma come fa il sistema a gestire questo Duty Cycle? Ecco che intervengono i valori PID di cui stiamo parlando.

Il valore Proporzionale (P) o Kp è una costante che è uguale a Conteggi/C, cioè di quanto deve variare l’uscita PWM rispetto a quanto si discosta la temperatura rilevata, sia in alto che in basso, a quella impostata. Un valore troppo basso rende la curva di salita più morbida, ma il controllo è meno reattivo a variazioni di temperatura. Mentre un valore troppo alto di Kp rende il sistema più reattivo, con una curva molto instabile rispetto al target:

PID_Kp

A questo punto si è portati a pensare che basta trovare il giusto valore di Kp, in effeti è già un parametro che fa molto per tenere la temperatura stabile, ma grazie anche agli altri due si arriverà ad avere una vera stabilità.

Il valore Integrale (I) o Ki rappresenta l’integrale dell’errore nel tempo dato dal parametro Kp. Questo parametro serve per variare il guadagno del controllo di temperatura per fare in modo che si acceleri il processo verso la temperatura impostata.

La derivata del processo di errore viene calcolata determinando la pendenza dell’errore nel tempo, questo valore viene moltiplicato per la costante Kd. La derivata predice il comportamento del sistema e migliora così tempo e stabilità del sistema stesso.

Qui di seguito vediamo una gif che spiega abbastanza bene quello che accade variando i tre parametri Kp, Ki e Kd:

PID_Compensation_Animation

Dopo questa spiegazione generale torniamo alle nostre stampanti.

Questi valori PID cambiano da Hotend a Hotend e anche da altri fattori esterni, tipo coibentazione del nozzle, areazione e anche velocità di stampa.

Per questo motivo bisogna fare il tuning di questi valori una volta pronta la stampante e ripetere questa operazione ogni tanto, per adeguarli anche all’usura stessa del nostro hotend.

Per fare questo tuning ci viene incontro un comando Gcode:

M303 H<numero hotend> S<temperatura target> C<numero di cicli> U<bolean upgrade>

Nel caso di un solo Hotend si può omettere il valore H, mentre per fare i tuning del BED nel caso volessero essere usati si mette il valore -1 come H (H-1).

La temperatura target di default è 150 e il numero di cicli di default è 5. Più cicli migliorano la stabilità, ma già 5 è un ottimo valore. Quindi il comando finale sarà:

M303 S200 C6

M303 H0 S210

M303 H1 C8

Per il Bed:

M303 H-1 S100 C5

Una cosa importantissima e fare questo controllo partendo da una temperatura ambiente del nozzle.

Alla fine il FW ci restituirà i tre valori Kp, Ki e Kd. A questo punto se abbiamo precedentemente attivato la EEPROM e usato il sotto comando U1 (upgrade istantaneo dei valori) possiamo salvare i nuovi valori subito con il comando M500 e quindi avere già il nostro hotend funzionante anche le prossime volte che accenderemo la stampante, altrimenti dobbiamo copiarci i valori e metterli nel FW ricompilare il tutto e scaricalo nella nostra scheda.

Nel file Configuration_Feature.h alla sezione PID troviamo:

// HotEnd{HE0,HE1,HE2,HE3}
#define DEFAULT_Kp {40, 40, 40, 40} // Kp for H0, H1, H2, H3
#define DEFAULT_Ki {07, 07, 07, 07} // Ki for H0, H1, H2, H3
#define DEFAULT_Kd {60, 60, 60, 60} // Kd for H0, H1, H2, H3

Qui mettiamo i tre valori per ogni hotend che abbiamo. I valori possono anche essere cambiati con il comando Gcode:

M301 H<hotend> P<Kp> I<Ki> D<Kd>

Mentre per il Bed il comando Gcode è:

M304 P<Kp> I<Ki> D<Kd>

Se usiamo il PLA e abbiamo una ventilazione molto forte, questa potrebbe influire sull’andamento della curva della temperatura se il nostro hotend non è perfettamente coibentato, per questo motivo meglio fare l’autotuning con le ventole accese, in questo modo i PID vengono calcolati tenendo conto dell’influenza dell’aria sul nozzle.

Il FET sulle schede controlla la resistenza in corrente, quindi se alimentiamo la board a 24V per esempio ai capi della resistenza ci saranno 24 V, ma possiamo limitare la corrente tramite il valore:

#define BANG_MAX 255       // limits current to nozzle while in bang-bang mode; 255=full current

255 è la massima corrente, abbassando il valore limitiamo la corrente che circolerà nella nostra resistenza, se per esempio non è idonea a lavorare a 24V.

Purtroppo il tuning dei PID non tiene conto della velocità di stampa e quindi il movimento del nozzle stesso e della velocità in cui arriva un filamento a temperatura ambiente. Quindi aumentando la velocità potremmo avere un abbassamento della temperatura e una conseguente alterazione della curva. Per aggiustare questo inconveniente ci viene incontro sempre il FW MK che ha anche il parametro Kc, un valore che varia la potenza in uscita in funzione della velocità di estrusione. Kc è in percentuale quindi 100 vuol dire il 100%, possiamo incrementarlo se abbiamo problemi di stampa a determinata velocità. Il valore può essere cambiato con il comando Gcode:

M301 H<hotend> C<Kc>.

Un altro valore è la Lag per PID tick un parametro superato il quale deve calcolare il nuovo valore di potenza in uscita. Il valore Lag si varia con il comando Gcode:

M301 H<Hotend> L<lag in PID tick>

che però non potrà mai superare LPQ_MAX_LEN, di default è impostato a 20 nel FW.

Anche questi due ultimi valori vengono memorizzati in EEPROM se attivata. Per attivare Kc dobbiamo decommentare:

#define PID_ADD_EXTRUSION_RATE

Quindi ricordatevi di fare il l’autotune dei PID e di rifarlo spesso per avere sempre delle buone stampe.

MagoKimbra…

Color Mixing Extruder

2 votes, average: 4,50 out of 52 votes, average: 4,50 out of 52 votes, average: 4,50 out of 52 votes, average: 4,50 out of 52 votes, average: 4,50 out of 5 (2 votes, average: 4,50 out of 5)
You need to be a registered member to rate this post.
Loading...

Oltre al noto flusso canalizzatore di Immagina e Crea, esiste un altro metodo per stampare a colori. Questo sistema prevede un hotend con nozzle in grado di sciogliere più di un filo e di conseguenza miscelare i vari colori.

diamond-hotend-prints[1]

MarlinKimbra o MK4due consente l’uso anche di questo sistema vediamo come.

Innanzitutto dobbiamo sapere quanti estrusori veri monteremo sulla nostra stampante, per esempio se monteremo un Diamond Hotend dobbiamo avere tre estrusori, ma essendo quest’ultimi facenti parte di un insieme il FW lo vedrà come unico estrusore.

In Configuration_Basic.h settiamo quindi a 1 il numero di estrusori:

/***********************************************************************
************************** Extruders number ***************************
***********************************************************************/
// This defines the number of extruder real or virtual
#define EXTRUDERS 1

Ma avendo fisicamente tre motori settiamo a tre DRIVER_EXTRUDER:

// This defines the number of Driver extruder you have and use
#define DRIVER_EXTRUDERS 3

Ora apriamo il file Configuration_Feature.h e abilitiamo COLOR_MIXING_EXTRUDER:

#define COLOR_MIXING_EXTRUDER

E settiamo quanti Tools virtuali abbiamo, i tools virtuali sarebbero i nostri colori mixati, come se avessimo n fili ognuno con un colore ben definito. Per ora lasciamo a 16.

// Use the Virtual Tool method with M163 and M164
#define MIXING_VIRTUAL_TOOLS 16

Abbiamo sempre un solo hotend quindi abilitiamo sempre la voce SINGLENOZZLE:

#define SINGLENOZZLE

Ora il nostro firmware è pronto, è inutile dire che in questo caso a differenza degli altri sistemi, vedi MKR4, NPr2 o il Dondolo il numero dei driver per gli estrusori deve essere per forza il numero di motori che vogliamo mettere, quindi nel caso del Diamond ci servirà una scheda con 3 driver per gli estrusori, l’Alligator con la piggy può esserci utile.

Dopo aver scaricato il FW nella nostra scheda e collegata a un host settiamo i nostri parametri. Prima di tutto dobbiamo definire i colori, questo perché per ora le informazioni non ci arrivano dagli slicer, l’unica informazione è il Tools T0 – T1 – T2 etc etc.

Immaginiamo di avere i classici tre colori Red – Green – Blu su i tre estrusori. Passiamo a creare i Tools, ne abbiamo 16 vi ricordate, virtuali.

Iniziamo a spiegare i comandi:

M163 S[index] P[mix value], con questo comando diciamo che usiamo l’estrusore[index] di un valore[mix value], il valore è un numero con la virgola compreso tra 0 e 1, dove 1 sta per il 100% e 0 per lo 0%. Per capirci il colore finale sarà composto da una percentuale di E0 + una percentuale di E1 + una percentuale di E2 e il totale deve fare 100%. Questo è dovuto al fatto che oltre a stampare di un certo colore noi cmq dobbiamo estrudere un valore fisso di materiale che deve comporre il nostro oggetto. Quindi se l’oggetto è fatto di rosso l’estrusione sarà del 100% di E0 + 0% di E1 + 0% di E2, se invece è un colore X avrà valori diversi per ogni estrusore, ma sempre il 100% di materiale deve estrudere.

Quindi creiamo il primo Tools T0, che sarà di Rosso.

M163 S0 P1 ; 100% Red
M163 S1 P0 ; 0% Green
M163 S2 P0 ; 0% Blu

Ora salviamo questa combinazione di colori nel nostro Tools T0 si usa il comando:

M164 S[index], dove l’index è il nostro Tools, quindi:

M164 S0 ; Store color mixing in tools T0

Ora creiamo il Tools Green:

M163 S0 P0 ; 0% Red
M163 S1 P1 ; 100% Green
M163 S2 P0 ; 0% Blu

E salviamolo sul Tools T1:

M164 S1 ; Store color Mixing in Tools T1

Creiamo il Tools T2 Blu:

M163 S0 P0 ; 0% Red
M163 S1 P0 ; 0% Green
M163 S2 P1 ; 100% Blu

E salviamolo sul Tools T2:

M164 S2 ; Store color Mixing in Tools T2

Creiamo un Giallo:

M163 S0 P0.5 ; 50% Red
M163 S1 P0.5 ; 50% Green
M163 S2 P0 ; 0% Blu

E salviamolo sul Tools T3:

M164 S3 ; Store color Mixing in Tools T3

Creiamo un Viola:

M163 S0 P0.5 ; 50% Red
M163 S1 P0 ; 0% Green
M163 S2 P0.5 ; 50% Blu

E salviamolo sul Tools T4:

M164 S4 ; Store color Mixing in Tools T4

Creiamo un Celeste:

M163 S0 P0 ; 0% Red
M163 S1 P0.5 ; 50% Green
M163 S2 P0.5 ; 50% Blu

E salviamolo sul Tools T5:

M164 S5 ; Store color Mixing in Tools T5

Creiamo un Arancio:

M163 S0 P0.7 ; 70% Red
M163 S1 P0.3 ; 30% Green
M163 S2 P0 ; 0% Blu

E salviamolo sul Tools T6:

M164 S6 ; Store color Mixing in Tools T6

Ora senza fare tutta la palette colori mi sembra abbastanza chiaro come definire un colore e come memorizzarlo su di un tools virtuale.
A questo punto apriamo Host e settiamo la stampante con 16 estrusori, magari mettiamo per ogni estrusore l’esatto colore che abbiamo messo nei nostri Tools cosi è più chiaro. Importiamo il nostro oggetto e settiamo per ogni parte che ci interessa un Tools (estrusore). Per farvi capire ho messo 7 pezzi di colore diverso da 1 a 7.

Color_mixing

Facciamo lo slicing e mandiamo in stampa. A ogni cambio di Tools (estrusore) il FW non lo interpreta come un vero è proprio cambio di estrusore, ma applicherà la percentuale decisa per quel Tools ai tre estrusori. Per farvi capire se arriva un comando G1 E1, quindi estrudi 1 mm e stiamo usando il Tools T0, l’estrusore E0 estruderà 1 mm e gli altri due 0. Mentre se stiamo usando il Tools T4 (Giallo) l’estrusore E0 estruderà 0,5 mm, l’estrusore E1 0,5 mm e l’estrusore E2 0 mm, quindi sempre 1 mm di materiale uscirà dal nozzle, ma di colore giallo.

La sequenza di comandi M163 e M164 può essere aggiunta all’inizio del gcode o inserita nello start gcode in modo da poter salvare il gcode finale nella sd con gli esatti colori voluti.

Buon divertimento.

MagoKimbra.