TMC2209V3.1 + TrigorillaV0.0.2 + klipper

Basic Information:

Describe your issue:

Hello everyone,

for the past year, I have succesfully used an Anycubic Mega X with the TMC2209 as a replacement for the stock drivers. This replacement was straightforward and I got all five steppers working in standalone mode out of the box.

[stepper_x]
step_pin: PF0
dir_pin: PF1
enable_pin: !PD7
microsteps: 16
rotation_distance: 40
endstop_pin: ^!PE5
position_min: 0
position_endstop: 0
position_max: 300
homing_speed: 30.0

[stepper_y]
step_pin: PF6
dir_pin: !PF7
enable_pin: !PF2
microsteps: 16
rotation_distance: 40
endstop_pin: PL7
position_endstop: 0
position_max: 300
homing_speed: 30.0

[stepper_z]
step_pin: PL3
dir_pin: !PL1
enable_pin: !PK0
microsteps: 16
rotation_distance: 4 
endstop_pin: ^!PD3
position_endstop: 0.0
position_max: 305
homing_speed: 5.0

[stepper_z1]
step_pin: PC1
dir_pin: !PC3
enable_pin: !PC7
microsteps: 16
rotation_distance: 4
endstop_pin: ^!PL6

[extruder]
step_pin: PA4
dir_pin: !PA6
enable_pin: !PA2
microsteps: 16
rotation_distance: 7.800
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PB4
sensor_type: ATC Semitec 104GT-2
sensor_pin: PK5
min_temp: 0
max_temp: 260

I also managed to set up my BLTouch sensor working properly. The next thing I wanted to try is using the drivers in UART mode.

However, this is where I am failing to continue, since my knowledge of microelectronics is rather limited.

Here is what I want to achieve:

  • Use all the five TMC2209 drivers (x,y,z,z1 and extruder) in UART mode
  • Do this using the remaining three servo ports D4,D5,D6 (since D11 is used for BLTouch) and/or the UART pins on the board (D15,D14).

Here is what I tried:

  • First, I looked up the mapping to the atmega2560 pins. If I understand correctly, the corresponding mappings are:
D4  = ar4: PG5
D5  = ar5: PE3
D6  = ar6: PH3
D14 = ar14: PJ1
D15 = ar15: PJ0
  • As recommended in the documentation, I start with a single stepper motor (stepper_x).

  • The documentation tells me to use single wire UART, which I understand uses the same wire for TX and RX

  • So I connected D15 (==PJ0) to the RX pin on the TMC2209v3.1 and updated my config:

[tmc2209 stepper_x]
uart_pin: PJ0
run_current = 0.5

However, this does not seem to work:
Running dump_tmc stepper=stepper_x leads to Unable to read tmc uart 'stepper_x' register GCONF.

So please excuse my ignorance, but

  • is my wiring correct? Do I need additional wires? I am very confused with the single wire mode.
    On the TMC2209, the difference between the TX and RX pins is that that the TX pin effectively includes a 1K resistor. So wouldn’t this setup require me to connect the TMC2209 both on TX and RX to two separate Pins on the board?

  • Is my config correct?

  • Do I have to solder some contacts on TMC2209, bend/cut some pins, or somehow put some special signal to MS1, MS2 (see link above)?

If any additional information is needed, please let me know.
Any help would be very appreciated.

(I had this post full with pictures/links/schematics to my specific board the the drivers, but as a new user I was not allowed to post it with the pictures and links…)

Thank you in advance,
Bernhard

Hey,

yeah, I have seen that but was not quite sure if this applies to the version of the TMC2209 that I have as well.
Any any case, I took a leap of faith and bent the MS1/MS2/TX pins as the post.
Then, I connected a single wire between each of the five pins on the board and the corresponding RX pin on the driver.

And it worked.

So for anyone having a Trigorilla board and is still wondering whether to update:

  • get klipper
  • get the TMC2209 (v3.1)
  • solder the (missing) three servo pins on the board (the only soldering that you have to do)
  • Use these three pins + the already soldered two (TX/RX) pins and connect those to the corresponding steppers

For completeness, the relevant part of my config now:
(X: D4, Y:D5, Z:D6, Z1:D14, extruder:D15)

[stepper_x]
step_pin: PF0
dir_pin: PF1
enable_pin: !PD7
microsteps: 16
rotation_distance: 40
endstop_pin: ^!PE5
position_min: 0
position_endstop: 0
position_max: 300
homing_speed: 30.0

[tmc2209 stepper_x]
uart_pin: PG5 # green  PG5 = ar4 = D4
run_current: 0.8
stealthchop_threshold: 999999

[stepper_y]
step_pin: PF6
dir_pin: !PF7
enable_pin: !PF2
microsteps: 16
rotation_distance: 40
endstop_pin: PL7
position_endstop: 0
position_max: 300
homing_speed: 30.0

[tmc2209 stepper_y]
uart_pin: PE3 # blue PE3 = ar5 = D5
run_current: 0.8
stealthchop_threshold: 999999

[stepper_z]
step_pin: PL3
dir_pin: !PL1
enable_pin: !PK0
microsteps: 16
rotation_distance: 4 
endstop_pin: ^!PD3
position_endstop: 0.0
position_max: 305
homing_speed: 5.0
position_min: -.1 # Needed for z-offset calibration and tilt_adjust.

[tmc2209 stepper_z]
uart_pin: PH3 # purple PH3 = ar6 = D6
run_current: 0.8
stealthchop_threshold: 999999


[stepper_z1]
step_pin: PC1
dir_pin: !PC3
enable_pin: !PC7
microsteps: 16
rotation_distance: 4
endstop_pin: ^!PL6

[tmc2209 stepper_z1]
uart_pin: PJ1 # orange PJ1 = ar14 = D14
run_current: 0.8
stealthchop_threshold: 999999


[extruder]
step_pin: PA4
dir_pin: !PA6
enable_pin: !PA2
microsteps: 16
rotation_distance: 8.1
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PB4
sensor_type: ATC Semitec 104GT-2
sensor_pin: PK5
#max_extrude_cross_section:
#control: pid
#pid_Kp: 15.717
#pid_Ki: 0.569
#pid_Kd: 108.451
min_temp: 0
max_temp: 260
#pressure_advance = 0.266

[tmc2209 extruder]
uart_pin: PJ0  # yellow PJ0 = ar15 = D15
run_current: .9
stealthchop_threshold: 999999

Looking forward to using the full power at some point for pressure advance.
Thanks Sineos and everyone reading!

2 Likes

Hey,

Set “uart_address: 3” for each TMC.

You need to set uart_address: 3 for the X axis and that is after you’ve moved R65 to the R66 position.

We’ve talked about it a lot here.

Thanks for this!

This worked perfectly after cutting the 3 pins, really quick addition to my printer. Here i was opening the bottom of the printer thinking I would adjust the vref when I stumbled on your thread haha.

Cheers

Good morning.
I found this post, even though I know it’s old, I have the same trig, the case is that I have the pins cut and connected to D4,5,6,11,12, since I’m using a non-Bltouch probe.
The case I made the Y and works correctly, exchange the Z , X make vibrations without moving, apart from cutting the pins you didn’t do anything special? and is it connected from the aforementioned pins to the RX pin of each controller?

Thank you, sorry if it’s not completely understood, I use google translator