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.

Low speed for Launchpad and boostdrvxl.

Hello,
I am using f2802xF Launchpad and boostxldrv8301_revB evaluation kit for BLDC motor.
With successful identification process the drive does not reach expected speed of 2.4Krpm at 20v at no load.
The following is the motor parameters i verified.
1.) Number of poles 4.
2.) The Stator resistance is 0.51 Ohm. Checked this with ohmmeter.
3.) Ls is 0.0013 H matches with inductance meter at 1kHz.
4.) Motor is rated for 60v,20 Amps.
5.) The max rpm is 7Krpm.
6.) The identification process is success with Lab 2b. I updated these variables in user.h.
7.) With the Lab5b setup i changed following parameters as defined in TMS320F2802xF InstaSPIN™-FOC user guide.
7.a) Changed the USER_IQ_FULL_SCALE_FREQ_Hz to twice of expected (Max_RPM*poles)/120 = 2*(2500*4)/120 ~= 170Hz
7.b) Increased USER_IQ_FULL_SCALE_VOLTAGE_V to 60v as per the motors max supply voltage.
7.c) Changed USER_MOTOR_RES_EST_CURRENT 4.0 A ie 20% of max rated current.
8.) I executed lab 10 for over-modulation set to 1.3. The motor was showing 1.7Krpm.
9.) With any other parameter changes the motor does not spin at more than ~1400Rpm.
10.) With other drive i was able to see 3.3Krpm at 28v no load with same motor.
11.) I have question regarding the Voltage Filter Pole given in user guide. For boost-xl it is 383.8 hz.
The calculated voltage frequency for my motor comes up as 2500*2/60=83.33Hz should this affect the max speed.

I was thinking with some changes i would be able to have a drive capable of 48v supply and 20 Amps.
Let me know if anyone has faced similar issue and how to overcome this.I can provide any detail for the motor required.
Best regards
Aj

user.h
  • AJ

    Let's first look at your motor: Rs = 0.51 Rs, Ls = 1.3mH, Flux = 0.106 V/Hz
    At 60V you expect 7 KRPM = 233.33 Hz, so at 20V you expect you may get 1/3 = 2.3 KRPM.

    R / L = 392 Hz, just less than 2x the max frequency, so that's good (typical design).
    Isc = Flux / 2pi / Ls = 12.98A; this is much less than your 20A (and the design usually has some margin) so I would say it's possible that perhaps the Ls value is off a bit.  I would expect it to be <650uH to support 20A of current.

    WIth a flux of 0.106 V/Hz, it goes over the 20V bus near 188 Hz. 188 Hz = 5640 RPM, so that shouldn't be limiting you.

    I made some changes to your user.h

    1. Your IQ_VOLTAGE shouldn't be set so high. It only needs to be larger than the measurable voltage (ADC_V) if the motor has a large flux and you want to run at field weakening. In that case set IQ_VOLTAGE to a value < Flux (V/Hz) * Field Weakening Speed (Hz).  When you move to different hardware where you actually are using a 60V bus, you can increase this to (60.0)

    2. I also increased your IQ_FREQUENCY.  It is better to have this too high than too low, so 600.0 is fine (or even the default 800.0)

    3. I decreased your PWM frequency to 30 KHz and the current and estimator rates to 10 kHz. At your low Isc and low max frequency you don't need to waste MIPS running faster. You can probably run the PWM at even 10-15 Khz just fine.

    4. I lowered your RES and IND _EST_CURRENT values. They are too high for this motor. You want closer to 10%, and only enough current to get the motor to start spinning during RAMP_UP state in ID.

    Please try to ID again using proj_lab2a.

    Please watch ctrl.RoverL in your Expressions Window and report the value it produces during ID (beginning at RoverL EST_STATE).  It should be fine as this isn't a high speed motor, but good to double check that you don' t need to use proj_lab2c.

    I agree that we should be able to get you to 2300 RPM with 1.33 modulation.

    11) no, don't worry about the voltage filter, it shouldn't effect your motor for this purpose. If you were designing your own hardware for this motor and 7 KRPM operation I would suggest setting the pole to just 200 Hz.

    You can certainly use this design to create one that runs on 48V/20A.  The voltage is easy, simply change out the scaling dividers.  The extra current however will require a board layout change to deal with the heat.

     

     

     

     

    user.h
  • Hi Chris,
    Thanks for your quick reply, appreciate it.

    I executed lab 2b with your user.h. I am still not able to go over 1.4Krpm top speed as earlier.

    Following are the values read in identification
    1.) lab 2b results:

    gMotorVars.Rs_Ohm   0.5137205
    gMotorVars.Lsd_H    4.877386e-10
    gMotorVars.Lsq_H    4.877386e-10
    gMotorVars.Flux_VpHz    0.104627
    ctrl.RoverL equals 2000.0 in the RoverL EST_STATE state and thereafter also.

    2.) lab2c results:

    gMotorVars.Rs_Ohm    0.5131804
    gMotorVars.Lsd_H    0.001331617
    gMotorVars.Lsq_H    0.001331617
    gMotorVars.Flux_VpHz    0.1067549
    ctrl.RoverL        7382.228    

    There is a huge variation in Ls values (0.001286626 to 4.877386e-10) for consecutive runs of identification within the same lab, is this expected ?
    In the past, I had also tried indentification with different values of USER_MOTOR_RES_EST_CURRENT and USER_MOTOR_IND_EST_CURRENT, I got a variation in inductance values there as well.

    For what its worth, I have measured the motor winding inductance using an LCR meter and it shows 1.3mH @ 1KHz consistently.

    Let me know if you have any other suggestions.
    Best regards
    Aj

  • Aj,

    Notice in 2b how your RoverL saturates at 2000.0.  This means it automaticaly has a scaling issue and the results will be random and invalid.

    This scaling issue is fixed by using 2c.  Note how RoverL is allowed to go to 7382.228.  If you rn this multiple times this value will change, but it will be somewhere in the neighborhood.  Same with Rs and Flux. Assuming you aren't injecting too much current to heat the  windings and make Rs increase unnaturally, and assuming that your user.h variables are set to put the flux value in the range that can be identified, you will get siimilar (though slightly varying results).

    Inductance is a bit different.  There is no "one" value for inductance.  Inductance changes over frequency, current/load, and there isn't even a single Ls (Ls is actually a combination of Ls_d and Ls_q).  It isn't so important that it is exact, it just needs to be in the right area.   It is better that the Ls value used in user.h is too low (slightly less efficient) vs. too high (instability at high speeds).

    You will notice that the Ls identified (at some Hz value you set) matches what you identified by hand.  That should give you some confidence.

     

    With the results from 2c how is your control and top speed?

  • Hello Chris,
    I have run the 5b Lab again with parameters identified in 5c, but still seeing speed of 1.45Krpm for this 2.4Krpm motor.
    You are right here that when compared to lab 2b the lab 2c gives very consistent results. Also the current
    was very low ie less than 1 Amps while executing all the labs. The motor was very smooth at low rpm of 100
    that was default while executing lab 5b with 2c results.

    I have executed the labs with another motor of same specifications and results were similar.
    I am designing this drive for Motor manufacturer so i can provide any information regarding the motor.
    Let me know what additional parameters are needed for debugging.
    Best regards,
    Aj

  • with the values ID'd in proj_lab2c in your user.h

    please try running proj_lab10a

    and setting your modulation to 1.333

    The only thing that will keep you from hitting your top speed is your Bus voltage and the speed loop tuning.  You will likely have to lower your Spd_Kp from the defautl setting. 

    if you are using the Universal GUI you will be able to confirm that your Vs is at 1.33 and your Id should be around 0 A.  Else these are all found in the gMotorVars structure.

     

  • Hello Chris,
    I could resolve the issue with your post on other thread:
    http://e2e.ti.com/support/microcontrollers/c2000/f/902/p/308620/1091407.aspx#1091407
    The compiler installed by default was 6.2.0 that you have flagged as being buggy.
    With updating the compiler and no change at all i could see motor spinning at 2.7 Krpm at 20v.
    The inductance measured was 507uH as you said should be in your first post.
    Thanks a lot for your patience.
    Best regards
    Aj