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.

DRV8353RS-EVM: DRV8353RS-EVM

Part Number: DRV8353RS-EVM
Other Parts Discussed in Thread: DRV8353

Hello Team,

We Tried configured Universal Motor Controller sdk code based on F280025C to F2800157 Launchpad interface with Drv8353.

During debug mode, GUI Expression window ISR increment, Bus voltage, All parameters are reading perfectly. We are able to run the 24V BLDC motor in the open loop.

Now we are Interfaced the 48V PMSM motor.

While run the motor immediately I am getting the ModuleOver Current fault.

I modified the Required parameters based on the Motor specification

USER_M1_OVER_CURRENT_TIMES_SET
USER_M1_ADC_FULL_SCALE_CURRENT_A
USER_M1_STALL_CURRENT_A
USER_M1_FAULT_CHECK_CURRENT_A
USER_M1_LOST_PHASE_CURRENT_A

please find the following attachment.

Any help is much appreciated. Thanks in Advance.

Regards,
T.Premkumar

  • Hello,

    There are more parameters than just those listed that need to be adjusted on a motor-by-motor basis. In user_mtr1.h, notice that there are sections dedicated to specific motors- for a custom motor, refer to the Teknic_M2310PLN04K section as a basis for creating your own.

    Additionally, USER_M1_NOMINAL_DC_BUS_VOLTAGE_V in user_mtr1.h should be set to the DC bus voltage supplied to the board- in this case, it sounds like that's 48V.

    Please let me know if you have any follow-up questions.

    Regards,
    Jason Osborn

  • Hi Jason,

    Thank you very much for your support. I modified the all the required parameters reference of Teknic_M2310PLN04K section.

    But, I am getting the Over current fault.

    Please find the attachment of the usre_mtr1.h file.

    user_mtr1.h.txt
    #elif defined(BSXL8353RS_REVA)
    //! \brief Defines the nominal DC bus voltage, V
    //!
    #define USER_M1_NOMINAL_DC_BUS_VOLTAGE_V    (48.0f)
    
    //! \brief Defines the maximum voltage at the AD converter
    #define USER_M1_ADC_FULL_SCALE_VOLTAGE_V    (132.7979508f)
    
    //! \brief Defines the analog voltage filter pole location, Hz
    #define USER_M1_VOLTAGE_FILTER_POLE_Hz      (338.1100618f)      // 9.76k/47nF
    
    //! \brief Defines the maximum current at the AD converter
    //#define USER_M1_ADC_FULL_SCALE_CURRENT_A         (94.28571429f)     // gain=5
    #define USER_M1_ADC_FULL_SCALE_CURRENT_A         (47.14285714f)     // gain=10
    
    #define USER_M1_SIGN_CURRENT_SF         (1.0f)
    
    //! \brief ADC current offsets for A, B, and C phases
    #define USER_M1_IA_OFFSET_AD    (2048.0f)
    #define USER_M1_IB_OFFSET_AD    (2048.0f)
    #define USER_M1_IC_OFFSET_AD    (2048.0f)
    
    //! \brief ADC current offset for CMPSS
    #define USER_M1_IS_OFFSET_CMPSS     (uint16_t)((USER_M1_IA_OFFSET_AD + USER_M1_IB_OFFSET_AD + USER_M1_IC_OFFSET_AD) / 3.0f)
    
    //! \brief ADC voltage offsets for A, B, and C phases
    #define USER_M1_VA_OFFSET_SF    (0.500514159f)
    #define USER_M1_VB_OFFSET_SF    (0.506255884f)
    #define USER_M1_VC_OFFSET_SF    (0.503381569f)
    #endif  // !MOTOR1_DCLINKSS
    
    //! \brief DC bus over voltage threshold
    #define USER_M1_OVER_VOLTAGE_FAULT_V        (50.0f)//      (40.0f)
    
    //! \brief DC bus over voltage threshold
    #define USER_M1_OVER_VOLTAGE_NORM_V         (48.0f)//      (36.0f)
    
    //! \brief DC bus under voltage threshold
    #define USER_M1_UNDER_VOLTAGE_FAULT_V       (10.0f)
    
    //! \brief DC bus under voltage threshold
    #define USER_M1_UNDER_VOLTAGE_NORM_V        (12.0f)
    
    //! \brief motor lost phase current threshold
    #define USER_M1_LOST_PHASE_CURRENT_A        (0.2f)
    
    //! \brief motor unbalance ratio percent threshold
    #define USER_M1_UNBALANCE_RATIO             (0.2f)
    
    //! \brief motor over load power threshold
    #define USER_M1_OVER_LOAD_POWER_W           (96.0f)
    
    //! \brief motor stall current threshold
    #define USER_M1_STALL_CURRENT_A             (10.0f)
    
    //! \brief motor fault check current threshold
    #define USER_M1_FAULT_CHECK_CURRENT_A       (0.2f)//        (1.0f)
    
    //! \brief motor failed maximum speed threshold
    #define USER_M1_FAIL_SPEED_MAX_HZ           (500.0f)
    
    //! \brief motor failed minimum speed threshold
    #define USER_M1_FAIL_SPEED_MIN_HZ           (5.0f)
    
    //! \brief Defines the number of failed torque
    //!
    #define USER_M1_TORQUE_FAILED_SET           (0.000001f)
    // end of BSXL8353RS_REVA
    
    #define USER_M1_IS_OFFSET_AD_DELTA      (150.0f)    // The value is 0.0f~1024.0f
    
    // the high threshold of the ADC offsets checking value for A/B/C phase current
    #define USER_M1_IA_OFFSET_AD_MAX        (USER_M1_IA_OFFSET_AD + USER_M1_IS_OFFSET_AD_DELTA)
    #define USER_M1_IB_OFFSET_AD_MAX        (USER_M1_IB_OFFSET_AD + USER_M1_IS_OFFSET_AD_DELTA)
    #define USER_M1_IC_OFFSET_AD_MAX        (USER_M1_IC_OFFSET_AD + USER_M1_IS_OFFSET_AD_DELTA)
    
    // the low threshold of the ADC offsets checking value for A phase current
    #define USER_M1_IA_OFFSET_AD_MIN        (USER_M1_IA_OFFSET_AD - USER_M1_IS_OFFSET_AD_DELTA)
    #define USER_M1_IB_OFFSET_AD_MIN        (USER_M1_IB_OFFSET_AD - USER_M1_IS_OFFSET_AD_DELTA)
    #define USER_M1_IC_OFFSET_AD_MIN        (USER_M1_IC_OFFSET_AD - USER_M1_IS_OFFSET_AD_DELTA)
    
    #define USER_M1_IS_OFFSET_AD_MAX        (USER_M1_IA_OFFSET_AD + USER_M1_IB_OFFSET_AD + USER_M1_IC_OFFSET_AD + (USER_M1_IS_OFFSET_AD_DELTA * 3.0f))
    #define USER_M1_IS_OFFSET_AD_MIN        (USER_M1_IA_OFFSET_AD + USER_M1_IB_OFFSET_AD + USER_M1_IC_OFFSET_AD - (USER_M1_IS_OFFSET_AD_DELTA * 3.0f))
    
    //! \brief ADC voltage offsets for A, B, and C phases
    // the error threshold to check if the ADC offset of the phase voltage sensing circuit is correct
    #define USER_M1_VA_OFFSET_SF_DELTA      (0.05f)     // The value is 0.0f ~ 0.5f
    
    // the high threshold of the ADC offsets checking value for A/B/C phase voltage
    #define USER_M1_VA_OFFSET_SF_MAX        (USER_M1_VA_OFFSET_SF + USER_M1_VA_OFFSET_SF_DELTA)
    #define USER_M1_VB_OFFSET_SF_MAX        (USER_M1_VB_OFFSET_SF + USER_M1_VA_OFFSET_SF_DELTA)
    #define USER_M1_VC_OFFSET_SF_MAX        (USER_M1_VC_OFFSET_SF + USER_M1_VA_OFFSET_SF_DELTA)
    
    // the low threshold of the ADC offsets checking value for A/B/C phase voltage
    #define USER_M1_VA_OFFSET_SF_MIN        (USER_M1_VA_OFFSET_SF - USER_M1_VA_OFFSET_SF_DELTA)
    #define USER_M1_VB_OFFSET_SF_MIN        (USER_M1_VB_OFFSET_SF - USER_M1_VA_OFFSET_SF_DELTA)
    #define USER_M1_VC_OFFSET_SF_MIN        (USER_M1_VC_OFFSET_SF - USER_M1_VA_OFFSET_SF_DELTA)
    
    #define USER_M1_VS_OFFSET_SF_MAX        (USER_M1_VA_OFFSET_SF + USER_M1_VB_OFFSET_SF + USER_M1_VC_OFFSET_SF + (USER_M1_VA_OFFSET_SF_DELTA * 3.0f))
    #define USER_M1_VS_OFFSET_SF_MIN        (USER_M1_VA_OFFSET_SF + USER_M1_VB_OFFSET_SF + USER_M1_VC_OFFSET_SF - (USER_M1_VA_OFFSET_SF_DELTA * 3.0f))
    
    //******************************************************************************
    //! \brief Defines the number of pwm clock ticks per isr clock tick
    //!        Note: Valid values are 1, 2 or 3 only
    #define USER_M1_NUM_PWM_TICKS_PER_ISR_TICK          (1)
    
    //! \brief Defines the number of ISR clock ticks per current controller clock tick
    //!
    #define USER_M1_NUM_ISR_TICKS_PER_CURRENT_TICK      (1)
    
    
    //! \brief Defines the number of ISR clock ticks per speed controller clock tick
    //!
    #define USER_M1_NUM_ISR_TICKS_PER_SPEED_TICK        (10)
    
    
    //! \brief Defines the number of current sensors
    //!
    #define USER_M1_NUM_CURRENT_SENSORS                 (3)
    
    //! \brief Defines the number of voltage sensors
    //!
    #define USER_M1_NUM_VOLTAGE_SENSORS                 (3)
    
    
    //! \brief Defines the Pulse Width Modulation (PWM) frequency, kHz
    //!
    #define USER_M1_PWM_FREQ_kHz        (15.0f)
    #define USER_M1_PWM_TBPRD_NUM       (uint16_t)(USER_SYSTEM_FREQ_MHz * 1000.0f / USER_M1_PWM_FREQ_kHz / 2.0f)
    
    //! \brief Defines the Pulse Width Modulation (PWM) period, usec
    //!
    #define USER_M1_PWM_PERIOD_usec     (1000.0f / USER_M1_PWM_FREQ_kHz)
    
    
    //! \brief Defines the Interrupt Service Routine (ISR) frequency, Hz
    //!
    #define USER_M1_ISR_FREQ_Hz         (USER_M1_PWM_FREQ_kHz * 1000.0f / (float32_t)USER_M1_NUM_PWM_TICKS_PER_ISR_TICK)
    
    //! \brief Defines the Interrupt Service Routine (ISR) period, usec
    //!
    #define USER_M1_ISR_PERIOD_usec     (USER_M1_PWM_PERIOD_usec * (float32_t)USER_M1_NUM_PWM_TICKS_PER_ISR_TICK)
    
    
    //! \brief Defines the direct voltage (Vd) scale factor
    //!
    #define USER_M1_VD_SF               (0.95f)
    
    
    //! \brief Defines the voltage scale factor for the system
    //!
    #define USER_M1_VOLTAGE_SF          (USER_M1_ADC_FULL_SCALE_VOLTAGE_V / 4096.0f)
    
    //! \brief Defines the current scale factor for the system
    //!
    #define USER_M1_CURRENT_SF          (USER_M1_ADC_FULL_SCALE_CURRENT_A / 4096.0f)
    
    
    //! \brief Defines the current scale invert factor for the system
    //!
    #define USER_M1_CURRENT_INV_SF      (4096.0f / USER_M1_ADC_FULL_SCALE_CURRENT_A)
    
    
    //! \brief Defines the analog voltage filter pole location, rad/s
    //!
    #define USER_M1_VOLTAGE_FILTER_POLE_rps  (MATH_TWO_PI * USER_M1_VOLTAGE_FILTER_POLE_Hz)
    
    //! \brief Defines the maximum Vs magnitude in per units allowed
    //! \brief This value sets the maximum magnitude for the output of the Id and
    //! \brief Iq PI current controllers. The Id and Iq current controller outputs
    //! \brief are Vd and Vq. The relationship between Vs, Vd, and Vq is:
    //! \brief Vs = sqrt(Vd^2 + Vq^2).  In this FOC controller, the Vd value is set
    //! \brief equal to USER_MAX_VS_MAG*USER_VD_MAG_FACTOR.
    //! \brief so the Vq value is set equal to sqrt(USER_MAX_VS_MAG^2 - Vd^2).
    //!
    //! \brief Set USER_MAX_VS_MAG = 0.5 for a pure sinewave with a peak at
    //! \brief SQRT(3)/2 = 86.6% duty cycle.  No current reconstruction
    //! \brief is needed for this scenario.
    //!
    //! \brief Set USER_MAX_VS_MAG = 1/SQRT(3) = 0.5774 for a pure sinewave
    //! \brief with a peak at 100% duty cycle.  Current reconstruction
    //! \brief will be needed for this scenario (Lab08).
    //!
    //! \brief Set USER_MAX_VS_MAG = 2/3 = 0.6666 to create a trapezoidal
    //! \brief voltage waveform.  Current reconstruction will be needed
    //! \brief for this scenario (Lab08).
    //!
    //! \brief For space vector over-modulation, see lab08 for details on
    //! \brief system requirements that will allow the SVM generator to
    //! \brief go all the way to trapezoidal.
    //!
    #define USER_M1_MAX_VS_MAG_PU             (0.66f)
    //#define USER_M1_MAX_VS_MAG_PU             (0.65f)
    //#define USER_M1_MAX_VS_MAG_PU               (0.576f)
    //#define USER_M1_MAX_VS_MAG_PU             (0.565f)
    //#define USER_M1_MAX_VS_MAG_PU             (0.5f)
    
    
    //! \brief Defines the reference Vs magnitude in per units allowed
    //! \      Set the value equal from 0.5 to 0.95 of the maximum Vs magnitude
    #define USER_M1_VS_REF_MAG_PU               (0.8f * USER_MAX_VS_MAG_PU)
    
    //! \brief Defines the R/L excitation frequency, Hz
    //!
    #define USER_M1_R_OVER_L_EXC_FREQ_Hz        (300.0f)
    
    
    //! \brief Defines the R/L Kp scale factor, pu
    //! \brief Kp used during R/L is USER_M1_R_OVER_L_KP_SF * USER_M1_NOMINAL_DC_BUS_VOLTAGE_V / USER_MOTOR1_MAX_CURRENT_A;
    //!
    #define USER_M1_R_OVER_L_KP_SF              (0.02f)
    
    
    //! \brief Defines maximum acceleration for the estimation speed profiles, Hz/sec
    //!
    #define USER_M1_MAX_ACCEL_Hzps              (2.0f)
    
    
    //! \brief Defines the controller execution period, usec
    //!
    #define USER_M1_CTRL_PERIOD_usec            ((float32_t)USER_M1_ISR_PERIOD_usec)
    
    
    //! \brief Defines the controller execution period, sec
    //!
    #define USER_M1_CTRL_PERIOD_sec             ((float32_t)USER_M1_CTRL_PERIOD_usec / 1000000.0f)
    
    
    //! \brief Defines the IdRated delta to use during estimation
    //!
    #define USER_M1_IDRATED_DELTA_A                 (0.0001f)
    
    #if defined(_FULL_FAST_LIB)
    //! \brief Defines the forced angle frequency, Hz
    #define USER_M1_FORCE_ANGLE_FREQ_Hz             (1.0f)
    
    //! \brief Defines the forced angle acceleration, Hz
    #define USER_M1_FORCE_ANGLE_ACCEL_Hzps          (1.0f)
    #else  // !_FULL_FAST_LIB
    //! \brief Defines the forced angle frequency, Hz
    #define USER_M1_FORCE_ANGLE_FREQ_Hz             (1.0f)
    #endif  // !_FULL_FAST_LIB
    
    //! \brief Defines the near zero speed limit for electrical frequency estimation, Hz
    //!        The flux integrator uses this limit to regulate flux integration
    #define USER_M1_FREQ_NEARZEROSPEEDLIMIT_Hz      (0.5f)
    
    //! \brief Defines the fraction of IdRated to use during inductance estimation
    //!
    #define USER_M1_IDRATED_FRACTION_FOR_L_IDENT    (0.5f)
    
    
    //! \brief Defines the fraction of SpeedMax to use during inductance estimation
    //!
    #define USER_M1_SPEEDMAX_FRACTION_FOR_L_IDENT   (1.0f)
    
    
    //! \brief Defines the Power Warp gain for computing Id reference
    //!
    #define USER_M1_PW_GAIN                         (1.0f)
    
    
    //! \brief Defines the pole location for the DC bus filter, rad/sec
    //!
    #define USER_M1_DCBUS_POLE_rps                  (100.0f)
    
    
    //! \brief Defines the pole location for the voltage and current offset estimation, rad/s
    //!
    #define USER_M1_OFFSET_POLE_rps                 (20.0f)
    
    
    //! \brief Defines the pole location for the speed control filter, rad/sec
    //!
    #define USER_M1_SPEED_POLE_rps                  (100.0f)
    
    
    //! \brief Defines the pole location for the direction filter, rad/sec
    //!
    #define USER_M1_DIRECTION_POLE_rps              (MATH_TWO_PI * 10.0f)
    
    //! \brief Defines the pole location for the flux estimation, rad/sec
    //!
    #define USER_M1_FLUX_POLE_rps                   (10.0f)
    
    
    //! \brief Defines the pole location for the R/L estimation, rad/sec
    //!
    #define USER_M1_R_OVER_L_POLE_rps               (MATH_TWO_PI * 3.2f)
    
    
    //! \brief Defines the convergence factor for the estimator
    //!
    #define USER_M1_EST_KAPPAQ                      (1.5f)
    
    //! \brief Defines the scale factor for the flux estimation
    //! the default value is 1.0f, change the value between 0.1f and 1.25f
    //!
    //#define USER_M1_EST_FLUX_HF_SF                (0.120f)
    #define USER_M1_EST_FLUX_HF_SF                  (0.250f)
    //#define USER_M1_EST_FLUX_HF_SF                (1.00f)
    
    //! \brief Defines the scale factor for the frequency estimation
    //! the default value is 1.0f, change the value between 0.5f and 1.5f
    //!
    #define USER_M1_EST_FREQ_HF_SF                  (1.00f)
    
    //! \brief Defines the scale factor for the bemf estimation
    //! the default value is 1.0f, change the value between 0.50f and 1.25f
    //!
    #define USER_M1_EST_BEMF_HF_SF                  (1.00f)
    
    //------------------------------------------------------------------------------
    //! brief Define the Kp gain for Field Weakening Control
    #define USER_M1_FWC_KP                          (0.0525f)
    
    //! brief Define the Ki gain for Field Weakening Control
    #define USER_M1_FWC_KI                          (0.00325f)
    
    //! brief Define the maximum current vector angle for Field Weakening Control
    #define USER_M1_FWC_MAX_ANGLE          -15.0f                        // degree
    #define USER_M1_FWC_MAX_ANGLE_RAD      USER_M1_FWC_MAX_ANGLE /180.0f * MATH_PI  // rad
    
    //! brief Define the minimum current vector angle for Field Weakening Control
    #define USER_M1_FWC_MIN_ANGLE          0.0f                          // degree
    #define USER_M1_FWC_MIN_ANGLE_RAD      USER_M1_FWC_MIN_ANGLE /180.0f * MATH_PI  // rad
    
    //! \brief Defines the number of DC bus over/under voltage setting time
    //!  timer base = 5ms
    #define USER_M1_VOLTAGE_FAULT_TIME_SET          (500U)      // in 5ms
    
    //! \brief Defines the number of motor over load setting time
    //!  timer base = 5ms, 1s
    #define USER_M1_OVER_LOAD_TIME_SET              (200U)
    
    //! \brief Defines the number of motor stall setting time
    //!  timer base = 5ms, 1s
    #define USER_M1_STALL_TIME_SET                  (200U)
    
    //! \brief Defines the number of phase unbalanced setting time
    //!  timer base = 5ms, 5s
    #define USER_M1_UNBALANCE_TIME_SET              (1000U)
    
    //! \brief Defines the number of lost phase setting time
    //!  timer base = 5ms, 10s
    #define USER_M1_LOST_PHASE_TIME_SET             (2000U)
    
    //! \brief Defines the number of over speed setting time
    //!  timer base = 5ms
    #define USER_M1_OVER_SPEED_TIME_SET             (600U)
    
    //! \brief Defines the number of startup failed setting time
    //!  timer base = 5ms, 10s
    #define USER_M1_STARTUP_FAIL_TIME_SET           (2000U)
    
    //! \brief Defines the number of over load setting times
    //!
    #define USER_M1_OVER_CURRENT_TIMES_SET          (5U)
    
    //! \brief Defines the number of stop wait time
    //!  timer base = 5ms, 10s
    #define USER_M1_STOP_WAIT_TIME_SET              (2000U)
    
    //! \brief Defines the number of restart wait time
    //!  timer base = 5ms, 10s
    #define USER_M1_RESTART_WAIT_TIME_SET           (2000U)
    
    //! \brief Defines the number of restart times when has a fault
    //!
    #define USER_M1_START_TIMES_SET                 (3U)
    
    //! \brief Defines the alignment time
    //!  timer base = 5ms, 10s
    #define USER_M1_ALIGN_TIME_SET              (2000U)
    
    //! \brief Defines the QEP unit ticks
    #define USER_M1_QEP_UNIT_TIMER_TICKS        (uint32_t)(USER_SYSTEM_FREQ_MHz/(2.0f * USER_M1_ISR_FREQ_Hz) * 1000000.0f)
    
    //! \brief Defines the current filter pole location, Hz
    #define USER_M1_IS_FILTER_POLE_Hz           (7500.0f)      // 7.5kHz
    
    //! \brief Defines the current filter pole location, rad/s
    //!
    #define USER_M1_IS_FILTER_POLE_rps          (MATH_TWO_PI * USER_M1_IS_FILTER_POLE_Hz)
    
    
    //! \brief Defines the voltage filter pole location, Hz
    #define USER_M1_VS_FILTER_POLE_Hz           (30000.0f)     // 30.0kHz
    
    //! \brief Defines the voltage filter pole location, rad/s
    //!
    #define USER_M1_VS_FILTER_POLE_rps          (MATH_TWO_PI * USER_M1_VS_FILTER_POLE_Hz)
    
    
    #elif (USER_MOTOR1 == Drone9616_110KV_48V)
    // Refer to the description of the following parameters for Teknic_M2310PLN04K
    #define USER_MOTOR1_TYPE                   MOTOR_TYPE_PM
    #define USER_MOTOR1_NUM_POLE_PAIRS         (5)
    #define USER_MOTOR1_Rr_Ohm                 (NULL)
    #define USER_MOTOR1_Rs_Ohm                 (0.004600f)   //(0.0282184016)
    #define USER_MOTOR1_Ls_d_H                 (0.000190442806f)    //(1.39398744e-05)
    #define USER_MOTOR1_Ls_q_H                 (0.000190442806f)    //(1.39398744e-05)
    #define USER_MOTOR1_RATED_FLUX_VpHz        (0.0608253318f)      //(0.0159354247)
    #define USER_MOTOR1_MAGNETIZING_CURRENT_A  (NULL)
    #define USER_MOTOR1_RES_EST_CURRENT_A      (4.5)//      3.5
    #define USER_MOTOR1_IND_EST_CURRENT_A      (-4.0)//     -3.0
    #define USER_MOTOR1_MAX_CURRENT_A          (50.0)
    #define USER_MOTOR1_FLUX_EXC_FREQ_Hz       (60.0)
    #define USER_MOTOR1_NUM_ENC_SLOTS          (NULL)
    #define USER_MOTOR1_INERTIA_Kgm2           (4.80185e-06)
    
    // Ls compensation coefficient
    #define USER_MOTOR1_Ls_d_COMP_COEF         (0.15f)          // 0.0f~0.5f
    #define USER_MOTOR1_Ls_q_COMP_COEF         (0.35f)          // 0.0f~0.5f
    #define USER_MOTOR1_Ls_MIN_NUM_COEF        (0.55f)          // 0.5f~1.0f
    
    #define USER_MOTOR1_FREQ_NEARZEROLIMIT_Hz  (5.0f)          // Hz
    
    #define USER_MOTOR1_RATED_VOLTAGE_V        (48.0)
    #define USER_MOTOR1_FREQ_MIN_Hz            (10.0)           // Hz
    #define USER_MOTOR1_FREQ_MAX_Hz            (1200.0)         // Hz
    
    #define USER_MOTOR1_FREQ_LOW_Hz            (10.0)           // Hz
    #define USER_MOTOR1_FREQ_HIGH_Hz           (400.0)         // Hz
    #define USER_MOTOR1_VOLT_MIN_V             (2.0)           // Volt
    #define USER_MOTOR1_VOLT_MAX_V             (48.0)          // Volt
    
    #define USER_MOTOR1_FORCE_DELTA_A          (0.05)          // A
    #define USER_MOTOR1_ALIGN_DELTA_A          (0.01)          // A
    #define USER_MOTOR1_FLUX_CURRENT_A         (0.5)           // A
    #define USER_MOTOR1_ALIGN_CURRENT_A        (1.5)           //
    #define USER_MOTOR1_STARTUP_CURRENT_A      (9.0)           //
    #define USER_MOTOR1_TORQUE_CURRENT_A       (2.0)           // A
    #define USER_MOTOR1_OVER_CURRENT_A         (7.5)           //
    
    #define USER_MOTOR1_SPEED_START_Hz         (75.0)
    #define USER_MOTOR1_SPEED_FORCE_Hz         (60.0)
    #define USER_MOTOR1_ACCEL_START_Hzps       (10.0)
    #define USER_MOTOR1_ACCEL_MAX_Hzps         (50.0)
    
    #define USER_MOTOR1_SPEED_FS_Hz            (3.0)
    
    #if defined(MOTOR1_HALL)
    // Only for hall sensor
    #define USER_MOTOR1_HALL_DELTA_rad          (MATH_TWO_PI / 36.0f)   // rad
    #endif  // MOTOR1_HALL
    
    // only for encoder
    #define USER_MOTOR1_ENC_POS_MAX            (USER_MOTOR1_NUM_ENC_SLOTS * 4 - 1)
    #define USER_MOTOR1_ENC_POS_OFFSET         (668)
    
    // Only for eSMO
    #define USER_MOTOR1_KSLIDE_MAX              (1.00f)       // 2.0f
    #define USER_MOTOR1_KSLIDE_MIN              (0.05f)
    
    #define USER_MOTOR1_PLL_KP_MAX              (15.0f)
    #define USER_MOTOR1_PLL_KP_MIN              (2.0f)
    #define USER_MOTOR1_PLL_KP_SF               (20.0f)
    #define USER_MOTOR1_PLL_KI                 (2.8125E-06f)    // Not used, reserve
    
    #define USER_MOTOR1_BEMF_THRESHOLD          (0.05f)
    #define USER_MOTOR1_BEMF_KSLF_FC_SF         (2.0f)       // 1.0f
    #define USER_MOTOR1_THETA_OFFSET_SF         (1.0f)       // 2.5f
    #define USER_MOTOR1_SPEED_LPF_FC_Hz         (200.0f)     // 100.0f
    
    // for IS-BLDC
    #define USER_MOTOR1_RAMP_START_Hz           (5.0f)
    #define USER_MOTOR1_RAMP_END_Hz             (30.0f)
    #define USER_MOTOR1_RAMP_DELAY              (1)
    
    #define USER_MOTOR1_ISBLDC_INT_MAX          (0.015f)
    #define USER_MOTOR1_ISBLDC_INT_MIN          (0.010f)
    
    // for Rs online calibration
    #define USER_MOTOR1_RSONLINE_WAIT_TIME      (60000U)    // 5min/300s at 5ms base
    #define USER_MOTOR1_RSONLINE_WORK_TIME      (24000U)     //2min/120s at 5ms base
    
    // Current and Speed PI Regulators Tuning Coefficient
    #define USER_MOTOR1_GAIN_SPEED_LOW_Hz        (60.0f)
    #define USER_MOTOR1_GAIN_SPEED_HIGH_Hz       (150.0f)
    
    #define USER_MOTOR1_KP_SPD_START_SF          (1.5f)       // 0.1~100.0
    #define USER_MOTOR1_KI_SPD_START_SF          (1.5f)       // 0.1~10.0
    
    #define USER_MOTOR1_KP_SPD_LOW_SF            (2.0f)       // 0.1~100.0
    #define USER_MOTOR1_KI_SPD_LOW_SF            (2.0f)       // 0.1~10.0
    
    #define USER_MOTOR1_KP_SPD_HIGH_SF           (1.0f)       // 0.1~100.0
    #define USER_MOTOR1_KI_SPD_HIGH_SF           (1.0f)       // 0.1~10.0
    
    #define USER_MOTOR1_GAIN_IQ_LOW_A            (2.0f)
    #define USER_MOTOR1_GAIN_IQ_HIGH_A           (6.0f)
    
    #define USER_MOTOR1_KP_IQ_START_SF           (1.5f)       // 0.1~10.0
    #define USER_MOTOR1_KI_IQ_START_SF           (1.5f)       // 0.1~10.0
    
    #define USER_MOTOR1_KP_IQ_LOW_SF             (2.0f)       // 0.1~10.0
    #define USER_MOTOR1_KI_IQ_LOW_SF             (2.0f)       // 0.1~10.0
    
    #define USER_MOTOR1_KP_IQ_HIGH_SF            (1.0f)       // 0.1~10.0
    #define USER_MOTOR1_KI_IQ_HIGH_SF            (1.0f)       // 0.1~10.0
    
    #define USER_MOTOR1_KP_ID_SF                 (1.0f)       // 0.1~10.0
    #define USER_MOTOR1_KI_ID_SF                 (1.0f)       // 0.1~10.0
    
    

    I requesting you to can we connect conference call for 5 min. So, It will help as to resolve the issue.

    Thanks,

    Premkumar.T

  • Hello again,

    Before we proceed with any calls, how did you decide on these particular values for your motor? Verifying these values is incredibly important.

    Keep in mind:

    • user_mtr1.h expects line to neutral peak voltage (for rated flux calculations)
      • I've noticed many motor specs I've come across provide line to line. To convert, divide by sqrt(3)
      • Most motor specs I've come across provide rms voltage instead of peak. To convert, multiple by sqrt(2)
    • I notice that you set USER_MOTOR1_MAX_CURRENT_A to 50A and USER_MOTOR1_OVER_CURRENT_A to 7.5A. I would highly recommend setting both of these to the rated motor current.

    If there's any value you're uncertain of exact numbers for, I've seen success in setting the value as close to correct as I am able to approximate, then using universal lab build 4 and setting flag_bypassMotorId to 'false'. This will use InstaSPIN-FOC FAST's Motor Identification routine to approximate several of the basic motor physical parameters.

    Regards,
    Jason Osborn

  • Hello Jason,

    Thank you for your support.

    Now, I can able to run the Motor. I modified the accelerationMax_Hzps value and overcurrent 

    I taken form the Motor values form InstaSPIN-FoC. 

    Thanks,

    Premkumar.T