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.

DRV8301-69M-KIT: How to insert current to pull motor to specific orientation

Part Number: DRV8301-69M-KIT

I have a need to position the shaft to a specific position and put a small force to hold it there. Is there a way I can turn on a fixed current through the motor windings to hold that position?

  • What motor control algorithm are you using? InstaSPIN-FOC? or others? Which lab are you using if it's InstaSPIN-FOC?

  • I am using InstaSPIN-FOC. The project is based on Lab5b and uses a BLDC motor with no encoder. What I am trying to do is to let the motor run and then stop. Where ever it stops I would like to hold that position for a short time. I have an 11 pole pair motor so if I could send some current through 1 or 2 windings it would seem it would pull the motor shaft to the nearest pole alignment and hold it there. I would like to turn on a static current to hold it in that position. I don't need a lot of holding power and I realize the motor would have to dissipate the energy but it is a very hearty motor. It would need to hold this position for a short time (few minutes) and then the firmware would timeout or the operator could decide to restart the motor to move to another position. How can I turn on a static current similar to this or is there no such way within the TI firmware?

  • Do you need to stop and hold the motor at a precise position? And need to stop and brake the motor immediately when it's running at a high speed? If yes, it's not easy and it's very complex to implement this function in lab05b if the motor has a large inertia.

    If you just want to hold the motor when it stops, you might try to disable the speed loop and set a positive Id reference current as below codes.

      // set the enable controller flag to false

      CTRL_setFlag_enableCtrl(ctrlHandle,false);

      // Set the Iq reference that use to come out of the PI speed control
      CTRL_setId_ref_pu(handle, id_ref);

  • No I do not need it to be in a precise position or to actually stop the motor. The mechanical load will stop the motor just fine when the speed is set to zero but once it is stopped I need some force to keep it from moving. Not a lot but some. Do you have a starting point for what current value to try for id_ref?

  • That depends on your motor and system. You might try to set 10% of the rated current of the motor first, if not enough, you can increase it till the motor can be held or pulled to the position.