Delta Kossel Linear Plus con SKR 1.4 Turbo

da | Ago 18, 2021 | 0 commenti

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

 

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. Preparazione dell’ambiente software
    6. Modifiche, compilazione e caricamento firmware Marlin V2.0.x Bugfix
      1. Modifica del file “Platformio.ini”
      2. Modifica del file Configuration.h
      3. Modifica del file Configuration_adv.h
    7. Modifiche, compilazione e caricamento firmware BTT TFT35 V3.0
    8. 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

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.0.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.0.x.zip , che è quello disponibile oggi per la versione bugfix-2.0.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.0.x.zip che Configurations-bugfix-2.0.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.0.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.0.x\Marlin”, sovrascrivendo i due files esistenti.

Step 06: Modifiche, compilazione e caricamento firmware Marlin V2.0.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.0.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”.


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

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:


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

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.

 
// Anycubic Probe version 1 or 2 see README.md; 0 for no probe
#define ANYCUBIC_PROBE_VERSION 2

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
// Heated Bed:
// 0 ... no heated bed
// 1 ... aluminium heated bed with "BuildTak-like" sticker
// 2 ... ultrabase heated bed
#define ANYCUBIC_KOSSEL_ENABLE_BED 1

Qui arriva la parte difficile:
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 230 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.

Si prega di notare che DELTA_* deve essere definito come un numero in virgola mobile!
Non dimenticare di aggiungere .0 dopo ogni valore.

Misura la lunghezza corretta delle tue aste smontandole e misurandole con un metro scorrevole asse per asse – diametro del foro e correggi il valore:


#if ENABLED(ANYCUBIC_KOSSEL_PLUS)
// Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
#define DELTA_PRINTABLE_RADIUS 116.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 20.6 // (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 DELTA_PRINTABLE_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 300.00 // (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

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

Se hai intenzione di stampare modelli alti, commenta questa riga:
#define DELTA_HOME_TO_SAFE_ZONE

 

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

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.


/**
* 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}

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


/**
* 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 }

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.


/**
* 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

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.


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

 

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.

/**
 * 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

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:


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

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.

#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

 

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.

// RepRapDiscount FULL GRAPHIC Smart Controller
// https://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller
//
#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER

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

/**
* 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

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”:


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

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:

#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

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:


 #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

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


/**
* 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

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:


/**
* 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

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


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

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.


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

Modifiche, compilazione e caricamento firmware BTT TFT35 V3.0

 

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

0 commenti

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