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.

Position control with InstaSPIN

Hi,

I'm quite new at this so please pardon any silly questions. 

I am currently trying to implement position control using the F28069M with the BOOSTXL-DRV8301-REVB module. I have a Faulhaber PMDC motor and an absolute encoder available to do sensored position control. I would like to keep the hardware consistent.

I am using a modified version of lab 13b to implement this, however, I am not getting the settling time I need. So far I have tried playing with the position curve types, as well as the motor settings themselves. 

I was wondering if you had any recommendations for what I can try out to maximize the system response and speed (for example, parameters to adjust, etc.).

Thanks!

  • if you have maximized the acceleration/deceleration I would think the limitation would be from the motor design itself. I assume by settling time you mean time to stop from a move?

    I've sent this to Adam from LineStream (who answers MOTION questions) so he will respond, but I did get an out of office response so I'm not sure if he'll answer in the next week.
  • Thanks for the reply.

    By settling time I am referring to how quickly it can reach a position (i.e. have motor spin 5 times in 1 direction, and how quickly it can do that).

    essentially: time for position1->position2

    I have maximized acceleration/deceleration.

    I have been trying to increase the aggressiveness of the position controller. Are there any constants (Kp or Ki) values that I am able to play with?

    I am also open to any other suggestions however I have been able to get higher speeds from this motor system using another motor controller and am trying to match that speed with the instaspin.
  • Taseen,

    The SpinTAC position controller provided with InstaSPIN-MOTION is tuned using a single parameter called Bandwidth.  With this one parameter you are able to increase or decrease the gain of the controller.  In lab 13b this can be adjusted with variable gMotorVars.SpinTAC.PosCtlBw_radps.  In order to make the position controller stiffer, i would recommend increasing this value.

    Were you able to identify the inertia of your system using lab 5c or 12a?

    Additionally, by default InstaSPIN-MOTION uses the st-curve which is even smoother than the s-curve.  If you are looking for the absolute fastest possible movement, I would recommend changing the curve type via gMotorVars.SpinTAC.PosMoveCurveType from st-curve to trap, this way it will accelerate as fast as possible.  

  • Hi Adam,

    Thanks for the reply. I've been trying a few things in the past few days and have come up with a slew of new questions.

    I used lab 5c for the inertia.

    I have tried switching to the trapezoidal curve type and it has increased the speed as desired. However, it does result in significant overshoots of the system. So what I have been trying to do is use the s-curve type and increasing the stiffness of the position controller. I was wondering if you had any other suggestions that could improve the precision of the position control while maintaining the speed that we have and reducing overshoot. Also I was wondering if maybe it was an error in the inertia calculation that could be causing this or if I just tried to get too much out of the system.
  • Taseen,

    Have you tried increasing the jerk of the s-curve or st-curve profiles?  This is the other parameter that can increase the speeds of the profiles.

    You also might consider increasing the available current to the position controller.  If your system has a lot of inertia, the controller could have difficulty slowing the axis down since there isn't enough available current to do that.