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.

Trouble with motor start up

I am working through lab 5b and trying to tune the motor.I am having two issues with the motor starting up. First, I observe that there is a delay for several seconds before the motor ramps up to speed. Sometimes the lag time is too long and the motor does not start up. It appears to ramp up and down erratically for several seconds. I can see the driver providing a very odd shaped current to the motor. I turn everything off when the motor gets about 10 deg C below max operating temperature.  I have a couple of questions in general concerning the labs. In lab 4, should the motor be connected to its load? Without a load, the motor ramps up fine with a Iqref of approximately 1 A and spins at 1 Krpm. With a load I can't get it to turn even at 3.3 amps, which I would expect due to the extra inertia of the load. It looks like I need more current at start up than the motor drive is providing. Do I need to adjust the current magnitude for the force angle?

Thanks,

Chuck

  • Chuck Sampson said:
    First, I observe that there is a delay for several seconds before the motor ramps up to speed.

    What are the values for the flags RsRecal and OffsetCalc ?

    Chuck Sampson said:
    In lab 4, should the motor be connected to its load?

    initially yes, but you can test in lab04 and 05a with torque control under load.  once the motor is running, applying a load should work fine.  but starting up with a certain %+ of load can be challenging as the magnetic fields are not initially aligned.  The ForceAngle flag being active helps in this scenario, but isn't perfect.  You also need to choose the most applicable ForceAngle rotation and point where it switches to sensorless FAST.

    #define USER_ZEROSPEEDLIMIT   (1.0 / USER_IQ_FULL_SCALE_FREQ_Hz)

    in this define "1.0" Hz will be the transition point from ForceAngle to FAST.  Choosing this frequency depends on the FLUX of your motor relative to the FULL_SCALE_VOLTAGE. There isn't a set formula for determining...most are using some trial and error.  For most larger FLUX machines we see anywhere from 1.0 to 8.0 Hz work well. For very small flux machines 10.0 to 20 Hz is better.

    the frequency of the emulated "ForcedAngle" is set by

    #define USER_FORCE_ANGLE_FREQ_Hz   (2.0 * USER_ZEROSPEEDLIMIT * USER_IQ_FULL_SCALE_FREQ_Hz)

    some of the user.h files have this 2.0 and others do not. It's important to use this formula as-is as it insures that the emulated frequency is always double the transition point and helps with reliable start-up and transition to FAST.

    Starting sensorless - and smooth - with very high / maximum load is extremely challenging (to the point that with some motors it is not possible).

  • Thanks Chris, motor speeds up just fine now.
  • Chuck,
    Great! What % of continuous max load are you testing start-up with?

    What exactly did you change to get things working?
  • Chris,

    I thought I had everything up and running ok. However, now I am having intermittent stalls depending on time between starts and motor temperature. The motor I am working with has a minimum start up speed of 1.8 Krpm, or 150 Hz. What it the maximum I can set the IqRef frequency ?
  • "What it the maximum I can set the IqRef frequency ?"
    I can't say for your motor. For the software you should limit to 1/2 the ADC_FULL_SCALE_FREQ_Hz

    hearing motor temperature makes me think the Rs is changing significantly before start-up. You can look at doing an RsRecal before you start, and then running RsOnline (proj_lab07).

    Or maybe it's just a matter of adjusting the
    #define USER_ZEROSPEEDLIMIT (1.0 / USER_IQ_FULL_SCALE_FREQ_Hz)

    from 1.0 Hz to a higher value.

    make sure you keep this variable fixed
    #define USER_FORCE_ANGLE_FREQ_Hz (2.0 * USER_ZEROSPEEDLIMIT * USER_IQ_FULL_SCALE_FREQ_Hz)
  • "the frequency of the emulated "ForcedAngle" is set by

    #define USER_FORCE_ANGLE_FREQ_Hz (2.0 * USER_ZEROSPEEDLIMIT * USER_IQ_FULL_SCALE_FREQ_Hz)

    some of the user.h files have this 2.0 and others do not. It's important to use this formula as-is as it insures that the emulated frequency is always double the transition point and helps with reliable start-up and transition to FAST."

    Chris,

    Does this mean you can't change the Force angle frequency?

    I have tested the compressor with other motor drivers and it appears that I need to start up the motor at 60 Hz. I am not sure of the current. The driver I used for testing outputs a square wave. The peaks are 25 As. What values can I change to get close to this?

    Thanks,
    Chuck
  • you change the ForceAngle frequency by changing the "1.0" in this definition with the frequency (Hz) you would like
    #define USER_ZEROSPEEDLIMIT (1.0 / USER_IQ_FULL_SCALE_FREQ_Hz)


    I'm not sure I follow what you're talking about with 60 Hz. You certainly don't need to emulate a 60 Hz rotating field.

    I would try setting "2.0" though maybe "10.0" at the highest and see how it does.

    You will need the USER_MOTOR_MAX_CURRENT_A to be set to at least (25.0) and maybe even higher if the compressor may have "full load" at start.
  •  

    Chris,

    The scope plot below is the “A phase” start-up current of our high-speed, low inductance, compressor, VH2024A, This is the 60 Hz I was referring to. This waveform is produced by a different motor driver obviously. We are trying to replace it with the F28027 motor driver.

    The scope plot below is from the default phase A and B of the F28027 motor driver. This frequency and magnitude (10 A, 12 Hz) of start-up current is not capable of starting the compressor reliably.

    So my plan was to increase the frequency and magnitude of the force angle start-up current until I could get a reliable start-up by matching the current magnitude and frequency of the original motor driver. By reliable I mean repeatable. With a force angle start up current of 10 A and 12 Hz, the compressor will stall at high temperature and/or repeated on/off operation –about every third are fourth start-up.

    I now have the following settings in my user.h file, and the start-up appears to be very reliable. The wave form below is the start-up current with the new settings for ZEROSPEEDLIMIT AND USER_MOTOR_MAX_CURRENT.

    The frequency is about 35 Hz and the maximum amplitude for the A phase is 15 A pk. 

    I also modified the calculated Kp_Idq from 0.199 to 0.112. The change in Kp_Idq reduced the power dissipation by 12 W. 

    I could not run lab 5A. Every time I reached a high enough current to cause the motor’s rotor to spin, the controller lost control and the motor would spin up very high, sometimes 6500 rpm. I am using the calculated speed Kp and Ki at present and I am now working through lab 5b.

    USER_PWM_FREQ_kHz     (30.0)

    USER_NUM_PWM_TICKS_PER_ISR_TICK       (3)

    USER_NUM_ISR_TICKS_PER_CTRL_TICK       (1)

    USER_NUM__CTRL_TICKS_PER_EST_TICK                (1)

    USER_NUM_CTRL_TICKS_PER_CURRENT_TICK      (1)

    #define USER_ZEROSPEEDLIMIT   (16.0 / USER_IQ_FULL_SCALE_FREQ_Hz)

    USER_FORCE_ANGLE_FREQ_Hz   (2.0*USER_ZEROSPEEDLIMIT * USER_IQ_FULL_SCALE_FREQ_Hz)

    #define USER_MOTOR_FLUX_EST_FREQ_Hz     (500.0)

    #define USER_MOTOR_MAX_CURRENT          (12.0)

    My question is this: how high can I modify the start-up current frequency? What is the highest value I can set the USER_ZEROSPEEDLIMIT setting? Can I modify this parameter to 32 to 60Hz at start up?

    Thanks,

    Chuck Sampson

     

  • Chuck,
    I've asked someone else to comment, but in the meantime here are my thoughts.

    1. What speed do you want the motor to run at when you first start up? Is this variable or will it be fixed? For example some customer fix the start-up on their compressor to say 20% of rated speed each time. Then increase the SpeedRef from there depending on the user/logic command.

    2. For ForceAngle, you don't need to set this to transition from ForceAngle to FAST at the target frequency. You should make it transition at a frequency when FAST is providing good feedback. You have to figure this out through testing, but 10-20 Hz should be plenty high (and most applications are good in the 1-5 Hz range). Remember, you aren't controlling the current frequency. The current frequency will follow the rotor frequency. You are controlling an emulated angle that is used by the control system, just to drive the rotor to a frequency where FAST can start providing feedback.

    3. Your current waveforms still look strange. Is this compressor operational? The loads are changing this much so that the current waveform changes?

    4. This
    #define USER_MOTOR_FLUX_EST_FREQ_Hz (500.0)

    Is too high. It is telling the Motor ID to run to 500 Hz during the Flux and Ls estimation states. This should be set to ~10% of the rated frequency of the machine.

    can you please drag/drop your user.h into a post so I can view?
  • feedback from other team members

    1. follow www.ti.com/lit/SPRUHJ1 chapter 14.4.2
    2. leave the ~default Force angle values to lock onto the estimated angle as low frequency as possible, hence maximizing torque usage at a good field orientation:

    #define USER_ZEROSPEEDLIMIT (0.5 / USER_IQ_FULL_SCALE_FREQ_Hz)
    #define USER_FORCE_ANGLE_FREQ_Hz (2.0 * USER_ZEROSPEEDLIMIT * USER_IQ_FULL_SCALE_FREQ_Hz)

    3. Use RsRecal and insure #define USER_MOTOR_RES_EST_CURRENT is large enough to force an alignment in the D axis, which is essentially what your other solution is doing (you can see this initial current at stand still in your graph:)
  • Chris,

    Thanks for responding.

    The first scope plot in my the last message I sent was the scope plot for the original motor controller phase A current and that is normal operation. The leakage inductance for this motor is only 96 uH. The motor powers a rotary compressor. The suction pressure is 60 psi and the compression pressure is 150 psi. The peak torque is about 0.2 NM.

    "1. What speed do you want the motor to run at when you first start up? Is this variable or will it be fixed? For example some customer fix the start-up on their compressor to say 20% of rated speed each time. Then increase the SpeedRef from there depending on the user/logic command."

    The minimum operating speed is 1800 RPM. We set the minimum to 3000 RPM, the maximum is 6000 RPM, we go to a maximum of 5000 RPM linearly and vary the speed from minimum to maximum using a control voltage.  

    "2. For ForceAngle, you don't need to set this to transition from ForceAngle to FAST at the target frequency. You should make it transition at a frequency when FAST is providing good feedback.You have to figure this out through testing, but 10-20 Hz should be plenty high (and most applications are good in the 1-5 Hz range). "

    This is what I did. I got to about 35 Hz for the ForceAngle frequency before I could achieve reliable start-up. I tried 20 Hz and it was a no go.

    "Remember, you aren't controlling the current frequency." -Didn't realize this thanks.

    "The current frequency will follow the rotor frequency. You are controlling an emulated angle that is used by the control system, just to drive the rotor to a frequency where FAST can start providing feedback."

    Ok, but as you can see in the scope plot of the original motor driver start-up current, the minimum frequency at start up is 60 Hz. That's why I thought I needed to be that high to get any feedback from the motor. This motor is not meant to run below 1800 Hz steady state, and COP performance values are not measured below 3000 Hz.  This is a high speed motor.

    "3. Your current waveforms still look strange. Is this compressor operational? The loads are changing this much so that the current waveform changes?"

    Yes the compressor torque varies about 2:1 for each revolution. It is driving a rotary compressor. We are measuring temperature, suction pressure, compression pressure, heat rejection, and COP. Everything is working.

    "4. This#define USER_MOTOR_FLUX_EST_FREQ_Hz (500.0) Is too high. It is telling the Motor ID to run to 500 Hz during the Flux and Ls estimation states. This should be set to ~10% of the rated frequency of the machine."

    The rated frequency of the motor is 6000RPM. I have the Ls and Flux parameters fixed in code. I confirmed these values with bench measurements. The compressor torque varies with each revolution of the torque shaft about 2 to 1.

    I appreciate you taking the time to look this over. I'll send the user.h file through the email.

    Chuck

  • Chuck,

    I've asked someone else to comment, but in the meantime here are my thoughts.

     

    1. What speed do you want the motor to run at when you first start up?

    Ans. -3000 RPM

    Is this variable or will it be fixed?

    The motor speed is variable: 3000 to 5000 RPM controlled by a 0 to 3.3 V input voltage.

    For example some customer fix the start-up on their compressor to say 20% of rated speed each time. Then increase the SpeedRef from there depending on the user/logic command.

    No, the user varies the frequency depending on the amount of heat rejection he desires.

    2. For ForceAngle, you don't need to set this to transition from ForceAngle to FAST at the target frequency. You should make it transition at a frequency when FAST is providing good feedback. You have to figure this out through testing, but 10-20 Hz should be plenty high (and most applications are good in the 1-5 Hz range).

    In my last message, the scope plot that is the third one down, the figure shows 35 Hz, 12 A and seems to work well. The values for this start-up was arrived at experimentally. I began testing with the default settings and increased the values of USER_ZEROSPEEDLIMIT from 1.0 to 16.0 and the value of USER_MOTOR_MAX_CURRENT to 12.0 As.

     

    #define USER_ZEROSPEEDLIMIT   (16.0 / USER_IQ_FULL_SCALE_FREQ_Hz)

    #define USER_MOTOR_MAX_CURRENT          (12.0)

    until the motor started up reliably.

    Remember, you aren't controlling the current frequency. The current frequency will follow the rotor frequency. You are controlling an emulated angle that is used by the control system, just to drive the rotor to a frequency where FAST can start providing feedback.

    Ok, thanks, didn’t realize I wasn’t controlling the startup current. Why does the phase current frequency correspond to the force angle frequency? Anyway as I said above, I started at low frequency and then worked up to 35 Hz.

    3. Your current waveforms still look strange. Is this compressor operational? The loads are changing this much so that the current waveform changes?

    Yes, our rotary compressor varies torque load at a ratio of about 2:1 per revolution.

     

    4. This

    #define USER_MOTOR_FLUX_EST_FREQ_Hz (500.0)

    Is too high. It is telling the Motor ID to run to 500 Hz during the Flux and Ls estimation states. This should be set to ~10% of the rated frequency of the machine.

    The rated motor speed is 6000 RPM. The Ls and Flux parameters were verified with a bench test and are fixed in the user.h file.

    can you please drag/drop your user.h into a post so I can view?

    I sent the user.h file along with our rotary compressor data sheet.

    I appreciate all your help and thanks again for responding.

    On a side note:

    Can you tell me if you know of a safe way to run Lab 5A so that the controller doesn’t let the motor over-speed? The last time I tried this lab the motor would start up at 5 A or 7A, ramp instantly to 6500 RPM and then slowly die out. The controller could not keep the speed below maximum. Any ideas?

    Also I checked out  - follow www.ti.com/lit/SPRUHJ1 chapter 14.4.2- from the message from you colleagues. There is no chapter 14.4.2. The user guide only goes to chapter 8? Is there a mistake?

    Chuck

     

     

  • Chuck,
    Did you send me an email? I didn't receive.


    "Remember, you aren't controlling the current frequency. The current frequency will follow the rotor frequency. You are controlling an emulated angle that is used by the control system, just to drive the rotor to a frequency where FAST can start providing feedback.

    Ok, thanks, didn’t realize I wasn’t controlling the startup current. Why does the phase current frequency correspond to the force angle frequency? Anyway as I said above, I started at low frequency and then worked up to 35 Hz."

    What SpeedRef and acceleration are you setting when the motor is starting up? As the motor accelerates the TRAJ being generated as a SpeedRef is the commanded frequency being used in the control system. The forceangle is simply emulating the position of the rotor - and this is fixed to 32 Hz in your code. When FAST estimates the speed at 16 Hz this emulated angle will be replaced by the estimated angle from FAST. The commanded frequency is still coming from your speed/acceleration command (TRAJ).

    Assuming you are setting the SpeedRef to 1500 or 3000 RPM, this will be much higher than the 32 Hz from the forced angle.