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:
- Use source code from [FAQ] DRV8311HEVM: DRV8311HEVM Source Code for MotorControl SDK InstaSPIN-FOC - Motor drivers forum - Motor drivers - TI E2E support forums
- 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)
- 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:
- RoverL - expected given it's a high KV motor (25k).
- Rs_Ohm - datasheet does mention internal resistance of 0.1Ohms which the measurement matches with
- 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)