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.

TMDXIDDK379D: Using IDDK -R2.2.1 eval kit with LAUNCHXL-F28069M for instaspin-motion evaluation.

Part Number: TMDXIDDK379D

Encountering the problem that fuse burned for Lab12A and failed ID with EC2004,  it is ok to run lab01b at 200RPM. may I know what could be the problem?   

modified user.h below

#define USER_IQ_FULL_SCALE_VOLTAGE_V      (240.0)//(450.0)   // 450.0 Example for hvkit_rev1p1 typical usage

#define USER_ADC_FULL_SCALE_VOLTAGE_V       (236.4)//(409.6)      // 409.6 hvkit_rev1p1 voltage scaling

#define USER_IQ_FULL_SCALE_CURRENT_A          (10.0)   // 10.0 Example for hvkit_rev1p1 typical usage

#define USER_ADC_FULL_SCALE_CURRENT_A        (12.0) //(19.89)     // 19.89 hvkit_rev1p1 current scaling

#define USER_NUM_CURRENT_SENSORS            (2)   // 3 Preferred setting for best performance across full speed range, allows for 100% duty cycle

user motor spec: 

#define USER_MOTOR_RES_EST_CURRENT (0.5) // During Motor ID, maximum current (Amperes, float) used for Rs estimation, 10-20% rated current
#define USER_MOTOR_IND_EST_CURRENT (-0.5) // During Motor ID, maximum current (negative Amperes, float) used for Ls estimation, use just enough to enable rotation
#define USER_MOTOR_MAX_CURRENT (1.8) // CRITICAL: Used during ID and run-time, sets a limit on the maximum current command output of the provided Speed PI Controller to the Iq controller
#define USER_MOTOR_FLUX_EST_FREQ_Hz (20.0) // During Motor ID, maximum commanded speed (Hz, float), ~10% rated
#define USER_MOTOR_ENCODER_LINES (2500.0) // Number of lines on the motor's quadrature encoder
#define USER_MOTOR_MAX_SPEED_KRPM (3.0) // Maximum speed that the motor

  • It seems the current feedback is a problem, I am using LEM current feedback Ifb_V, Ifb_W. should I pass them to I.value[1] &I.value[2]?
  • You need to write to gAdcData.I.value[] array, this array is passed to the Clarke transform to produce Ia,b

    Sean

  • Hello Sean,

    Thanks. I like to confirm how to write LEM feedback to gAdcData.I.value[] array? should I write Ifb_V, Ifb_W to value[0]/value[1] or value[1]/value[2]?
    Clark_run seems always take value[0][1][2] as a,b,c phase feedback. But for LEM sensor on IDDK-R2.2.1, the feedback are from b,c phase only.

    Clark_run:
    if(numSensors == 3)
    {
    pOutVec->value[0] = _IQmpy(lshft_1(pInVec->value[0]) - (pInVec->value[1] + pInVec->value[2]),alpha_sf);
    pOutVec->value[1] = _IQmpy(pInVec->value[1] - pInVec->value[2],beta_sf);
    }
    else if(numSensors == 2)
    {
    pOutVec->value[0] = _IQmpy(pInVec->value[0],alpha_sf);
    pOutVec->value[1] = _IQmpy(pInVec->value[0] + lshft_1(pInVec->value[1]),beta_sf);
    }

    Another question for me is why the current can go beyond my setting?
    USER_MOTOR_MAX_CURRENT (1.8)
    USER_MOTOR_RES_EST_CURRENT (0.5)
    USER_MOTOR_IND_EST_CURRENT (-0.5)
  • Since the order of phases doesn't matter here, you can approach this a few ways. You can label b,c as a,b and pass in normally, in which case you would just assign the LEM feedback to I.value[0], I.value[1] and pass to the function. I.value[] becomes pInVec, and [0,1] get operated on in the "else if" branch

    You can also pre-calculate the third phase using the following:
    I.value[0] = -(Ib+Ic)
    I.value[1] = Ib
    I.value[2] = Ic

    And use the if(numSensors==3) branch

    Sean