Table of Contents

This guide will only work on the 1.1.9 Marlin firmware for the JG A5, which is in beta and may have extra bugs.

A 1.1.8 version may come out if someone else is willing to do one on the wiki however I don't use 1.1.8

Silent Stepper Driver TMC2208

tmc2208_01.jpg tmc2208_06.jpg

















Author: AETEK
Additional information: Red_M

The changes shown here require knowledge in the field of Arduino IDE, Marlin and electrical engineering and can overwhelm normal users. Also, I would like to point out possible dangers that exist in certain interventions. All adjustments have been checked for function.

Difficulty: Advanced

The advantages of the TMC2208 or why someone would want to install these
The TMC2208 is a German development. This tutorial is about making the A5 quieter. It is not my intention to explain all possible options of the TMC2208. Like me, most users will buy these stepper drivers just for one reason: to have silence. I focus on installing and configuring these drivers.
Why use only two TMC2208?
The most noise comes from the Y-axis and the X-axis. Because the Z-axis rarely moves when printing you do not hear much noise. The TMC2208 can deliver less power than the standard A4988 driver. One Z-axis driver needs to power two motors at the same time. The avaliable motor current is divided between both motors.
You rarely hear the extruder motor. If you hear it, then at the retract. The extruder motor, however, requires a lot of torque to press the filament through the nozzle. Much torque means a lot of electric current. This is exactly what the TMC2208 can not do.
For these reasons I used the TMC2208 only for the X and Y axes.
The TMC2208 stepper driver includes the function of TL-Smoothers. So it does not make sense to install this extension when using the TMC2208.

→ I have written a separate article on how to reduce the noise of the extruder motor.

Note: 
If you opt for this optimization, then always do both the hardware, 
as well as the software conversion. 

Required Electrical Parts

* Active Cooling Fan Solution
I recommend using active cooling for the MKS GEN_L mainboard. I have a 80mm 24V fan with an 3D-printed adapter from Thingiverse (only top part) connected directly to the power supply via a Zener diode. The motherboard fan is so quiet that I do not hear it. That's why it runs as long as the A5 is powered. I will not describe the cooling system in this manual. If questions arise I can be contacted via the forum.

Installation

Please first pull the A5 mains plug

Before you install the TMC2208 module into the MKS GEN_L motherboard you should remove the pin named “NC” for safety reasons. “NC” means “Not Connected”. I do not know if this contact is connected to the driver board. I have removed this “NC” pin therefore. So one experiences no unpleasant surprises.
tmc2208_02.jpg

If you upgrade from the factory drivers (A4988) then leave the MS1, MS2 and MS3 jumpers (under the driver moduls) plugged in as it is.

When inserting the modules into the sockets, it must be noted that the mounting direction is different as with the A4988 driver (see photos).

How to set the stepper motor current

tmc2208_05.jpg


Get the GND (minus) from the MKS GEN_L Mainboard supply input (black wire).
tmc2208_07.jpg

IMPORTANT POINTS:


The voltages below are suggested for TMC2XXX stepper drivers (this includes the TMC2208) only:

Axis = Vref
X = 0.85V
Y = 1.25V
Z = 0.85V
E = 1.00V


This concludes work on the A5 hardware for this project. In order for the drivers to work, the Marlin firmware has to be adjusted.


Customize the Marlin firmware

Use TMC2208 for X & Y Axis, the rest stay stock drivers A4988.
The TMC2208 needs a reverse drive on the DIR signal like the A4988.
This can be adjusted in the firmware.
Otherwise the motors will run in the wrong direction.
So we need to change the settings for the X & Y Axis.

In the Arduino IDE open the A5 Custom Community Firmware (see article here in WIKI).

The following adjustments are made in the “Configuration.h” file:

Replace this original code block…

#define INVERT_X_DIR true
#define INVERT_Y_DIR false

…with this customized code:

#define INVERT_X_DIR false 
#define INVERT_Y_DIR true 

Replace this original code block…

#define X_DRIVER_TYPE  A4988
#define Y_DRIVER_TYPE  A4988

…with this customized code:

#define X_DRIVER_TYPE  TMC2208
#define Y_DRIVER_TYPE  TMC2208

Make sure you install the TMC2208 Arduino library or you will get compiler errors about missing files. If you want to do the extruder axis as well, make sure you invert the INVERT_E_DIR true/false as well as replace the E_DRIVER_TYPE with TMC2130 so that your firmware will use this driver properly.

The following adjustments are made in the “Configuration_adv.h” file:
Replace this original code block…

//#define MONITOR_DRIVER_STATUS

…with this customized code:

#define MONITOR_DRIVER_STATUS

Then upload the changed firmware to the A5 (instructions here in the WIKI).
The 3D printer can now be reassembled.

Check The Proper Function

  1. Insert mains plug.
  2. Power on the printer
  3. Use the Touch Display (Move) and check that the X and Y axes are moving in the right direction.

Make sure your X and Y (and Z if you also have the extra driver installed and wired) are going to correct way otherwise you'll need to make sure you did all the changes to the firmware.