LAUNCHXL-F280049C: DRV8317HEVM + LAUCHXL F280049C : InstaSPIN sensorless Identify fails for gimbal motor

Part Number: LAUNCHXL-F280049C
Other Parts Discussed in Thread: DRV8317HEVM

Hi,

I am using DRV8317HEVM + LAUNCHXL-F280049C with InstaSPIN-FOC (sensorless FAST) for BLDC motor control.

My setup works correctly with a standard BLDC motor from Nidec:
https://www.ednasia.com/single-phase-bldc-motor-minimizes-noise-vibration/

With this motor, the auto motor identification runs normally and the estimated phase resistance Rs is about 0.5 ohm, which is reasonable.

However, when I try to run sensorless auto motor identification with a gimbal BLDC motor:
(Alloy 2208 90KV Gimbal Brushless Motor)
https://www.ebay.com/itm/Alloy-2208-90KV-Gimbal-Brushless-Motor-for-Gopro3-RC-Drone-Camera-100-200g/223195701385

the identification always fails or becomes unstable.

Symptoms:
- Estimated Rs becomes about 26 to 27 ohm
- Motor jerks at higher speed (around 40 Hz), then stops
- Motor becomes very hot

However, when I measure the gimbal motor resistance manually:
- Line-to-line resistance is about 13 to 15 ohm
- Therefore the expected phase resistance should be around 6 to 8 ohm, not 27 ohm.

What I already tried:
- Reduced Max Current for R est to 0.3 A
- Reduced Max Current for L est to 0.3 A
- Reduced Max Current to 1 A and even lower
- Pole pairs set correctly to 7
- user.h Params disabled
- ForceAngle enabled
- No load attached to the motor during identification

My questions:
1. Is the InstaSPIN sensorless auto motor identification expected to work with high-resistance gimbal BLDC motors like the 2208 90KV?

2. Are there any special recommended settings for low-speed, high-Rs gimbal motors?

3. Since I do not know the exact motor parameters (only the line-to-line resistance 13 to 16 ohm), what is the recommended way to obtain suitable Rs / Ls / flux values for this gimbal motor when auto-ID has failed?

Thank you very much for your support.

Best regards,

  • Please try to use a higher switching frequency like 45kHz~60kHz as shown below in user.h

    #define USER_PWM_FREQ_kHz          ((float32_t)(45.0))     //45KHz PWM frequency

    #define USER_NUM_PWM_TICKS_PER_ISR_TICK (2)

     Please don't add any load on the motor for identification, and set the correct identification variables value in the file of user.h according to the specification of the motor, to make sure the motor spin smoothly during Flux measurement and Ls identification states.

     

    #define USER_MOTOR_RES_EST_CURRENT     (2.0)                               // A - 10-30% of rated current of the motor

    #define USER_MOTOR_IND_EST_CURRENT     (-1.5)                             // A - 10-30% of rated current of the motor, just enough to enable rotation

    #define USER_MOTOR_MAX_CURRENT           (20.0)                               // A - 30~150% of rated current of the motor

    #define USER_MOTOR_FLUX_EST_FREQ_Hz     (60.0)                           // Hz - 10~30% rated frequency of the motor

  • Hi,

    I’ve updated the configuration according to your suggestion. With these changes, during the identification process the motor is able to ramp up normally and reach a steady identification speed. However, once it reaches that steady speed, the motor becomes unstable (for example, a brief stop followed by a sudden acceleration).

    Based on this behavior, it seems the identification sequence is still not fully stable and the identified motor parameters may not yet be correct. This behavior is observed while the identification process is still active, rather than after switching to run mode.

    There is no mechanical load attached to the motor.

    Thank you.

  • Make sure that you connect and configure the kits correctly, and set the right full scale current and voltage according to the hardware as well.

    Keep tuning the identification parameters as mentioned above.