gocde

Com’è fatto un file GCODE? Ecco tutto ciò che c’è da sapere

Il gcode è qualcosa di cui si parla spesso in ambito di stampa 3d. Magari tra di voi c’è chi lo si usa senza aver chiaro cosa sia oppure chi sa esattamente come padroneggiarlo.

Ma cos’è esattamente il gcode? Ed a cosa serve? Scopriamolo insieme nel seguito dell’articolo.

Indice

A cosa serve il gcode?

Il gcode, o meglio G-Code (RS-274), è per l’appunto un codice che definisce i comandi da impartire ad un dispositivo a controllo numerico (Computer numeric control – CNC) in modo da poterlo governare completamente. Parliamo quindi di tutti quei comandi che dicono alla nostra stampante come e quando azionare i motori, a che velocità muoversi, quanto materiale estrudere, ecc.

Nella maggior parte dei casi non è importante conoscere il g-code per poter realizzare una stampa 3d. Esistono infatti dei software che si occupano di fare questo per noi: stiamo parlando degli slicer. Uno slicer (come ad esempio CURA) è un particolare tipo di software che si occupa di generare il g code a partire dal modello 3d.

Così facendo la stampante saprà quali sono i movimenti e tutte le relative azioni da intraprendere per stampare non solo il modello ma anche supporti, maglie interne, gestione multi-ugello e così via. In alcuni casi però si deve saper intervenire manualmente sul g-code. 

Questo si rende necessario principalmente per adattare il codice generico in uscita dallo slicer ad un modello specifico di stampante. Si potrebbe ad esempio voler riscaldare il piatto solo in certi momenti della stampa, oppure spegnere ugello e motori a fine stampa, ecc. E’ utile dunque alcune volte saper modificare il gcode per ottenere quel livello di dettaglio che solo utilizzando lo slicer non si può ottenere.

Com’è fatto un file gcode

Un file gcode è un normalissimo file di testo all’interno del quale sono presenti numerose righe. Ogni riga rappresenta una specifica istruzione per la macchina. E’ possibile usare un qualsiasi programma come Notepad per visualizzare e modificare un file gcode. Tuttavia raccomandiamo di usare tool specifici come Notepad++ o il più moderno Visual Studio Code.

Quest’ultimo tra l’altro permette di installare delle particolari estensioni che possono rivelarsi utili per chi si ritrova spesso a dover metter mano al g code, evidenziando parole e comandi chiave con una colorazione speciale, oltre ad aggiungere all’editor numerose funzioni.

A differenze di altri linguaggi, un file g-code non ha una particolare struttura. Si tratta di linee di comando staccate tra di loro dal carattere di “invio”. E’ possibile inoltre aggiungere dei commenti, cioè delle linee di codice che non vengono interpretate dalla macchina ma sono utili all’uomo per descrivere il comportamento di una porzione di codice.

Questo si rivela utile sia quando si lavora da soli, in modo da ricordare dopo tanto tempo perché è stato modificato il codice, oppure quando si lavora in team in modo da comunicare alle altre persone che lavoreranno al codice il significato di alcune modifiche. I commenti sono tutti quei caratteri preceduti dal punto e virgola. Un esempio di linea di codice con commento è ad esempio:

G28 ; QUESTO COMANDO DICE ALLA STAMPANTE DI FAR POSIZIONARE LA TESTINA ALL'ANGOLO ESTREMO DI COORDINATE (0,0,0) - SEQUENZA DI HOMING.

Pur non essendoci una particolare forma, gran parte dei file g-code presentano una struttura simile soprattutto all’inizio e alla fine. In genere la sequenza di inizio ha questa forma:

G28 X0 Y0 Z0 ; SEQUENZA DI HOMING IN POSIZIONE (0,0,0)
M107 ; SPEGNIMENTO VENTOLA
G1 F200 E3 ; ESTRUSIONE MATERIALE PER VERIFICA FILO CARICO

Dopo di ciò segue la lista dei comandi per effettuare la stampa del modello, che di solito si chiude con una sequenza simile a questa:

G28 X0 Y0 Z0 ; SEQUENZA DI HOMING IN POSIZIONE (0,0,0)
M104 S0 ; SPEGNERE ESTRUSORE
M140 S0 ; SPEGNERE PIATTO
G1 E1 F200 ; RITRARRE IL FILAMENTO
M84 ; SPEGNERE MOTORI

Come è possibile notare, il ruolo dei commenti alle linee di codice è molto importante per un linguaggio poco espressivo come appunto il g-code. La sola lettura del codice infatti non ci permetterebbe di comprendere il senso della sequenza comandi.

La parte centrale del codice è una lunga lista di comandi che principalmente si distinguono in due categorie:
• Comandi G
• Comandi N

I principali comandi G

Di seguito una lista dei principali comandi di tipo G.

G0 Movimento Rapido
esempio: G0 X11 movimento rapido in X=11mm.

G1 Movimento Controllato X Y Z E
esempio: G1 X80 Y10 E10 si muove dall’attuale posizione (X0,Y0) a (80,10) ed estrude 10mm di materiale.

G2 Movimento controllato ad arco in senso orario
esempio: G2 X80 Y10 I5 J10 E10 va dall’attuale posizione (X,Y) con movimento ad arco orario alla posizione (80,10) mantenendo una distanza costante dal punto (5 10) estrudendo il materiale dalla posizione attuale fino all’arrivo estrudendo 10 mm di materiale

G3 Movimento controllato ad arco in senso antiorario
esempio: lo stesso del comando precedente ma il movimento ad arco è in senso antiorario

G4 Pausa per S o P
esempio: G4 P200 non fare nulla per 200 msec. Inserisce una pausa del numero di millisecondi indicati. In questo tempo la macchina mantiene i parametri ma rimane ferma.

G10 Ritrae il filamento in accordo con le specifiche del comando M207

G11 Ritrae e recupera il filamento in accordo con le specifiche del comando M208

G28 Ritorna al punto d’origine degli assi. Il comando cosiddetto di Homing già visto in precedenza.

G29 Comando per il Test del piano di stampa. Usa un test su tre punti.

G30 Comando per il test del piano di stampa. Usa un solo punto di test

G31 Riporta l’attuale stato del test.

G32 Testa Z e calcola la posizione del piano Z

G90 Usa coordinate assolute

G91 Usa coordinate relative

G92 Imposta le coordinate

I principali comandi N

M0 Stop.
Esempio: M0 – La macchina si ferma torna alla sua posizione di riposo, poi si spegne. Tutti i motori e riscaldatori si spengono. Per riavviare la stampante si deve premere Reset.

M1 Sleep.
Esempio: M1 – La macchina si ferma torna alla sua posizione di riposo, poi si spegne. Tutti i motori e riscaldatori si spengono.La macchina si riavvia premendo un qualsiasi tasto

M104 Imposta la temperatura dell’estrusore selezionato
Esempio: M104 S190 imposta la temperatura dell’estrusore a 190°C

M105 Legge la temperatura corrente dal sensore

M106 Ventola on

M107 Ventola off

M108 Imposta la velocità di estrusione

M109 Imposta la temperatura di estrusione ed attende

M110 Imposta la linea corrente del G-code

M114 Visualizza la posizione attuale

M115 Visualizza la versione corrente del firmware

M17 Accende o spegne tutti i motori passo passo

M18 Spegne i motori passo passo come il comando M84

M20 Mostra il contenuto della SD card

M21 Inizializza la SD card

M22 Consente di rimuovere la SD card

M23 Seleziona un file dalla SD

M24 Inizia o riprende la stampa di un file della SD

M25 Pausa della stampa dalla SD

M26 Imposta la posizione della SD in bytes

M27 Riporta lo stato della stampa del file della SD

M28 Inizia a scrivere nella SD

M29 Termina la scrittura nella SD

M30 Cancella un file dalla SD

M41 Stampa in loop

M42 Cambia lo stato del pin via gcode

M80 Accende l’alimentatore

M81 Spegne l’alimentatore

M82 Seleziona i codici assoluti dell’estrusore E (default)

M83 Seleziona i codici relativi dell’estrusore E

M84 Disabilita i motori passo passo fino al prossimo movimento, o usa S per specificare un
tempo di attesa, prima che i motori vengano disabilitati. S0 si usa per disabilitare l’attesa.

M85 Imposta il timer di spegnimento mediante il parametro S. Per disabilitarlo porre a zero
(default)

M92 Imposta la programmazione dei passi per gli assi (Da usare per la calibrazione)

M114 Manda nella porta seriale la posizione attuale

M115 Comunica l’attuale versione del Firmware e la capacità del microcontroller usato

M117 Visualizza un messaggio
esempio: M117 “Nome Stampante”:visualizza sull’LCD il nome della stampante.

M119 Comunica alla porta seriale che è presente uno stato di endstop

M140 Imposta la temperatura del piano di stampa

M190 Aspetta finché la temperatura del piano di stampa non raggiunge quella impostata

M200 Imposta il diametro del filamento

M201 Imposta la massima accelerazione di stampa in unità/secondo quadrato per i movimenti
durante la stampa (M201 X1000 Y1000)

M202 Imposta la massima accelerazione in unità/secondo quadrato per i movimenti non di stampa (M202 X1000 Y1000). Questo comando non è usato nel firmware Marlin.

M203 Imposta la massima velocità di estrusione della macchina (M203 X200 Y200 Z300 E10000) in mm/sec

M204 Imposta la velocità di default: S per i normali movimenti; T solo per i movimenti dell’erogatore del materiale (M204 S3000 T7000) in “mm/sec quadrato” in segmenti di tempo mini, espressi in in ms (B20000)

M205 Impostazioni avanzate: velocità minima di movimento S=durante la stampa T=solo movimenti, B=minimo segmento temporale X= massimo strappo xy, Z=massimo strappo Z , E=massimo strappo E

M206 Imposta un punto di riposo addizionale

M207 Imposta la lunghezza di ritrazione S[positivo mm] F[feedrate mm/sec] Z[additional zlift/hop]

M208 Imposta il massimo movimento per gli assi

M209 Abilita la ritrazione automatica

M220 Imposta il valore del fattore di override di velocità in percentuale

M221 Imposta il valore del fattore di override di estrusione in percentuale

M240 Impulso di trigger per scattare una foto

M300 S(xxxx) P(xxxx). M300 in sostanza dice alla stampante: “canta!”. La S è l’altezza del suono
e la P è la durata in millisecondi.

M301 Imposta i paramentri PID, P I e D

M302 Abilita l’estrusione a freddo

M303 PID relay autotune S imposta la temperatura (default = 150C)

M400 Finisce tutti i movimenti

M500 Memorizza i parametri nella EEPROM

M501 Legge i parametri dalla EEPROM

M502 Ritorna alle impostazioni di fabbrica. Naturalmente questi devono essere stati memorizzati
nella EEPROM precedentemente.

M503 Stampa le attuali impostazioni (dalla memoria e non dalla eeprom)

M999 Riavvia dopo un errore

Stampe di mille colori con il comando M600

Tra i tanti comandi, uno che non abbiamo menzionato, ma di cui preferiamo parlare in maniera più approfondita è il COMMAND M600.

La particolarità di questo comando risiede nel fatto che esso permette di gestire più filamenti, e quindi il cambio di filamento, durante la stampa, in modo da poter stampare con tutti i colori che si desidera.

Tramite il comando M600 la stampante entra in pausa, dando all’utente così modo di poter cambiare il filamento. Successivamente basterà riprendere la stampa ed essa proseguirà col nuovo filamento esattamente da dove era stata precedentemente interrotta.

Riepilogo

Questo articolo introduce i concetti base per la comprensione del g-code, il linguaggio macchina da impartire alle stampanti 3d in modo che queste realizzino quanto desiderato.

Sebbene questo linguaggio viene per la maggior parte generato in maniera automatica dal software di slicing, direttamente dal modello 3d di partenza, si verificano situazioni in cui bisogna saper intervenire per adeguare ed ottimizzare il processo sulla base della propria stampante 3d.

Queste modifiche possono avvenire sempre tramite il software di slicing, modificando alcuni parametri, oppure manualmente, aprendo il file g-code con opportuni software di editing testuale (tra qui, volendo, anche il Notepad di Windows).

Conclusione

Approfondire il g-code è qualcosa di non troppo complicato ma che presenta alcuni scogli. Il primo tra tutti è il dover imparare centinaia di codici, ognuno con un numero diverso senza alcuna spiegazione.

Facendo pratica e utilizzando un buon manuale, come questa guida ad esempio, l’intervento si rende più semplice e poco alla volta si vedrà quanto interessante possa essere porsi allo stesso livello della macchina e parlare la stessa lingua.

Piaciuto l’articolo?

Fai una donazione amichevole, mi darai un grande supporto per continuare questo progetto!

Offrimi un caffè per sostenere stampatutto3d

logo_newsletter

stay tuned!

Iscriviti per ricevere fantastici contenuti esclusivi!