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.

Problem with Lab2a and Lab2c Motor Identification

Other Parts Discussed in Thread: DRV8312

1: Which lab do I need to use to identify my motor? (Lab 2a or Lab 2c)

I use DRV8312-C2 and F2805x controlCard

Here are my motor's name and parameters: FAULHABER BLDC Series 1628024B

Terminal inductance, phase to phase L: 525uH

No-load current: 0.052A

Max current: 0.41A

I used both lab 2a and 2c to identify my motor, but the values come out differently, which one do I need to choose?

Do I still need to make changes on USER_MOTOR_FLUX_EST_FREQ_Hz (20 to 100) and USER_PWM_FREQ_kHz    (45.0 to 60) if I use Lab2a?  Or only make these changes on Lab2c?

2: How do I set my USER_MOTOR_RES_EST_CURRENT and USER_MOTOR_IND_EST_CURRENT?

Is base on 10-20% of maximum current or No-load current?

3. What cause my gMotorVars.Lsd_H and gMotorVars.Lsq_H equal to 4.98136199e-10 or 3.1138512e-11?

Thank you for the help!!!

  • 1. Lab2a is ok for this motor, Lab2c is for low inductance motor. USER_MOTOR_FLUX_EST_FREQ_Hz (20 to 100) and USER_PWM_FREQ_kHz (45.0 to 60) is only for Lab2c.
    2. 20%~50% of motor rate current motor, the maximum current is maximum torque current.
    3. You need to check whether the kit is ok, the jump switch is on correct position on DRV8312 and F2805x controlCard. Is the identified Rs correct? Does the motor run smoothly during identify Ls and Flux? If no, please check the kit and CURRENT, FREQ.
  • Thank you Yanming,

    Here are my DRV8312 DMC Board hardware switch positions:
    JP1 is in the VR1 position
    M1 is in the H position
    RSTA,RSTB and RSTC are in the middle MCU position

    Here are my F2805x switch position:
    SW1 (Position 1, BOOT)
    SW2, SW3 (Position 0, downward)
    SW4 (Position 0, upward)
    SW5,SW6,SW8 (Position 0, right)
    SW7,SW9,SW10,SW11(Position 1, left)

    Here are my motor settings using Lab 2a:

    #define USER_IQ_FULL_SCALE_FREQ_Hz (548.2)
    #define USER_SYSTEM_FREQ_MHz (60.0)
    #define USER_PWM_FREQ_kHz (30.0)
    #define USER_NUM_PWM_TICKS_PER_ISR_TICK (3)

    #define USER_MOTOR_TYPE MOTOR_Type_Pm
    #define USER_MOTOR_NUM_POLE_PAIRS (1)
    #define USER_MOTOR_Rr (NULL)
    #define USER_MOTOR_Rs (NULL)
    #define USER_MOTOR_Ls_d (NULL)
    #define USER_MOTOR_Ls_q (NULL)
    #define USER_MOTOR_RATED_FLUX (NULL)
    #define USER_MOTOR_MAGNETIZING_CURRENT (NULL)
    #define USER_MOTOR_RES_EST_CURRENT (0.2) (~50% of Max current )
    #define USER_MOTOR_IND_EST_CURRENT (-0.2) (~50% of Max current )
    #define USER_MOTOR_MAX_CURRENT (0.41) (max current)
    #define USER_MOTOR_FLUX_EST_FREQ_Hz (20.0)

    Debugged mode ouput:

    gMotorVars.Rs_Ohm float 8.29056549 (Close to What I calculated 7.55 ohms)
    gMotorVars.Lsd_H float 4.98136199e-10 (always this value, close to 0 )
    gMotorVars.Lsq_H float 4.98136199e-10
    gMotorVars.Flux_VpHz float 0.0298385061
    gMotorVars.I_bias
    [0] long -0.8691809773 (Q-Value(24))
    [1] long -0.8688325286 (Q-Value(24))
    [2] long -0.8654327393 (Q-Value(24))
    gMotorVars.V_bias
    [0] long 0.4917182326 (Q-Value(24))
    [1] long 0.498413384 (Q-Value(24))
    [2] long 0.4867677093 (Q-Value(24))

    gMotorVars.VdcBus_kV long 0.02384990454 (Q-Value(24))

    Any ideas why my gMotorVars.Lsd_H and gMotorVars.Lsq_H are not detectable?
    My motor only vibrates a little at beginning and then run smoothly during identify Ls and flux. 4.98136199e-10 is the value I get for Ls.

  • You can try to use lab02c if you make sure the switchs are right and motor is pmsm, and try to increase or decrease maximum current to run motor smoothly based on your motor rated parameters.
  • I tried labc and I can only get a readable Lsd and Lsq value while I changed the system frequency to 90MHz from default of 60MHz. Is that safe to do that on F2805x?
    And I got different Lsq_H and Lsd_H value while I changed PWN frequency from 45KHz to 80 KHz as followings:

    PWN: 80KHZ, SYSTEM: 90MHZ, USER_MOTOR_FLUX_EST_FREQ_Hz (250.0)
    gMotorVars.Rs_Ohm: 8.35680485
    gMotorVars.Lsd_H: 0.000574623
    gMotorVars.Lsq_H: 0.000574623
    gMotorVars.Flux_VpHz: 0.019629961

    PWN: 60KHZ, SYSTEM: 90MHZ, USER_MOTOR_FLUX_EST_FREQ_Hz (250.0)
    gMotorVars.Rs_Ohm: 8.76576424
    gMotorVars.Lsd_H: 0.000532052771
    gMotorVars.Lsq_H: 0.000532052771
    gMotorVars.Flux_VpHz: 0.0198687389

    PWN: 45KHZ, SYSTEM: 90MHZ, USER_MOTOR_FLUX_EST_FREQ_Hz (250.0)
    gMotorVars.Rs_Ohm: 8.76576424
    gMotorVars.Lsd_H: 0.000393422175
    gMotorVars.Lsq_H: 0.000393422175
    gMotorVars.Flux_VpHz: 0.0200993195

    Calculated value BASE on my motor datasheet
    #define USER_MOTOR_Rs (7.55)
    #define USER_MOTOR_Ls_d (0.0002625)
    #define USER_MOTOR_Ls_q (0.0002625)
    #define USER_MOTOR_RATED_FLUX (0.02691607)

    Which one should I choose and Why?
    Please help, thanks!
  • It's better to run F2805x with 60MHz. And USER_PWM_FREQ_kHz (60KHz), USER_NUM_PWM_TICKS_PER_ISR_TICK (3), USER_MOTOR_FLUX_EST_FREQ_Hz (100Hz).