TMC2209 Drivers BTT

/ / / TMC2209 Drivers BTT
3D Printer Parts | Drivers

These guides have been written for anyone stuggling with driver selection.
I hope that you will like them.
Leave a comment if you want to add anything into the article.

BigTreeTech TMC2209 drivers

These drivers do not need any modifications to between DIR/STEP and UART mode. These drivers are better than TMC2208 and TMC2130 - they offer higher current. Transistors on the board have lower resistance (0.2 ohm insted of 0.3 ohm) which leads to smaller losses creating smaller heat. So no more problems with overheating.

Technical specifications

Microstepping: up to 256 microsteps per step
Control type: STEP/DIR + SPI
Logic voltage: 3.3/5V
Input voltage: 4.75-28V
Output RMS current: 2A
Output peak current: 2.8A 
SpreadCycle: highly dynamic motor control chopper
StealthChop2: ultra quiet technology
MicroPlyer: microstep control
StallGuard4: locked-motor test
CoolStep: current dynamic control

STEP/DIR mode

This is a standard mode without FW UART configuration.
Microstepping, driver current and other features have to be set manually with pins or trimmer (potentiometer). 

This driver does not need to solder anything to switch between DIR/STEP and UART modes.

If you really want to use the DIR/STEP mode without the advantages of UART communication, you have to use this formula to calculate desired current.
Rotate the potentiometer (trimmer) clockwise to reduce the Vref voltage – reduce the current.
Rotate the potentiometer (trimmer) counterclockwise to increase the Vref voltage – increase the current.

Stepper driver configuration in a DIR/STEP mode is controlled by pins.
You have two options – LOW and HIGH.
This means that if you want to set for example microstepping, you have to open picture below with the pin configuration and bring a LOW or HIGH signal to each pin.
LOW means GND – common ground
HIGH means VCC – logic voltage (usually 3.3V or 5V)

UART mode

UART mode offers setting up driver parameters via FW.
You can easily change microstepping, current and many more parameters with acommand send via Octoprint / Pronterface (and PC) / LCD on the printer.

This is the best thing you can do.
I highly recommend buying a new motherboard too, such as a 32-bit BigTreeTech SKR 1.3.
It was designed as a user friendly board where you can easily use most of the stepper driver types just with using jumpers on the board and placing them on another positions.

However UART configuration in Marlin for some older boards such as Trigorilla is a little bit tricky – you will need to modify the pins a little bit, use some more wires and define UART pins in your FW.
Read this guide CLICK HERE

STEP/DIR mode Marlin configuration

Make sure that you have modified your Marlin configuration files according to BigTreeTech instructions before using the 3D printer after the upgrade.

Open Configuration.h file in your Marlin FW folder and find a “Stepper Drivers” section.
Define all stepper drivers you need, for example:

X_DRIVER_TYPE, Y_DRIVER_TYPE, Z_DRIVER_TYPE, E_DRIVER_TYP

And select TMC2130_STANDALONE, so each stepper driver definition will look like this:

#define X_DRIVER_TYPE TMC2209_STANDALONE

The picture on the right is a pin definition of a BTT SKR1.3 board.
You can find it in:
Marlin – src – pins – board type – board

Do not forget to remove this DIAG pin if you are not going to use it.
It can be used for sensorless homing, but without using it, you have to cut it out, it will not work otherwise.

UART mode Marlin configuration

Make sure that you have modified your Marlin configuration files according to BigTreeTech instructions before using the 3D printer after the upgrade.

Open Configuration.h file in your Marlin FW folder and find a “Stepper Drivers” section.
Define all stepper drivers you need, for example:

X_DRIVER_TYPE, Y_DRIVER_TYPE, Z_DRIVER_TYPE, E_DRIVER_TYPE

And select TMC2209, so each stepper driver definition will look like this:

#define X_DRIVER_TYPE TMC2209

Do not forget to remove this DIAG pin if you are not going to use it.
It can be used for sensorless homing, but without using it, you have to cut it out, it will not work otherwise.

Open your configuration_adv.h file in Marlin folder and check all of these settings.
Configuration depends on your USE CASE.

Similar Posts

19 Comments

  1. Dobrý den, jaké jsou tedy správné nebo ideální nastavení vref na driverech TMC2209 pro osy X,Y,Z , kde motory jsou větší a extruder, který je menší?
    Děkuji za Vaši odpověď

  2. Zdravím. Rád bych se zeptal, jestli se tu někomu podařilo zprovoznit driver TMC2209 v3.1 od FYSETCu na desce RAMPS 1.4 s FW Marlin bugfix-1.1.x v UART módu? Nedaří se mi to. Driver stále chodí v klasickém DIR/STEP režimu.

    Věnoval jsem tomu dost času, ale bohužel, všechny návody a rady na netu, se týkají verze driveru nejvýše v3.0. Tam je třeba pro zapnutí UARTu pájet propojky. Zde údajně žádné pájení není třeba. Zespodu na driveru sice jsou nějaké plošky, které by se daly propojit, ale na úplně jiném místě, než kdekoliv v jiných návodech a po pravdě si nechci takovým “hokus-pokus zkoušením” zničit driver, když se na internetu nikde nepíše o tom, že by pro v3.1 bylo nutno cokoliv pájet pro zapnutí UART režimu.

    Další věc – tento driver má samostatné piny na TX i RX komunikaci. Drtivá většina návodů je na drivery TMC2208, kde se propojení a komunikace s RAMPS deskou řeší Y propojkou přes 1K resistor s jedním pinem na driveru a dvěma na RAMPSu.

    Já jsem použil dva samostatné propojovací kabely. Na kabel pro TX jsem napájel 1K resistor a propojil jsem piny RX a TX na driveru s odpovídajícími piny na RAMPSu. Jsem si téměř jistý, že úpravy v souborech configuration.h, configuration_adv.h a také pins_RAMPS.h jsem důkladně prošel a nastavil správně.

    Testoval jsem zatím pouze osu X. Marlin s příkazem M122 však stále hlásí: Driver registers: X = 0x00:00:00:00 ať dělám co dělám 🙁

    Další věc, kde by mohl být problém – použitá knihovna driverů, když kompiluji Marlina pro TMC drivery v Arduino IDE, je “TMC2208Stepper”, zatímco na webu https://marlinfw.org/docs/hardware/tmc_drivers.html doporučují pro verzi 1.1.9 použít knihovnu “TMCStepper”. Jenomže s touhle to nejde zkompilovat, háže to chyby na neexistujiící knihovny atd. A Marlina ve verzi 2.0.x na svůj RAMPS 1.4 s Arduino Mega256 prostě nedostanu 🙁

    Budu rád za každou radu, ale myslím si, že problém je na více frontách…

  3. Ted jsem ješte přišel na to že i když vypnu motory, přes tiskárnu nebo v pronterface, tak osa x zůstane stále zaplá a když přes pronterface hýbu osama tak tiskárna jede jenom nahoru, netuším proč, vůbec nejde žádný pohyb dolu 🙂
    Napadá vás něco ? 🙂

  4. Dobrý den, mám problém se kterým si nevím rady. Vyměnil jsem na původní trigorilla desce, na tiskárně Anycubic Kossel linear plus, drivery za TMC2209 . po výmene driveru mi přestali reagovat endstopy, při přejíždění do home se prostě tiskárna zasekne na prvním endstopu a zamrzne. Snažím se tedy přehrát systém na marlin se kterým jsem ji už kupoval. Problém je v tom ze nějak nevím co mam přepsat ve vašem systému na linear plus. Děkuji za odpoved

      1. Zdravím, takže motory jedou ve správném směru , systém je nahraný. Tiskárna při homování naráží do enstopu a zasekne se. Problém zřejmě bude v tom ohnutí některých pinu na driverech, jak píšete. Mohl by jsem se zeptat který z těch pinu mam ohnout? Máte to na stránkách ale moc si nerozumím z angličtinou, tak by jsem to nerad zkazil 🙂

          1. Mrknout se na fotky, osobne bych je odpajel, nebo ohnul, pro pripad upgradu desky na jinou.

      2. Takže, chod motoru je prehozený, nový systém nahrány, piny jsou ohlé. bohužel i přes to mi tiskárna narazí do endstopu a chce jet stále dal až začnou přeskakovat řemeny. Nemáte nejaký nápad kde by mohla být chyba?

        1. Netusim, co presne jsi delal, nebo nedelal.
          Kazdopadne nejtypictejsi problem je, spatne zapojeni end stopu, idealne ozkouset multimetrem a zkontrolovat zapojeni na piny na desce.

          1. No…. Jenom jsem přehodil ovladače motorů, originál za TMC2209 v1.2. Hned po výmeně mi začali jet obráceně tak jsem přehodil kabely. Potom motory začali jet normálně ale naráží to do endstopu, tak ted jsem přehrál systém udělal piny ale stále to naráží do endstopu.

          2. Ted jsem ješte přišel na to že i když vypnu motory, přes tiskárnu nebo v pronterface, tak osa x zůstane stále zaplá a když přes pronterface hýbu osama tak tiskárna jede jenom nahoru, netuším proč, vůbec nejde žádný pohyb dolu 🙂
            Napadá vás něco ? 🙂

  5. Dobrý večer, pane Pomykal, mám Anycubic MegaX s deskou Trigorilla v1.3 a vyměnil jsem na ni drivery TMC2209 v UART módu. Nahrál Marlin z Thingivers pro tyto nové drivery. Nic dalšího jsem na desce nepřipojoval a nepřepojoval. Nastavil Vref na 1.15V a 1.25V u extruderu pomocí trimmeru. Tiskárna jede krásně potichu, tisk je dobrý. Jen mě zaráží, že jsem nedělal polovinu věcí co uvádíte a vše funguje. Nejedou drivery v nějakém nouzovém módu nebo něco podobného ?

    1. Zdravím,
      TMC2209 umí STEP/DIR i UART mód.
      Ten FW (Marlin), co jste tam nahrál, řeší vlastně jedinou věc a to, že prohodí logiku na DIR (směrovém) pinu, protože TMC drivery používají oproti standardním driverům opačnou logiku.
      Neboli – pokud by zůstal původní FW, motory by se otáčely opačným směrem.

      Smysl UART módu je, upravovat parametry driveru, například proud, přes FW tiskárny a nemuset připojovat multimetr, otáčet trimmerem apod.
      Bez připojení další kabeláže viz. článek a nastavením UART pinů ve FW nebude UART fungovat.

      1. Děkuji za informace. Takže to takhle mohu nechat ? Je nějaká další výhoda, když je zapojím v UART módů, kromě toho nastavování přes Marlin ? Potenciometr s multimetrem mi nevadí 🙂 Děkuji

  6. Dobrý den pane Pomykal, mám na Vás prosbu ohledně krokových motorů na 3D tiskárně Anycubic Kossel Linear Plus, chci vyměnit drivery za jiné a na krokovém motoru nemám žádné typové označení a nevím jak vypočítat VRef, když neznám proud pro daný motor a nechce se mi střílet od boku, abych nepoškodil desku nebo driver. Předem děkuji za odpověď, s pozdravem pěkného dne Klein Rostislav.

    1. Zdravím,
      chtělo by to minimálně fotku driveru.
      Osobně bych doporučil, zkusit vygooglit daný driver a najít si k němu dokumentaci.

Leave a Reply

Your email address will not be published. Required fields are marked *