Constant tension(torque) winch motor without current sensing?

I’m building a project that requires a motor in a very small winch to pull a rope with constant tension. As an analogy, imagine a ball hanging from a pulley with a perfect counterweight, or a balloon floating in the middle of the room with perfectly neutral buoyancy; if I pull down on the ball, it comes down, and when I let go, it remains vertically stationary. And again, when I lift on the ball, the counterweight takes up the slack in the line, and the ball is stationary once more when I let go.

I have my contraption working well with a normal stepper motor. I have simply adjusted the current control on the stepper driver to provide just enough torque for the weight being held. I can easily overcome the motor’s holding torque by pulling down, and then the motor can maintain that position when I let go. Likewise, when I lift on the object, the reduced resistance lets the motor spin and reel in the line until I let go. This works fine for these exact components and weight, but I need to improve my control to eliminate the finicky current tuning. The stepper is also noisy and jittery, as it is literally just constantly skipping steps when holding still.

I see that FOC with an encoder (I’m already using the AS5600) should allow me to do this by monitoring or calculating the current and the shaft position, such that if the current is constant but the shaft begins to move because the weight has been lifted, the motor will spin to reel in the line, etc.

My question is, can this constant tension(torque) be accomplished using the simpleFOCMini without current sensing, or would I need the full Shield with its current sensors? I will need to make four of these for my project, and I’m looking to reduce size and complexity. Thank you for any assistance and for all the great resources here.

Applying a constant voltage will give a constant torque at zero speed, but torque will reduce as the speed increases. It sounds like that will probably be ok the way you’re using it, since you only need precise torque when holding position.

Use MotionControlType::torque and do not set the motor resistance and kv parameters. Then the target is in volts.

Wonderful, thank you!

It seems to me, that it would be easier and cheaper to use an ordinary DC-motor with brushes for this task. But the brushes will cause some static friction. Do you have special requirements, that makes you avoid DC-motors?

My project involves prolonged low speed, moderate torque, and tight position control (It’s a sort of four-pulley x-y pen plotter contraption), so steppers were the obvious choice. I’m now implementing a form of haptic feedback that I havent been able to do with normal stepper control.