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.

BOOSTXL-DRV8320RS: InstaSPIN-FOC: Overmodulation / Current reconstruction / PWM compensation problems

Part Number: BOOSTXL-DRV8320RS
Other Parts Discussed in Thread: LAUNCHXL-F280049C, , C2000WARE-MOTORCONTROL-SDK, INA240

I'm using LAUNCHXL-F280049C + BOOSTXL-DRV8320RS kit and running through InstaSPIN-FOC guide examples from C2000WARE-MOTORCONTROL-SDK v3.00.01.00.
When working with is08_overmodulation example (or higher) i meet stability problems because of OVM code, even with USER_MAX_VS_MAG_PU = 0.50. Without OVM code, everything works fine.

I experimented with different scenarios, for example the most radical one:
USER_MAX_VS_MAG_PU = 0.50
minWidth_usec = 5.0
USER_PWM_FREQ_kHz = 40.0 (+PWM_TICKS_PER_ISR_TICK=2)
resulting in Vlimit of 0.1

If the SVGENCURRENT status changes to TWO_PHASE_MEASURABLE (any of Va, Vb, Vc > Vlimit = 0.1), motor becomes noisy (simple current reconstruction).
if it reaches ONE_PHASE_MEASURABLE, it becomes wobbly (current reconstruction + PWM compensation to VMID).

With normal settings => Vlimit close to 0.45, the ovm effect is stronger and quicker, resulting in overcurrent or power supply error. Iq becomes super spiky.

I tried it in torque mode, omitting speed controller resulting the same problems.

Did anyone had similar problems with OVM and found any problem with SVGENCURRENT or HAL_setTrigger functions?

Also, I'm thinking about using INA240 in-line current sensors instead of low-side with PGAs: Do i still need to worry about minimum minWidth_usec for INA240 output settling (~1.25us) or PWM CMR spike and loose supply range? Or rather then i would have to set the trigger accordingly to the settling time, but without modulation limit  - up to 0% low-side on time?
And phase voltages don't need to be measured in specific FET state due to its RC filtering (apart from being synchronized with current), right?





  • What's PWM and ISR frequency?

    What's the USER_MAX_VS_MAG_PU? You might set the USER_MAX_VS_MAG_PU is less than 0.57.

    Yes, current reconstruction is not necessary if using an inline current sensor.

    Right, it can be sampling at the time as the inline current sensing at any time.

  • Yanming Luo said:

    What's PWM and ISR frequency?

    I've tested with PWM from 20 to 40 kHz and ISR from 20 to 30kHz(~60-70% load@30). Inductance of my motor is quite low, 22-27uH, so I hoped for higher PWM freq. But currently i settled at 20kHz, because the max modulation is higher with minimum measurement window.

    Yanming Luo said:

    What's the USER_MAX_VS_MAG_PU? You might set the USER_MAX_VS_MAG_PU is less than 0.57.

    as said earlier, problem exists even with USER_MAX_VS_MAG_PU = 0.5, just when phase votlages reaches Vlimit (about ~0.44). I think the current reconstructions adds too much discontinuity, because of the noisy signals i have. I've managed to run it with USER_MAX_VS_MAG_PU = 0.5, with lower PID gains and little "resonance" at transition from ALL_PHASE to TWO_PHASE_MEASURABLE, so probably i'd have to implement variable gains and work on better signal quality. Then maybe 0.57 would work nicely and i could push it a little more with FW, to reach desired speeds.

    In my application, i'm trying to replace 6-step BLDC solution so i really need to utilize most of the available supply range to not loose performance. So that's why I would probably go with inline sensing, just to avoid those difficulties above...

    Yanming Luo said:

    Yes, current reconstruction is not necessary if using an inline current sensor.

    And how should i deal with the transients from PWM switching? High-to-low reponse looks much better, but still, this would cause about +/- 1.5A ripple at worst spot at the edge in my application.

     

  • That depends on the motor parameters and the current sampling circuit. Using a higher PWM and control frequency and tuning the controller (current and speed) could improve the performance also.