[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.
Indice
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:

Nel mio caso il risultato è stato il seguente:
CLK portato a GND Pin CLK rimosso Lato GND
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:

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.
Awesome write up thanks, I hope you can do one for the BBT skr pro 1.1
Hi. Very good tutorial, but unfortunately pin CLK has to be removed (soldered out, or bent over 90°) so it is not connected to the board any way also for BTT TMC5160 version 1.2. Not needed any other modification, just remove it.