MK4duo

Sistema multi estrusore MKR6 – Multi Extruder system MKR6

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...

Questo articolo spiega come si può far funzionare fino a 6 estrusori con una normalissima scheda che ha due driver per estrusori.

Un ringraziamento speciale a angelos del forum reprap Italia.

Prima cosa bisogna acquistare una scheda arduino da 8 relè. Verificare che sia optoisolata e funzionate a 5v.

Esempio:

SainSmart-8-Channel-DC-5V-Relay-01[1]

Una volta fatto questo abilitiamo nel firmware MK4duo la funzione MKR6, per prima cosa diciamo al FW che abbiamo 6 estrusori:

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

Poi definiamo che abbiamo 2 driver per gli estrusori:

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

A questo punto andiamo in Configuration_Feature.h e abilitiamo MKR4:

/***********************************************************************
************************* Multiextruder MKR6 **************************
***********************************************************************
* *
* Setting for more extruder width relay system *
* This is new system for 6 extruder width 2 driver and 6 relay. *
* See Configuration_pins.h for pin command relay *
* *
* Uncomment MKR6 to enable this feature *
* *
* Uncomment INVERTED_RELE_PINS if your relay switches with GND *
***********************************************************************/
#define MKR6
//#define INVERTED_RELE_PINS
/***********************************************************************/

C’è anche la possibilità di invertire il segnale per far scattare i relè se per caso si attivano con livello basso…

Dobbiamo anche dire al Firmware che pur avendo 6 estrusori però abbiamo un solo Hotend, quindi sempre in Configuration_Feature.h abilitiamo Singlenozzle:

/***********************************************************************
**************************** Single nozzle ****************************
***********************************************************************
* *
* This is used for single nozzle and multiple extrusion configuration *
* *
* Uncomment SINGLENOZZLE to enable this feature *
* *
***********************************************************************/
#define SINGLENOZZLE
/***********************************************************************/

Tutto questo lo possiamo fare in maniera semplice e rapida con il configuratore on line che trovate qui sul blog.

Ora per concludere la parte Firmware andiamo in Configuration_Pins.h e diciamo al Firmware quali sono i pin che servono per far scattare i relè. I pin da settare sono EX1_CHOICE_PIN e EX2_CHOICE_PIN:

#define EX1_CHOICE_PIN 5
#define EX2_CHOICE_PIN 6

Questi 2 pin sono un esempio, ma cambiano da scheda in scheda. Per la Ramps 1.4 si possono usare i pin per i servo lasciando il pin 11 per un eventuale servo bed level.

Ora passiamo al cablaggio, prendiamo i 4 fili che escono dal driver E0 e quelli di E1 e li colleghiamo in questa maniera:

Come vedete è abbastanza semplice. Il nero che esce dal driver lo colleghiamo in parallelo su tutti i cavi neri dei vostri 4 motori, stessa cosa facciamo per il rosso. Il nero e il rosso sono l’uscita A1 e B1 del driver, quindi 1 di una coppia e l’altro dell’altra coppia.

Mentre A2 il verde e B2 il blu li andiamo a mettere sul centrale dei due primi relè. I Normalmente Chiusi dei due primi relè li andiamo a collegare al verde e blu del primo motore che sarebbe E0, in questo modo quando i relè sono nella situazione tutti non eccitati il motore che andremo a controllare sarà appunto E0.

I Normalmente Aperti dei due primi relè andranno sui centrali della prossima coppia di relè, mi raccomando non invertite le coppie, mantenete la connessione a due a due…

I Normalmente Chiusi della seconda coppia andranno al verde e blu del secondo motore E1.

I Normalmente Aperti della seconda coppia andranno al verde e blu del terzo motore E2.

La prima coppia serve per commutare tra E0 e seconda coppia.

La seconda coppia serve per commutare tra E1 e E2.

Ripetiamo lo stesso identico concetto sugli altri 4 relè collegati però con il driver E1 per cosi collegare i motori di E3, E4 e E5.

I relè vanno alimentati con una 5v fissa, poi hanno degli ingressi per farli commutare, in questo caso visto che dovranno commutare a coppie dovremmo collegarli tra loro l’in 1 e 2 con in 5 e 6, l’in 3 e 4 con in 7 e 8. Poi dobbiamo portare i 2 pin scelti per farli scattare EX1_CHOICE_PIN e EX2_CHOICE_PIN.

Fatto tutto ciò possiamo alimentare la nostra scheda e dopo aver compilato e scaricato il fw passiamo alla fase di test.

Se abbiamo fatto tutto come si deve dovremmo avere questo risultato: Se ci colleghiamo con Host i relè dovrebbero rimanere tutti nello stato di quiete, ma se passiamo da E0 a E1 dovremmo sentire commutare la prima coppia di relè e anche la terza coppia, ce ne possiamo accorgere dai led che di solito sono montati sulla schedina relè.

Se passiamo da E1 a E2 vedremo scattare anche la seconda coppia di relè insieme alla quarta.

Se passiamo da E2 a E3 vedremo di nuovo tutti i relè tornare nella posizione di quiete, ma verrà usato il driver E1.

Se passiamo da E3 a E4 vedremo scattare di nuovo la prima e la terza coppia, ma usando il driver E1 si muoverà solo il motore di E4.

Se passiamo da E4 a E5 vedremo scattare di nuovo tutti i relé, ma visto che stiamo usando sempre il driver E1 si muoverà solo il motore E5.

A questo punto possiamo provare il tutto. disabilitiamo il controllo di temperatura con il comando M302 P1, questo fa in modo che possiamo estrudere anche se la temperatura dell’hotend non è al di sopra del minimo…

Proviamo a estrudere con ogni singolo estrusore, sentirete i relè commutare ogni qualvolta cambiate estrusore.

MagoKimbra.

Maker Faire The European Edition Rome 2016

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...

Vi aspetto tutti alla Maker Faire 2016…

Padiglione 8 Stand A14

 

Hotend IeC V4.0 Star Wars edition

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

Il mitico Davide di Immagina e Crea si è di nuovo superato con il suo nuovo Hotend IeC V4.0, in questa versione speciale per il sottoscritto, la Star Wars edition…

Per il montaggio su effector delta Kossel.

Dopo svariate prove posso dire che l’hotend IeC V4.0 ha superato di gran lunga il suo predecessore che già secondo il mio modesto parere lavorava benissimo.

Non ho modo di provarlo con filamenti gommosi quindi non do nessun giudizio oltre alle prove che posso effettuare con la mia stampante.

Anche con due ventole da 12 cm che sparano su tutto il corpo l’hotend tiene ferma la sua temperatura senza alcun problema.

Queste sono alcune foto di quello che ha stampato…

Kossel K2 full metal

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

Nuova Kossel K2 in dirittura…

 

20160327_183615Board Alligator, profili Openbuilds, materiali in metallo Robotdigg, Hotend Iec V4.0 Star Wars Edition, probe BLTouch, naturalmente il tutto mosso da MK4due…

 

 

 

 

 

 

 

 

Autocalibrazione finita in 19 iteration con precisione 0.05.

13:53:15.186 : Config: Current Delta geometry values:
13:53:15.186 : Config: X (Endstop Adj): -1.181
13:53:15.186 : Config: Y (Endstop Adj): -2.087
13:53:15.186 : Config: Z (Endstop Adj): 0.000
13:53:15.186 : Config: P (Z-Probe Offset): X0.00 Y-21.00 Z-0.97
13:53:15.186 : Config: A (Tower A Position Correction): 0.000
13:53:15.186 : Config: B (Tower B Position Correction): 0.000
13:53:15.186 : Config: C (Tower C Position Correction): 0.000
13:53:15.202 : Config: I (Tower A Radius Correction): -0.706
13:53:15.202 : Config: J (Tower B Radius Correction): 0.000
13:53:15.202 : Config: K (Tower C Radius Correction): -1.762
13:53:15.202 : Config: U (Tower A Diagonal Rod Correction): 0.000
13:53:15.202 : Config: V (Tower B Diagonal Rod Correction): 0.000
13:53:15.202 : Config: W (Tower C Diagonal Rod Correction): 0.000
13:53:15.202 : Config: R (Delta Radius): 110.81
13:53:15.202 : Config: D (Diagonal Rod Length): 215.85
13:53:15.202 : Config: H (Z-Height): 217.10

 

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…