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: Sensorless FOC PMSM Resistance Model and Difference between this version and MCF8315C

Part Number: LP-MSPM0G3507
Other Parts Discussed in Thread: MCF8315C, MSPM0G3507

Tool/software:

Hello Ti,

I have few questions regarding LP-MSPM0G3507, and Sensorless FOC for PMSM example in SDK,

-Does the algorithm compensate for the change in motor resistance during runtime and if not, how can i measure and update resistance in runtime? i am not sure if i updated it in the pUserInputRegs it will be considered by the calculations or values already captured at the init. phase.

-Comparing this SDK software implementation to the HW solution based on MCF8315C does the HW version compensate for this resistance change?

-In case of using MSPM0G3507 and SDK, motor is rotating and switching to closed loop ok but  if loaded only run in open loop and when switch to closed loop it is very slow or rotate for while then stops. while it works fine with this load and higher loads when using the HW version (MCF8315). what do you suggest to tune / monitor? i tried open/closed loops current limits, acceleration parameters and Handoff threshold.

Regards

  • Hi Shehab,

    Does the algorithm compensate for the change in motor resistance during runtime and if not, how can i measure and update resistance in runtime? i am not sure if i updated it in the pUserInputRegs it will be considered by the calculations or values already captured at the init. phase.

    Nope, it doesn't dynamically update.

    We do not provide the on-line motor resistance identification method. While, you can get some idea from the motor parameter identification papers online.

    Comparing this SDK software implementation to the HW solution based on MCF8315C does the HW version compensate for this resistance change?

    I am not familar with MCF device features, you can check its datasheet, if not mentioned, I believe it also not appliable. You can also file a thread in motor drivers' forum to double check.

    In case of using MSPM0G3507 and SDK, motor is rotating and switching to closed loop ok but  if loaded only run in open loop and when switch to closed loop it is very slow or rotate for while then stops. while it works fine with this load and higher loads when using the HW version (MCF8315). what do you suggest to tune / monitor? i tried open/closed loops current limits, acceleration parameters and Handoff threshold.

    You can check the tuning guide:https://www.ti.com/lit/ug/slau927c/slau927c.pdf?ts=1751442499417 

    Also, I have some comments below:

    1.Check the accuracy of current sampling, which can be judged by the set align current and check its actual current value

    2.Check the sinusoidality of the phase current. If the current sinusoidality is poor, consider that the PI parameter setting of the current loop is unproper

    3.Disable the closed loop and keep the motor spin in the open loop stage. Observe whether the motor speed under load is consistent with the pre-set open loop speed. Otherwise, increase the open loop current

    4.Set a higher open loop switching speed, generally 20%-30% of the rated speed

    B.R.

    Sal

  • Hello ,

    Thank you for your response

    Nope, it doesn't dynamically update.

    We do not provide the on-line motor resistance identification method. While, you can get some idea from the motor parameter identification papers online.

    Can you confirm that if i used some algorithm and i changed the pUserInputRegs -> systemParams . mtrResist in runtime this will reflect immediately or it is fixed to whatever configured at init phase?

    You can check the tuning guide:https://www.ti.com/lit/ug/slau927c/slau927c.pdf?ts=1751442499417 

    Also, I have some comments below:

    1.Check the accuracy of current sampling, which can be judged by the set align current and check its actual current value

    2.Check the sinusoidality of the phase current. If the current sinusoidality is poor, consider that the PI parameter setting of the current loop is unproper

    -I had already checked the tuning guide but since the behavior changes with the load i can't relate which section i should consider and at what load exactly? i will need the motor to be driven at different loads in my application, noting that, at the maximum load it could be driven in open loop and also if current loop is disabled but if current loop is enabled it stop and fails once transfer to closed loop.

    -For the align current what actual current you need me to check (phase / bus current) and by using ADC/DAC or external measurement device, can you elaborate more?

    -Also for current sinusoidality at what load and state (Open loop/ closed loop...etc) you want me to check and also by using which measurement? 

    Regards,

  • Hi Shehab,

    Can you confirm that if i used some algorithm and i changed the pUserInputRegs -> systemParams . mtrResist in runtime this will reflect immediately or it is fixed to whatever configured at init phase?

    I'll check with internal team and feedback.

    I had already checked the tuning guide but since the behavior changes with the load i can't relate which section i should consider and at what load exactly? i will need the motor to be driven at different loads in my application, noting that, at the maximum load it could be driven in open loop and also if current loop is disabled but if current loop is enabled it stop and fails once transfer to closed loop.

    Normally, you should set the proper current for your maximum load in open loop (oilimt), or you can not successfully enter into close loop mode at heavy load condition. (Also, the align current I will recommend set the same as open loop current)

    After motor enter the close loop, it will automatically adjust its torque current (iq) with current loop, so you just need to set a proper close loop current limit by iLimit, or you can not afford the load at higher speed.

    For the align current what actual current you need me to check (phase / bus current) and by using ADC/DAC or external measurement device, can you elaborate more?

    Normally use a current probe and detect it in oscilloscope.

    Just take a look on its amplitude and waveform is sufficient. 

    B.R.

    Sal

  • Hey Sal,

    -Can you provide more detailed guide to tune Kp,Ki for Current and Speed Loops?
    Because section "6.2.2.1.2 Speed Controller Tuning" is not explaining at what load should i tune this parameters.
    Also In Step 4 is the current reference refers to pUserStatusRegs->piIq.reference? as i can't see this decrease although iqRampEn is = 1;
    it is fixed at value which i think is the same % OL ILimit.

    I'll check with internal team and feedback.

    Ok i will wait for your feedback.

    Normally, you should set the proper current for your maximum load in open loop (oilimt), or you can not successfully enter into close loop mode at heavy load condition. (Also, the align current I will recommend set the same as open loop current)

    Since Load already driven in OpenLoop and reach Handoff Threshold speed then i suppose current limit is enough, however i increased all current limits but still did not manage to solve the problem.

    Normally use a current probe and detect it in oscilloscope.

    Just take a look on its amplitude and waveform is sufficient. 

    -I Have attached PHASE_A Current data extracted from DAC for both MCF8315C and MSPM0 as you can see when transition fails the Phase Current is not stable.

        5-MSPM0_MAXLOAD_CurrentClampAndDAC_OL

    Regards,

  • Hi Shehab,

    I'll check with internal team and feedback.

    No it won't. It update when the motor is in the IDLE state.

    Also In Step 4 is the current reference refers to pUserStatusRegs->piIq.reference? as i can't see this decrease although iqRampEn is = 1;
    it is fixed at value which i think is the same % OL ILimit.

    Please set the iqRampEn as 0 and take a try.

    May I know what your open loop current limit and switch speed?

    And what is your current loop and speed loop parameters?

    B.R.

    Sal

**Attention** This is a public forum