0
\$\begingroup\$

I've got a TB6600 stepper motor driver connected via a common cathode connection to an Arduino (Elegoo) Nano microcontroller (1/32 microsteps, 1.5A, unknown NEMA 17). I'm asking it to move a number of steps, but every so often it will move way too far (at roughly the same speed, so it moves for a much longer period of time). The problem is intermittent, and it seems to go away when I have probes attached.

I really can't think of any scenario which would cause overstepping like this. What might be causing it?

I've checked that the microcontroller is outputting the right number of steps.

\$\endgroup\$

1 Answer 1

1
\$\begingroup\$

Possible cause: rotor inertia

If I am right, you can cause more overstepping with longer sequence of steps. So if you are making 100 steps, overstepping is more likely than when you do 1 step. And it should not depend on probes attached. And will become worse as time between steps decreases, especially towards the end of step sequence.

If I am wrong chance of overstepping will be the same at 1 step and 100 steps sequence.

How to solve it: either account for the rotor speed when calculating steps, or use slower speed, more time between steps.

\$\endgroup\$
1
  • 1
    \$\begingroup\$ A workaround is something like this: If you need to move 100 steps, do them in three parts: (1) Part 1: acceleration, from very low speed to max speed, (2) Part 2, constant max speed all this part, (3) Part 3: deccelaration, slow down from max speed to very slow speed, or zero when reaching the target. This way the motor won't "overshoot". (4) This is usually called the "trapezoidal pattern". Of course there are other advanced tricks such as "PID" etc. \$\endgroup\$
    – tlfong01
    Commented Feb 17, 2022 at 6:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.