Skip to content
TwinkieXLII edited this page Apr 2, 2022 · 2 revisions

UART on TMC Drivers for MKS Robin Pro Motherboard

This process works for both Standard and Pro versions of the Artist-D, you just need to select the correct drivers for your machine in firmware. Why UART? You can run the drivers silently and switch between stealthchop (silent) and spreadcycle (more torque), on demand or automatically based on the speed of an axis. You can also tune the current of the drivers using gcode/LCD rather than using a screwdriver to rotate the pot on the driver itself.

Hardware

Do not worry that your board does not look like this, it is the same jumper setting for Robin Pro V1.0 (in the Arist-D STD/PRO versions) artist-d-uart.jpg This is very straightforward, remove all the jumpers beneath the TMC driver. Place just one single jumper as displayed and put the TMC driver back in place (orientation matters, do not put it back in the incorrect way). Artist-D UART Config Artist-D Standard : do not adjust the jumpers underneath the Extruder drivers as they are not TMC and cannot be altered to use UART). You can optionally purchase two more TMC drivers (e.g. 2208/2209) and replace the extruder drivers also. Artist-D Pro : it is advisable that you do enable UART on the extruders (so you can adjust current via gcode). So do these jumper settings underneath all the drivers on the board. Artist-D UART Pro Config Complete

Firmware:

If you are using the Twinkie Version of the firmware most of these settings have already been configured, you'll only need to change the DRIVER_TYPE from standalone to the appropriate driver TMC2209.

This is also straightforward but can be a hassle if you're not used to compiling Marlin from source (use vscode with platformIO, google how to set it up for Marlin). These are the changes needed (to community build).

Configuration.h

#define X_DRIVER_TYPE TMC2208 //TMC2209 // (for pro)
#define Y_DRIVER_TYPE TMC2208 //TMC2209 // (for pro)
#define Z_DRIVER_TYPE TMC2208 //TMC2209 // (for pro)
#define X2_DRIVER_TYPE TMC2208 //TMC2209 // (for pro)
//#define Y2_DRIVER_TYPE A4988
//#define Z2_DRIVER_TYPE A4988
//#define Z3_DRIVER_TYPE A4988
//#define Z4_DRIVER_TYPE A4988
#define E0_DRIVER_TYPE TMC2209 // (for pro)
#define E1_DRIVER_TYPE TMC2209 // (for pro)
//#define E2_DRIVER_TYPE A4988
//#define E3_DRIVER_TYPE A4988
//#define E4_DRIVER_TYPE A4988
//#define E5_DRIVER_TYPE A4988
//#define E6_DRIVER_TYPE A4988
//#define E7_DRIVER_TYPE A4988

Switch the driver types for any and all of the drivers that you have enabled UART on with the jumpers Artist-D Standard: Change 'TMC2208_STANDALONE' to 'TMC2208'. Artist-D Pro: Change 'TMC2209_STANDALONE' to 'TMC2209'.

Configuration_adv.h

We are able to control the drivers with UART without modifying this file but it is recommended to set some appropriate initial values (which can be adjusted on the LCD). Scroll down to

// @section tmc_smart
#if AXIS_IS_TMC(X)
#define X_CURRENT 800 // (mA) RMS current. Multiply by 1.414 for peak
current.
#define X_CURRENT_HOME X_CURRENT // (mA) RMS current for sensorless
homing
#define X_MICROSTEPS 16 // 0..256
#define X_RSENSE 0.11
#define X_CHAIN_POS -1 // -1..0: Not chained. 1: MCU MOSI connected. 2:
Next in chain, ...
//#define X_INTERPOLATE true // Enable to override 'INTERPOLATE' for the X
axis
#endif

Make sure your settings for each TMC axis looks like above, a sensible starting value for X, X2 and Y is about 800. I upped mine to 850 later with gcode. Z uses two motors on one driver so ought to be higher, try 1200.

These values can be altered via the LCD later. Next: Find these lines:

#define STEALTHCHOP_XY
#define STEALTHCHOP_Z
#define STEALTHCHOP_E

Switch the last line to read:

#define STEALTHCHOP_XY
#define STEALTHCHOP_Z
//#define STEALTHCHOP_E

We are commenting out this line as we do not want stealthchop mode on the extruders (if TMC are installed). This will instead switch it to spread_cycle mode which has more torque for extruding. Next: Find this line:

#define CHOPPER_TIMING CHOPPER_DEFAULT_12V
Switch it to:
#define CHOPPER_TIMING CHOPPER_DEFAULT_24V
Optional (advise against):
#define HYBRID_THRESHOLD //Remove the comments to enable this feature

You can enable this feature and adjust it with gcode. When the printer reaches a certain speed on that axis, it will switch driver mode. The intent for this feature is to allow for greater printing speeds. The Artist printer is not fast enough printer to benefit though.

Pins.h

Marlin\src\pins\stm32f1\pins_MKS_ROBIN_PRO.h -> Add an additonal line to the software serial section: #define TMC_BAUD_RATE 19200

Clone this wiki locally