Upgrading your stock A4988 drivers to TMC2208 will bring you comfort and the only thing you will hear will be the fans.
You do not need to buy SKR, you can use original Trigorilla board with TMC drivers and UART mode
You can use TMC2208 in a standalone mode (DIY in this article), but I do not recommend it.
It needs to set V ref via potentiometer on each driver and some more modifications.
The best way how to run more advanced drivers such as TMC2208, TMC2209… is UART mode.
UART mode allows you to configure microstepping, current and other parameters via FW on your LCD, via USB and PronterFace or via Octoprint.
TMC drivers need one more thing and that is an active cooling. You will get serious layer shift without it. These advanced drivers will lower output current if they are really hot and could overheat.
This is what happens without active cooling on.
1. Order BTT TMC2208/2209 UART drivers
You have three options:
TMC2209 with UART
TMC2208 with UART
TMC2208 DIY (without UART pads soldered)
Please order TMC2209 or TMC2208 UART, do not buy DIY version.
Also TMC2209 are better, they do not need so much cooling and can provide larger current.
I use 3x TMC2208 for X, Y, Z and 1x TMC2209 for E (I’ve already had 2208, so there was no reason to buy new set)
Do not buy more expensive drivers such as TMC5160, you do not need them.
Also do not buy Fysetc drivers, my configuration files will not work with them, they use another pins and configuration for UART mode.
2. Order 5015 radial fan for driver active cooling
Click on the picture and order a good quality 12V 5015 radial fan with dual ball bearing for the cooling tunnel.
3. Print a cooling tunnel
Click on the picture, download and print the cooling tunnel.
4. Modify TMC2208 DIY drivers
Skip this step if you have UART version!!!
As you can find in a manual: TMC2208-V3.0 manual.pdf there are two possible options for a UART pin.
If you order UART versions, two pads allowing UART mode are already soldered and you do not have to do anything.
If you have a DIY version (standalone mode) just solder these 3 pads together.
You can see in this picture which pin will be activated for UART communication with soldering 2 different J2 pads.
You can find a lot of posts on the internet saying that you need to solder all 3 pads, but that is a nonsense.
You just need to solder two pads and it is up to you which two, the only difference is what pin you will use for UART connection.
5. Modify TMC2208/2209 UART drivers
The only modification you should do is cutting out these 3 pins, or bending them heading outside.
6. Solder pins/cables on servo pins
Next step is soldering standard pins on servo ports.
You will only need 4 pins, but I reccomend using 5 pins.
We will use servo ports D4, D5, D6, D11, D12 for UART communication.
As you can see on the driver on the left, you can bend those 3 pins instead of cutting them off.
Solder 5 pins on D4, D5, D6, D11, D12 servo position as you can see in the red rectangle on the right side of the picure.
!!!Two servo port options!!!
Please be advised, that there are two different Trigorilla servo port layouts.
D4, D5, D6, D11, D12
D11, D4, D6, D5, D12
7. Driver installation
I recommend starting with stock drivers and only 1 TMC driver, it is better to figure out how to set it up and continue with other drivers.
Insert TMC2208/2209 X tower stepper – stepper_a into the board (with 3-4 stock drivers for Y, Z, E) and use a cable and connect the driver between UART pin on your driver and D4 pin on your Trigorilla board
Please check your UART pin, it depends on J2 pads and how they are soldered together.
This diagram works with BigTreeTech TMC2208/TMC2209 UART drivers.
8. Download printer.cfg for TMC drivers
If you are not sure what you are doing, download this printer.cfg file for TMC drivers and Trigorilla board:
Please note that the only thing you need to do use TMC2209 instead of TMC2209 is renaming each driver tmc section:
From [tmc2208 stepper_a] to [tmc2209 stepper_a]
9. FW modifications in printer.cfg
We will start with a stepper_a driver (X tower motor).
This is a standard A4988 stock driver Klipper configuration:
[stepper_a] step_pin: ar54 dir_pin: !ar55 enable_pin: !ar38 step_distance: .0125 endstop_pin: ^ar2 homing_speed: 10 # position_endstop: 295.6 # arm_length: 271.50
For UART mode you have to add UART section.
All necessary settings can be modified here.
The most important setting at this moment is uart_pin, in this case ar4 = D4 on Trigorilla board
If you want to use TMC2209 instead of TMC2208, just rename tmc2208 to tmc2209.
[tmc2208 stepper_a] uart_pin: ar4 microsteps:16 run_current: .8 hold_current: .4 stealthchop_threshold: 250
This is a complete TMC2208 UART stepper_a configuration section.
If you are wondering why position_endstop and arm_length are commented with #, it is because values are stored in save_config section after delta calibration.
The important thing is to change dir_pin logic from !ar55 to ar55, because TMC drivers use direction pin the other way.
[stepper_a] step_pin: ar54 dir_pin: ar55 enable_pin: !ar38 step_distance: .0125 endstop_pin: ^ar2 homing_speed: 10 # position_endstop: 295.6 # arm_length: 271.50 [tmc2208 stepper_a] uart_pin: ar4 microsteps:16 run_current: .8 hold_current: .4 stealthchop_threshold: 250
After successfull firmware upload via SFTP / OctoKlipper Configuration modification you should see no error in Terminal.
10. Install all drivers
This is my configuration:
X, Y, Z TMC2208 and E TMC2209.
Do the same modifications for all drivers:
stepper_a, stepper_b, stepper_c, extruder
You can use this printer.cfg file:
Trigorilla and UART TMC2208 Drivers
11. Install active cooling
Install active cooling tunnel fith a fan and insert the fan connector into FAN1 – ar7 connector on your board
I did not print the cooling tunnel before this modifications, so I was not able to print without active cooling.
So I applied some “slav science” or also “ghetto solution” and used somedouble sided tape and a 4010 fan.It has been working without any problem for about 8 months.
12. Driver cooling fan FW modifications
Code below controls the driver cooling fan (controller_fan).
This fan is “connected” to extruder – extruder starts heating up, fan start 0.2 second after that at 60% speed.
[controller_fan my_controller_fan] pin: ar7 max_power: 0.6 kick_start_time: 0.2 idle_timeout: 5 heater: extruder
I have this code under the heater_fan section like this: