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.

Failed Motor Identification

Other Parts Discussed in Thread: MOTORWARE

Hello,

I am having an issue with motor identification for the DRV8301-69M EVM.  I have hooked up a 30V, 40A power supply to the HC board with some extra bypass capacitors. I am running the InstaSPIN_MOTION_F2806xM software and trying to do the motor identification test.

It is calculating the stator resistance and Flux (V/F) properly-at least they are repeatable. But, mid way at  50% through the test, the hardware gets a FAULT or just hangs. I have triggered on the FAULT signal, and captured the current waveform on a single phase, as well as the PVDD signal going to the board and the OCTW signal.

 On the first page of the attached file:

1st page is the screen shot of when the software hangs.

Second page is the captured waveforms: 

CH1 (Yellow) :    FAULT (triggered)

CH2 (Cyan):         PVDD

CH3(Magenta): OCTW

CH4(Green) :     Phase Current

The current waveform at ~2300 RPM looks quite distorted.

I am not sure what is really triggering the FAULT condition. Also there are times where the software hangs, and the FAULT pin is not asserted!

Regardless of FAULT signal being asserted or not, I have not been able to make it complete the test.

Also, where would I find the user.h file so I can change some of the parameters? Such as PWM frequency.

Any comments will be greatly appreciated.

2744.Tula_InstaSPIN_snapshot.pdf

  • Erik Adolfsson said:
    The current waveform at ~2300 RPM looks quite distorted.

    you have set a Max freq of 100 Hz (1500 RPM) so you shouldn't get to 2300 RPM.

    You also have set an Estimation freq of 5 Hz (75 RPM) so that's the top speed you should have reached.

    How did you decide to set these?

    Please give me as much information about your motor as possible.  We can probably get it working with the GUI by getting these initial settings correct, unless it is a very low inductance (high speed) motor.  If so you'll need to move to MotorWare and proj_lab02c

  • The Estimation Freq (Hz)=5 is suggested by the software for all ACIM. I have arbitrarily set the Max Freq =100.

    I got the Software to finish the motor ID procedure, which I suspect are erroneous.  I had to increase the Flux to greater than the 0.0327964 default value for it to complete the test. The Rs value calculated is ~ lower than I have measured. The stator inductance  measured with a meter is around 100uH, which is low as you have mentioned. InstaSPIN reports as Ls_d and Ls_q =1.1e-9, and Rr=0.0000773 , which are probably pegged to the lowest limit of the hardware capability.

    I am currently running with the DRV8301-HC-EVM, but I also have the HV kit available to me. Please advise if one would be better than other. With The Mosfets in the HC board I thought I can run at a higher PWM frequency.

     As per Quick Start Guide for this board, I probably have to modify the sense voltage gain on the board for better resolution? . I know I have to modify the user.h to reflect this change, and also increase the PWM frequency as well. So I am feeling my way through the code building process now.

    Thank You 

     

  • I missed that you were trying an induction motor.

    For induction motors the GUI usually doesn't work. It uses a very old code base. You must use MotorWare proj_lab02x to ID induction motors most reliably.

    But we still have some issues ID'd induction motors that are low voltage / higher current.  We have a fix in process but it won't be available for some time unfortunately.

    Regarding the 5 Hz, that is for 50/60Hz induction motors. Your low voltage is likely higher so you need to run faster.

    I wouldn't mess with any of the HW at this point. There are enough other challenges.

    First double check the rated flux value you are using.  Then, during motor ID the rated flux level needs to be reached. If it isn't reached this is for one of two reasons

    1. the USER_MAX_CURRENT is too low, not allowing enough current to build the flux

    2. the #define USER_IDRATED_DELTA  is too small, not allowing the Id to grow fast enough in the time window defined

    this is usually the first thing to get sorted out with the ACI motor.  After this you must LOCK the rotor (that means don't let it move, mechanically stop it from rotating) for the duration of the ID.  Here is where you can run into issues with the Ls degrading to essentially 0 and we don't have the fix released. 

    What I would recommend doing here is to use the Lhf identified from the initial RoverL as your Ls_d and Ls_q values.  You can find Lhf in "controller_obj" (with F2806x, just "ctrl" in F2805x/02x) through your expressions view.

  • Hello,

    I am running the proj_lab02a for now, however I cannot get passed the error checking routine. For example I am not sure how USER_MAX_CURRENT_SLOPE which is calculated based on other positive  variables can be <=0

     Error= USER_ErrorCode_maxCurrentSlope_Low error.

    USER_MAX_CURRENT_SLOPE=((8)/(45)/(uint_least32_t)((uint_least32_t)(((float_t)(45.0) * 1000.0 / (float_t)(3))/(1))/(15)))

  • attach your user.h file

    something must be set incorrectly, but I agree it doesn't seem like it could ever be negative...but do you have one of these values as 0?

      if(USER_MAX_CURRENT_SLOPE <= 0.0)
        {
          USER_setErrorCode(pUserParams, USER_ErrorCode_maxCurrentSlope_Low);
        }

    #define USER_MAX_CURRENT_SLOPE           (USER_MOTOR_RES_EST_CURRENT/USER_IQ_FULL_SCALE_CURRENT_A/USER_TRAJ_FREQ_Hz) 

  • 0247.user.h

    I am using MY_MOTOR

    can you view the file?

  • yes, I can view.

    First, dropping in your user.h, and building

    C:\ti\motorware\motorware_1_01_00_13\sw\solutions\instaspin_foc\boards\drv8301kit_revD\f28x\f2806xF\src

    I get the error

    USER_ErrorCode_RoverL_estFreq_Hz_High

    so let's increase

    #define USER_IQ_FULL_SCALE_FREQ_Hz        (400.0)

    but also lower the RoverL (not sure why you put this to 500)

    #define USER_R_OVER_L_EST_FREQ_Hz (100.0)

    now I get the same error

    if(USER_MAX_CURRENT_SLOPE <= 0.0)
        {
          USER_setErrorCode(pUserParams, USER_ErrorCode_maxCurrentSlope_Low);
        }

    I think this is getting set to 0 because you used a fixed point value

    USER_MOTOR_RES_EST_CURRENT      (8)

    if you update this to

    USER_MOTOR_RES_EST_CURRENT      (8.0)

    it now has no error.

    I somewhat doubt this value

    USER_MOTOR_RATED_FLUX           (0.1)

    how did you calculate?

    What all can you tell me about this motor? Expected speed, etc?  If this is a low voltage, higher current induction motor we still have some issues with getting proper ID on these.

    also, I don't think this is a real issue, but I moved your motor from

    #define My_Motor                    104

    to the induction motors

    #define My_Motor                    304

    use attached

    user.h
  • Thank You , I got it to at least go through the Rs ID. Getting an error in CTRL..

  • read the section on motor ID for ACI motors in SPRUHJ1

    in the step after Rs it injects current to try to build the flux target

    USER_MOTOR_RATED_FLUX

    so you should see if

    gMotorVars.Flux_VpHz

    reaches this value

    I would guess your RATED_FLUX should be higher though...again, how did you choose your value of (0.1)

    read SPRUHJ1 on how to calculate this value based on the line voltage

  • Hello Chris,

    Yes, you are correct , I am not sure why I had  0.1 for the rated flux. As per formula given, for 120V , and 12000 RPM, I chose 0.4. It completed the test including the locked rotor.But still not sure if the numbers are correct.

    Please see first sheet of attached for the snapshot.

    On the bench,  Phase-Phase stator resistance & inductance measured as: Rs=34 mOHM ; Ls=94uH .

    I know FAST does not need the know the stator inductance by itself, but rather the equivalent impedance, as reflected from secondary.

    How would I find the equivalent circuit parameters of ACIM as per sheet 2 of the attached?

    According to equation 71 from UG, Ls_d/Ls_q= Ls*(sigma) ------->(Greek letter) , is this correct?

    Still there are Lm and Lr which are  undefined.

    Thank You,

    Babak

    3872.Tula_snapshot.pdf

     

  • Babak,

    Please run 2a again and report the two variables you get after RoverL state finishes:

    controller_obj

    .Lhf

    .RoverL

    Then can you try running 2c on this motor, using the same user.h?  I'm interested to see if there is a difference in Ls.

    Your Rr is obviously incorrect. It is more typical to be in the ~65% of Rs range. You can try setting that for now if you like, but Rr really only effects the estimation of speed.

    Your Rs value is reasonable and nearly matches your hand measurements: 0.019 ohm line-neutral = 0.038 ohm line-line    is close to 0.034 ohm.

    But to support 800 Hz (12000 RPM with 8 poles) your Ls value should be factors lower, probably in the tens of uH range.

    You need to make some changes in your user.h for these speeds also. Try these changes before you ID again.

    #define USER_IQ_FULL_SCALE_FREQ_Hz        (900.0)

    #define USER_MOTOR_FLUX_EST_FREQ_Hz     (40.0)

  • Babak Mazda said:
    How would I find the equivalent circuit parameters of ACIM as per sheet 2 of the attached?

    see if this thread helps

  • Hi Chris,

    1)I don't know how to check the variable names you have mentioned.

    2) re-ran the test and got different results. (same parameters). During lock test, how much movement if any is acceptable? I have a very strong tourniquet, but I sensed a very small movement.

    3)I'll try your suggested numbers, see if I get a repeatable results.

    4) I didn't see a link to any threads regarding the equivalent circuit.

    Thanks,

    Babak

  • Hi Chris,

         Increased the input voltage to 50V, the results are more repeatable, however Rs measurement is lower!  Ls_d/Ls_q are in the 34u H to 43u H range, even though I had one outlier. I have attached the results of one

    run.

    Thanks,

    Babak

  • here is the thread, not sure why it didn't link

    http://e2e.ti.com/support/microcontrollers/c2000/f/902/t/318299.aspx

    also, the equivalent circuit is discussed in SPRUHJ1 section

    4.8.1

  • Hi Chris,

    My motor does not have a nameplate, and if Ls =Ls_d/Ls_q as per equation 71 , then still Lm and Lr are unknown.

    Also 'sigma' in the equation is dependent on Ls ? This is confusing!

    Babak

     

     

  • yes, it is confusing. If you don't have a nameplate it's not going to be possible to fill in the values accurately for an ACI.

    as I mentioned, the ACI ID works for lower current motors (low and high voltage), but once the current gets larger it's harder to control during the "open loop" ID stage and get stable values.  We know how to solve this, we just haven't been able to prioritize the creation of a new lab / functions and release.

    I apologize, but just letting you know where things stand.