Driver TMC2130

Když jsem poprvé narazil na drivery TMC2130 a zjistil výhody, které přináší, rozhodl jsem se, že je musím na nové 3D tiskárně vyzkoušet. Hlavní vlastnost, která mě zaujala je jejich extrémně tichý chod. Tedy tichý chod motorů, které řídí. Další užitečností je, že základní deska tiskárny s drivery komunikuje pomocí SPI sběrnice a může v reálném čase upravovat proud motorů. V praxi to znamená, že při tisku u motoru, který je v pohybu, zvýší proud vinutí, při klidovém stavu ho sníží například na třetinu. To znamená úsporu energie a pochopitelně také menší zahřívání jak motorů, tak driveru samotných. Poslední funkcí, kterou ovšem nemám ještě vyzkoušenou, je možnost připojení diagnostických výstupů k základní desce tiskárny. Tyto výstupy umožňují využít drivery místo koncových spínačů nebo dokážou detekovat vynechání kroku při pohybu motoru.

Většina levnějších tiskáren je dodávána se základními drivery krokových motorů A4988. Ne jinak to bylo i u mé první 3D tiskárny. Jejich hlavní výhodou je nízká cena a jednoduchá instalace, případně výměna. Také firmware pro 3D tiskárny Marlin, který používám, defaultně počítá s těmito drivery. Naštěstí ale není problém v nastavení zvolit právě drivery TMC2130.

Driver TMC2130

Driver A4988

Než se ale podíváme na nastavení firmware tiskárny, ukážeme si, jak drivery zapojit. Pokud jde o "slot" driverů, TMC2130 stačí zasunout namísto těch původních. Jak je vidět na první fotografii, 4 piny nám ale "trčí" na druhou stranu. Jedná se o 3 piny pro SPI komunikaci a 1 pro volbu driveru ("CS" = chip select). Jak už mnohé jistě napadlo, SPI komunikace se zapojuje paralelně. Pokud TMC2130 používáme například pouze pro osu X a Y (osy nejčastěji v pohybu), je možné toto zapojení realizovat pouze pomocí kabelů. Stejně tak jsem to udělal, když jsem drivery poprvé testoval.

Po prvotních testech driverů, když jsem zjistil, že to není zase taková věda, jsem se rozhodl použít TMC2130 pro všechny osy tiskárny LUFREE 3D printer. Zapojit ovšem paralelně všechny kabely pro SPI komunikaci jednak není jednoduché a také mi to nepřišlo jako příliš robustní a bezpečné řešení. Rozhodl jsem se proto navrhnout jednoduchou DPS pro propojení všech driverů a následné vyvedení kabely pouze jedno SPI a CS pro jednotlivé osy. Nutno podotknout, že DPS je navržena přímo pro základní desku MKS Gen L V1.0, tudíž nemusí pasovat na všechny.

Zapojení driverů TMC2130 pomocí kabelů

Schéma zapojení DPS pro propojení TMC2130 driverů

Propojení driverů TMC2130 pomocí DPS

DPS pro propojení TMC2130 driverů

Již tedy víme, jak zapojit kabeláž na drivery. Podívejme se nyní na druhé konce kabelů. SPI se na základní desce nachází zpravidla na AUX-3, stejně tak CS pro drivery os X a Y, osa Z a extrudery má CS na AUX-2. Pokud si nejste jisti, jaké piny přesně použít, budete se muset podívat přímo do firmware, případně na zapojení použité desky.

Screenshot firmware Marlin - záložka "pins_RAMPS.h"

Dle použité základní desky vybereme adekvátní záložku "pins", kde je již možné nalézt příslušné CS piny pro připojení driverů. V případě MKS Gen L V1.0 jsou následující:

  • X - D53 (AUX-3)
  • Y - D49 (AUX-3)
  • Z - D40 (AUX-2)
  • E - D42 (AUX-2)

Zapojení SPI pak vidíme přímo v dokumentaci k použité základní desce. V případě MKS Gen L V1.0 se nachází na AUX-3:

  • MOSI - D51
  • MISO - D50
  • SCK - D52

Pinout základní desky (zdroj: stránka produktu)

Tím máme vyřešené kompletní zapojení driverů TMC2130. Nyní je již čas upravit firmware tiskárny tak, aby s drivery správně komunikoval. Než začneme, nutno podotknout, že nastavení jsem prováděl ve verzi "Marlin-1.1.x", tudíž v jiných verzích se může lišit.

Na záložce "Configuration_adv.h" vyhledejte "TMC2130" a tím se dostanete na začátek definice všech parametrů řízení driverů.

V prvé řadě je třeba odkomentovat "//#define HAVE_TMC2130" odstraněním "//", čímž firmware řekneme, že tyto drivery používáme:

#define HAVE_TMC2130

Následně odkomentujeme části programu definující, pro jaké osy je TMC2130 použit. V mém případě jsou to osy X, Y, Z a E0:

#define X_IS_TMC2130

#define Y_IS_TMC2130

#define Z_IS_TMC2130

#define E0_IS_TMC2130

V následujícím bloku již nastavujeme parametry jednotlivých driverů. Pro svou tiskárnu jsem upravil následující:

HOLD_MULTIPLIER udává snížení proudu motoru v klidovém stavu, tedy ve stavu, kdy není v pohybu a protékající proud má za úkol motor pouze držet na místě. Já hodnotu upravil z 0.5 na 0,33, tedy z poloviny na třetinu.

Proudy pro jednotlivé osy jsem nechal defaultních 800 mA (#define X_CURRENT 800, stejně tak Y a Z). Pro extruder jsem snížil proud z 800 mA na 500 mA (#define E0_CURRENT 500).

Ačkoliv by se mohlo zdát, že máme vše nastavené, a v mnoha případech to tak možná bude, může se stát, že se tiskárna začne chovat "podivně". V mém případě se posun osy X zdvojnásobil a bylo nutné upravit počet kroků na milimetr z:

#define DEFAULT_AXIS_STEPS_PER_UNIT { 100, 100, 400, 425 }

na:

#define DEFAULT_AXIS_STEPS_PER_UNIT { 50, 100, 400, 425 }

Na první pohled byl problém vyřešen, nicméně další komplikace nastala při samotném tisku. Po vytištění několika vrstev se tiskárna "zbláznila" a posun v některých osách začal být víceméně náhodný. Tisk kostky 10*10*10 mm pak vypadal následovně.

Nepovedený výtisk

Výtisk po další úpravě firmware

Bohužel jsem na žádném českém ani zahraničním webu nenašel postup, který by tento problém řešil. Nejprve jsem se domníval, že je chyba v samotném nastavení driverů, případně se někde v zapojení nachází "studeňák". Když se nic z toho nepotvrdilo, zamyslel jsem se nad postupem tisku samotného. K problému došlo vždy přibližně po 3 vytištěných vrstvách. Sice se na této nové tiskárně prozatím nenachází ventilátor pro chlazení výtisku, ale z mé původní tiskárny jsem věděl, že se většinou spouští právě po prvních 3 vrstvách (reálně se nastavuje ve sliceru). Bylo na čase se vrhnout do diskusních fór. Po dlouhém pročítání jsem zjistil, že nejsem první, kdo se s tímto problémem potýká a nakonec i to, že je opravdu způsoben ventilátorem pro chlazení výtisku. A to i v případě, že se na tiskárně žádný nenachází. A také jsem našel i řešení. Vzhledem k tomu, že jak ventilátor, tak drivery používají hardware PWM, je potřeba upravit i nastavení chlazení výtisku.

Aby drivery fungovaly správně, je třeba odkomentovat část kódu v "Configuration.h". Konkrétně:

#define FAN_SOFT_PWM

Tato úprava sice není přímo určena k řešení problému s TMC2130, ale řeší ho. Také se vyřešil problém s dvojnásobným posuvem v ose X, nezapomeňte proto mít nastavený správný počet kroků na milimetr.

Tím jsme provedli kompletní zapojení a nastavení driverů TMC2130. Jak jsem psal v úvodu, jednou z vlastností driverů je velice tichý chod motorů. Ukázalo se, že to může být i nevýhoda - byl jsem zvyklý, že tiskárnu slyším při tisku a tedy i přesně vím, kdy tisk skončil. S drivery TMC2130 téměř není slyšitelný rozdíl mezi klidovým stavem a tiskem. Samozřejmě to je nadsázka - kdo TMC2130 zkusí, již nechce žádné jiné.