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.

LAUNCHXL-F280049C: InstaSpin-FOC with DRV8311H - Low inductance BLDC motor identification issues

Part Number: LAUNCHXL-F280049C
Other Parts Discussed in Thread: DRV8320, DRV8311

Hi,

I have a LAUNCHXL-F280049C and a custom board using the booster-pack template for DRV8311HVEM (DRV8311H is the driver). I am using both boards to run identification on a BLDC motor. My current process at this point has been:

  1. Use source code from [FAQ] DRV8311HEVM: DRV8311HEVM Source Code for MotorControl SDK InstaSPIN-FOC - Motor drivers forum - Motor drivers - TI E2E support forums
  2. Run labs 01 to 04 to confirm the hardware is responding as expected based on the labs for DRV8320 (doc name is InstaSPIN Projects and Labs User’s Guide InstaSPIN-FOC for F28004xC)
  3. Run lab 05 to identify the motor parameters.

    I am debugging point 3 above as after it identifies the motor, it hits a current limit when I set flagRunIdentAndOnLine again (supposed to run the motor at constant speed after recalibration). The following are the parameters I get from identification:

    • RoverL_rps - 31,000
    • Rs_Ohm - 0.084
    • Ls_d_H - 9.99e-7
    • flux_VpHz - 0.1797

    My debugging steps have been:

    1. RoverL - expected given it's a high KV motor (25k).
    2. Rs_Ohm - datasheet does mention internal resistance of 0.1Ohms which the measurement matches with
    3. Ls_d_H / flux_VpHz - I noticed that as soon as the estimator exits the ramp up state and goes to RATED_FLUX, the motor halts to a stop which is why rated flux & inductance are probably wrong. At this point the algorithm is closing the loop. From reading chapter 6 of instapsin-foc & motion userguide, it looks like a limitation of the software for low inductance BLDC. Specifically in Troubleshooting Motor Identification section 6.10.1.8.1.2 it mentions that for low inductance there are additional functions required to overwrite these limitations. Unfortunately I can't find these functions in the files provided earlier - Would it be possible to get access to these functions for DRV8311?

    Any other tips / suggestions to try?

    Thank you!

    Other information that might be of help:

    • #define USER_ADC_FULL_SCALE_VOLTAGE_V         ((float32_t)(6.04))
    • #define USER_ADC_FULL_SCALE_CURRENT_A         ((float32_t)(13.2))
    • #define USER_VOLTAGE_FILTER_POLE_Hz           ((float32_t)(4000)) //
    • #define USER_NUM_PWM_TICKS_PER_ISR_TICK         (10)
    • #define USER_PWM_FREQ_kHz          ((float32_t)(100.0))
    • #define USER_MOTOR_TYPE MOTOR_TYPE_PM
    • #define USER_MOTOR_NUM_POLE_PAIRS (6)
    • #define USER_MOTOR_RES_EST_CURRENT_A (1.6)
    • #define USER_MOTOR_IND_EST_CURRENT_A (-0.65)
    • #define USER_MOTOR_MAX_CURRENT_A (6.0)
    • #define USER_MOTOR_FLUX_EXC_FREQ_Hz (400.0)
    • Did the lab you used work well on the other non low inductance motor?

      Did you try to implement a higher PWM frequency like 45kHz?

      Please try to tune the identification variables as you mentioned above according to the motor spec.

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

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

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

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

    • Hi Yanming,

      The labs were only tested on a low inductance motor.

      The PWM frequency being used is 100kHz at the moment.

      Maximum current of the motor is 6.5A, so first 3 parameters are within the ranges given. I can try increasing the inductance current, but the motor stops rotating before reaching measure_LS anyway ...

      For USER_MOTOR_FLUX_EST_FREQ_Hz, the rating is 92,000rpm, with 6 pole-pairs. I wasn't sure how to calculate this exactly; is this mechanical or electrical frequency? i.e. shall I use (92k/60) x 10% or something else? 

      Thank you!

    • It's electrical frequency.

      Maybe, you have to implement a special PWM mode for such high frequency motor as you mentioned above. We don't have a reference for this till now.

    • Hi Yanming,

      So in my case would it be 92k *6 / 60 * 10% = 920Hz?

      Also what do you mean by:

      a special PWM mode

      When changing USER_PWM_FREQ_kHz to 100, I can confirm that the motor is being driven with a PWM of 100kHz. Is this it or are you referring to something else?

      Also, side note; for now I am trying to get identification of parameters to then run FOC at lowest speed possible.

    • The recommendation values are for a generic motor. You may have to tune these parameters according to the testing result. We don't test such high frequency motor with InstaSPIN-FOC, it could be difficult to run or identify this high frequency motor with low-side current sensing.

    • #define USER_VOLTAGE_FILTER_POLE_Hz           ((float32_t)(4000))

      Filer pole seems high (4000) based on resistor divider network. What is your reference Hz set for motor ID?

      Is the motor really capable of 100KRPM, seen a few on eBay are like little jet engines. 

    • 100kHz is still not enough for such higher frequency motor if its maximum electrical frequency is 9.2kHz. The pole pairs is 6? Generally, the pole pairs will be 1 or 2 for this type motor.

    • Good to know not to be testing 100KRPM though agree must be 2 pole motors to achieve such high velocity.

      This motor needs 140-170vdc though pole pairs not shown comes in 220VAC version with micro controller, hair dryer motor of all things. 

      110V Brushless Motor High-Speed CNC Aluminum Alloy Impeller Motor Brushless | eBay

    • According to the datasheet the driver (DRV8311) can only do up to 200kHz - chose this as its smaller footprint and requires less PSUs compared to 83x2 revs (which can do 500kHz). Are there other driver options from TI that can support higher PWM frequencies?

      I can confirm that it is 6 pole pairs, but 100krpm (/9.2kHz) is unloaded, so loaded should be less, but no idea how much yet.

    • Sorry, I don't have any specific recommendations for this. You may try to use the dedicated gate driver with GaN FET for a higher PWM frequency like 300~500KHz.