Jump to content
Ultimaker Community of 3D Printing Experts

STEP-BY-STEP: Installation of SSS TMC2130 on UMO

Recommended Posts

Hey everyone,

I tried the new SSS drivers (TMC 2130) around a week now.

I learned a bit about how to operate them and how to use the new features.

And... finally I also learned how to blow them up :D

In this thread I want to collect information about the benefits of the new drivers and how to do install them correctly on an UM Original and similar RepRap based electronics. The other thread is used to discussions, problems, "brainstorming" and so on.



The new stepper driver TMC 2130 (IC by Trinamic, StepStick by Watterott) supports the following microsteps per full-step: 2, 4, 8, 16, 32, 64, 128 and 256. Every of those resolutions can be interpolated to 256 steps like you may already know it from the TMC 2100. The maximum current is now 1.7A per coil (2.5A peak) - on the TMC 2100 it was 1.2A/1.7A peak.

There are three exciting new features, which are called dcStep, stallGuard2 and coolStep. I will explain the benefit of those a bit later.



If you don't want to use the new features (like stallGuard2), you can run the drivers in a mode called "Standalone". Simply solder a bridge on the little pads, like on the following image:


You can then use them very similar to the TMC2100, everything is controlled via the CFG-Pins.



SPI Interface

But, what IF you want to use the features? The Pins which are used to configure the driver in the standalone mode  (with jumpers), are the same Pins which you can use for an SPI-connection. Therefore you have to connect the drivers to a microcontroller, which then sets up the driver and reads out the lost steps, the current load and so on.

To simplify things a bit I will start by using an external Arduino (instead of the one which runs the rest of the machine).

But regardless of whether you use an external microcontroller or not, you definitely must not connect the Pins to the Mainboard in the SPI-Mode, instead you have to do something like that:


The other side of the wires are connected to the Microcontroller.



Everything on the TMC2130 is stored and controlled through Registers, and there are many of them (around 20-30).

I don't want to list them all here, instead i wan't to show you an example:

There is a Register called CHOPCONF which starts at address 0x6C. In this register there is a section which is called mres (Bit 24 to 28). If you write an dual 1111 into it, the stepper will run in full-step mode, and if you write 0000 into it, the stepper runs in 256 microsteps mode.

If you are interested in the other settings, take a look at the datasheet or at my register-definition-file here.

to be continued...




Edited by Guest
  • Like 2

Share this post

Link to post
Share on other sites

@lars86 i never tried it any further, i was able to set them into the apporpiate modes using a buspirate (http://0x0001.de/tech/buspirate-und-tmc2130/) or an arduino. but at the time i got them there was no support in marlin and i didn't wanted to write a library for it (at least not alone^^). there are enough free pins on the mainboard (i used 10, 11, 12 and 13 near the DC jack for some tests). i also made some other tests, but... i never had enough time to do it all alone ;)



Share this post

Link to post
Share on other sites

@ataraxis, can you tell from looking at the Arduino library whether it would play nice with the 2560?




I looked through the Marlin references, but it didn't seem as relevant:


// @section TMC2130

 * Enable this for SilentStepStick Trinamic TMC2130 SPI-configurable stepper drivers.
 * You'll also need the TMC2130Stepper Arduino library
 * (https://github.com/teemuatlut/TMC2130Stepper).
 * To use TMC2130 stepper drivers in SPI mode connect your SPI2130 pins to
 * the hardware SPI interface on your board and define the required CS pins
 * in your `pins_MYBOARD.h` file. (e.g., RAMPS 1.4 uses AUX3 pins `X_CS_PIN 53`, `Y_CS_PIN 49`, etc.).
//#define HAVE_TMC2130


  //#define X_IS_TMC2130
  //#define X2_IS_TMC2130
  //#define Y_IS_TMC2130
  //#define Y2_IS_TMC2130
  //#define Z_IS_TMC2130
  //#define Z2_IS_TMC2130
  //#define E0_IS_TMC2130
  //#define E1_IS_TMC2130
  //#define E2_IS_TMC2130
  //#define E3_IS_TMC2130
  //#define E4_IS_TMC2130

   * Stepper driver settings

  #define R_SENSE           0.11  // R_sense resistor for SilentStepStick2130
  #define HOLD_MULTIPLIER    0.5  // Scales down the holding current from run current
  #define INTERPOLATE          1  // Interpolate X/Y/Z_MICROSTEPS to 256

  #define X_CURRENT         1000  // rms current in mA. Multiply by 1.41 for peak current.
  #define X_MICROSTEPS        16  // 0..256

  #define Y_CURRENT         1000
  #define Y_MICROSTEPS        16

  #define Z_CURRENT         1000
  #define Z_MICROSTEPS        16

  //#define X2_CURRENT      1000
  //#define X2_MICROSTEPS     16

  //#define Y2_CURRENT      1000
  //#define Y2_MICROSTEPS     16

  //#define Z2_CURRENT      1000
  //#define Z2_MICROSTEPS     16

  //#define E0_CURRENT      1000
  //#define E0_MICROSTEPS     16

  //#define E1_CURRENT      1000
  //#define E1_MICROSTEPS     16

  //#define E2_CURRENT      1000
  //#define E2_MICROSTEPS     16

  //#define E3_CURRENT      1000
  //#define E3_MICROSTEPS     16

  //#define E4_CURRENT      1000
  //#define E4_MICROSTEPS     16

   * Use Trinamic's ultra quiet stepping mode.
   * When disabled, Marlin will use spreadCycle stepping mode.

   * Let Marlin automatically control stepper current.
   * This is still an experimental feature.
   * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered,
   * then decrease current by CURRENT_STEP until temperature prewarn is cleared.
   * Adjusting starts from X/Y/Z/E_CURRENT but will not increase over AUTO_ADJUST_MAX
   * 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.
   * M906 S1 - Start adjusting current
   * M906 S0 - Stop adjusting current
   * M911 - Report stepper driver overtemperature pre-warn condition.
   * M912 - Clear stepper driver overtemperature pre-warn condition flag.

    #define CURRENT_STEP          50  // [mA]
    #define AUTO_ADJUST_MAX     1300  // [mA], 1300mA_rms = 1840mA_peak

   * The driver will switch to spreadCycle when stepper speed is over HYBRID_THRESHOLD.
   * This mode allows for faster movements at the expense of higher noise levels.
   * STEALTHCHOP needs to be enabled.
   * M913 X/Y/Z/E to live tune the setting

  #define X_HYBRID_THRESHOLD     100  // [mm/s]
  #define X2_HYBRID_THRESHOLD    100
  #define Y_HYBRID_THRESHOLD     100
  #define Y2_HYBRID_THRESHOLD    100
  #define Z_HYBRID_THRESHOLD       4
  #define Z2_HYBRID_THRESHOLD      4
  #define E0_HYBRID_THRESHOLD     30
  #define E1_HYBRID_THRESHOLD     30
  #define E2_HYBRID_THRESHOLD     30
  #define E3_HYBRID_THRESHOLD     30
  #define E4_HYBRID_THRESHOLD     30

   * Use stallGuard2 to sense an obstacle and trigger an endstop.
   * You need to place a wire from the driver's DIAG1 pin to the X/Y endstop pin.
   * If used along with STEALTHCHOP, the movement will be louder when homing. This is normal.
   * X/Y_HOMING_SENSITIVITY is used for tuning the trigger sensitivity.
   * Higher values make the system LESS sensitive.
   * Lower value make the system MORE sensitive.
   * Too low values can lead to false positives, while too high values will collide the axis without triggering.
   * It is advised to set X/Y_HOME_BUMP_MM to 0.
   * M914 X/Y to live tune the setting

    #define X_HOMING_SENSITIVITY  19
    #define Y_HOMING_SENSITIVITY  19

   * You can set your own advanced settings by filling in predefined functions.
   * A list of available functions can be found on the library github page
   * https://github.com/teemuatlut/TMC2130Stepper
   * Example:
   * #define TMC2130_ADV() { \
   *   stepperX.diag0_temp_prewarn(1); \
   *   stepperX.interpolate(0); \
   * }
  #define  TMC2130_ADV() {  }

#endif // HAVE_TMC2130


Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


Important Information

Terms of Use