This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Constant Stall Torque Generation

The constant stall torque is required for around one minute in my project. The motors in the robot should generate this torque to push the robot against the wall.

Any idea or suggestion to generate this constant stall torque? Which function or example project could be employed?

Thanks in advance.

  • may I assume you are using a mechanical sensor like encoder?  if so, assuming your motors are designed to handle 1 minute of stall torque I don't see any issue.

    instaspin_motion proj_lab13x should suffice for position control with holding torque. just make sure your MAX_CURRENT setting is large enough to produce the required torque (often much higher than the rated torque of the motor)

  • Jinku,

    One way to handle constant stall torque is to set a limit that cannot be achieved by the speed/position controller.  So for instance, if the motor cannot physically move you could set a position or speed target in the direction that you want the robot to push in.  This will cause the controller to go into saturation where it will output the maximum (or minimum) value because it is trying as hard as it can to achieve the goal position.

    For many applications the maximum output torque of the motor could be damaging in a constant stall situation.  FOr these applications you can dynamically lower the output limit of the controller.  For InstaSPIN-MOTION this can be done with the functions: STVELCTL_setOuputMaximums & STPOSCTL_setOutputMaximums.

  • Chris, thanks for your reply.

    I use sensorless control and Instaspin FOC instead of Instaspin-Motion.

    I found your answer related with this topic here

    http://e2e.ti.com/support/microcontrollers/c2000/f/902/p/335596/1172684.aspx#1172684

    You said 

    No, that can't happen because constant torque can't be produced when FAST no longer knows where the rotot is located.  What is happening is that at stall condition the FAST estimator starts to drift (and produce erroneous results as feedback) as there is no longer any Bemf being produced to track.  This is "normal" or expected conditions.

    Does it mean that the motor couldn't keep still perfectly when the speed ref is 0 with some load?

    But from TI youtube clip, https://www.youtube.com/watch?v=eutWsOcxicw, the load could hang on in the wheel when the speed is zero.  (at 04:32)

    Is force angle critical in this application? Should it be enabled or disabled if you want get a constant stall torque?

     

     

  • Adam, thanks for your useful infos. It's a good method to bypass the speed loop to get a desired torque.

  • You can't create full holding torque unless you know the rotor angle. Sensorless, if the load is very small you may be able to create ENOUGH torque. For best results you MUST disable ForceAngle as it is providing a FALSE rotating rotor angle estimate. You want to use FAST only. With a stiff speed controller you can get good results, but they won't be perfect. One thing that can help is mentioned in the link you posted: you can add some logic so that when you get to zero speed you read the latest angle estimate and continuously write this angle to the EST_setAngle. Then as you eventually set a non zero speed command you can stop writing the angle and return to normal operation. 

    It also helps in this scenario to increase the stiffness of the current controllers to respond more quickly to any load changes. 

  • Chris,

    I tried the logic you recommended and found it works well. It could generate very stiff stall troque indeed. 

    Thanks a lot, cheers.