Other Parts Discussed in Thread: BOOSTXL-DRV8323RS
Hi
I am using Launchpad and boostxl-drv8323rs to drive custom pmsm motor (Pole pairs = 14, Ls = 100.8424 uH, Rs = 102.324 mOhm, Rated RPM = 8000, Kv = 99 rpm/V). Controller parameters are calculated based on following set up in the code.
Current controller bandwidth BWc_rps = 2*Pi*1500
Damping factor BWdelta = 15.0 (Which also called frequency spacing parameter between current and speed controllers.)
Acceleration max Hz per second = 300
Vin = 24 VDC
Speed Control filter pole (USER_SPEED_POLE_rps) = 100 rad/s
Calculated PI controller values (in labs.h) are based on the above parameters work fine up to 380 Hz ref speed (1715 RPM). Even under the loading condition motor is driven by pure sine wave without much distortions. But above the 380 Hz speed, controller doesn't perform well and sine wave shows high switching ripple over fundamental waveform. Results didn't improve even after increasing the current controller bandwidth from 1500 Hz to 4375 Hz and speed controller gains as well.
What could be the reason for this type of behavior? Would results improve by increasing the switching frequency (with out overrunning ISR)?
Below are the snapshots from the datalogger for Reference and Feedback values of Iq current for 380 Hz and 400 Hz ref speed.
#define USER_NUM_PWM_TICKS_PER_ISR_TICK (1) //! \brief Defines the number of ISR clock ticks per current controller clock tick //! #define USER_NUM_ISR_TICKS_PER_CURRENT_TICK (1) //! \brief Defines the number of ISR clock ticks per speed controller clock tick //! #define USER_NUM_ISR_TICKS_PER_SPEED_TICK (10) //! \brief Defines the number of current sensors //! #define USER_NUM_CURRENT_SENSORS (3) //! \brief Defines the number of voltage sensors //! #define USER_NUM_VOLTAGE_SENSORS (3) //! \brief Defines the system maximum input frequency, MHz //! #define USER_MAXIMUM_SCALE_FREQ_Hz ((float32_t)(1000.0)) //! \brief Defines the system clock frequency, MHz //! #define USER_SYSTEM_FREQ_MHz ((float32_t)(100.0)) //! \brief Defines the Pulse Width Modulation (PWM) frequency, kHz //! //#define USER_PWM_FREQ_kHz ((float32_t)(5.0)) //5KHz PWM frequency //#define USER_PWM_FREQ_kHz ((float32_t)(10.0)) //10KHz PWM frequency //#define USER_PWM_FREQ_kHz ((float32_t)(12.0)) //12KHz PWM frequency //#define USER_PWM_FREQ_kHz ((float32_t)(15.0)) //15KHz PWM frequency #define USER_PWM_FREQ_kHz ((float32_t)(35.0)) //20KHz PWM frequency

