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.

TMS320F28027F: Loss of speed on heavy load

Part Number: TMS320F28027F
Other Parts Discussed in Thread: DRV8301

We are building a sensor less motor FOC controller with a Insta Spin TMS320F28027F processor, for a hydraulic pump, for 95% it works fine, but on high loads, motor current > 100A it some times fail and drops the speed from 3300 to about 300 rpm with full current output Fig1 and 2. The frequency of 30Hz is in the range of the controller bandwidth and has maybe something to do with the phase margin.

We can simulate this situation, high motor current, if the unloaded motor is speed up wit a high acceleration setting > 25 krpmps.

We also encounter oscillations on the output current with a frequency around 2000Hz.(Fig. 3) It is possible to reduce this oscillations on high load by lowering the Kp_spd, but this value is now so low that large overshoots, up to 30%, occurs on speed and/or load steps.

If we simulate the controller this overshoots are comparable with the real world, but in the simulation the system stays stable with large variations in controller and motor parameters.

Motor 24V Imax = 160A Ls = 40uH Rs = 0.006 Ohm PWM frequency = 20 KHz Current controller = 10 KHz Speed controller 1 KHz (also tried 2 and 5 KHz, looks like give some improvement).

On normal loads the system works OK , only the overshoot in speed is somewhat to high.

We started the development with a DRV8301 evaluation board but because of the large currents we are now using our own hardware.

Any suggestion how to solve this problem ?

Fig. 1 Increasing load until controller lost phase lock

 

Fig. 2 detail when lock lost current up to 150A, but low speed about 300 rpm, so the speed controller saturates at max motor current. Some 30 Hz modulation of the current is visible before it goes wrong.

 

Fig. 3 Oscillations in output current on heavy loads, not always pressent

 

  • It seems the figures were not included.

    Fig. 1

    Fig 2

    Fig 3

  • 1. Please check whether the ADC input is overflow during motor runs with the heavy load.
    2. Make sure that the motor is identified by lab02b or lab02c, and set the identified parameters in user.h.
    3. Check what's rated/maximum power and current of the motor, and
    4. Check if the output vector voltage is the maximum value when the motor is running with a heavy load. The vector voltage can be calculated as the following code.
    // calculate vector Vs in per units
    gMotorVars.Vs = _IQsqrt(_IQmpy(gMotorVars.Vd, gMotorVars.Vd) + _IQmpy(gMotorVars.Vq, gMotorVars.Vq));
  • Yanming,

    Thanks for your respons

    1 - The ADC input was calculated for a range of 363App, on first measurements of the ADC input this seems sufficient. But after some more precise measurements we found some times the ADC was driven outside or close to the 0-3.3V range. This areas coincidence with the oscillations on the top of the current.

     

    To keep the current measurements within he ADC range we increased the ADC range, by reducing the current amplifier gain, up to 660App.

    Maybe is the resistance of the shunt resistors some higher as expected, we have to find out.

     

    After decreasing the amplifier gain the ADC is driven within the range 0-3.3V and no oscillations on the top of the current. But still the motor stops on heavy load.

     

    2 We have identified the motor with lab02b. The Rs is somewhat lowered to get some margin on low temperatures as mention in user.h.

    3 Motor is rated for 24V / 1600W so should be sufficient.

    4 The motor voltage Vs at moment the motor stops amounts to about 9.5V. We have also done this test with 28V supply with the same result so we think this is not the cause of the problem.

     

    We have also an other version of he software based on lab5b, this works with the load test but in this case the current is some lower.

    But sometime oscillations on the current are visible.

    So any suggestions are still welcome.

    Regards,

    Jan

  • As replied to you above, 1. make sure the motor parameters are precise, 2. tune the gains of speed and current PI controllers, try to use different gains for startup, low speed, and high speed if the load is lower than the maximum output of the motor, if not, maybe, you have to change motor to get enough torque output.