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.

IPM Motor, Ld = Lq when I thought they should be different

Other Parts Discussed in Thread: LAUNCHXL-F28027F, MOTORWARE

Greetings -

I have an IPM motor that identifies and runs OK on lab_2b on the LAUNCHXL-F28027F.  I can start, stop, etc, but the phases are very non-sinusoidal, even at higher loads.

On attempting to run lab 3a, the motor has a very difficult time starting.  It is jumping quite a bit. in many different directions, but will sometimes jump in the right direction and get started after a minute or two.

My motor parameters:

#define USER_MOTOR_TYPE MOTOR_Type_Pm
#define USER_MOTOR_NUM_POLE_PAIRS (2)
#define USER_MOTOR_Rr (0.0)
#define USER_MOTOR_Rs (0.02587504)
#define USER_MOTOR_Ls_d (3.05e-5)
#define USER_MOTOR_Ls_q (3.05e-5)
#define USER_MOTOR_RATED_FLUX (0.0)
#define USER_MOTOR_MAGNETIZING_CURRENT (0.0)
#define USER_MOTOR_RES_EST_CURRENT (1.0)
#define USER_MOTOR_IND_EST_CURRENT (-1.0)
#define USER_MOTOR_MAX_CURRENT (6.0)
#define USER_MOTOR_FLUX_EST_FREQ_Hz (150.0)

As this is an IPM motor, I was expecting that the Ld would be different from the Lq, but they are exactly the same.  Thank you for your time,

j

  • "Ld = Lq when I thought they should be different"
    the motor ID identifies an average inductance (it's mostly Ld)
    if you know the saliency of your motor you can update it yourself in user.h
    but saliency changes dramatically under load, so most people use a look up table or curve fit equation to change the inductance at different operating points

    your flux is missing from the USER_MOTOR. This needs to be updated to what was identified.

    in 3a I would look at:
    - you either need to have your actual offsets saved or enable the OffsetCalc flag
    - you either need to have your Rs saved or enable the RsRecal flag (always preferred if you can)


    also, make sure you aren't using CCS v6.1.3, it has a major bug
  • Thank you for the response. correcting the USER_MOTOR_RATED_FLUX value appears to have corrected my startup issue.

    #define USER_MOTOR_RATED_FLUX (0.003086)

    How can I identify the saliency at different operating points? Are operating points more appropriately chosen as a function of current? Speed?

    I am attaching a couple of screenshots of the phase current.  In my limited experience, these should be *much* more sinusoidal.  Can you tell what might be causing the poor waveshape?  The first is at 10krpm, the second at 40krpm.  The application requires a minimum of 50krpm.


    Thanks!

    j

  • I assume this motor is a small hobby type motor used for a propulsion?

    1. it is unlikely this motor has much saliency at all.
    2. the saliency can not be identified, it would have to be designed and modeled through simulation. again, these motors don't have much saliency so it really isn't buying you much anyways if you did know the saliency

    the first waveform certainly doesn't look good, but it's also really low current. having some load will make it look better. it could also be due to controller tuning. Did you tune the controller at all? Is it holding 10 krpm well?

    the second looks completely normal

    50 KRPM is 1667 Hz with 4 pole motor, very high. Doable, but certainly current measurement at these speeds under dynamic load becomes more challenging.
  • This is a custom in-house IPM motor. It has 4 poles and we have had it running - with sensors - up to 70krpm (2.3kHz). It has a fan load, so low-speeds mean low current while high speeds mean higher current, depending on the air load. I have asked the motor designer for the Ld/Lq characteristics, which have been modeled for the operating point.

    In response to your question, I am not sure what you mean when you say 'tune the controller'. Are you talking about the speed controller or the current controller? It actually holds 10krpm quite well, so the speed controller appears to be working quite well. When I am watching the phase current, there is an infrequent blip where the controller is obviously a bit off momentarily. It is never a high spike or anything like that, but I have to think that it could be improved with tuning, but I'm not sure where to look for that or what to tune. I'm still working my way through the labs, so I may stumble across it at that point.

    Thank you for your support,

    j
  • at low speed I was questioning the tuning of the controller, but I think the very low Bemf voltage and low current (low load) are the main cause.

    for your high speed application you may need to update the voltage filter pole. If you really need to get to 2.3 KHz I would suggest a pole of 600 Hz. see SPRUHJ1 chapter 5 on the details. you will then update this to match
    #define USER_VOLTAGE_FILTER_POLE_Hz (364.682)

    and then you can try increasing this value up towards 1000.0 to see if it helps
    #define USER_SPEED_POLE_rps (100.0)


    we are releasing a lab in the next version of MotorWare that shows you how to use the graphs to do step response tuning. In general your current controller tuning will be good, just the Kp value is softened by a factor of 4 for general stability. Certain applications may need it increased or decreased.