I have a cable-driven mechanism that consists of a spindle on a stepper motor shaft. A flexible metal cable is wrapped around the spindle, and runs through a sheath (bicycle cable style) to the actuator on the other end. Cable is taken in/out by stepping the motor forward/backward, and the actuator is kept under tension by a spring, thus ensuring that the cable stays taught when it is payed out by the spindle.

When the system starts up, I have the stepper attempting to take in a full rotation of cable (the cable travel is just under a full revolution of the spindle), resulting in the stepper motor stalling (ie, with the cable fully pulled in), and I then take this as my 'home' position for the stepper.

I'm running the stepper motor in 1/16 micro stepping mode, using a Pololu DRV8826 driver.

When I reach the stall state, instead of the stepper making noises of protest over the stall (the axes on my CNC mill give a little bit of a shriek if they are stalled - granted, using an entirely different class of driver - Gecko), this stepper is taking a bit of a jump 'backward' (ie, letting the cable loosen). Sometimes it is a very small jump, and the cable remains taught, and other times it is a larger jump, with some slack being allowed back into the cable. The amount of slack varies from instance to instance.

So, I'm trying to understand this behavior, and see if there is a way that I can manage it.

Thoughts that have occurred to me to try to mitigate the behavior, but which I haven't yet tried are:

- increase or decrease the current going to the stepper - I don't need brute strength on this stepper, so reducing the current a bit wouldn't hurt things. (At present, I've got the current limited to about 1.8A)
- try moving to full-step mode for the 'force home' operation - just in case the jump is a matter of the motor reverting back to the last full step when the stall occurs (though if this were the case, I'd think it would at least jump back to a consistent position)
- experiment with other micro-step increments, and motor speeds, to see what effects this would have on the stall behavior

If anyone can offer any insight or advice on dealing with this, I'd very much appreciate it.

I realize that a limit switch would solve this problem, but its not entirely practical with this particular application, so I'm trying to find a way to make this 'forced home' approach work (or some other logical/mechanical approach, vs adding an encoder or switch or such), if possible

Thanks!