Viewed 21 times
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.
asked 14 hours ago
60955 silver badges55 bronze badges
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.
answered 11 hours ago
26011 silver badge66 bronze badges
- 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. – tlfong01 just now Edit