TMC5160 SKR 1.3

[GUIDA] Collegare e configurare in SPI i TMC5160 su SKR 1.3

L’arrivo dei driver TMC5160 e la sempre più ampia diffusione della scheda 32bit SKR 1.3 ha portato molti curiosi ed appassionati a chiedersi come funziona questa nuova accoppiata.

Senza girarci troppo attorno il verdetto è molto semplice: sono loro la coppia top, la DuetWifi (qui la recensione) con i suoi TMC2660 non è più la regina incontrastata del panorama.

Introduzione

Fino a pochi mesi fa il dibattito più gettonato sui driver da scegliere per una stampante 3D era il solito: meglio i TMC2130 in SPI o i TMC2208 in UART?

La risposta non era sempre semplice e scontata e dipendeva dall’utilizzo che se ne voleva fare.

Da una parte avevamo i TMC2130, eredi dei TMC210, arricchiti di molte feature tra le quali la possibilità di “sentire” la perdita di passi che ben presto si è tramutata nella possibilità di fare l’autohoming sensorless grazie alla comunicazione SPI con il controller. Ma non erano perfetti, anzi, soffrivano le forti accelerazioni e potevano pilotare soltanto motori con bassa corrente.

Dall’altra avevamo i TMC2208, forti dalla tecnologia StealthChop 2 che garantiva supporto ad accelerazioni più alte e potevano pilotare motori che richiedevano maggiore corrente. Tuttavia, contrariamente ai TMC2130, non avevano molte altre feature come ad es. la possibilità di effettuare homing sensorless e soffrivano di un noto problema con la modalità Linear Advance di Marlin che li portava a bloccarsi.

Ma oggi, grazie all’arrivo dei TMC5160, abbiamo finalmente una soluzione.

Infatti i TMC5160 sono il punto di incontro tra… tutto. Essi integrano tutte le feature presenti sui TMC2130, TMC2208, TMC2660 e le portano ad un livello superiore diventando, di fatto, il miglior driver TMC sulla piazza: rimangono freschi, supportano alte accelerazioni, sensorless, gestiscono alte correnti, possono comunicare in SPI etc etc.

Insomma, sono la scelta migliore che si possa fare ed accoppiandoli ad un’ottima scheda 32bit come la SKR 1.3 (qui link all’acquisto) vi ritroverete tra le mani un’accoppiata che non ha nulla da invidiare alle varie Duet ma anzi, se la giocano alla grande.

Modificare i driver TMC5160 per comunicare in SPI

Quali driver TMC5160 vanno modificati?

Prima di collegare i TMC5160 alla SKR 1.3 bisogna verificare se è necessario modificare i driver per farli comunicare in SPI.

In linea di massima vanno modificati tutti i driver ad esclusione di:

  • Watterott TMC5160 1.4 o successivi
  • BIQU/BIGTREETECH TMC5160 1.2 o successivi

Tutti gli altri, ovvero le vecchie versioni dei Watterott, i BIQU/BIGTREETECH 1.0/1.1 ed i Fysetc fino alla 1.3 sono tutti soggetti alla stessa modifica per via di un errore di progettazione del PCB.

Modificare i driver TMC5160

La modifica del driver consiste nel portare a massa il CLK e rimuoverne il pin di collegamento come da schema seguente:

Saldare un filo tra CLK e GND, rimuovere il pin CLK

Nel mio caso il risultato è stato il seguente:

Collegare i TMC5160 alla SKR 1.3 tramite SPI

Una volta modificati i driver TMC5160, qualora non abbiate già acquistato la revisione corretta, possiamo collegarli alla scheda SKR 1.3 seguendo lo stesso schema di collegamento in SPI dei TMC2130:

I TMC5160 seguono lo stesso schema di collegamento dei TMC2130 in SPI

Configurare Marlin 2.0.x

Vediamo ora come configurare il firmware Marlin 2.0.x per abilitare i TMC5160 su SKR 1.3.

Modificare Configuration.h

Qui non c’è molto da fare, assicuriamoci che sia selezionata la scheda corretta:

#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_BIGTREE_SKR_V1_3 // SKR 1.3
#endif

Infine, indichiamo quali assi utilizzano i driver TMC5160:

#define X_DRIVER_TYPE TMC5160
#define Y_DRIVER_TYPE TMC5160
#define Z_DRIVER_TYPE TMC5160
#define E0_DRIVER_TYPE TMC5160

Modificare Configuration_adv.h

In questo file potremo abilitare le varie funzioni che ci vengono messe a disposizione dai TMC5160.

In questa guida vedremo una configurazione standard in quanto alcune funzioni come ad es. il sensorless dipendono molto dalla stampante e dai driver:

#define MINIMUM_STEPPER_DIR_DELAY 20
#define MINIMUM_STEPPER_PULSE 0
#define MAXIMUM_STEPPER_RATE 400000

...

#if AXIS_IS_TMC(X)
#define X_CURRENT 1200  // (mA) corrente RMS. Moltiplicare per 1.414 per il picco.
#define X_MICROSTEPS 16 // 0..256 -> Step
#define X_RSENSE 0.075  // RSense è 0.075 sui TMC5160, non 0.11
#endif

#if AXIS_IS_TMC(Y)
#define Y_CURRENT 1200
#define Y_MICROSTEPS 16
#define Y_RSENSE 0.075
#endif

#if AXIS_IS_TMC(Z)
#define Z_CURRENT 1200
#define Z_MICROSTEPS 16
#define Z_RSENSE 0.075
#endif

#if AXIS_IS_TMC(E0)
#define E0_CURRENT 1200
#define E0_MICROSTEPS 16
#define E0_RSENSE 0.075
#endif

...

#define TMC_USE_SW_SPI // Abilita l'uso dell'SPI

...

#define STEALTHCHOP_XY // Driver in StealthChop
#define STEALTHCHOP_Z
#define STEALTHCHOP_E

...

#define MONITOR_DRIVER_STATUS // Abilita monitoraggio driver

#if ENABLED(MONITOR_DRIVER_STATUS)
#define CURRENT_STEP_DOWN 50 // [mA]
#define REPORT_CURRENT_CHANGE
#define STOP_ON_ERROR
#endif

...

#define HYBRID_THRESHOLD // Abilita modalità ibrida 

#define X_HYBRID_THRESHOLD 150 // Oltre i 150 mm/s -> SpreadCycle
#define Y_HYBRID_THRESHOLD 150
#define Z_HYBRID_THRESHOLD 150
#define E0_HYBRID_THRESHOLD 50 // Oltre i 50 mm/s -> SpreadCycle

...

#define SQUARE_WAVE_STEPPING // Migliora il segnale ai driver

...

#define TMC_DEBUG // Abilita l'uso del comando M122

Fatto ciò possiamo flashare il nuovo firmware su SKR 1.3.

Conclusioni

Se tutto è andato bene potete avviare la vostra stampante e godervi a pieno i nuovi driver TMC5160.

Se la stampante vi riporta degli errori quali DRIVER ERROR o TMC CONNECTION ERROR significa che non avete rimosso il pin CLK o non avete saldato correttamente il filo tra CLK e GND.

Fate attenzione alla RSense, che è di 0.075 e non di 0.11 come gli altri TMC.