Come configurare un firmware Marlin per una Stampante 3D

Informatica Taranto

Cosa è un firmware nella stampante 3D

In merito ad una stampante 3D, il firmware è dunque quel programma che riceve come ingresso il modello da stampare e converte queste informazioni in azioni atte a governare le componenti elettroniche e meccaniche dell’intero sistema. Il firmware gestisce i motori, il movimento assiale, regola e monitora la temperatura degli hot end e del piatto di stampa, gestisce la velocità di stampa, ecc.

Il firmware stampante 3D risiede all’interno di un microcontrollore che esegue il codice e pilota tutte le periferiche.

 

Marlin firmware: tutte le alternative

Il firmware stampante 3d più diffuso è sicuramente Marlin. Si tratta di progetto open-source, il che significa che il codice sorgente è disponibile su Internet gratuitamente, aperto a tutti. Chiunque può scaricare il codice e modificarlo per adattarlo ai propri scopi. È inoltre possibile partecipare al progetto scrivendo parti di codice, risolvendo o segnalando bug.

Il sito principale del progetto è marlinfw.org mentre il repository dal quale poter visionare e scaricare il codice sorgente si trova a questo indirizzo github.

Marlin nasce nel 2011 come progetto pilota per le prime stampanti RepRap. Durante gli anni si è evoluto fino a supportare i più recenti microcontrollori a 32 bit. La sua gratuità e la robustezza nel funzionamento hanno permesso negli anni di imporsi come standard de-facto dell’implementazione di un firmware per quasi tutte le stampanti 3d.

Pur avendo il dominio incontrastato nel settore, sono diverse le alternative al firmware marlin in circolazione, tutte molto valide e a volte anche preferibili:

Marlin firmware italiano: le sezioni del codice

Creare una versione personalizzata ed ottimizzata del firmware Marlin è una cosa non troppo difficile ma che richiede il suo tempo. Bisogna innanzitutto scaricare il codice sorgente dal sito del progetto e successivamente modificare alcune righe di codice in funzione delle nostre necessità.

Con questa marlin firmware guida vedremo adesso i parametri principali e fondamentali da modificare per ottenere un marlin firmware custom.
L’elenco completo dei parametri con la loro spiegazione dettagliata è disponibile al sito marlinfw.org.

Una volta scaricato il codice sorgente, le informazioni di configurazione sono tutte raccolte all’interno del file configuration.h. I file con estensione .h sono chiamati header files; si tratta di un file di testo che viene processato dal firmware in fase di gestione della configurazione.

Apritelo dunque con un editor qualunque e modificate le sezioni in base alle vostre caratteristiche.

Prima di cominciare a vedere le sezioni che è possibile personalizzare, è bene illustrare come funzionano i commenti all’interno del codice. Un commento in un codice sorgente è una particolare linea (o più linee) che vengono del tutto ignorate dal compilatore. Servono dunque per il programmatore a descrivere il funzionamento di un blocco di codice oppure ad omettere alcune funzionalità che saranno rese disponibili in seguito.

Essendo Marlin un programma scritto in C, i commenti sono rappresentati da tutte quelle linee che iniziano per “//”. Basterà rimuovere questi due caratteri per de-commentare una linea di codice o viceversa aggiungerli per commentare il codice.

Nome Stampante

Per modificare il nome della stampante che verrà poi visualizzato ad esempio sul display, cercate la direttiva CUSTOM_MACHINE_NAME, de-commentate e inserite il nome a vostro piacimento. 

Quindi dove trovate

//#define CUSTOM_MACHINE_NAME “3D Printer”

Inserite

#define CUSTOM_MACHINE_NAME “My 3D Printer”

Diametro del filamento

Questo parametro è descritto dalla direttiva DEFAULT_NOMINAL_FILAMENT_DIA. Anche stavolta, cercate la direttiva e modificate da così:

//#define DEFAULT_NOMINAL_FILAMENT_DIA 3.0

A così

#define DEFAULT_NOMINAL_FILAMENT_DIA 1.75

Sensori di temperatura

Tramite queste direttive è possibile configurare il tipo di termistori per l’estrusore (o gli estrusori qualora ve ne fossero più di uno) e per il piatto riscaldato. Nel nostro caso il tipo di sensore corrisponde al valore 13, quindi scriveremo:

#define TEMP_SENSOR_0 13
#define TEMP_SENSOR_1 0
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_3 0
#define TEMP_SENSOR_4 0
#define TEMP_SENSOR_BED 13

Lasciando appositamente al valore zero gli estrusori non presenti.

Gestione della temperatura

Una volta impostata la tipologia di sensori, è bene configurare i livelli di temperatura massima oltre i quali interrompere il riscaldamento.

Sulla scia di quanto configurato in precedenza, avremo

#define HEATER_0_MINTEMP 5
#define HEATER_1_MINTEMP 5
#define HEATER_2_MINTEMP 5
#define HEATER_3_MINTEMP 5
#define HEATER_4_MINTEMP 5
#define BED_MINTEMP 5

#define HEATER_0_MAXTEMP 260
#define HEATER_1_MAXTEMP 275
#define HEATER_2_MAXTEMP 275
#define HEATER_3_MAXTEMP 275
#define HEATER_4_MAXTEMP 275
#define BED_MAXTEMP 130

Dove 260 e 130 sono i valori della nostra configurazione e 275 non importa in quanto si riferisce ad estrusori non configurati.

Per evitare surriscaldamenti eccessivi bisogna impostare il parametro di thermal runaway come segue:

#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 60     // in secondi

#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 10 // in gradi Celsius

Controllo PID marlin

Per PID si intende letteralmente “controllo Proporzionale Integrale Derivativo“. Nella pratica, questo rappresenta il processo che viene svolto ciclicamente dalla nostra stampante per mantenere sotto controllo i valori di ogni sensore. Viene detto sistema a “retroazione”, in quanto la stampante verifica continuamente l’attuale valore di temperatura e agisce in maniera opportuna affinché la temperatura raggiunga il valore desiderato. Questo avviene continuamente.

La funzione matematica che regola questo processo necessita di tre costanti numeriche Kp, Ki e Kd, che sono ottenute attraverso un processo di calibrazione. Per effettuare la taratura di questi valori si esegue il comando gcode italiano M103 E0 S200 C8 che avvierà la procedura di autotune del PID.

Per inviare un comando alla stampante 3D si crea un file di testo, si incolla al suo interno il comando o una lista di comandi gcode marlin, si rinomina il file in .gcode, lo si apre ad esempio con Cura e lo si invia alla stampante. Al termine di questa procedura otterremo i valori da inserire nelle costanti, come ad esempio:

#define DEFAULT_Kp 60.0
#define DEFAULT_Ki 2.50
#define DEFAULT_Kd 420

Definizione del movimento

Uno dei parametri cruciali per definire il movimento lungo gli assi è il parametro che definisce il numero di step da fare per coprire la distanza di 1mm. Si definiscono tramite

#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 4000, 500 }

Un altro parametro molto importante è il fattore che determina un cambiamento di accelerazione lungo gli assi. Questo parametro si definisce tramite la seguente define

#define DEFAULT_MAX_ACCELERATION { 3000, 3000, 100, 10000 }

Impostazione dei fine corsa

I sensori di fine corsa vanno configurati con attenzione, in modo da avere il riferimento ottimo per il punto (0, 0, 0) cioè l’origine da cui misurare i movimenti. Questa configurazione varia a seconda che si abbiano endstop meccanici oppure ottici.

Nel caso dei meccanici bisogna definire

#define ENDSTOPPULLUPS

Per gli ottici, invece, la riga va commentata

//#define ENDSTOPPULLUPS

Bisogna inoltre configurare se il tipo di contatto è Normalmente Aperto (NO in inglese) oppure Normalmente Chiuso (NC), ossia la logica di funzionamento dello switch che apre il collegamento elettrico a seconda se il contatta sia appunto aperto o chiuso. NO si indica con TRUE mentre NC con FALSE.

Per gli switch meccanici solitamente si configura

const bool X_MIN_ENDSTOP_INVERTING = true;
const bool Y_MIN_ENDSTOP_INVERTING = true;
const bool Z_MIN_ENDSTOP_INVERTING = true;

Mentre per quelli ottici si imposta tutto a false.

Marlin firmware italiano: tutorial Arduino

Se siete ansiosi di provare il firmware marlin, la prima cosa da fare è scaricare il software dal link ufficiale.

Fatto questo assicuratevi di avere:

Aprite l’Arduino IDE e selezionate, dal progetto Marlin che avete scaricato, il file Marlin.ino. Si aprirà l’intero workspace. Adesso bisognerà cominciare con la configurazione del sistema come indicato al capitolo precedente. 

Mi raccomando, non abbiate fretta di configurare il sistema. Valutate bene tutti i parametri e soprattutto non scoraggiatevi se i primi risultati non saranno quelli attesi; basta calibrare meglio alcuni valori per raggiungere in poco tempo il risultato ottimale.

Modificato il file di configurazione bisognerà salvare e fare una compilazione per verificare che il codice non contenga errori. Per far questo basterà cliccare il primo simbolo sulla sinistra che compare nella barra degli strumenti.

A questo punto si può procedere a caricare il firmware sulla board, precedentemente collegata al PC via USB. Cliccando sul tasto con la freccia verso destra il firmware così compilato verrà inviato direttamente al microcontrollore di Arduino.

A questo punto il gioco è fatto! Sulla board Arduino che pilota la vostra stampante è presente il firmware Marlin configurato da voi pronto ad accettare la prima stampa.

Riepilogo

Marlin è di certo il firmware stampante 3d più diffuso in assoluto. E’ versatile, potente e si basa su una community che lo mantiene sempre aggiornato. Avere il pieno controllo necessita certo un po’ di competenza e di studio, configurare infatti l’intero sistema richiede la definizione di una moltitudine di parametri che bisogna conoscere perfettamente.

Il risultato finale di questo impegno sarà quello di avere una macchina in grado di funzionare in maniera ottimale, con il firmware cucito proprio per quella particolare configurazione.

Conclusione

In questa marlin firmware guida sono stati trattati gli argomenti principali per introdurre il discorso sul firmware e permettere ad ognuno di testare una configurazione personalizzata. Di certo il mondo dei custom firmware è tanto affascinante quanto complesso.

Accontentarsi del software fornito in dotazione con la propria stampante potrebbe sembrare un buon compromesso nei primi momenti, ma l’utilizzo continuo, l’esperienza ed il confronto solitamente conducono al desiderio e alla maturità di spingere la macchina oltre i propri limiti, ottenendo così un dispositivo ottimizzato e preciso.

Certo, la personalizzazione richiede studio e impegno, ma in fondo il mondo della stampa 3d è un mondo fatto da gente che difficilmente si accontenta e nel quale la ricerca della perfezione rappresenta la chiave del divertimento.

 

Potrebbe interessarti leggere:

 

Fonte: stampatutto3d.it

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *