Delta Kossel Linear Plus con SKR 1.4 Turbo

da | Ago 18, 2021 | 1 commento

SCOPO DELLA GUIDA:

  • Come aggiornare Delta Kossel Linear Plus con SKR 1.4 Turbo, driver Trinamic TMC2209, display Bigtreetech TFT35 V3.0, piatto Anycubic Ultrabase, firmware per motherboard Marlin 2.1.x Bugfix, firmware per display Bigtreetech TFT35 V3.0.27.x

LIVELLO DI DIFFICOLTÀ: medio

  • La procedura per aggiornare Delta Kossel Linear Plus con SKR 1.4 Turbo richiede il disassemblaggio di diversi componenti della stampante: letto di stampa, scheda madre, display, e l’installazione dei nuovi componenti, è caldamente consigliato visionare più volte gli schemi tecnici dei componenti sia vecchi che nuovi contenuti in questa guida e forniti in dotazione con la tua stampante per evitare errori nei collegamenti dei cavi e dei pin.
  • La maggiore difficoltà consisterà nel trovare i giusti valori per la propria stampante da impostare nel firmware per le funzioni “sensorless” StallGuard 2 dei driver TMC2209, in quanto ogni stampante necessita di valori appropriati da testare ed eventualmente modificare quindi non disponibili a priori.

CONCETTI AFFRONTATI:

  • Installazione e configurazione hardware e software

COMPONENTI SOFTWARE UTILIZZATE:

  • Sistema operativo Windows 10 o analoghe distribuzioni, Visual Studio Code Versione 1.76.0 (user setup) con plugin Platformio.

PREREQUISITI:

  • Stampante Anycubic Kossel Linear Plus assemblata a regola d’arte e già in grado di stampare oggetti 3D
  • Sonda Anycubic Probe 2 per calibrazione dell’asse Z e il livellamento del letto di stampa

DISPOSITIVI FISICI UTILIZZATI:

  • Un pc per programmare i firmware e compilarli, Anycubic Kossel Linear Plus, Bigtreetech SKR 1.4 Turbo, Bigtreetech TFT35 V3.0, piatto Anycubic Ultrabase, MicroSD per i trasferimenti dei firmware dal pc alla scheda madre e al display, Tester per la verifica dei contatti e per eventuali misurazioni elettroniche
  • Consigliati: crimpatrice per terminali elettrici, crimpatrice per connettori tipo JST-XH da 2,5mm, kit di tali connettori femmina da 2, da 3 da 5 pin, pinze e tronchesina a becco piatto per taglio raso, set di giraviti a croce e punte esagonali.

GUIDA DEDICATA A SISTEMI:

Windows_10

NOTE E DISCLAIMER

  • Qualsiasi modifica attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (i contenuti della presenta pagina hanno puro scopo didattico);
  • Qualsiasi modifica attuata in proprio a un dispositivo ne fa decadere garanzia, omologazioni e certificazioni di qualità.

Revisione guida: 1.1

 

Abstract

Questo progetto spiega come ho fatto ad aggiornare la mia stampante 3D Delta Kossel Linear Plus con SKR 1.4 Turbo.
Ho voluto realizzare questo progetto per tre motivi principali:

  1. Volevo ottenere una maggiore silenziosità della stampa adottando la tecnologia StealtChop 2 dei nuovi driver Trinamic TMC 2209,
  2. Ero desideroso di provare su una delta un processore a 32 bit per dotarla di maggiori risorse e capacità computazionali delle quali notoriamente questo tipo di stampanti sono voraci consumatrici quando eseguono in tempo reale i calcoli trigonometrici necessari a muovere i carrelli sui rispettivi assi X,Y,Z, e quindi a posizionare il terminale di stampa secondo le coordinate contenute nel file gcode in esecuzione,
  3. Volevo esplorare la possibilità di poter fare a meno dei finecorsa adottando la recentissima tecnologia Stallguard 2 di Trinamic,

Scopo di questa guida è illustrare una tecnica su come aggiornare una stampante delta Anycubic Kossel Linear Plus con una nuova scheda madre a 32 bit, ovvero la Bigtreetech SKR 1.4 Turbo 120Mhz, un display BTT TFT35 V3.0, e un piatto Anycubic Ultrabase.

Si parte

  1. Note preliminari
    1. Differenze tra una stampante a delta e una cartesiana
      1. La configurazione degli assi X,Y,Z
      2. Gli endstop o finecorsa
      3. Il piatto circolare
  2. Procedura
    1. Installazione motherboard SKR 1.4 Turbo
    2. Installazione driver Trinamic TMC2209
    3. Installazione display BTT TFT35 V3.0
    4. Installazione piatto Anycubic Ultrabase
    5. Installazione BTT Smart Filament Sensor V1.0
    6. Preparazione dell’ambiente software
    7. Modifiche, compilazione e caricamento firmware Marlin V2.1.x Bugfix
      1. Modifica del file “Platformio.ini”
      2. Modifica del file Configuration.h
      3. Modifica del file Configuration_adv.h
    8. Modifiche, compilazione e caricamento firmware BTT TFT35 V3.0
    9. Calibrazioni e Test

Note preliminari

Questo tipo di stampante 3D ha pianta triangolare (come la lettera maiuscola greca Δ) e piatto circolare, può avere diverse dimensioni a seconda del modello (Pulley o Linear, Linear Plus), nello specifico la mia Linear Plus ha dimensioni di stampa Φ240 mm x 270 mm e può raggiungere una temperatura all’hotend di 275°. Inoltre le stampanti “delta” possono essere dotate di carrelli di tipo Pulley (con piccole ruote gommate) o di guide lineari con cuscinetti a sfere, come nel mio caso.

Dal punto di vista della precisione nell’esecuzione delle stampe è preferibile la versione a guide lineari rispetto alla pulley. La tipologia a delta è prodotta attualmente in più versioni solitamente di dimensioni maggiori rispetto al modello Anycubic Kossel Linear Plus. La FLSUN produce il modello QQ con dimensioni di stampa Φ255 mm x 360 mm.

Differenze tra una stampante a delta e una cartesiana

La configurazione degli assi X,Y,Z nelle stampanti Delta

La differenza principale tra una stampante a delta ed una cartesiana consiste nel modo in cui vengono utilizzati gli assi X, Y, Z. Infatti tutti e tre gli assi hanno orientamento verticale e sono interdipendenti, inoltre a ciascuno dei tre carrelli scorrevoli verticalmente su di essi sono applicate due barre in fibra di carbonio che vanno a sostenere l’hot-end e quindi l’ugello di stampa, di modo che la combinazione della posizione dei tre carrelli in punti predeterminati di ogni asse determini la posizione voluta dell’ugello rispetto al piatto della stampante.

Nelle stampanti cartesiane al contrario ogni asse è indipendente dall’altro e un comando di spostamento di un carrello non interesserà gli altri. Nelle stampanti delta occorre che il processore della motherboard effettui complessi calcoli trigonometrici in tempo reale durante le fasi di stampa per movimentare i carrelli verticalmente su detti assi X,Y,Z ed ottenere il risultante spostamento della testa di stampa nei punti predeterminati dal file gcode dell’oggetto da stampare.

La motherboard (scheda madre) fornita di serie con la Anycubic Kossel Linear Plus è una Trigorilla basata su chip Arduino Mega 2560 a 8 bit. Sebbene non mi possa lamentare dei risultati ottenuti nel tempo con la Trigorilla, una motherboard con 32 bit è senz’altro più efficiente e veloce di una motherboard a 8 bit. Ecco uno dei motivi principali che mi ha spinto a sostituire la Trigorilla con una BigtreeTech SKR 1.4 Turbo, le cui specifiche, ulteriori caratteristiche e predisposizioni esporrò a breve. Qui di seguito gli schemi funzionali delle principali stampanti 3D, da sinistra a destra rispettivamente una cartesiana, una delta e una polare:

Differenze_stampanti_3D_cartesiane_delta_polari

Gli endstop o finecorsa

Ma ritornando alle differenze tra una delta e una cartesiana, un’altra è sicuramente rappresentata da quei dispositivi atti a limitare il movimento dei carrelli entro un dato intervallo che in gergo tecnico si chiamano end-stop o finecorsa. Mentre le stampanti cartesiane sono predisposte per avere sia endstop Min che endstop Max, ovvero interruttori di finecorsa posti a limitare la corsa dei carrelli ad ambedue le estremità di ciascun asse, nelle delta sono presenti soltanto gli endstop Max nella parte terminale alta degli assi, mentre la funzione degli endstop Min è svolta nella maggioranza dei casi da una sonda predisposta per la calibrazione dell’asse Z, la Anycubic ne ha prodotte di due tipi auto leveling probe 1 e auto leveling probe 2, nel mio caso si tratta del più recente tipo 2. Qui uno schema dei collegamenti della scheda madre Trigorilla fornita di serie con la Anycubic Kossel Linear Plus:

 

Anycubic_Kossel_wiring

Il piatto circolare

Rispetto alle cartesiane che sono dotate di piatto quadrato le delta presentano un piatto circolare che può essere di varie dimensioni a seconda del modello, nel mio caso il piatto ha un diametro di Φ240mm. Il materiale nelle due tipologie di stampanti è pressocchè identico, vetro borosilicato (ovvero trattato per resistere ad alte temperature e in modo da avere una uniformità di superficie). Nella dotazione originale della mia Anycubic venne fornito anche un apposito adesivo da apporre sul piatto di vetro per facilitare il distacco dei pezzi, una volta ultimata la stampa.

Procedura

Installazione SKR 1.4 Turbo

Dopo il nostro breve excursus sulle caratteristiche delle stampanti delta e le principali differenze con quelle cartesiane, procediamo ad effettuare le procedure di upgrade nell’ordine giusto, a cominciare dalla sostituzione della motherboard Anycubic Trigorilla con la Bigtreetech SKR 1.4. Turbo avente la seguente mappatura dei collegamenti:

SKR-V1.4-Turbo-pinout

Bigtreetech_SKR_1.4_Turbo_WIRING

Tenendo presente lo schema sopra incominciamo col collegare i terminali rosso e nero provenienti dal piatto riscaldato (Hote Base) nel morsetto a vite nero denominato HB (il secondo cominciando a contare dall’angolo inferiore sinistro dell’immagine qui sopra), facendo bene attenzione a rispettare la polarità, cavo rosso in basso e cavo nero in alto. Guardate e ricontrollate sempre le serigrafie sul lato posteriore della scheda per essere sicuri di non aver invertito i poli.

Ora procedete con i 2 cavi rossi provenienti dall’hot-end 0, non dovrebbero avere alcuna polarità dunque fermateli nelle due posizioni previste dal morsetto HE0,

Proseguite collegando i terminali delle 2 ventoline presenti sull’Hot End, quella che serve a raffreddarlo potete collegarla nella posizione a sinistra FAN, mentre l’altra a controllo numerico per il raffreddamento della stampa nella posizione indicata da CNC FAN (in questo modello l’unica posizione a controllo numerico).

Ora è la volta dei terminali dei termistori due provenienti dall’Hot-End che collocherete nella posizione in basso a destra indicata con TH0 e due provenienti dal piatto riscaldato che collocherete a destra di questa nella posizione TB, non ci sono polarità da rispettare. Per una connessione più salda anzicchè lasciare i connettori di tipo Dupont potreste decidere di sostituirli crimpando dei connettori a 2 posizioni del tipo JST-XH da 2,5mm.

La sonda Anycubic Probe 2 va connessa al terminale indicato dalla sigla PWR DET come successivamente specificheremo anche nel codice del firmware.

I 3 cavi del display EXP 1, EXP 2 e TFT vanno collegati nelle rispettive posizioni contrassegnate nell’area LCD e TFT della scheda. Per il cavo TFT tenete presente il giusto orientamento e quindi la corrispondenza con le serigrafie riportate nel retro della scheda, ogni collegamento sulla scheda deve corrispondere a quello del display. Anche qui per una connessione più salda anzicchè lasciare il connettore di tipo Dupont potreste decidere di sostituirlo crimpando nel verso giusto un connettore a 5 posizioni del tipo JST-XH da 2,5mm.

Avendo collocato la motherboard SKR 1.4 Turbo in una posizione esterna alla stampante avrete bisogno di 4 cavi da 1m per i motori stepper X,Y,Z e E0, quelli in dotazione risulteranno troppo corti, potete acquistarli qui. Anche qui per una connessione più salda meglio optare per cavi a 4 posizioni del tipo JST-XH da 2,5mm.

I cavi X,Y,Z, e E0 vanno collocati rispettivamente nelle posizioni indicate da XM, YM, ZAM, e E0M, facendo attenzione a rispettare la corrispondenza delle posizioni dei fili di ciascun terminale che sono 2B, 2A, 1A, 1B, basta che teniate presente la posizione dei fili e l’ordine dei colori sulla vecchia scheda madre Trigorilla e sui cavi che utilizzate, sono identici alla SKR 1.4 / SKR 1.4 Turbo.

Prima di collegare gli ultimi cavi, quelli dell’alimentazione, dobbiamo provvedere ad installare i driver Trinamic TMC2209.

Installazione driver Trinamic TMC2209

TMC2209_Driver_BIGTREETECH

BigTreeTech, la società dietro l’elettronica SKR, sviluppa anche i propri driver che montano il chip TMC2209. Si distinguono molto facilmente poiché, come nel driver precedente, il nome e la versione sono stampati sulla parte superiore della targhetta.

Se questo è il tuo caso, configurarli per la modalità UART non potrebbe essere più semplice. Per prima cosa estrai tutti i jumper dalla tua scheda e lascia in posizione solo quelli in posizione MS3 , come puoi vedere nell’immagine qui sotto (SKR V1.4):

SKR_1.4_UART

Con questa semplice modifica dovrebbe essere sufficiente avere una modalità UART intelligente e StallGuard™ e potremo utilizzare motori X e Y senza finecorsa.

Secondo la documentazione del produttore, se desideri solo la modalità UART intelligente e continuerai a utilizzare i finecorsa meccanici per i motori X, Y, Z, ti consigliamo di tagliare un pin del driver come puoi vedere nell’immagine qui sotto.

Dal momento che il taglio a me personalmente sembra una misura un po’ drastica, puoi scegliere di piegarlo con cura o fonderlo su un lato . In questo modo se in futuro vorrai modificare la configurazione e utilizzarli in modalità Sensorless (senza finecorsa meccanici), potrai farlo senza alcun problema.

Installazione display BTT TFT35 V3.0

Per utilizzare la doppia modalità di funzionamento modalità MARLIN (modalità testo) e modalità TOUCHSCREEN (touch screen) del display Beegtreetech TFT35 V3.0, dovremo effettuare 3 collegamenti tra il retro del display e la nostra motherboard SKR 1.4 Turbo, che sono quelli che puoi vedere nell’immagine seguente, ovvero le 2 tipiche connessioni seriali 12864, che sono i connettori LCD-EXP1 e LCD-EXP2, e il connettore TouchScreen che SKR utilizzerà per comunicare con il display, contrassegnato come TFT nell’immagine. In merito a quest’ultimo fai bene attenzione alla nomenclatura dei pin indicati dalla serigrafia della scheda (+5V, GND, RX, TX, RST), il nome di ciascun pin deve corrispondere a quello del pin ad esso collegato sulla SKR 1.4 Turbo.

BTT_TFT35_V3.0_WIRING

BTT_TFT35_V3.0_PINOUT

BIGTREETECH-TFT35-V3-0

Ultima cosa da fare prima di collegare i cavi dell’alimentazione alla SKR 1.4 Turbo, è quella di impostare il ponticello della modalità di alimentazione della scheda (5V USB o 12 / 24V VDD). Se hai intenzione di alimentare la scheda da un cavo USB, devi scegliere l’opzione USB e se usi un alimentatore da 12V o 24V, l’opzione VDD.

 

Infine collega i cavi dell’alimentazione Nero e Rosso rispettivamente nel canale basso e alto dell’ingresso DC-IN sul lato sinistro dell’immagine della SKR 1.4 Turbo (vedi sopra), rispetta le polarità o brucerai la scheda e i componenti ad essa collegata.

 

Installazione del piatto Anycubic Ultrabase

Una evoluzione del semplice piatto in vetro borosilicato liscio è rappresentata dal piatto Anycubic Ultrabase, che non necessita di alcun adesivo avendo la superficie trattata appositamente con un materiale a pattern puntiforme che permette il facile distacco dei pezzi una volta raffreddato il piatto, di contro per fare aderire le stampe occorre riscaldarlo ad una temperatura di almeno 50°C.

Come per le cartesiane il letto di stampa può essere riscaldato o meno a seconda della presenza di un ulteriore piatto di alluminio contenente una resistenza elettrica ovviamente da collegare alla motherboard a mezzo di due cavi siliconati nero e rosso. Tratteremo nello specifico la necessità o meno di un letto riscaldato a seconda dei diversi materiali impiegabili per la stampa 3D.

Ultrabase Anycubic

Per la manutenzione basterà passare uno strofinaccio imbevuto in alcol isopropilico puro (che trovate come alcol IPA), delicatamente su tutta la superficie. Non serve altro!

Preparazione dell’ambiente software

Installazione di Visual Studio

Prima di iniziare a modificare Marlin, ti consiglio di installare un buon editor di codice. Tra i più usati c’è Visual Studio Code. Non solo è un potente editor di codice, ma ha anche un gran numero di estensioni e puoi persino compilare Marlin direttamente da esso.

Visual_Studio_Code

Visual Studio Code può essere scaricato gratuitamente (è completamente gratuito) dal sito Web ufficiale. E una volta che hai modificato Marlin e i parametri necessari – che troverai un po’ più avanti – puoi compilarlo e caricare il tuo nuovo firmware sulla stampante.

Installazione dell’estensione IDE PlatformIO

Una volta installato correttamente Visual Studio Code, eseguiremo il programma e cercheremo nella barra laterale di sinistra un’icona con una specie di Puzzle (come puoi vedere nell’immagine sopra)

Con questo accederemo alla sezione in cui vengono amministrate le estensioni . Lì andremo alla casella di ricerca, inseriremo il nome “PlatformIO IDE” e attenderemo che appaia nell’elenco. Quindi lo selezioneremo e premeremo il pulsante “Installa” per iniziare il processo di installazione.

Il tempo di installazione dipenderà dal tuo computer e dal sistema operativo che hai. Ci vorrà un po’ di tempo, quindi sii paziente e aspetta che finisca completamente. Una volta terminato, il software stesso ti avviserà con un messaggio nella parte in basso a destra “PlatformIO IDE è stato installato con successo! Si prega di ricaricare la finestra”.

Nel caso in cui non sia installato Python, Visual Studio Code ti chiederà di installarlo, poiché è completamente necessario per questa estensione. Dovresti vedere un messaggio come questo “PlatformIO: Impossibile trovare Python 2.7 o 3.5+ Interpreter funzionante. Si prega di installare l’ultimo Python 3 e riavviare VSCode”. E ti offrirà la possibilità di scaricarlo premendo un pulsante, fare clic su di esso, scaricare il software e installarlo.

Download del firmware Marlin bug fixes 2.1.x e della cartella Configurations

Il prossimo step, ovviamente, è scaricare i sorgenti del firmware Marlin sul tuo computer. Per fare ciò andremo sul suo sito ufficiale e accederemo alla sezione download.

Qui il link diretto. Di solito scarico il firmware nella versione bug fixes, appena sotto la scritta “Download” . Lì, fai clic sul collegamento bugfix-2.1.x.zip , che è quello disponibile oggi per la versione bugfix-2.1.x

Tieni presente, tuttavia, che vengono rilasciati regolarmente nuovi aggiornamenti e revisioni. Quindi è possibile che quando leggi questo articolo ci sia una versione superiore e il suo nome sia diverso. In tal caso non sarebbe un grosso problema, scarica l’ultima versione e il gioco è fatto.

Scaricato il firmware generale, ora scarichiamo il set di cartelle con le configurazioni per ogni tipo di stampante 3D, per farlo basta cliccare su “View/Download” sotto “Configurations”, si aprirà la pagina github corrispondente, facciamo clic su “Code” e poi dal menu che si apre su “Dowload ZIP”.

Ora decomprimiamo in sequenza sia il firmware generale Marlin-bugfix-2.1.x.zip che Configurations-bugfix-2.1.x.zip in una cartella che chiameremo “Delta_Upgrade”.

Spostiamoci nella cartella “Kossel Linear Plus”, che dovrebbe essere a questo punto nella locazione:

Delta_Upgrade\Configurations-bugfix-2.1.x\config\examples\delta\Anycubic\Kossel Linear Plus”,

copiamo i files Configuration.h e Configuration_adv.h nella cartella “Marlin”:

Delta_Upgrade\Marlin-bugfix-2.1.x\Marlin”, sovrascrivendo i due files esistenti.

Step 06: Modifiche, compilazione e caricamento firmware Marlin V2.1.x Bugfix

In questo paragrafo spiegherò come configurare l’elettronica SKR v1.4/SKR v.14 Turbo per sfruttare tutta la potenza che i driver TMC2209 (Sensorless) ci offrono, e come configurare al meglio anche il display “ibrido” BTT TFT35 v3.0.

Modifica del file “Platformio.ini”

Se lo hai chiuso, riapri Visual Studio Code. Clicca su “File” in alto a sinistra, poi su “Apri Cartella”, ora seleziona la cartella “Marlin-bugfix-2.1.x”. Il primo file che andremo a modificare è il “Platformio.ini” per indicare al nostro compilatore che tipo di microprocessore abbiamo a bordo della nostra elettronica. Se non lo indichiamo con precisione, Visual Studio Code avrebbe problemi a compilare il nostro firmware. Trovi questo file nel menu a sinistra, se non visualizzi un elenco di files clicca sulla prima icona in alto a sinistra.

Questo file si trova all’interno del firmware Marlin, esattamente nella directory principale. Qui hai i valori trai quali sceglierai quello relativo alla tua scheda BigtreeTech SKR, Versione 1.4 (con processore LPC1768) oppure Versione 1.4 Turbo (con processore LPC1769):

Tipo di scheda elettronica ENV_DEFAULT
SKR v1.4 LPC1768
SKR v1.4 Turbo LPC1769

Conoscendo la scheda che utilizzeremo, modificheremo “Platformio.ini” e nel campo “env_default” metteremo il valore corrispondente alla nostra elettronica. Nel mio caso ho la SKR v1.4 Turbo quindi ho modificato il campo inserendo il valore “LPC1769”.

[code lang=”cpp”]

[platformio]
src_dir = Marlin
boards_dir = buildroot/share/PlatformIO/boards
default_envs = LPC1769
include_dir = Marlin

[/code]

Modifica del file “Configuration.h”

Una volta configurato il tipo di microprocessore della nostra elettronica in Visual Studio Code, procediamo a modificare i due file che sono necessari in Marlin.

Inizieremo aprendo con Visual Studio Code il file “Configuration.h” e andando a definire se la nostra è una stampante Anycubic Kossel Plus o Pulley, solo se ci troviamo nel primo caso (vedi caratteristiche di entrambi i modelli nei paragrafi precedenti) occorrerà decommentare la riga “#define ANYCUBIC_KOSSEL_PLUS” in questo modo:

[code lang=”cpp”]

/**
* Choose your version:
*/
// normal size or plus?
#define ANYCUBIC_KOSSEL_PLUS

[/code]

Ora configureremo il tipo di sonda Anycubic Probe per il livellamento automatico del letto. Se la tua sonda Anycubic Probe è come questa nella immagine seguente allora è il modello 2, altrimenti sarà il modello 1:

Anycubic Probe 2

Se hai un multimetro, puoi facilmente verificarlo. La sonda 2 è un NC – normalmente chiusa, il che significa che è normalmente accesa, quindi leggerai una resistenza molto bassa o puoi emettere un segnale acustico ai contatti.

[code lang=”cpp”]
// Anycubic Probe version 1 or 2 see README.md; 0 for no probe
#define ANYCUBIC_PROBE_VERSION 2
[/code]

Assicurati di aver scelto il tipo di letto corretto.
Se vuoi modificarlo, cambia semplicemente:
#define ANYCUBIC_KOSSEL_ENABLE_BED 2 in:

  1. Nessun letto riscaldato:
    #define ANYCUBIC_KOSSEL_ENABLE_BED 0
  2. Letto riscaldato standard con un adesivo nero:
    #define ANYCUBIC_KOSSEL_ENABLE_BED 1
  3. Ultrabase_BED_bed_KOSSELABLE_BED 2

[code lang=”cpp”]
// Heated Bed:
// 0 … no heated bed
// 1 … aluminium heated bed with "BuildTak-like" sticker
// 2 … ultrabase heated bed
#define ANYCUBIC_KOSSEL_ENABLE_BED 2

[/code]

 

Anycubic_Kossel_Linear_Plus_CONFIG_DIMENSIONS_DELTA

In questa sezione dovremo impostare i giusti parametri dimensionali della nostra stampante Delta per far sì che le stampe degli oggetti siano corrette e precise.

Kossel Linear Plus è dotata di un letto riscaldato con un diametro esterno di 230 mm.
Le Ultrabase per Kossel sono realizzate in due diametri esterni: 200 mm e 240 mm.

Nel mio caso ho un letto riscaldato standard da 240 mm con un Ultrabase da 240 mm montato e ciò significa che il mio raggio stampabile è: (240 mm – spazio irraggiungibile (10 mm di solito))/2 = 115 mm.

Il codice contiene varie definizioni e parametri specifici per la stampante, come ad esempio la dimensione massima di stampa, il raggio massimo raggiungibile dai bracci delta, la distanza tra il piano di stampa e la posizione di “home” del nozzle, e così via.

La prima parte del codice contiene una condizione “if” che controlla se la stampante in uso è un modello Anycubic Kossel Linear Plus. Se la condizione è vera, il firmware imposta i parametri specifici per quella stampante. In particolare, vengono definiti i corrispondenti valori nelle seguenti variabili:

“PRINTABLE_RADIUS” (raggio massimo di stampa, ovvero il diametro del piatto di stampa diviso due),
DELTA_MAX_RADIUS” (raggio massimo raggiungibile dai bracci della stampante delta al netto dell’ingombro dei fermi del piatto),
DELTA_DIAGONAL_ROD” (la distanza tra i fori degli snodi dei bracci diagonali),
DELTA_SMOOTH_ROD_OFFSET” (la distanza tra il centro dell’effettore e il centro delle sferette dei carrelli sulle guide lineari),
DELTA_EFFECTOR_OFFSET” (la distanza orizzontale tra il centro degli snodi inferiori delle aste di supporto e il centro della piastra effettore),
DELTA_CARRIAGE_OFFSET” (la distanza orizzontale tra il centro degli snodi superiori delle aste di supporto e il centro delle sferette dei carrelli sulle guide lineari).

La seconda parte del codice viene eseguita se la stampante non è un Anycubic Kossel Linear Plus e imposta i parametri specifici per il modello in uso. In particolare, vengono definiti il raggio massimo di stampa utilizzando la variabile “PRINTABLE_RADIUS”, il raggio massimo raggiungibile dai bracci delta utilizzando la variabile “DELTA_MAX_RADIUS”, la distanza tra i fori dei bracci diagonal utilizzando la variabile “DELTA_DIAGONAL_ROD” e la distanza orizzontale tra il centro della guida liscia e il centro della piastra effettore utilizzando la variabile “DELTA_RADIUS”.

In entrambe le parti del codice, sono presenti altre variabili utilizzate per calibrare la stampante delta, come la variabile “DELTA_HEIGHT” che definisce la distanza tra il piano di stampa e la posizione di “home” del nozzle e la variabile “DELTA_TOWER_ANGLE_TRIM” che consente di regolare la precisione dei bracci delta.

In generale, il codice di configurazione è un importante strumento per personalizzare il firmware Marlin 2.1 bugfix per la propria stampante 3D. È importante comprendere i vari parametri e variabili presenti nel codice per poter ottimizzare le prestazioni della stampante e produrre oggetti stampati di alta qualità.

Se non sei sicuro delle misure della tua stampante misura la lunghezza corretta delle tue aste smontandole e misurandole con un metro scorrevole asse per asse usando come punti di riferimento il centro dei fori e correggi il valore:

[code lang=”cpp”]
#if ENABLED(ANYCUBIC_KOSSEL_PLUS)
// Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
#define PRINTABLE_RADIUS 115.27 // (mm)
// Maximum reachable area
#define DELTA_MAX_RADIUS 105.0 // (mm)
// Center-to-center distance of the holes in the diagonal push rods.
#define DELTA_DIAGONAL_ROD 268 // (mm)
// Horizontal offset from middle of printer to smooth rod center.
#define DELTA_SMOOTH_ROD_OFFSET 185 // (mm)
// Horizontal offset of the universal joints on the end effector.
#define DELTA_EFFECTOR_OFFSET 31 // (mm)
// Horizontal offset of the universal joints on the carriages.
#define DELTA_CARRIAGE_OFFSET 15.5 // (mm)
// Horizontal distance bridged by diagonal push rods when effector is centered.
#define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET-(DELTA_EFFECTOR_OFFSET)-(DELTA_CARRIAGE_OFFSET)) // (mm) Get this value from G33 auto calibrate
#else
// Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
#define PRINTABLE_RADIUS 90.0 // (mm)
// Maximum reachable area
#define DELTA_MAX_RADIUS 90.0 // (mm)
// Center-to-center distance of the holes in the diagonal push rods.
#define DELTA_DIAGONAL_ROD 218.0 // (mm)
// Horizontal distance bridged by diagonal push rods when effector is centered.
#define DELTA_RADIUS 97.0 // (mm) Get this value from G33 auto calibrate
#endif

// Distance between bed and nozzle Z home position
#define DELTA_HEIGHT 282.19 // (mm) Get this value from G33 auto calibrate

#define DELTA_ENDSTOP_ADJ { 0.0, 0.0, 0.0 } // Get these values from G33 auto calibrate

// Trim adjustments for individual towers
// tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0
// measured in degrees anticlockwise looking from above the printer
#define DELTA_TOWER_ANGLE_TRIM { 0.0, 0.0, 0.0 } // Get these values from G33 auto calibrate

// Delta radius and diagonal rod adjustments (mm)
//#define DELTA_RADIUS_TRIM_TOWER { 0.0, 0.0, 0.0 }
//#define DELTA_DIAGONAL_ROD_TRIM_TOWER { 0.0, 0.0, 0.0 }

#endif

[/code]

La variabile che segue fa muovere la testina di stampa di ca. 50 mm verso il basso dopo l’homing al termine di una sessione di stampa.

#define DELTA_HOME_TO_SAFE_ZONE (Se hai intenzione di stampare modelli alti, commenta questa riga.)

[code lang=”cpp”]

// After homing move down to a height where XY movement is unconstrained
#define DELTA_HOME_TO_SAFE_ZONE

[/code]

Una Kossel standard senza rinforzi angolari, con le cinghie ben tese può fare circa 60 mm/s max.
Se disponi invece di rinforzi angolari, puoi facilmente raggiungere 100 mm/s e velocità ancora maggiori.

[code lang=”cpp”]

/**
* Default Max Feed Rate (mm/s)
* Override with M203
* X, Y, Z [, I [, J [, K]]], E0 [, E1[, E2…]]
*/
#define DEFAULT_MAX_FEEDRATE { 100, 100, 100, 100}

[/code]

È possibile definire i valori di accelerazione massima in questa parte del file di configurazione.
Tieni presente che se desideri stampare con un’accelerazione maggiore, il firmware non ti consentirà di farlo.
Considero questi valori come un “failsafe” contro valori di accelerazione troppo alti.

[code lang=”cpp”]

/**
* Default Max Acceleration (change/s) change = mm/s
* (Maximum start speed for accelerated moves)
* Override with M201
* X, Y, Z [, I [, J [, K]]], E0 [, E1[, E2…]]
*/
#define DEFAULT_MAX_ACCELERATION { 3000, 3000, 3000, 3000 }

[/code]

Questo è quasi critico.
Per chiunque utilizzi un altro FW, controlla se questa linea è definita.
Garantisce che dopo un riavvio, la stampante utilizzerà ancora i valori della calibrazione delta.

[code lang=”cpp”]

/**
* Normally G28 leaves leveling disabled on completion. Enable one of
* these options to restore the prior leveling state or to always enable
* leveling immediately after G28.
*/
#define RESTORE_LEVELING_AFTER_G28
//#define ENABLE_LEVELING_AFTER_G28

[/code]

La velocità di homing è un’impostazione cruciale. Consente di ridurre la velocità di homing rendendo l’homing e la calibrazione più precisi.
Invece di un veloce homing e “schiacciare” nei finecorsa, puoi avvicinarti lentamente e attivarli.

[code lang=”cpp”]

// Homing speeds (mm/min)
// Delta only homes to Z
#define HOMING_FEEDRATE_MM_M { (40*60), (40*60), (40*60) }

[/code]

 

modificare i parametri per configurare le porte di comunicazione (principale e secondaria) e la velocità di comunicazione. In quest’ultimo parametro di solito imposto 250.000 bds ma se riscontri qualche problema, usa 115.200 bds.

[code lang=”cpp”]
/**
* Select the serial port on the board to use for communication with the host.
* This allows the connection of wireless adapters (for instance) to non-default port pins.
* Serial port -1 is the USB emulated serial port, if available.
* Note: The first serial port (-1 or 0) will always be used by the Arduino bootloader.
*
* :[-1, 0, 1, 2, 3, 4, 5, 6, 7]
*/
#define SERIAL_PORT 0

/**
* Serial Port Baud Rate
* This is the default communication speed for all serial ports.
* Set the baud rate defaults for additional serial ports below.
*
* 250000 works in most cases, but you might try a lower speed if
* you commonly experience drop-outs during host printing.
* You may try up to 1000000 to speed up SD file transfer.
*
* :[2400, 9600, 19200, 38400, 57600, 115200, 250000, 500000, 1000000]
*/
#define BAUDRATE 250000
//#define BAUD_RATE_GCODE // Enable G-code M575 to set the baud rate

/**
* Select a secondary serial port on the board to use for communication with the host.
* Currently Ethernet (-2) is only supported on Teensy 4.1 boards.
* :[-2, -1, 0, 1, 2, 3, 4, 5, 6, 7]
*/
#define SERIAL_PORT_2 -1
//#define BAUDRATE_2 250000 // Enable to override BAUDRATE
[/code]

Ora diremo esattamente a Marlin che tipo di scheda elettronica ha la nostra stampante. Ti lascio qui un elenco dei diversi modelli SKR e alla tua destra i parametri che devi inserire:

Tipo di scheda elettronica Parametro
SKR v1.1 BOARD_BTT_SKR_V1_1
SKR v1.3 BOARD_BTT_SKR_V1_3
SKR v1.4 BOARD_BTT_SKR_V1_4
SKR v1.4 Turbo BOARD_BTT_SKR_V1_4_TURBO

 

Nel mio caso si tratta di una Bigtreetech SKR V1.4 TURBO, quindi lo indico a Marlin come segue:

[code lang=”cpp”]

// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_BTT_SKR_V1_4_TURBO
#endif
[/code]

Quindi configureremo il tipo di driver che abbiamo e i motori su cui sono montati. Cercheremo le seguenti righe relative ai driver degli assi X,Y,Z e all’estrusore E0 e modificheremo i valori di default con TMC2209, se i tuoi driver non sono dei Trinamic TMC2209 cambia le voci corrispondenti con quelli che hai. Lascia commentati tutti gli assi e gli estrusori che non utilizzerai.

[code lang=”cpp”]
#define X_DRIVER_TYPE TMC2209
#define Y_DRIVER_TYPE TMC2209
#define Z_DRIVER_TYPE TMC2209
//#define X2_DRIVER_TYPE A4988
//#define Y2_DRIVER_TYPE A4988
//#define Z2_DRIVER_TYPE A4988
//#define Z3_DRIVER_TYPE A4988
//#define Z4_DRIVER_TYPE A4988
//#define I_DRIVER_TYPE A4988
//#define J_DRIVER_TYPE A4988
//#define K_DRIVER_TYPE A4988
#define E0_DRIVER_TYPE TMC2209
//#define E1_DRIVER_TYPE A4988
//#define E2_DRIVER_TYPE A4988
//#define E3_DRIVER_TYPE A4988
//#define E4_DRIVER_TYPE A4988
//#define E5_DRIVER_TYPE A4988
//#define E6_DRIVER_TYPE A4988
//#define E7_DRIVER_TYPE A4988
[/code]

 

Sempre editando il file “Configuration.h” modificheremo altri due parametri molto importanti che non possiamo dimenticare. Il primo di essi ci aiuterà ad attivare l’emulazione Marlin sul nostro display.

Ciò significa che se si utilizza un “display ibrido” come il Bigtreetech TFT35 V3.0, è possibile passare dalla modalità TouchMode (testo e grafica) alla modalità Marlin (solo testo) premendo il pulsante principale per 3 secondi. È una soluzione che accontenta sia gli amanti del touch che degli encoder rotativi.

[code lang=”cpp”]
// RepRapDiscount FULL GRAPHIC Smart Controller
// https://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller
//
#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
[/code]

Il secondo parametro ci permetterà di supportare la memorizzazione della Eeprom sulla nostra stampante , è indispensabile attivarla.

[code lang=”cpp”]
/**
* EEPROM
*
* Persistent storage to preserve configurable settings across reboots.
*
* M500 – Store settings to EEPROM.
* M501 – Read settings from EEPROM. (i.e., Throw away unsaved changes)
* M502 – Revert settings to "factory" defaults. (Follow with M500 to init the EEPROM.)
*/
#define EEPROM_SETTINGS // Persistent storage with M500 and M501
//#define DISABLE_M503 // Saves ~2700 bytes of PROGMEM. Disable for release!
#define EEPROM_CHITCHAT // Give feedback on EEPROM commands. Disable to save PROGMEM.
#define EEPROM_BOOT_SILENT // Keep M503 quiet and only give errors during first load
#if ENABLED(EEPROM_SETTINGS)
//#define EEPROM_AUTO_INIT // Init EEPROM automatically on any errors.
#endif
[/code]

Modifica del file “Configuration_adv.h”

È il turno del file “Configuration_adv.h”. Questo file contiene le configurazioni più avanzate del firmware Marlin, oltre a quelle più sperimentali o in sviluppo.

Il primo parametro che dobbiamo modificare è l’interpolazione dei passi del nostro driver. In questo modo, consentiremo al driver TMC2209 di eseguire le interpolazioni automaticamente. Verifica che accanto ad “INTERPOLATE” ci sia il valore “true”:

[code lang=”cpp”]

/**
* Interpolate microsteps to 256
* Override for each driver with driver_INTERPOLATE settings below
*/
#define INTERPOLATE true

[/code]

Quindi indicheremo i valori della tensione (650 per assi X,Y,Z e 750 per estrusore E0) e i micro passi a cui deve funzionare ciascuno dei motori. Ho solo X, Y, Z ed E0, quindi modificherò i valori nella sezione corrispondente:

[code lang=”cpp”]
#if AXIS_IS_TMC(X)
#define X_CURRENT 650 // (mA) RMS current. Multiply by 1.414 for peak current.
#define X_CURRENT_HOME X_CURRENT // (mA) RMS current for sensorless homing
#define X_MICROSTEPS 16 // 0..256
#define X_RSENSE 0.11
#define X_CHAIN_POS -1 // -1..0: Not chained. 1: MCU MOSI connected. 2: Next in chain, …
//#define X_INTERPOLATE true // Enable to override ‘INTERPOLATE’ for the X axis
#endif

#if AXIS_IS_TMC(X2)
#define X2_CURRENT 800
#define X2_CURRENT_HOME X2_CURRENT
#define X2_MICROSTEPS X_MICROSTEPS
#define X2_RSENSE 0.11
#define X2_CHAIN_POS -1
//#define X2_INTERPOLATE true
#endif

#if AXIS_IS_TMC(Y)
#define Y_CURRENT 650
#define Y_CURRENT_HOME Y_CURRENT
#define Y_MICROSTEPS 16
#define Y_RSENSE 0.11
#define Y_CHAIN_POS -1
//#define Y_INTERPOLATE true
#endif

#if AXIS_IS_TMC(Y2)
#define Y2_CURRENT 800
#define Y2_CURRENT_HOME Y2_CURRENT
#define Y2_MICROSTEPS Y_MICROSTEPS
#define Y2_RSENSE 0.11
#define Y2_CHAIN_POS -1
//#define Y2_INTERPOLATE true
#endif

#if AXIS_IS_TMC(Z)
#define Z_CURRENT 650
#define Z_CURRENT_HOME Z_CURRENT
#define Z_MICROSTEPS 16
#define Z_RSENSE 0.11
#define Z_CHAIN_POS -1
//#define Z_INTERPOLATE true
#endif

#if AXIS_IS_TMC(Z2)
#define Z2_CURRENT 800
#define Z2_CURRENT_HOME Z2_CURRENT
#define Z2_MICROSTEPS Z_MICROSTEPS
#define Z2_RSENSE 0.11
#define Z2_CHAIN_POS -1
//#define Z2_INTERPOLATE true
#endif

#if AXIS_IS_TMC(Z3)
#define Z3_CURRENT 800
#define Z3_CURRENT_HOME Z3_CURRENT
#define Z3_MICROSTEPS Z_MICROSTEPS
#define Z3_RSENSE 0.11
#define Z3_CHAIN_POS -1
//#define Z3_INTERPOLATE true
#endif

#if AXIS_IS_TMC(Z4)
#define Z4_CURRENT 800
#define Z4_CURRENT_HOME Z4_CURRENT
#define Z4_MICROSTEPS Z_MICROSTEPS
#define Z4_RSENSE 0.11
#define Z4_CHAIN_POS -1
//#define Z4_INTERPOLATE true
#endif

#if AXIS_IS_TMC(I)
#define I_CURRENT 800
#define I_CURRENT_HOME I_CURRENT
#define I_MICROSTEPS 16
#define I_RSENSE 0.11
#define I_CHAIN_POS -1
//#define I_INTERPOLATE true
#endif

#if AXIS_IS_TMC(J)
#define J_CURRENT 800
#define J_CURRENT_HOME J_CURRENT
#define J_MICROSTEPS 16
#define J_RSENSE 0.11
#define J_CHAIN_POS -1
//#define J_INTERPOLATE true
#endif

#if AXIS_IS_TMC(K)
#define K_CURRENT 800
#define K_CURRENT_HOME K_CURRENT
#define K_MICROSTEPS 16
#define K_RSENSE 0.11
#define K_CHAIN_POS -1
//#define K_INTERPOLATE true
#endif

#if AXIS_IS_TMC(E0)
#define E0_CURRENT 750
#define E0_MICROSTEPS 16
#define E0_RSENSE 0.11
#define E0_CHAIN_POS -1
//#define E0_INTERPOLATE true
#endif

#if AXIS_IS_TMC(E1)
#define E1_CURRENT 800
#define E1_MICROSTEPS E0_MICROSTEPS
#define E1_RSENSE 0.11
#define E1_CHAIN_POS -1
//#define E1_INTERPOLATE true
#endif

#if AXIS_IS_TMC(E2)
#define E2_CURRENT 800
#define E2_MICROSTEPS E0_MICROSTEPS
#define E2_RSENSE 0.11
#define E2_CHAIN_POS -1
//#define E2_INTERPOLATE true
#endif

#if AXIS_IS_TMC(E3)
#define E3_CURRENT 800
#define E3_MICROSTEPS E0_MICROSTEPS
#define E3_RSENSE 0.11
#define E3_CHAIN_POS -1
//#define E3_INTERPOLATE true
#endif

#if AXIS_IS_TMC(E4)
#define E4_CURRENT 800
#define E4_MICROSTEPS E0_MICROSTEPS
#define E4_RSENSE 0.11
#define E4_CHAIN_POS -1
//#define E4_INTERPOLATE true
#endif

#if AXIS_IS_TMC(E5)
#define E5_CURRENT 800
#define E5_MICROSTEPS E0_MICROSTEPS
#define E5_RSENSE 0.11
#define E5_CHAIN_POS -1
//#define E5_INTERPOLATE true
#endif

#if AXIS_IS_TMC(E6)
#define E6_CURRENT 800
#define E6_MICROSTEPS E0_MICROSTEPS
#define E6_RSENSE 0.11
#define E6_CHAIN_POS -1
//#define E6_INTERPOLATE true
#endif

#if AXIS_IS_TMC(E7)
#define E7_CURRENT 800
#define E7_MICROSTEPS E0_MICROSTEPS
#define E7_RSENSE 0.11
#define E7_CHAIN_POS -1
//#define E7_INTERPOLATE true
#endif
[/code]

Ora indicheremo a Marlin quale voltaggio ci offre il nostro alimentatore, e il più comune è 12V o 24V. Come nel mio caso è 24V, lo indico a Marlin nel seguente modo:

[code lang=”cpp”]

#define CHOPPER_TIMING CHOPPER_DEFAULT_12V // All axes (override below)
//#define CHOPPER_TIMING_X CHOPPER_TIMING // For X Axes (override below)
//#define CHOPPER_TIMING_X2 CHOPPER_TIMING_X

[/code]

Attiviamo varie protezioni di temperatura per i nostri driver TMC2209 che Trinamic ci offre, tra le altre cose:

[code lang=”cpp”]

/**
* Monitor Trinamic drivers
* for error conditions like overtemperature and short to ground.
* To manage over-temp Marlin can decrease the driver current until the error condition clears.
* Other detected conditions can be used to stop the current print.
* Relevant G-codes:
* M906 – Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given.
* M911 – Report stepper driver overtemperature pre-warn condition.
* M912 – Clear stepper driver overtemperature pre-warn condition flag.
* M122 – Report driver parameters (Requires TMC_DEBUG)
*/
#define MONITOR_DRIVER_STATUS

[/code]

Procediamo ad attivare l’opzione StallGuard™ nel nostro firmware Marlin. StallGuard™ è una tecnologia brevettata da Trinamic che consente di effettuare misurazioni del carico sui nostri motori passo-passo.

E ti starai chiedendo, a cosa serve questa tecnologia? Ebbene la risposta è semplice. StallGuard™ è in grado di rilevare con precisione gli arresti del motore e quindi può eliminare l’uso di qualsiasi tipo di finecorsa.

Dunque quello che faremo è eliminare i finecorsa degli assi X,Y,Z. Devi semplicemente decommentare l’opzione SENSORLESS_HOMING e sarà disponibile.

Puoi anche configurare la sensibilità con i parametri X_STALL_SENSITIVITY e Y_STALL_SENSITIVITY . Il valore 0 significa che non si fermerà e il valore 255 indica che il minimo ostacolo disabilita il movimento del motore. Un valore consigliato per iniziare i test è 75, da affinare con prove e riprove naturalmente:

[code lang=”cpp”]

/**
* Use StallGuard to home / probe X, Y, Z.
*
* TMC2130, TMC2160, TMC2209, TMC2660, TMC5130, and TMC5160 only
* Connect the stepper driver’s DIAG1 pin to the X/Y endstop pin.
* X, Y, and Z homing will always be done in spreadCycle mode.
*
* X/Y/Z_STALL_SENSITIVITY is the default stall threshold.
* Use M914 X Y Z to set the stall threshold at runtime:
*
* Sensitivity TMC2209 Others
* HIGHEST 255 -64 (Too sensitive => False positive)
* LOWEST 0 63 (Too insensitive => No trigger)
*
* It is recommended to set HOMING_BUMP_MM to { 0, 0, 0 }.
*
* SPI_ENDSTOPS *** Beta feature! *** TMC2130/TMC5160 Only ***
* Poll the driver through SPI to determine load when homing.
* Removes the need for a wire from DIAG1 to an endstop pin.
*
* IMPROVE_HOMING_RELIABILITY tunes acceleration and jerk when
* homing and adds a guard period for endstop triggering.
*
* Comment *_STALL_SENSITIVITY to disable sensorless homing for that axis.
*/
#define SENSORLESS_HOMING // StallGuard capable drivers only

#if EITHER(SENSORLESS_HOMING, SENSORLESS_PROBING)
// TMC2209: 0…255. TMC2130: -64…63
#define X_STALL_SENSITIVITY 98
#define X2_STALL_SENSITIVITY X_STALL_SENSITIVITY
#define Y_STALL_SENSITIVITY 98
#define Y2_STALL_SENSITIVITY Y_STALL_SENSITIVITY
#define Z_STALL_SENSITIVITY 98
//#define Z2_STALL_SENSITIVITY Z_STALL_SENSITIVITY
//#define Z3_STALL_SENSITIVITY Z_STALL_SENSITIVITY
//#define Z4_STALL_SENSITIVITY Z_STALL_SENSITIVITY
//#define I_STALL_SENSITIVITY 8
//#define J_STALL_SENSITIVITY 8
//#define K_STALL_SENSITIVITY 8
//#define SPI_ENDSTOPS // TMC2130 only
#define IMPROVE_HOMING_RELIABILITY
#endif

[/code]

Con questo parametro avremo un segnale più preciso per i nostri driver Trinamic TMC2209. Si consiglia di attivarlo, quindi lo faremo come segue:

[code lang=”cpp”]

/**
* Beta feature!
* Create a 50/50 square wave step pulse optimal for stepper drivers.
*/
#define SQUARE_WAVE_STEPPING

[/code]

E infine, attiveremo questa opzione, che ci darà la possibilità di eseguire il debug e conoscere in tempo reale lo stato dei nostri driver. È abbastanza utile sapere se abbiamo configurato tutto correttamente e se abbiamo attivato correttamente la modalità UART.

[code lang=”cpp”]

/**
* Enable M122 debugging command for TMC stepper drivers.
* M122 S0/1 will enable continuous reporting.
*/
#define TMC_DEBUG

[/code]

Installazione BTT Smart Filament Sensor V1.0

Se sei appassionato di stampa 3D, probabilmente hai già sentito parlare di un dispositivo chiamato “filament sensor”. Ma cos’è esattamente un filament sensor e a cosa serve?

In breve, un filament sensor è un dispositivo che rileva la presenza e l’avanzamento del filamento di plastica all’interno della stampante 3D. Il sensore di filamento è un’aggiunta molto utile alla tua stampante 3D, poiché ti consente di monitorare in modo preciso la quantità di filamento presente sulla bobina e di evitare che la stampante continui a stampare quando il filamento è terminato.

Uno dei sensori di filamento più diffusi sul mercato è il BigTreeTech Smart Filament Sensor V1.0. Questo sensore è compatibile con molte stampanti 3D e può essere facilmente installato. Una volta installato, il sensore di filamento monitora costantemente l’avanzamento del filamento e segnala alla stampante quando il filamento è finito.

Il BigTreeTech Smart Filament Sensor V1.0 è dotato della capacità di rilevare la rottura del filamento, quando questa viene rilevata interrompe immediatamente la stampa e segnala il problema al software di controllo e quindi all’utente.

In sintesi, il BigTreeTech Smart Filament Sensor V1.0 è uno strumento molto utile per tutti gli appassionati di stampa 3D. Grazie alla sua capacità di monitorare costantemente l’avanzamento del filamento, il sensore di filamento può aiutare a prevenire problemi durante la stampa e conseguentemente ad evitare di sprecare tempo e materiale.

BigTreeTech_Smart_Filament_Sensor_V_1_0_new_version

Collegamento del sensore BTT SFS V1.0 alla BigTreeTech SRK 1.4 TURBO

In generale, è consigliabile collegare il sensore di filamento direttamente alla scheda madre, poiché ciò consentirà di utilizzare le funzionalità di rilevamento del firmware Marlin.

Nel tuo caso, dal momento che stai utilizzando la scheda madre BigTreeTech SRK 1.4 TURBO, puoi utilizzare uno dei connettori del sensore di filamento presenti sulla scheda madre. In particolare, il connettore “E0-DET” (Extruder 0 Filament Detection) dovrebbe essere quello corretto per il tuo sensore.

il connettore “E0-DET” ha 3 pin che sono dall’alto in basso: 5V, GND, P1.26 e si trova sulla parte anteriore destra della scheda madre BigTreeTech SRK 1.4 TURBO, tra i connettori X-STOP e EXP2 (vedi schema BTT SKR 1.4 TURBO precedente).

Questo connettore è definito alla riga #define FIL_RUNOUT_PIN P1_26 // E0DET nel file del firmware dedicato alla definizione dei pins della scheda, ovvero pins_BTT_SKR_V1_4.h.

Configurazione firmware Marlin per attivare le funzioni di BTT Smart Filament Sensor V1.0

FILAMENT_RUNOUT_SENSOR

Decommentare le righe seguenti (rimuovendo il doppio slash):

#define FILAMENT_RUNOUT_SENSOR,
#define FILAMENT_RUNOUT_DISTANCE_MM 7
e impostarlo su 7 mm (la precisione di rilevamento di SFS V1.0 è 7 mm),
#define FILAMENT_MOTION_SENSOR,
#define NOZZLE_PARK_FEATURE,
#define ADVANCED_PAUSE_FEATURE e impostare parametri specifici in base alla propria stampante.

Si consiglia di collegare SFS V1.0 alla scheda madre non al touch screen, in questo caso la configurazione Marlin è come descritta sopra.
Il config.ini file del touch screen in questo caso non deve essere modificato per lo scopo.

Quando l’SFS V1.0 invece è collegato al Touch Screen, va commentata la riga #define FILAMENT_RUNOUT_SENSOR in Marlin per disabilitare il rilevamento di Marlin e decommentata #define M114_DETAIL per il Touch Screen, di converso va abilito il rilevamento del Touch Screen nel config.ini file, impostato fil_runout:1 per abilitare il rilevamento e fil_runout_distance:7 per la precisione.

Modifiche, compilazione e caricamento firmware BTT TFT35 V3.0

Configurazione

La configurazione del firmware può essere modificata modificando il file config.ini(o il config_rrf.inifile rinominato) utilizzando un semplice editor di testo (assicurarsi di utilizzare la codifica UTF).

È possibile caricare una configurazione senza la necessità di caricare nuovamente il firmware o la cartella TFT, purché il firmware e il file di configurazione siano della stessa versione.

Modifica del file di configurazione

NOTA: gli utenti del firmware RepRap devono apportare le modifiche utilizzando il config_rrf.inifile modello e rinominandolo in config.ini.

Per modificare il config.ini file, seguire le istruzioni qui: Istruzioni dettagliate.

Installazione

NOTA: per i dispositivi con supporto per unità flash USB, è possibile aggiornare le icone , i caratteri , la configurazione e i file della lingua da un’unità flash USB nello stesso modo in cui si esegue tramite una scheda SD. Tuttavia, il firmware può essere aggiornato solo utilizzando una scheda SD.

Per installare il firmware sono necessari i seguenti passaggi:

Copia il firmware BIGTREE_TFT*_V*.*.*.bin precompilato o il tuo firmware autocompilato, più la cartella del tuo tema preferito insieme alla radice di una scheda SD vuota non superiore a 8 GB e formattata come FAT32: TFT*config.ini

Upgrade_firmware_BTT_TFT35_V3_01

Upgrade_firmware_BTT_TFT35_V3_01

Facoltativamente, copiare uno o più language_*.inifile sulla scheda SD. In questo modo potrai passare dall’inglese alla/e lingua/e caricata/e dal menu Lingua presente nel firmware del TFT. Si consiglia di caricare il numero minimo di lingue per mantenere basso l’utilizzo della memoria. Il language_*.inifile può essere modificato per cambiare il testo mostrato sul TFT:

Upgrade_firmware_BTT_TFT35_V3_02

Upgrade_firmware_BTT_TFT35_V3_02

Posizionare la scheda SD con BIGTREE_TFT*_V*.*.*.bin, la TFT*cartella config.inie i file facoltativi language_*.ininel lettore di schede SD del TFT e reimpostare il TFT (o, facoltativamente, spegnere e riaccendere la stampante) per avviare il processo di aggiornamento:

⚠️Il mancato aggiornamento delle icone e dei caratteri comporterà icone mancanti e/o testo illeggibile⚠️

Processo di aggiornamento visualizzato sullo schermo TFT:

Un aggiornamento riuscito appare così sullo schermo:

Upgrade_firmware_BTT_TFT35_V3_03

Upgrade_firmware_BTT_TFT35_V3_03

… e il nome degli elementi sulla scheda SD cambia in questo:

Upgrade_firmware_BTT_TFT35_V3_SD_CARD

Nel caso in cui una o più parti dell’aggiornamento falliscano, verrà visualizzato un messaggio di errore. Segui le informazioni sullo schermo per aggiornare gli elementi mancanti o obsoleti:

Upgrade_firmware_BTT_TFT35_V3_failed

⚠️Gli errori durante l’aggiornamento non possono essere ignorati e devono essere risolti prima di utilizzare il TFT⚠️

Dopo che l’aggiornamento è terminato e i file sono stati rinominati, è possibile riutilizzarli nuovamente. Per fare ciò, cambia il nome dell’elemento o degli elementi con il nome precedente all’aggiornamento e avvia nuovamente il processo di aggiornamento.

Dopo un aggiornamento riuscito, il TFT passerà a uno dei seguenti menu:

    • Menu principale : l’aggiornamento è completato ed è possibile utilizzare il TFT
    • Menu di calibrazione touch screen : è necessario un processo di post-installazione prima di passare al menu principale. Consultare la sezione Post installazione per completare il processo di post installazione

SUGGERIMENTO: Formattare la scheda SD dopo l’aggiornamento del firmware nel caso in cui si desideri stampare da essa.

Dipendenze Marlin

Versione minima del firmware Marlin: 2.1.1
Data di distribuzione: 2022-09-22
Fonte firmware: https://github.com/MarlinFirmware/Marlin/releases

Per utilizzare tutte le caratteristiche e le funzionalità supportate dal TFT, le seguenti opzioni devono essere abilitate nel firmware Marlin.

Opzioni generali che DEVONO essere sempre attivate:

EEPROM_SETTINGS (in Configuration.h)
BABYSTEPPING (in Configuration_adv.h)
AUTO_REPORT_TEMPERATURES (in Configuration_adv.h
AUTO_REPORT_POSITION (in Configuration_adv.h)
EXTENDED_CAPABILITIES_REPORT (in Configuration_adv.h)
M115_GEOMETRY_REPORT (in Configuration_adv.h)
M114_DETAIL (in Configuration_adv.h)
REPORT_FAN_CHANGE (in Configuration_adv.h)

Opzioni per supportare la stampa da supporti integrati:

SDSUPPORT (in Configurazione.h)
LONG_FILENAME_HOST_SUPPORT (in Configurazione_adv.h)
AUTO_REPORT_SD_STATUS (in Configurazione_adv.h)
SDCARD_CONNECTION_ONBOARD (in Configurazione_adv.h)

Opzioni per supportare il dialogo con l’host:

EMERGENCY_PARSER (in Configurazione_adv.h)
SERIAL_FLOAT_PRECISION 4 (in Configurazione_adv.h)
HOST_ACTION_COMMANDS (in Configurazione_adv.h)
HOST_PROMPT_SUPPORT (in Configurazione_adv.h)
HOST_STATUS_NOTIFICATIONS (in Configurazione_adv.h)

Opzioni per supportare M73 con host:

Opzioni per supportare la comunicazione con l’host (come prerequisito)
SET_PROGRESS_MANUALLY (in Configuration_adv.h)
M73_REPORT (in Configuration_adv.h)

Opzioni per supportare M600 con host e menu di caricamento e scaricamento:

Opzioni per supportare la comunicazione con l’host (come prerequisito)
NOZZLE_PARK_FEATURE (in Configuration.h)
ADVANCED_PAUSE_FEATURE (in Configuration_adv.h)
PARK_HEAD_ON_PAUSE (in Configuration_adv.h)
FILAMENT_LOAD_UNLOAD_GCODES (in Configuration_adv.h)

Opzioni per supportare completamente il menu Livellamento letto:

Z_MIN_PROBE_REPEATABILITY_TEST (in Configurazione.h)
G26_MESH_VALIDATION (in Configurazione.h)
Z_STEPPER_AUTO_ALIGN (in Configurazione_adv.h)

Post installazione

Nel caso in cui siano state apportate modifiche importanti dal firmware installato, viene avviato automaticamente un processo di post installazione consistente nella calibrazione del touch screen.

Consultare la sezione Calibrazione touch screen per completare il processo.

Aggiornamento della configurazione

Consultare la sezione Configurazione per la configurazione config.inidel file.

APPUNTI:

  • Per i dispositivi con supporto per unità flash USB, è possibile aggiornare le icone , i caratteri , la configurazione e i file di lingua da un’unità flash USB nello stesso modo in cui si esegue tramite una scheda SD. Tuttavia, il firmware può essere aggiornato solo utilizzando una scheda SD
  • La seguente procedura può essere applicata anche a qualsiasi combinazione di risorse (es. solo icone , icone + caratteri , file di configurazione + lingua ecc.)

Per aggiornare la configurazione del firmware:

  1. Copia il file modificato config.ininella root della scheda SD. La capacità della scheda SD deve essere inferiore o uguale a 8 GB e formattata come FAT32
  2. Inserire la scheda SD nello slot per schede SD del TFT e premere il pulsante di ripristino del TFT (o spegnere e riaccendere la stampante)
  3. La configurazione del TFT verrà aggiornata dal file di configurazione al riavvio
  4. Il config.inifile verrà rinominato config.ini.CURdopo l’aggiornamento della configurazione

Calibrazione del touch screen

Il processo di calibrazione del touch screen inizia mostrando uno schermo bianco con un punto rosso nell’angolo in alto a destra e il seguente testo:

Touch Screen Calibration - Please click on the red dot

Una volta avviato il processo, per calibrare il touch screen premere (con il dito o con uno stilo):

  1. il punto rosso nell’angolo in alto a sinistra
  2. poi il punto rosso nell’angolo in alto a destra
  3. poi il punto rosso nell’angolo in basso a destra
  4. e infine il puntino nero al centro dello schermo per terminare la calibrazione

Ripetere il processo nel caso in cui venga visualizzato il seguente messaggio:

Adjustment failed, please try again.

Forzare la calibrazione del touch screen

Il processo di calibrazione del touch screen può essere forzato in due modi:

  • da menu: La calibrazione può essere avviata dal menu Menu->Impostazioni->Schermo-> Regolazione TSC
  • da hard reset: la calibrazione viene avviata al termine del processo di hard reset

Ripristino completo

APPUNTI:

  • Il processo di hard reset viene in genere utilizzato come ultima possibilità quando il firmware non funziona correttamente (ad esempio in caso di blocchi, errori sullo schermo ecc.)
  • A meno che le impostazioni codificate predefinite non siano state configurate correttamente (ad esempio, è stato installato un firmware autocompilato), dopo un hard reset il TFT in genere deve essere riconfigurato con il config.inifile appropriato.

Il processo di hard reset consiste in:

  1. reimpostare la configurazione del TFT alle impostazioni codificate predefinite del TFT
  2. avviare il processo di calibrazione del touch screen all’avvio prima di passare al menu principale

Per resettare a fondo il firmware:

  1. Crea un file vuoto denominatoreset.txt
  2. Copia il reset.txtfile nella root della scheda SD. La capacità della scheda SD deve essere inferiore o uguale a 8 GB e formattata come FAT32
  3. Inserire la scheda SD nello slot per schede SD del TFT e premere il pulsante di ripristino del TFT (o spegnere e riaccendere la stampante)
  4. La configurazione del TFT verrà ripristinata alle impostazioni codificate predefinite del TFT e il processo di calibrazione del touch screen inizierà al riavvio
  5. Il reset.txtfile verrà rinominato reset.txt.DONEdopo il completamento del processo di calibrazione del touch screen

Ripristino delle impostazioni predefinite

Quando le impostazioni hardcoded predefinite sono configurate correttamente per un TFT e la funzione di base del TFT come la navigazione nei menu funziona, in caso di problemi l’utente può scegliere di applicare solo un ripristino della configurazione (soft reset) invece di un hard reset.

Per ripristinare le impostazioni predefinite:

  • Accedere a Menu->Impostazioni-> menu Funzioni
  • Selezionare e premere sulla voce Ripristina impostazioni predefinite
  • Premere il pulsante Ok per confermare il ripristino
  • Lascia il menù

Personalizzazione

Schermata di avvio e icone

Consultare la sezione Guide alla personalizzazione per informazioni dettagliate.

firmware

Visualizza le istruzioni complete

SUGGERIMENTO: In caso di problemi durante la compilazione del firmware TFT, provare a riavviare VSC. Se questo non aiuta e stai utilizzando macOS, elimina le cartelle dei pacchetti e delle piattaforme solitamente presenti sotto la cartella /Users/***username***/.platformio/.

Orientamento verticale dello schermo – Modalità verticale

Tutti i firmware precompilati disponibili nella Copy to SD Card root directory to updatecartella sono compilati per supportare l’orientamento dello schermo standard (orizzontale).

Nel caso in cui il TFT debba essere posizionato con un orientamento verticale (es. 90°), il firmware deve essere compilato con il supporto per la modalità verticale e installato seguendo la seguente procedura:

  • Avvia VSC
  • Aprireplatformio.ini
  • Rimuovere il commento (rimuovere il ;carattere iniziale) dalla seguente riga:
    ; -DPORTRAIT_MODE="_portrait" ; uncomment here to enable Portrait Mode .bin firmware generation
  • Compila il firmware
  • Viene creato il file binario nominato BIGTREE_TFT*_V*.*.*.x_portrait.bin(vedi la presenza del suffisso _portrait )
  • Rinominare il file binario con il nome standardBIGTREE_TFT*_V*.*.*.x.bin
  • Copia BIGTREE_TFT*_V*.*.*.x.bin, la TFT*cartella config.inie anche reset.txt(necessario per forzare la calibrazione dello schermo) nella scheda SD
  • Procedere con l’aggiornamento del firmware (seguendo la consueta procedura)

Risoluzione dei problemi

Calibrazioni e test

È probabile che dopo aver compilato il firmware Marlin e averlo caricato sulla tua elettronica, possa apparire un errore Eeprom sul tuo Touchscreen o sulla schermata di emulazione Marlin. Se questo è il caso, non preoccuparti perché è normale.

Devi eseguire questi comandi g-code uno per uno (non inserirli subito) e il problema sarà risolto. I comandi sono M502, M500 e M501 nello stesso ordine. Vi lascio qui la descrizione di cosa fa ciascuno di loro.

M502 – Ripristino completo delle impostazioni di fabbrica. Non richiede il parametro EEPROM_SETTINGS.
M500 – Salva tutta la configurazione corrente nella nostra EEPROM.
M501 – Carica i valori correnti dalla EEPROM.
Un altro problema che di solito si presenta quando utilizziamo la modalità Touchscreen è che indica che non c’è comunicazione con la nostra stampante. Questo perché abbiamo diverse velocità di comunicazione selezionate nel nostro firmware Marlin e sul nostro display.

Se hai seguito alla lettera questo manuale ricorderai che abbiamo impostato la comunicazione a 250.000 baud in Marlin (#define BAUDRATE 250000). Ora devi individuare sul display dove è configurata la comunicazione e indicare questo stesso valore.

Ricorda che devi farlo dalla “modalità Touch”, non dall’emulazione Marlin (modalità testo). Per facilitare il tuo compito, ho messo il percorso da seguire:
MENU -> CONFIGURA -> VELOCITÀ UART

1 commento

  1. Giovanni Di Vito

    veramente esaustivo, fatto molto bene ottimo.
    io ho come hardware una scheda della bigtretech v1.4 turbo con dei drivers tmc5160.
    L’esempio proposto da voi è applicabile anche ai miei drivers?
    in attesa di una vostra risposta porgo i miei distinti saluti.

    Giovanni

    Rispondi

Invia un commento

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

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.

Pin It on Pinterest

Share This