Come configurare il firmware Marlin e farlo funzionare

Come configurare il firmware Marlin e farlo funzionare

  1. Primi passi
  2. Porte seriali, velocità di trasmissione, Bluetooth, custom name
  3. Stepper driver
  4. Sensorless homing
  5. Microstepping e stealthchop
  6. PSU control
  7. Impostazioni termiche - Termistore e temperatura massima/minima
  8. Impostazioni PID
  9. Sicurezza - Estrusione a freddo e fuga termica
  10. Impostazioni meccaniche - Corexy, stampanti a nastro, bracci robotici
  11. Impostazioni di fine corsa
  12. Impostazioni di movimento - Accelerazione, velocità di avanzamento, passi, avanzamento lineare
  13. Z-Probe e livellamento del letto, cambio di direzione del motore
  14. Sensori delle dimensioni del letto e dell'allineamento del filamento
  15. M600
  16. Funzioni aggiuntive - EEPROM, impostazioni di preriscaldamento, pulizia ugelli, timer della stampa, password, lingue, supporto scheda SD, eensibilità encoder, altoparlanti, LCD, Neopixel

Una nota veloce prima di iniziare: troverai l'indicazione dei numeri di riga, in questo modo potrai trovare facilmente la riga corretta del firmware. A seconda del firmware utilizzato o dei file di configurazione utilizzati, però, il numero di riga potrebbe essere leggermente diverso. Ad ogni modo con questa indicazione sarà comunque più semplice trovare la riga corretta.

Gli "statement" in Marlin vengono chiamati "definition" e possono essere on, off oppure on con un valore selezionabile. Quelli che sono attivi sono non commentati, cioè non hanno un identificatore di commento (comment identifier), che è una doppia slash. In pratica, il doppio slash "spegne tutto" e consente di scrivere commenti se si vuole personalizzare il firmware in modo che sia utile per sé o per altri in un secondo momento. Tutto ciò che viene scritto con un // all'inizio della riga sarà totalmente ignorato dal firmware in fase di compilazione.

1. Primi passi

Per modificare il firmware di Marlin è necessario il software giusto e, sebbene esistano alcune opzioni, la maggior parte di essi utilizza Visual Studio Code. Si può scaricare gratuitamente dal loro sito sia su Windows che su Linux e Mac.

Per poter utilizzare questo plugin è necessaria anche l'estensione Platform IO, quindi una volta installato il codice VS, vai alle estensioni sulla barra degli strumenti a sinistra (l'icona con i 4 quadrati), cerca PlatformIO e clicca su installa. È anche possibile utilizzare il plugin per l'auto-build di Marlin, che rende le cose un po' più veloci quando si imposta la scheda con il processore corretto, ma è anche possibile farlo alla vecchia maniera e ti mostreremo come farlo più avanti.

Una volta che avrai tutto ciò che abbiamo menzionato, devi procurarti il firmware Marlin, per cui è necessario andare su Marlin GitHub e scaricare l'ultima versione.

Come puoi vedere esiste una versione con correzione di bug e una versione normale. La versione bugfix include le modifiche più recenti al firmware. È utile, ma potrebbe anche essere la meno stabile, in quanto viene costantemente lavorata. Tuttavia, il team di Marlin è molto bravo a rilevare bug ed errori e a risolverli, per cui siamo soliti utilizzare queste versioni.

Entra e clicca su Code in alto a destra per scaricare il firmware come zip, decomprimi lo zip e carica VS Code, vai al file e apri la cartella e infine apri il firmware Marlin.

Successivamente ci sono i file di configurazione, configurazioni specifiche della stampante possono essere trovate anche sul loro Github.

Questi sono davvero utili, soprattutto se vuoi solo cambiare un pochino il firmware, ad esempio, se hai una stampante - diciamo un Ender 3 - e hai appena aggiornato l'hot-end e hai bisogno di cambiare il termistore nel firmware; allora puoi semplicemente scarica i file di configurazione per quella stampante e incollali nella cartella Marlin che hai appena scaricato. In questo modo tutte le specifiche del firmware della stampante di serie sono ora pronte e devi solo modificare i valori del termistore.

Quando stai preparando una cartella del firmware per la modifica, c'è una cosa molto importante che devi fare prima di iniziare a modificare: selezionare la scheda madre corretta e il modello di processore corretto.

Se vai alla pagina configuration.h nell'explorer sulla sinistra, vedrai intorno alla riga 70 che c'è un comando per indicare quale scheda madre stai usando. Per molte schede esiste solo una versione, ma alcune hanno varianti o alcune stampanti potrebbero aver utilizzato schede diverse in passato. Sarebbe meglio aprire la stampante e controllare quale scheda hai.

Per scoprire come è designata esattamente la tua scheda nel firmware, torna all'explorer a sinistra, vai a src, core e boards.h. Questo è un elenco di tutte le schede supportate da Marlin. Premi CTRL F e digita la marca della tua scheda. Possiamo prendere come esempio le schede Creality Ender 3. Quindi digita "Creality", scorri verso il basso per saltare tutto fino alle menzioni di quella parola chiave e vedrai le schede Creality V4. Puoi usare semplicemente Board_Creality_V4 per la maggior parte. Questo è fondamentalmente lo stesso processo per qualsiasi scheda madre di qualsiasi marca, purché sia ​​supportata da questa versione di Marlin. Noterai anche le varianti del processore per questa scheda, per le schede versione 4 possiamo vedere STM32F103RC e STM32F103RE.

Prendi nota di entrambi e torna a configuration.h, quindi copia la scheda nello spazio dopo #define MOTHERBOARD. Ora puoi anche andare alla barra degli strumenti di explorer sul lato sinistro e cliccare sulla scheda platform.io e assicurarti che il modello di processore corretto sia nella riga default_envs vicino alla parte superiore della pagina.

Ok, hai finito. Ora possiamo passare alla modifica del firmware e ci sono due pagine principali che modificheremo: la maggior parte è su config.h ma alcune anche su config_adv.h.

2. Porte seriali, velocità di trasmissione, Bluetooth, custom name

Se vai su config.h possiamo iniziare da lì. Abbiamo già impostato la scheda madre, quindi passiamo alla prossima definizione: le porte seriali.

Praticamente ogni stampante utilizza una porta seriale per connettersi a macchine diverse. Per la maggior parte ne verrà utilizzata solo una, ma se colleghi qualcos'altro come un touchscreen con una scheda SD o una porta USB, potresti dover giocherellare un po' con questo. Non lo faremo, quindi ce ne dimentichiamo per un minuto.

Il baudrate è la velocità di comunicazione di queste porte. Può differire ma la maggior parte utilizza effettivamente un baudrate di 115200.

Più in basso vedrai più opzioni di porte seriali, ma qui possiamo lasciare le istruzioni non definite, poiché probabilmente non avrai bisogno di porte seriali aggiuntive.

Hai anche opzioni per la connettività Bluetooth, una caratteristica piuttosto insolita sulle stampanti, e c'è anche un'opzione per cambiare il nome della stampante che è disattivata per impostazione predefinita. Sarai in grado di vedere questo nome sul tuo LCD quando la tua macchina è accesa. Se lo desideri puoi accendere e inserire un nome.

3. Stepper driver

Il prossimo passo sono i driver passo-passo, o stepper driver. Sembra difficile ma in realtà non lo è. Ogni stampante utilizza driver passo-passo che controllano i motori. In passato, le stampanti utilizzavano A4988 o varianti, che rendevano i motori piuttosto rumorosi. Al giorno d'oggi, abbiamo TMC2208 o TMC2209 come driver predefiniti sulla maggior parte delle stampanti. Ma ci sono tantissimi altri tipi di driver, ciascuno con caratteristiche e vantaggi diversi come la divisione degli step, la corrente massima o il sensorless homing che elimina i finecorsa fisici quando si posizionano gli assi.

Puoi semplicemente impostare quale driver utilizzare su quale accesso. Molte volte la scheda madre di una stampante potrebbe non dire quali driver stepper sta utilizzando. A volte una scheda utilizzerà driver stepper integrati, il che significa che non possono essere rimossi. In questo caso, probabilmente non dirà quale usa, ma a volte c'è un segno sulla scheda madre che può indicare quale usa. Ad esempio, le schede Creality V4 hanno un piccolo codice scritto sulla loro porta della scheda SD. Se dice "T8" significa che sta usando i driver TMC2208. Alcune schede madri utilizzeranno driver rimovibili, il che presenta dei vantaggi, ad esempio se uno fallisce devi solo sostituirlo, se invece ciò accade con driver integrati, allora la tua scheda è andata e avrai bisogno di una scheda nuova.

4. Sensorless homing

Mi piace molto il sensorless homing. Sebbene non sia accurato come i finecorsa fisici, limita la necessità di cavi, e io odio i cavi. Non tutti i driver supportano il sensorless homing, ad esempio i driver TMC2208, che sono molto popolari, non possono utilizzare questa funzione. Ma i driver TMC2209 possono.

Per far funzionare il sensorless homing sono necessarie alcune modifiche fisiche alla scheda madre, ma non preoccuparti, sono davvero semplici. Ovviamente potrebbe variare in base alla scheda madre che stai utilizzando, ma normalmente si tratta semplicemente di inserire ponticelli su determinati pin. Vedi il manuale SKR Mini E3.

In termini di firmware, ecco cosa è necessario fare per attivare il sensorless: in primo luogo, HOMING_BUMP alla riga 210 (configuration_adv.h) deve essere impostato su 0. Questo è normalmente utilizzato con i finecorsa in cui l'asse colpisce il finecorsa andando poi indietro di un bit per colpire di nuovo il finecorsa lentamente. Per impostazione predefinita è di pochi mm. Dobbiamo disattivarlo.

Alla riga 1174, ENDSTOP_INTERRUPTS_FEATURE (configuration.h) deve essere indefinito.

Il prossimo step è la corrente. La cosa bella di queste schede madri rispetto a quelle più vecchie è che la corrente del motore non poteva essere modificata tramite firmware sulle vecchie schede a 8 bit. Dovevi cambiare il Vref sulla scheda madre ruotando un piccolo potenziometro molto sensibile: bastava girarlo un pelino di troppo e andava già a 1.5 quando avevi bisogno solo a di 0.8 (o 800 mA) per la maggior parte dei motori xy. Le righe per regolare la corrente si trovano a partire dalla 2386 (configuration_adv.h).

La quantità di corrente necessaria per il firmware dipende dal driver e dal motore passo-passo. Se stai lavorando con un motore medio, come un motore 42-34, il tuo valore sarà solo di 800. Se trovi una scheda tecnica del tuo motore potresti vedere che la corrente massima indicata è 1.5a o 1500mA. Non inserire 1500 nel firmware, quello è un valore di picco assoluto, ma noi non lavoriamo con i valori di picco, perché la storia finirebbe male. Ciò che ci serve è il valore RMS, la corrente quadratica media della radice. Calcolare la corrente corretta non è in realtà così semplice, ma ci sono calcolatori che puoi trovare online per aiutarti, come questo di ALL3DP.

La gestione della corrente è fondamentale quando si calibra il sensorless homing poiché potrebbe essere necessario giocherellare un po' per assicurarsi che funzioni in modo ottimale.

MONITOR_DRIVER_STATUS è alla riga 3204 (configuration_adv.h) e controlla periodicamente i driver per determinarne lo stato. Marlin può ridurre automaticamente la corrente del driver se questo segnala una condizione di preallarme di sovratemperatura. Attiva questa funzione.

Puoi anche abilitare TMC_DEBUG alla riga 3317 (configuration_adv.h) per visualizzare maggiori informazioni sugli stepper driver.

Ok ora possiamo attivare SENSORLESS_HOMING alla riga 3272 (configuration_adv.h). Dobbiamo attivarlo per X e Y e impostare la stall sensitivity, cioè la sensibilità con cui i driver possono misurare lo stallo, ovvero quando il motore muove la testina di stampa su un lato del proprio asse e colpisce l'estremità. Questo è più un processo per tentativi ed errori: se il valore è troppo basso non rileverà nulla e il motore continuerà a girare anche quando la testina di stampa si schianta lateralmente, se è troppo alto semplicemente "rileverà" costantemente lo stallo anche quando la testina di stampa è semplicemente ferma. Dopo aver eseguito il flashing del firmware, l'LCD avrà un menu per modificare i valori della sensibilità allo stallo e anche la corrente, quindi è sufficiente modificarlo per adattarlo provando, e riprovando. I valori di stallo vanno da 0 a 255, quindi il primo tentativo dovrebbe essere fatto nel mezzo, diciamo intorno a 128. Se la testina si schianta, significa che il valore è troppo basso, quindi andrà aumentato, se non arriva alla fine, il valore è troppo alto e andrà ridotto. Regolati di conseguenza, armati di pazienza e prova più volte. Se dopo vari tentativi non funziona, non importa quale valore scegli, allora devi regolare la corrente alzandola un po'. SOLO UN PO'! Se è 800 milliampere, portala a 850 e riprova.

Puoi anche usare la definizione IMPROVE_HOMING_RELIABILITY un po' più in basso, alla riga 3291, che è esattamente ciò che sembra.

Nel caso te lo stia chiedendo, ottenere il sensorless homing sull'asse Z è difficile, soprattutto con le stampanti che utilizzano viti di comando per il movimento Z, ovvero la maggior parte delle stampanti. Per evitare problemi, non attivate il sensorless homing per l'asse Z.

5. Microstepping e stealthchop

Alla riga 2838 c'è un'altra caratteristica del driver X_MICROSTEPS (configuration_adv.h). I motori passo-passo si muovono a step (infatti si chiamano stepper motor) al massimo di 1,8 gradi per ogni passo, il che li rende piuttosto precisi. La domanda è: potrebbero essere ancora più precisi? Se non vuoi cercare un altro motore con un grado inferiore di passo, puoi utilizzare il micro stepping per comunicare al driver di muovere il motore di meno di 1,8 gradi, il che è molto utile per una regolazione estremamente precisa. Il valore predefinito è 16 ma puoi anche aumentarlo. Ovviamente, questo significa che anche il numero di passi necessari per spostare un motore di una certa distanza cambierà. Quindi Marlin ha questa bella funzione chiamata "interpolazione" alla riga 2833 (configuration_adv.h). Impostando questa definizione come true, "interpolerà" automaticamente ogni valore di passo del motore in modo da non dover modificare nulla manualmente. Quindi, se hai modificato il microstepping, diciamo, da 16 a 32, dovresti regolare gli step per tutti i motori per adattarli al nuovo valore. Invece attivando l'interpolazione il sistema lo farà automaticamente per te.

Il prossimo punto è STEALTHCHOP alla riga 3140 (configuration_adv.h). Attivarlo renderà tutto estremamente silenzioso. Dovresti anche controllare CHOPPER_TIMING CHOPPER_DEFAULT appena sotto. È molto probabile che tu stia utilizzando una stampante a 24v, quindi impostalo a 24v. Naturalmente, la capacità di usare lo stealthchop dipende anche dal tuo driver, ma fortunatamente di questi tempi la maggior parte dei driver può usarlo.

6. PSU control

Tornando a Configuration.h, alla riga 388 (configuration.h) è presente il controllo dell'alimentatore, che può essere interessante se si vuole spegnere automaticamente la stampante dopo che ha completato un lavoro di stampa.

7. Impostazioni termiche - Termistore e temperatura massima/minima

Il prossimo passo sono le impostazioni termiche alla riga 430 (configuration.h). Questo è probabilmente il tutorial sul firmware più richiesto in assoluto. L'aggiornamento dell'hotend, infatti, è la prima modifica che fanno la maggior parte delle persone. Quindi, se ad esempio hai una Ender 3 e vuoi passare a un hotend Revo, cosa devi fare? Ci sono due cose da cambiare: la prima è il termistore. La maggior parte delle stampanti utilizza un termistore da 100k, il cui tipo di sensore è "1" in Marlin. Ma il Revo e molti altri termistori utilizzano il numero 5, anch'esso un termistore da 100k ma di Semitec. Come vedi ci sono alcune marche che utilizzano questo tipo di termistore. Ma forse stai passando a qualcosa di più pesante come un PT1000, beh, dipenderebbe dal PT1000, ma la maggior parte utilizza il sensore numero 1047 con un pullup di 4,7 ohm.

Puoi fare lo stesso per temp_sensor_bed alla riga 536 (configuration.h).

L'altra parte dell'aggiornamento dell'hotend è HEATER_0_MAXTEMP alla riga 611 (configuration.h). Gli hotend in PTFE sono generalmente limitati a 260C, che è scritto come 275C in Marlin. In realtà non sono sicuro del motivo per cui è stato fatto, ma qualunque sia la temperatura inserita qui, la temperatura effettiva raggiungibile sulla stampante sarà inferiore di 15 °C. Quindi, se hai un hotend 300C, devi scrivere 315C per il tuo valore massimo.

Potresti anche vedere HEATER_0_MINTEMP alla riga 597, che spegnerà automaticamente il riscaldatore quando raggiunge questa temperatura. A proposito, se hai una stampante che spegne il riscaldatore o ti dà un errore "mintemp" e non sei sicuro del perché, potrebbe essere perché la tua stampante si trova in un ambiente troppo freddo. In realtà riceviamo molte domande in inverno su questo tema, perché molti utenti tengono la loro stampante in garage e questo può facilmente accadere.

Sulla riga 623 hai un thermal overshoot (configuration.h) che consente temperature superiori al valore maxtemp prima che si spenga. Gli overshoot possono verificarsi quando il riscaldatore non è calibrato, il che ci porta alla riga 633 e al PID tuning (configuration.h).

8. Impostazioni PID

Questo sincronizza il riscaldatore e il termistore in modo che il riscaldamento sia accurato. La parte importante qui è dalla riga 659, dove ci sono i valori predefiniti per Proportional, Integral e Derivative. Non hai davvero bisogno di cambiare nulla qui, ma quando cambi hotend è una buona idea eseguire un PID tuning che essenzialmente calibra il riscaldatore o il termistore in modo che la temperatura non oscilli molto quando la stampante è in funzione. Quindi consiglierei di farlo dopo un aggiornamento hotend. Ci sono alcuni modi per farlo, ma un modo semplice è abilitarlo nel menu LCD sulla riga 803. Altri metodi potrebbero essere il collegamento della stampante tramite USB al computer e l'utilizzo di un programma terminale come Pronterface.

È possibile inserire i comandi gcode in questo terminale e quello corretto per la regolazione PID è "M303 E0 S210 C10 U".

Qui, M303 è il comando per avviare il processo di tuning.
E0 si riferisce al riscaldatore utilizzato (E0 è il valore predefinito per quasi tutte le stampanti single extruder). S210 si riferisce alla temperatura di 210C che è adatta per il PLA, ma è possibile cambiarla se si utilizzano principalmente altri filamenti. C7 si riferisce al numero di volte in cui il test deve essere eseguito. Più volte lo si esegue, più è accurato, ma noi riteniamo che non sia necessario superare le 7 volte.

Una volta immesso questo comando, il test verrà eseguito e restituirà i valori di Kp, Ki e Kd.

Una volta ottenuti, è possibile aggiungerli al terminale con il comando M301 come M301 P30 I3 D60

Poi salva le impostazioni con il comando M500 e il gioco è fatto

Ci sono altre informazioni sul controllo PID del letto e della camera. Il tuning del PID per il letto non è necessario come per l'hotend perché le modifiche all'hotend sono molto più frequenti rispetto alla sostituzione del termistore sul letto. Ad ogni modo, se si rendesse necessario farlo, sai dove trovarlo.

9. Sicurezza - Estrusione a freddo e fuga termica

Passiamo al thermal runaway (fuga termica) alla gira 827 (configuration.h) che è molto importante. Attivalo! Questa funzione spegne la stampante se la temperatura supera un valore previsto. Magari il termistore si è spostato e non lo sai e senza questa funzione la temperatura aumenterà sempre di più senza che la lettura del termistore cambi. Questo non va bene. Quindi lo ripetiamo: ATTIVALO!

C'è anche una funzione per impedire l'estrusione a freddo. Si trova alla riga 816 (configuration.h). Ciò impedisce l'attivazione del motore dell'estrusore se la temperatura è inferiore al valore immesso. Il valore predefinito è impostato a 170, ma in base a quale filamento usi normalmente sulla tua stampante dovrai impostare un valore diverso. Se stampi per la maggior parte del tempo con PETG, ad esempio, dovresti avere una temperatura di circa 220C.

10. Impostazioni meccaniche - CoreXY, stampante a nastro, braccio robotico

Si prosegue con le impostazioni meccaniche e, poiché utilizzeremo un set up CoreXY, questo è molto importante. Qui dobbiamo definire Corexy.

Volendo si possono impostare altre cinematiche, come delta, stampanti a nastro o anche un braccio robotico.

11. Impostazioni di fine corsa e soglia di rumore di fine corsa

Successivamente ci sono le impostazioni di fine corsa alla riga 1071 (configuration.h). Questo serve semplicemente per accendere i fine corsa.

C'è un'altra piccola caratteristica qui: Endstop Noise Threshold (soglia di rumore di fine corsa). Qualche tempo fa ho dovuto utilizzare questa funzione quando ho inserito cavi extra lunghi su una stampante in modo che tutta l'elettronica passasse all'esterno di un alloggiamento. Per qualche motivo i cavi lunghi hanno causato il rilevamento di errori durante la ricerca del punto di partenza, ma questa funzione ha salvato la situazione.

12. Impostazioni di movimento - Accelerazione, velocità di avanzamento, passi, avanzamento lineare

Passiamo alle impostazioni di movimento nella riga 1194 (configuration.h) partendo dai passaggi predefiniti. Come accennato, i motori passo-passo ruotano in step di 1,8 gradi ciascuno (a meno che tu non abbia uno 0,9). Quando il motore fa girare una cinghia, una vite o un ingranaggio, deve compiere un certo numero di step (passi) per far muovere la parte nella misura desiderata. Il più delle volte questo numero deve essere modificato per aggiornare l'estrusore, cioè devi cambiare il numero in questa riga. Normalmente i produttori forniscono i passi dell'estrusore (o esteps) ma potrebbe essere necessario regolare questo valore, quindi per questo eseguiamo una calibrazione esteps. Esistono molti video su questo argomento.

Non è necessario configurare i valori di stepping nel firmware, ma è sufficiente modificare il gcode di avvio per inserire un nuovo valore con un comando M92. Questo è il modo più semplice per aggiornare l'estrusore: nella maggior parte dei casi non è necessario aggiornare il firmware, ma è sufficiente utilizzare il gcode nello slicer o tramite Pronterface, come abbiamo già mostrato. Questo può essere fatto per tutti i valori della categoria delle impostazioni di movimento con M203 per la velocità di avanzamento massima, M201 per l'accelerazione massima, M204 per l'accelerazione predefinita e M205 per le impostazioni di jerk. Ad esempio, se si desidera modificare gli step dell'estrusore per un nuovo estrusore Bondtech, è sufficiente scrivere M92 E415 nel gcode di avvio (M92 è il comando per modificare gli step di un motore ed E indica che si tratta del motore dell'estrusore), tutto qui. Quindi questi valori non sono fissi e possono essere facilmente modificati senza cambiare il firmware.

A proposito, se sei interessato ai comandi gcode in generale e ai parametri utilizzati con essi, puoi consultare il sito web di Marlin, che fornisce una lista di tutti i comandi gcode, alcuni dei quali potrebbero esserti molto utili. Ecco un esempio di gcode per l'accelerazione di avvio di M204.

Jerk è una funzione che limita il tasso di variazione dell'accelerazione di un asse, soprattutto quando la testina di stampa è ferma e poi inizia improvvisamente a muoversi, ma si applica anche alle curve di 90 gradi. È una funzione relativamente vecchia del firmware, molte stampanti la utilizzano ancora, ma quelle più recenti, in particolare quelle che utilizzano il firmware Klipper, utilizzano qualcosa chiamato deviazione di giunzione, quindi analizziamola.

In termini di modifiche al firmware, questo è molto semplice, vai alla riga 1288 e definisci la deviazione della giunzione. Assicurati anche che classic_jerk alla riga 1265 sia indefinito (configuration.h). Questa è la parte del firmware completata ma è necessario trovare il valore di deviazione della giunzione. Per impostazione predefinita è impostato su 0,013 mm ma dipende totalmente dalla stampante. Fortunatamente è un test semplice da fare: tutto ciò che dobbiamo fare è stampare un modello in cui ogni strato ha un valore di deviazione della giunzione leggermente diverso e poi vedere quale strato è stato stampato meglio. Se noti molti ringing, allora il valore è troppo alto. Ma non deve essere nemmeno troppo basso perché rallenterebbe il processo.

TeachingTech ha un'ottima guida e calcolatrice.

Proseguiamo con l'accelerazione S-Curve alla riga 1301 (configuration.h) che riduce le vibrazioni e, come la funzione jerk, è relativamente vecchia ed è stata accantonata a favore di nuove funzioni. Una di queste è l'avanzamento lineare. Cos'è? Viene utilizzata per controllare la velocità del volume estruso al variare dell'accelerazione. Hai mai notato che quando si stampano angoli di 90 gradi, la stampa si incurva un po'? Questo è esattamente ciò che l'avanzamento lineare dovrebbe risolvere.

In termini di firmware, è molto simile alla deviazione di giunzione. Vai alla riga 2205 di configuration_adv.h e lo troverai (configuration_adv.h). Tutto ciò che si deve fare è rimuovere il commento in modo che sia definito. Dopodiché è necessario calibrarlo per trovare il valore giusto, che chiamiamo valore k, per impostazione predefinita è 0,22.

La calibrazione del valore k è molto simile alla calibrazione del valore di deviazione della giunzione: stampiamo qualcosa con valori diversi e vediamo quale funziona meglio. Fortunatamente, Marlin ha un calcolatore assolutamente geniale che si può usare per risolvere il problema.

13. Z-Probe e livellamento del letto, cambio di direzione del motore

Ora, alla riga 1311, arriviamo al livellamento del letto e alla Z-Probe (configuration.h). Si tratta di una sezione molto estesa, in quanto esistono molti metodi diversi di livellamento, non solo i componenti aggiuntivi di livellamento automatico, ma anche molte altre cose. Se vuoi approfondire il firmware per il BLTouch o per dispositivi simili, ti consiglio il video di TeachingTech su come far funzionare un BLTouch praticamente su qualsiasi dispositivo.

È necessario invertire la direzione del motore? A volte è necessario con gli aggiornamenti dell'estrusore o con le modifiche al driver stepper. Ci sono molte funzioni in Marlin che richiedono l'inversione della direzione, ma non è necessario farlo ora. Quando compili il firmware e lo flashi, prova a muovere un motore e vedete se va nella direzione giusta. Se fosse necessario cambiare la direzione, vai alla riga 1698 e modifica INVERT_[X/Y/Z]_DIR in false o true

14. Sensori delle dimensioni del letto e dell'allineamento del filamento

La prossima riga, la 1753, indica la dimensione del letto (configuration.h). Il letto di stampa dovrebbe avere un po' di margine, perché non vogliamo che il modello venga stampato troppo vicino al bordo del letto. Per questo è possibile impostare la nostra min_position a 0, che sarà il punto in cui l'endstop o il sensorless homing fermano l'asse durante l'auto-homing. Ciò potrebbe richiedere più o meno margine, dipende dalla geometria del carrello e dalla posizione del letto. Forse il punto di fine corsa è già a una distanza appropriata dal bordo del letto, oppure non è nemmeno sul letto, nel qual caso è necessario un margine. Basta modificare min_position per includere il tuo margine in mm e quindi spostare il carrello sul lato opposto del piano fino al punto che non si desidera oltrepassare: questa è la max_position, cioè il punto fino a cui la corsa è limitata.

Poi ci sono i sensori di scorrimento del filamento alla riga 1818 (configuration.h). Il modo più semplice per configurare un sensore di scostamento è quello di utilizzare un normale fine corsa con un piccolo rullo all'estremità. Questo rullo è piuttosto importante perché senza di esso se si estrae il filamento, la striscia metallica si piegherà o addirittura si romperà rendendo l'interruttore inutile o inaffidabile. Esistono altre opzioni, come un sensore optoelettronico che ritengo molto più affidabile. Non ho mai avuto problemi con il sensore della Prusa MK3, ma i sensori di fine corsa sono facili da aggiungere, sono economici e, con il giusto design, possono funzionare benissimo. Quindi, se ne vuoi uno, decommenta filament_runout_sensor alla riga 1830. Dovresti avere #define FIL_RUNOUT_ENABLED_DEFAULT abilitato e impostato su true se te ne serve solo uno, a meno che tu non abbi un doppio estrusore, nel qual caso dovresti impostare #define NUM_RUNOUT_SENSORS su 1. Sicuramente vorrai anche che il comando M600 sia abilitato (di cui ne parleremo più avanti), quindi attiva la riga 1877 (configuration.h).

Occorre trovare anche ADVANCED_PAUSE_FEATURE alla riga 2752 (configuration_adv.h) e decommentare. Qui ci sono molte altre regolazioni di precisione che si possono fare e Marlin ha inserito dei commenti esplicativi molto utili e facili da capire accanto ad esse. Modificali a tuo piacimento per adattarli alla tua stampante.

A questo punto non resta che collegare la scheda. A seconda delle esigenze, la scheda si può anche cambiare. Per verificare dove si trova il pin predefinito, puoi andare su SRC, PINS e il modello del tuo processore. Selezionalo, premi CTRL F e digita FIL_RUNOUT_PIN. Per noi su una BTT SKR e3 Mini V3.0 il pin è PC15. Vai su Google e digita il nome della tua scheda per visualizzare il diagramma di piedinatura e individuare dove si trova il pin.

15. M600

Abbiamo già parlato del comando M600. Si tratta di una funzione del firmware purtroppo sottoutilizzata, ma davvero utile: la possibilità di scambiare il filamento durante la stampa. Se vuoi stampare i primi strati in un colore, i successivi in un altro e poi continuare a cambiare colore, puoi farlo con questa funzione. Il comando M600 mette in pausa la stampante, sposta la testina di stampa in una posizione di parcheggio adeguata e consente di cambiare il filamento. Dai un'occhiata a questo badge realizzato con il comando M600.

Abbiamo già abilitato M600 e la funzione di pausa avanzata, ora dobbiamo abilitare la funzione che parcheggia la testina di stampa.Vai quindi alla riga 2362 e abilita "nozzle park" (configuration.h). Puoi modificare anche la posizione e anche la velocità di avanzamento ("feedrate") e la velocità di avanzamento z minima ("minimum z feed rate").

Ora vai alla riga 824 e abilita la lunghezza massima dell'estrusione (configuration.h). In questo modo il nuovo filamento verrà alimentato a questa lunghezza, sufficiente per eliminare il vecchio filamento e cambiare totalmente il colore. Questo valore dipende dal fatto che si disponga di un cavo bowden o di un'estrusore diretto. Se si dispone di un cavo Bowden con un lungo tubo in PTFE, questo valore deve essere piuttosto alto, mentre con un Direct Drive può essere basso.

Torna quindi alla funzione di pausa avanzata in configuration_adv.h e assicurati che PARK_HEAD_ON_PAUSE sia decommentata, in modo che l'ugello venga parcheggiato (configuration_adv.h).

16. Funzioni aggiuntive - EEPROM, impostazioni di preriscaldamento, pulizia ugelli, timer della stampa, password, lingue, supporto scheda SD, eensibilità encoder, altoparlanti, LCD, Neopixel

La voce successiva è EEPROM alla riga 2291, che deve essere assolutamente abilitata (configuration.h): è come la funzione di salvataggio della stampante. In questo modo, se si modifica qualcosa, in pratica qualsiasi cosa con un comando gcode, è possibile salvarla con un comando M500 e questa rimarrà salvata. Senza questo comando, la stampante si riavvia con le impostazioni del firmware impostate sul computer. Una funzione davvero pratica.

Le costanti di preriscaldamento si trovano alla riga 2335 (configuration.h) e, come per la EEPROM, dovrebbe essere presente per impostazione predefinita, anche se a volte i valori non sono così elevati. Mi piace avere questi valori un po' più alti della temperatura di stampa effettiva, ma è un aspetto secondario. Per impostazione predefinita, questi valori sono impostati solo per le temperature di PLA e ABS, ma se normalmente non si usa uno di questi o se si ha bisogno di molte preimpostazioni, è possibile aggiungerne fino a 10.

Si prosegue con la funzione clean nozzle alla riga 2374 (configuration.h). Questa funzione è utile per le stampanti a doppio estrusore, ma potrebbe essere utile anche per le stampanti a singolo estrusore, magari se si è molto ossessionati dalla perfezione del primo strato.

Poi c'è la password alla riga 2498 (configuration.h). Forse preferisci che tuo figlio, o il tuo coinquilino inesperto, non utilizzino la stampante. La protezione con password potrebbe essere utile. Ovviamente se tu sei l'unico ad avere accesso alla stampante, la password non è di fatto di grande utilità.

Alla riga 2529 ci sono anche delle impostazioni per il supporto LCD (configuration.h). Se l'inglese o il cinese non sono la vostra lingua preferita, non c'è problema, ne avete alcune altre tra cui scegliere. Se il tuo controller utilizza una ruota encoder, puoi modificarne la sensibilità alla riga 2602 (configuration.h). Più avanti, nelle impostazioni del controller, si può selezionare il controller, magari uno che abbia il supporto per le schede SD o magari un touchscreen. Un touchscreen facile da configurare potrebbe essere il display stock CR-10, un controllore molto semplice con una ruota encoder utilizzato in molte stampanti della serie CR-10 e della serie Ender.

Potresti anche aggiornare la tua stampante con i Neopixel, che sono dei LED da collegare alla stampante per ottenere una migliore illuminazione o uno spettacolo di luci controllandoli tramite il menu. Queste impostazioni si trovano alla riga 3450 (configuration.h).

Infine, una nuova caratteristica molto interessante è l'Input Shaping. Si tratta di una nuova funzione di Marlin in grado di annullare le vibrazioni che possono causare difetti antiestetici nella stampa. Abbiamo già creato un video e una guida per aiutarti a configurarla.

Questo elenco non è assolutamente esaustivo, ma fornisce solo una panoramica di base delle modifiche generali che vengono più spesso apportate. Se hai problemi con una parte particolare del firmware Marlin o desideri che questo elenco venga ampliato, faccelo sapere. In futuro amplieremo questa guida per aiutarti con qualsiasi modifica tu voglia apportare.