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: TMS320F28027F

Part Number: TMS320F28027F


Hello TI, 

 

Project elements:

- Lab4 FOC

TMS320F28027F build on custom board.

- The application is for e-bike

- torque value is controlled with a potential meter

I would like to increase the torque at lower speed the max torque is reached only at higher speeds. this is normal, so I thought with some PI tuning I might be able to reach higher torque values at lower speed.

I must emphasis that the torque is only low at lower speeds till Fe_Hz = 30Hz.

How can I increase the current at lower speed?

Thanks in advance,

Kamal

  • The torque current is set by gMotorVars.IqRef_A in updateIqRef() function since lab4 is using current loop control (torque control) without speed close loop, it is not limit to speed only if you add any limitation in the torque current PI regulator as below code. You can check the ctrl.pid_Iq to look at the refValue, fbackValue and Ui, and ctrl.Vdq_out.value[1]. You may know if the torque current is set to the target value.

    // set the minimum and maximum values
    PID_setMinMax(obj->pidHandle_Iq,outMin,outMax);
  • Kamal,

    What was your test setup look like. You can only run the motor at high torque low speed if you have sufficient load. Otherwise the motor will accelerate to higher speed, since lab04 only runs current loop as Yanming pointed out.

    One other thing to point out, as you have custom board, the parameters of the board needs to be changed in the user.h file. In addition, you will need to run through the calibration and motor identification process in lab 2-3 and update the values in user.h as well. Thanks.

    Best regards,
    Han Zhang
  • Helllo,

    Yanming, yes I see, but since the higher torque is required at lower speed than at higher speed. I would like to increase the torque in the lower speed region.
    However my main problem is increasing the torque despite the speed; respecting the the current loop control. I test the motor by applying a load to the motor which keeps the motor running at a constant speed. I am able to reach a max value User_motor_max_current to (9.0) @ fe_Hz = 2.8. If I increase the User_motor_max_current, the motor will start to vibrate. The speed does not change due to the load that I apply. I want to reach the max torque at this speed. something I noticed with my current transducers measurements using the scope, the phase currents start nicely, but once it reaches the point where it starts to vibrate, it starts to shrink in the period of the wave-form (upper part) roughly above 50% of the current peak wave-form.

    Han, thanks for the suggestions, but all the points you mentioned I have done them long time ago.
  • Kamal,

    Can you please include some graph to help us understand the distortion in your current waveform? Also, can you give some information about the motor, e.g. the rated voltage / current etc.?

    My understanding is that you are using a dynamometer as the load in constant speed mode. The PI controller in your dynamo controller can sometimes contribute to the vibration in your system as well. You may also try to tune this loop and see if anything changes. Thanks.

    Han

  • Han, 

    No I am not using dynamometer, I using another motor that I can adjust the speed and torque. It is fully tuned. I have used it with other motors and controllers reaches higher torque and it is not vibrating. 

    motor specs, 

    it is a bike hub motor, 48V 20 pole pairs reduction 1 winding resistance 0.16ohm 

    #define USER_MOTOR_TYPE MOTOR_Type_Pm

    #define USER_MOTOR_NUM_POLE_PAIRS (20)

    #define USER_MOTOR_Rr (NULL)

    #define USER_MOTOR_Rs (0.13)//(0.12) /// testing the motor vibrates at certain speed

    #define USER_MOTOR_Ls_d (0.000282)//(0.000274)

    #define USER_MOTOR_Ls_q (USER_MOTOR_Ls_d)

    #define USER_MOTOR_RATED_FLUX (0.207)//(0.1943)

    #define USER_MOTOR_MAGNETIZING_CURRENT (NULL)

    #define USER_MOTOR_RES_EST_CURRENT (7.0)

    #define USER_MOTOR_IND_EST_CURRENT (-6.0)

    #define USER_MOTOR_MAX_CURRENT (10.0)

    #define USER_MOTOR_FLUX_EST_FREQ_Hz (30.0) 

    the Watt meter is the line voltage current 

    https://youtu.be/MrRh0k_GbRM

     

    Kind regards,

    Kamal