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.

LP-MSPM0G3507: DRV8300DIPWM-EVM with MSPM0 Sensorless FOC Software and CCS Theia unable to spin motor

Part Number: LP-MSPM0G3507
Other Parts Discussed in Thread: BOOSTXL-DRV8323RS

Tool/software:

Hello,

after following the steps described here and spinning the motor with the GUI, I believe my hardware setup is working as expected. Therefore I am moving on to the next step and work on spinning the motor with MSPM0 Sensorless FOC Software using CCS Theia 1.4.0.12. However, after following the guide I end up with a running LP-MSPM0G3507 board and the expected lights showing on the DRV8300DIPWM-EVM board but no reaction of the motor. Increasing SpeedCtrl to 100 does not lead to any sound, movement or increase of power consumption. The only reaction I get, are the following faults if I increase SpeedCtrl to 100 while the power supply is above 30 V:

  • systemFaultStatus: 2 (FAULT_VOLTAGE_OUT_OF_BOUNDS)
  • motorState: 13 (MOTOR_FAULT)

I set up my system in accordance with the tuning guide, which led to the following adjustments:

  • pUserInputRegs->systemParams.mtrResist = 39;
  • pUserInputRegs->systemParams.mtrInductance = 18;
  • pUserInputRegs->systemParams.mtrBemfConst = 17;
  • pUserInputRegs->systemParams.voltageBase = DC_VOLTAGE_BASE * 1000;
  • pUserInputRegs->systemParams.currentBase = FULL_SCALE_CURRENT_BASE * 1000;
  • pUserCtrlRegs->algoDebugCtrl1.b.closeLoopDis = 1;
  • #define FULL_SCALE_CURRENT_BASE                    23.571

Is there anything I am missing?

  • Hello,

    I need to correct a typo: The driver board is BOOSTXL-DRV8323RS and not DRV8300DIPWM-EVM.

  • Hi Tobias,

    Are you currently trying to do this in CCS in debug mode?

    There's been a recent update to the MSPM0 Sensorless FOC Tuning Guide that uses the latest version of the MSPM0 FOC Motor control GUI/software that you may want to try: https://dev.ti.com/gallery/view/TIMSPGC/MSPM0G-SENSORLESS_FOC/ver/2.0.0/

    • pUserInputRegs->systemParams.mtrResist = 39;
    • pUserInputRegs->systemParams.mtrInductance = 18;
    • pUserInputRegs->systemParams.mtrBemfConst = 17;

    Did you pull these values from your motor driver datasheet or measure them? Are you certain you are properly using phase-to-phase resistance and inductance? 

    Is that back EMF constant converted to mV/Hz as shown?

    Best Regards,
    Brandon Fisher

  • Hi Brandon,

    thank you for getting back at this.

    I am indeed running in debug mode. I now updated to MSPM0 SDK 2.1.0.03 and ran through the updated documentation. I had to alter the parameters a bit due to the new information: 

    • pUserInputRegs->systemParams.mtrResist = 39; // 38.5 mOhm
    • pUserInputRegs->systemParams.mtrInductance = 17; // 16,95 µH
    • pUserInputRegs->systemParams.mtrBemfConst = 17; // 16.717 mV/Hz
    • pUserInputRegs->systemParams.voltageBase = DC_VOLTAGE_BASE; 
    • pUserInputRegs->systemParams.currentBase = FULL_SCALE_CURRENT_BASE;
    • pUserCtrlRegs->algoDebugCtrl1.b.closeLoopDis = 1;
    • #define FULL_SCALE_CURRENT_BASE                    23.571

    Unfortunately, the behavior is still the same. Out of curiosity, I checked if it would change with the GUI. However, despite indicating being connected, the GUI showed a bunch of "Connection Error" messages and did not display any sensible data.

    I fitted the scaling of voltageBase and currentBase now to V and A as required by the documentation. However, the code comments clearly require mV and mA. What is actually the right scaling here?

     

    Did you pull these values from your motor driver datasheet or measure them?

    My parameters are derived from measurements as described in SLAU927A from June 2024.

    Are you certain you are properly using phase-to-phase resistance and inductance? 

    I closely followed SLAU927A. I am certain if the documentation there is right.

    Is that back EMF constant converted to mV/Hz as shown?

    I added SI units to the parameters above. Looking into the documentation, the applied value seems to fulfill the requirements.

    Do you have recommendations as to where to start looking to understand the fault status?

  • Hi Tobias,

    I would like to correct one of your configuration:

    pUserInputRegs->systemParams.mtrBemfConst = 17; // 16.717 mV/Hz

    According to the tuning guide, the unit should be 0.1mV/Hz. So you should set 167 for this variable. [It is used to give more accuracy for back emf]. While, this is not the root cause for your fault.

    I fitted the scaling of voltageBase and currentBase now to V and A as required by the documentation. However, the code comments clearly require mV and mA. What is actually the right scaling here?

    The unit is A and V. Could you share which you find tells you the unit is mV and mA?

    pUserCtrlRegs->algoDebugCtrl1.b.closeLoopDis = 1;

    If you set this, the alogorithm will work with open loop, which means only the current loop is work.And eSMO (use motor parameter to estimate the rotor position) is not work at this stage. So only the kp/ki of the current loop is taking effect currently.

    systemFaultStatus: 2 (FAULT_VOLTAGE_OUT_OF_BOUNDS)

    At the fisrt beginning of the fault, this means the input dc power is not within your scope.

    You can check below variable to fit your input, details description could refer to tuning guide.

    The base value is you DC_VOLTAGE_BASE. For example, the code I shared will do judgement of your input dc power (30V) to 0.2~0.9 * DC_VOLTAGE_BASE. If it is not fit, then fault occurs.

    By the way, the speed input is a 15-bit variables, so you could set it as IQ15 format, and then input (0-1) as initial value. Give the 100 as input, means you only set it as 0.003*MAX_SPEED as speed setting.

    Please let me aware whether this solve your issues.

    B.R.

    Sal

  • Hi Sal,

    your input response helped a lot. now the system shows the expected behavior when the speed is set. I think this part would be helpful in the tuning guide:

    You can check below variable to fit your input, details description could refer to tuning guide.

    About your question:

    The unit is A and V. Could you share which you find tells you the unit is mV and mA?

    Refer to appInputCtrlInterface.h:

    /*! Maximum DC Bus Max Voltage in mV*/
    float                               voltageBase;
    
    /*! Maximum DC Bus Current in mA*/
    float                               currentBase;

    Thanks a lot!

  • Hi Tobias,

    Thanks for you feedback. That should be a typo in the library. I will report and hopefully it could be solved in following released verison. Also we will add more instructions in tuning guide to help user play with the SDK demo.

    I will close the thread. If you have any further question, feel free to file a new thread.

    B.R.

    Sal