Jump to content

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

Recommended Posts

Posted (edited) · STEP-BY-STEP: Installation of SSS TMC2130 on UMO

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
Link to post
Share on other sites

  • 5 months later...
  • 1 year later...
Posted (edited) · STEP-BY-STEP: Installation of SSS TMC2130 on UMO

There are 2 versions of the SSSDriver available depending upon logic voltage; 3-5v or 5v.  Which is appropriate for UMO replacing A4988 chips?


Edited by Guest
  • Link to post
    Share on other sites

    • 1 month later...
    Posted · STEP-BY-STEP: Installation of SSS TMC2130 on UMO

    @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 ;)



  • Link to post
    Share on other sites

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

    @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
    #if ENABLED(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.
      #define STEALTHCHOP
       * 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 HYBRID_THRESHOLD
      #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 SENSORLESS_HOMING
        #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


  • 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
    • Our picks

      • S-Line Firmware 8.3.0 was released Nov. 20th on the "Latest" firmware branch.
        (Sorry, was out of office when this released)

        This update is for...
        All UltiMaker S series  
        New features
        Temperature status. During print preparation, the temperatures of the print cores and build plate will be shown on the display. This gives a better indication of the progress and remaining wait time. Save log files in paused state. It is now possible to save the printer's log files to USB if the currently active print job is paused. Previously, the Dump logs to USB option was only enabled if the printer was in idle state. Confirm print removal via Digital Factory. If the printer is connected to the Digital Factory, it is now possible to confirm the removal of a previous print job via the Digital Factory interface. This is useful in situations where the build plate is clear, but the operator forgot to select Confirm removal on the printer’s display. Visit this page for more information about this feature.
          • Like
        • 0 replies
      • Ultimaker Cura 5.6 stable released
        Cura now supports Method series printers!
        A year after the merger of Ultimaker and MakerBotQQ, we have unlocked the ability for users of our Method series printers to slice files using UltiMaker Cura. As of this release, users can find profiles for our Method and Method XL printers, as well as material profiles for ABS-R, ABS-CF, and RapidRinse. Meaning it’s now possible to use either Cura or the existing cloud-slicing software CloudPrint when printing with these printers or materials
        • 48 replies
    • Create New...