Y axis more noisy/vibrates then X (TMC2209)

Basic Information:

Printer Model: Sunlu S8
MCU / Printerboard: Stock with replaced drivers to TMC2209
Host / SBC: RPi Zero 2W with Mainsail OS
klippy.log klippy(1).log (604.9 KB)

Describe your issue:

Hi.
I experience weird issue. My Y axis stepper motor makes lot of noise (vibrations). I thought that it’s bad motor, but for sure I did some tests.

I found out, that when I connect the motor to X axis wire, the noise/vibrations are maybe 50% lower (and I would say normal).

I have stock board, but I replaced the motor drivers to TMC2209 and connected them with UART.
Settings in printer.cfg is “same” for both axis and TMC DUMP also show same settings (except MSCURACT, MSCNT and fclktrim, which I suppose is normal).

Any idea why one driver should make the motor to vibrate more?

printer.cfg:

[stepper_x]
step_pin: PF0
dir_pin: !PF1
enable_pin: !PD7
microsteps: 64
full_steps_per_rotation: 200
rotation_distance: 40.1559
endstop_pin: ^!PE5
position_endstop: 0
position_max: 320
homing_speed: 50

[tmc2209 stepper_x]
uart_pin: PG5
run_current: 0.8
sense_resistor: 0.100
uart_address: 0

[stepper_y]
step_pin: PF6
dir_pin: !PF7
enable_pin: !PF2
microsteps: 64
full_steps_per_rotation: 200
rotation_distance: 40
endstop_pin: ^!PJ1
position_endstop: 0
position_max: 310
homing_speed: 50

[tmc2209 stepper_y]
uart_pin: PG5
run_current: 0.8
sense_resistor: 0.100
uart_address: 1

TMC DUMP Y:

SG_RESULT: 00000000
PWM_AUTO: 000e0024 pwm_ofs_auto=36 pwm_grad_auto=14
PWM_SCALE: 0000001b pwm_scale_sum=27
PWMCONF: c80d0e24 pwm_ofs=36 pwm_grad=14 pwm_freq=1 pwm_autoscale=1 pwm_autograd=1 pwm_reg=8 pwm_lim=12
DRV_STATUS: 80170000 cs_actual=23 stst=1
CHOPCONF: 12030053 toff=3 hstrt=5 tbl=2 vsense=1 mres=2(64usteps) intpol=1
MSCURACT: 00f6000f cur_a=15 cur_b=246
MSCNT: 0000000a mscnt=10
TSTEP: 000fffff tstep=1048575
FACTORY_CONF: 0000000d fclktrim=13
IOIN: 21000045 enn=1 ms1=1 pdn_uart=1 version=0x21
OTP_READ: 0000000d otp_fclktrim=13
IFCNT: 00000008 ifcnt=8
GSTAT: 00000001 reset=1(Reset)
GCONF: 000001c4 en_spreadcycle=1 pdn_disable=1 mstep_reg_select=1 multistep_filt=1
========== Queried registers ==========
SGTHRS: 00000000
TPOWERDOWN: 00000014 tpowerdown=20
TPWMTHRS: 000fffff tpwmthrs=1048575
IHOLD_IRUN: 00081717 ihold=23 irun=23 iholddelay=8
SLAVECONF: 00000200 senddelay=2
========== Write-only registers ==========

TMC DUMP X

SG_RESULT: 00000000
PWM_AUTO: 000e0024 pwm_ofs_auto=36 pwm_grad_auto=14
PWM_SCALE: 0000001b pwm_scale_sum=27
PWMCONF: c80d0e24 pwm_ofs=36 pwm_grad=14 pwm_freq=1 pwm_autoscale=1 pwm_autograd=1 pwm_reg=8 pwm_lim=12
DRV_STATUS: 80170000 cs_actual=23 stst=1
CHOPCONF: 12030053 toff=3 hstrt=5 tbl=2 vsense=1 mres=2(64usteps) intpol=1
MSCURACT: 00f70003 cur_a=3 cur_b=247
MSCNT: 00000002 mscnt=2
TSTEP: 000fffff tstep=1048575
FACTORY_CONF: 0000000c fclktrim=12
IOIN: 21000041 enn=1 pdn_uart=1 version=0x21
OTP_READ: 0000000c otp_fclktrim=12
IFCNT: 00000008 ifcnt=8
GSTAT: 00000001 reset=1(Reset)
GCONF: 000001c4 en_spreadcycle=1 pdn_disable=1 mstep_reg_select=1 multistep_filt=1
========== Queried registers ==========
SGTHRS: 00000000
TPOWERDOWN: 00000014 tpowerdown=20
TPWMTHRS: 000fffff tpwmthrs=1048575
IHOLD_IRUN: 00081717 ihold=23 irun=23 iholddelay=8
SLAVECONF: 00000200 senddelay=2
========== Write-only registers ==========

Thanks

Hello @Benik3 !

Even you delete it, it is still valid:

grafik

Please attach the klippy.log to your next post.

Keep going with your test, connect the other driver to your Y axis and see if that vibrates. If it does, then your issue is mechanical.

Yeah, I forgot to insert it and when I wanted to edit the post, discourse server was down and I had to go out of PC :smiley:

Here is the log: klippy(1).log - Google Drive

Please upload it here (attach), if too large as a zip file.

There are way too many file servers we have to visit …

And Google always messes up my browser tabs

I didn’t know that it’s possible to attach the file directly, because there is no button for it. Sry.
klippy(1).log (604.9 KB)

When you do not have some special driver boards or you changes themself, sense_resistor is usuall1 0.110 Ohm:

...
sense_resistor = 0.100
...

You can add

stealthchop_threshold: 999999

to your X/Y/Z-axes TMC sections to activate stealthchop, what makes the stepper more silent.


Sure there is:

Upload

The board has 0.1 ohm resistors:


Yeah, activating the stealthchop makes the motor more silent, but it doesn’t explain why Y axis is much more noisy (and even with stealthchop it’s still pretty noisy).

I will do tests also on Z axis and with X stepper motor…

OK, I’m just blind :smiley:

1 Like

You switched your x motor to your y driver, to test it. But did you switch your y motor to your x driver to test that?

If you know your x driver is good, and you connect your y motor to it and test it and Y is still noisy. It’s either a mechanical problem (probably a loose set screw on your pulley) or a bad motor (unlikely).

I connected Y motor to X driver (because I thought that the motor is bad).
I have now the motor completely disconnected, so it’s not mechanical issue (like belt, pulley, screws…).

I did more test. When I connect Y motor to X driver, it’s quieter.
If I connect X motor to Y driver, it’s noisier.
So it’s definitely something with the Y driver. I will try tomorrow to hook up an oscilloscope…

Is that a copper wire or a scratch in the PCB in this picture? If it’s a copper wire it’s super close to the pins on that resistor array and the trimpot. It could easily be vibrating and touching those pads, or even be throwing things off due to capacitance between the wire and the pads (I’ve seen weirder).

It’s a copper wire. I guess someone fixed a design flaw on the PCB.
But it looks like enameled copper wire, so it should be isolated. I doubt, that’s the cause of the problem.

Shot in the dark, Check the solder joints on the stepper motor wiring connector. Wondering if there is a flaky connection somwhere. Not enough to throw an error but enough to interrupt the actual stepper drive movements a bit.

Yes, it’s enameled copper wire and it’s the UART communication (the board didn’t have any).
I will try to resolder the driver for sure.

I mean the actual JST connector and copy that on the enameled wire, I remember a few of the duet boards had something like that too.

Understand.

BTW I tried to calculate now the set current, and I got different result.
In config I have Rsense 0,1 ohm and run_current 0,8A. From TMC DUMP the IRUN is set to 23.

When I use formula in TMC2209 datasheet, The result is 1,4A…

Am I missing something?

EDIT: Ah, vsense is 1, so Vfs is 0.18V…

I tried to desolder and swap X and Y axis drivers (to see if it’s problem in the driver itself).
But I made short of one motor output to GND. The chip detected this (s2gb flag), but after loading klipper, the driver started to output power to motor! (motor was stuck on place and I measured 24V on pins after disconnecting).
I would expect, that when klipper is able to read the status of the driver, it will not try to get it to work?

Tomorrow I will try to resolder it to see, if it’s still alive…

Hi Benik3,

are you sure this is the right way to go? Particularly hand soldering stresses the components.

You stressed those at least 3 times. 1st placement, 2nd removing, 3rd placement!

Soldering those QFN’s with a big pad underneath ain’t that easy. Are you sure you soldered those thermal pads properly? Drivers get very hot and need a very low thermal resistance to the PCB! The most thermal energy is dissipated over the PCB! The pad has to be properly soldered!

Maybe the hand soldering process caused your initial problems.

How much time and money (new TMC2209s) did you spend?

Honestly, I would buy a new printer mainboard with step stick sockets.

Good luck, hcet14

1 Like

Yeah, I don’t say it’s ideal. I have at work hot air solder station and binocular microscope, so it’s not so hard to solder it…

If I will fail, I will buy complete new board. But well, what would be a tinkerer life without these DIY solution :slight_smile:

2 Likes