Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Steppers misbehaving workaround and steps per mm wrong #14

Closed
Marcusbjol opened this issue Sep 4, 2020 · 12 comments
Closed

Steppers misbehaving workaround and steps per mm wrong #14

Marcusbjol opened this issue Sep 4, 2020 · 12 comments

Comments

@Marcusbjol
Copy link

When I recieived the 2 stepper motors, one did not move. I followed the fixes in teaching techs video by changing 2 lines in config_adv.h

#define MINIMUM_STEPPER_PULSE 3
#define MAXIMUM_STEPPER_RATE 150000

After implementing this, both steppers worked.

However, both have radically altered the steps per mm setting. Before the changes, they were set to 1280 with 16 microstepps. After, the movement was way off. By some experimentation, I was able to get it to print properly with y 204.95 and x 207.03 and 32 microsteps on both.

Reading config_adv.h, I will try
#define MINIMUM_STEPPER_PULSE 1
#define MAXIMUM_STEPPER_RATE 500000
to match the driver.

@BluPix
Copy link

BluPix commented Sep 6, 2020

Hi, i have discovered from manual that 32 microsteps means 8192 steps per 360° revolution.
So correct formula for steps per mm is: 8192 steps per revolution / (2mm GT2 belt * 20 tooth per revolution ).
example:
8192 / (2 * 16) = 256
8192 / (2 * 20) = 204.8

@kamilj
Copy link

kamilj commented Sep 9, 2020

When I recieived the 2 stepper motors, one did not move. I followed the fixes in teaching techs video by changing 2 lines in config_adv.h

#define MINIMUM_STEPPER_PULSE 3
#define MAXIMUM_STEPPER_RATE 150000

You do not read the documentation :P

42 Stepper Motor Closed Loop Driver Board User Guide
ShenZhen BigTree Technology CO.,LTD .

5、We found that when SKR V1.3 motherboard was used
to drive this driver, the motor did not rotate after the
motherboard gave S42B pulse.This is because the pulse
frequency was too fast and S42B could not be detected. At
present, there are two ways to modify:
1.Modify pulse width and pulse frequency in Marlin
firmware.
Details: Modify the high pulse width in configuration. adv,

define MINIMUM_STEPPER_PULSE 3

define MAXIMUM_STEPPER_RATE 150000

2.Modify the pulse signal sampling frequency in the S42B
firmware source code.

@Marcusbjol
Copy link
Author

Marcusbjol commented Sep 9, 2020

The documentation is poorly written and translated (former tech documenter here). I did find a solution and documented it here for others to find.

Funny enough, hard coding

#define MINIMUM_STEPPER_PULSE 1
#define MAXIMUM_STEPPER_RATE 500000

works as well.

@fjrpilot05
Copy link

@Marcusbjol
You are absolutely correct. As it turns out it appears that your suggestion works better especially when the implementation is mixed with TMC2209's on the other axes. I think this is so because these settings are global across all axes and the suggested settings in the manual (pulse 3 and rate 150000) severely hamper the 2209s.

@Quas7
Copy link

Quas7 commented Sep 13, 2020

EDIT: I was interpreting the function wrong! setting TB6600 in Marlin will reduce all driver timings not only the respective axis! As I only have the extruder running on a hybrid stepper driver, I increased MAXMUM_STEPPER_RATE in configuration_adv.h to get at least the 500mm/s speed limitation on my X/Y removed.

in Marlin firmware you can just select the TB6600 drivers for the axis with the S42B in the Configuration.h Stepper Drivers section. Worked for me without issues with TMC2209 on X/Y/Z and only extruder with S42B.

This activates this timing profile just for the respective axis (see configration_adv.h in Marlin).

Minimum delay before and after setting the stepper DIR (in ns)
1500 : Minimum for TB6600 drivers (guess, no info in datasheet)

Minimum stepper driver pulse width (in µs)
3 : Minimum for TB6600 stepper drivers

Maximum stepping rate (in Hz) the stepper driver allows
150000 : Maximum for TB6600 stepper driver

and I also activated this here as well for my TMCs
/**

  • Beta feature!
  • Create a 50/50 square wave step pulse optimal for stepper drivers.
    */
    #define SQUARE_WAVE_STEPPING

@fjrpilot05
Copy link

Thats an awesome suggestion. I'm gonna try that right away.
Thank you

@Marcusbjol
Copy link
Author

Seeing odd behavior regardless of which stepper timing I set (tried their recommended settings). The first move of the X-axis moves very rapidly and then moves as expected. Their firmware needs some work.

Additionally, as stated before, their solution degrades performance with their TMC2130 stepper drivers as well.

They are responsible for providing compatible firmware for all their products (using BTT SKR 1.4 Turbo, BTT 2130 Drivers for Z+E0+E1, and BTT closed loop for X+Y). Incomplete product they need to update.

@Quas7
Copy link

Quas7 commented Sep 16, 2020

@Marcusbjol
for the rapid movement at (re-)enabling you can check here (solved): #3

The timing can be set in Marlin per axis using the "TB6600" timing profile without impacting other stepper drivers (EDIT: not true, will change all other steppers to slowest timing as well).
Marlin documentation improvment for this is suggest already here: MarlinFirmware/Marlin#19391

@Marcusbjol
Copy link
Author

Implementing that fix solved the issues.

Thanks for the help guys.

@fjrpilot05
Copy link

in Marlin firmware you can just select the TB6600 drivers for the axis with the S42B in the Configuration.h Stepper Drivers section. Worked for me without issues with TMC2209 on X/Y/Z and only extruder with S42B.

This activates this timing profile just for the respective axis (see configration_adv.h in Marlin).

Minimum delay before and after setting the stepper DIR (in ns)
1500 : Minimum for TB6600 drivers (guess, no info in datasheet)

Minimum stepper driver pulse width (in µs)
3 : Minimum for TB6600 stepper drivers

Maximum stepping rate (in Hz) the stepper driver allows
150000 : Maximum for TB6600 stepper driver

and I also activated this here as well for my TMCs
/**

  • Beta feature!
  • Create a 50/50 square wave step pulse optimal for stepper drivers.
    */
    #define SQUARE_WAVE_STEPPING

Hey Quas7,
I just wanted to circle back and Thank you for your suggestions. I've got my setup pretty much to a happy place thanks to your suggestions.

Regards,
Kevin

@Quas7
Copy link

Quas7 commented Sep 22, 2020

Hey Kevin,

great that it worked out as intended and thanks for giving positive feedback. :)
Edit: please check the latest edits above! I was providing wrong infos!

Best regards,
Till

@GIANNHSitia
Copy link

GIANNHSitia commented Feb 14, 2021

hello, i have same problem. i change X , Y axis driver with S42B 1.1 . Working but with wrong steps per mm..For examper: instead of moving 150mm this move 120mm.. with old driver work ok.. i add to configuration.h this lines.... but dont change nothing. how to fix this? sorry but my english is not good
My printer is Malyan M150 with menzli board with onboard A4982
#define X_DRIVER_TYPE TB6600
#define Y_DRIVER_TYPE TB6600

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants