The TI E2E™ design support forums will undergo maintenance from July 11 to July 13. If you need design support during this time, open a new support request with our customer support center.

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.

TMS320F2800157: Not able to achieve the torque at higher RPM of the motor

Part Number: TMS320F2800157
Other Parts Discussed in Thread: C2000WARE, DRV8353

Tool/software:

Hello Team,

I am currently working on the implementation of the torque control mode using our own custom board.

We are able to run the motor in speed control mode using 48V encoder motor in all BUILD_LEVELS and we can able reach up to its maximum RPM in BUILD_LEVEL_4 (With encoder feedback).

First, I have tested TORQUE CONTROL MODE (Current control mode) in BUILD_LEVEL_3 because, in universal motor code TORQUE CONTROL MODE is implemented only for BUILD_LEVEL_3.

I'm trying to run the motor in torque mode in BL4, by surpassing the speed control loop because in BL4 only we can be able to apply the load and run the lab with complete FOC. I'm directly assigning Idq_set_A to IdqRef_A here same as BL3.

At lower RPM I am able to achieve the expected torque (29Nm) but in higher RPM like 2000 RPM or more than this I am not able to achieve the expected toque.

If I apply minimum load (4Nm) motor is stopping directly and, in this case, I am not getting any errors.

I want to know how much Id and Iq currents I need to inject in this case because in lower RPM it is working fine and in higher RPM only, we are facing this issue.

Apart from injection of Id and Iq currents, whether I need to check anything for this above issue? 

Below I have mentioned the Id and Iq currents injected to achieve maximum torque at lower RPM (500RPM).

  Id = 0 A, Iq = 230A

In this case we are not injecting Id current because has I know in lower RPM it is not required and it is required only to achieve maximum RPM, correct me if I am wrong.

Below I have shared the expected toque demand in different RPMs.

Thank you,

Regards,

Kirana H P

  • Hi Kirana,

    Which solution specifically are you using? (Ex. TIDM 2010, TIDA 010265 etc.) This information will help me route your thread to the correct expert from the team.

    Best Regards,

    Delaney

  • Hi Delaney Woodward,

    I am using UMC SDK (C2000Ware_Motor-control_SDK_5_02_00_00).

    In our custom board we are using F2800157 micro-controller, and our controller power rating is 3KW rated and 5KW peak.

    As I mentioned above, we can be able to achieve the maximum RPM in speed control mode.

    In lower RPM able to achieve expected torque (Torque control mode) but in higher RPM (2000 and above) only we are unable to achieve expected torque, and, in this condition, motor is stopping suddenly and not getting any errors.

    Above mentioned activities, we are doing in BUILD_LEVEL_4 in TORQUE_CONTROL_MODE by using 48V encoder motor.

    Please suggest the way to achieve expected torque at higher RPM as mentioned in above graph.

    Thank you,

    Regards,

    Kirana H P

  • Hi Kirana,

    Alright, thank you for providing that information. I have looped in the relevant expert, and they should have a response back to you in the next couple days.

    Best Regards,

    Delaney

  • First, I have tested TORQUE CONTROL MODE (Current control mode) in BUILD_LEVEL_3 because, in universal motor code TORQUE CONTROL MODE is implemented only for BUILD_LEVEL_3.

    Torque control mode can be implemented in Build level as well. Build level 3 is not a real torque control mode, it's an open loop control, just has current closed-loop.

    In lower RPM able to achieve expected torque (Torque control mode) but in higher RPM (2000 and above) only we are unable to achieve expected torque, and, in this condition, motor is stopping suddenly and not getting any errors.

    You need to check what's the rated frequency of the motor with its manufacturer. Generally, the motor can't output the same torque at low speed (<rated speed at constant torque region) and high speed(>rated speed at constant power region).

  • Hello Yanming Luo,

    Thank you for your reply.

    As you mentioned above, build level 3 is open loop and current closed loop because of this only I am trying to implement above mentioned logic in build level 4 (Closed loop) by surpassing speed loop.

    Can you please, mention, how to implement Torque control mode in build level 4 because as you mentioned above build level 3 is not a real torque control mode.

    As we know, build level 3 is open loop and here we are assigning obj->angleGen_rad (generated angle based on back emf of the motor) to obj->angleFOC_rad and based on this we are running the motor as mentioned below.

    But when I am implementing the same thing in build level 4 and istead of assigning obj->angleGen_rad to obj->angleFOC_rad, if I assign obj->angleENC_rad (Encoder angle) motor is not running. Here I replaced build level 3 with 4.

    Instead of obj->angleENC_rad if I assign obj->angleGen_rad to obj->angleFOC_rad motor is running but as I know in vehicle condition we should run our motor with encoder feedback.

    Please mention the proper way to implement the torque control mode in build level 4.

    Thank you,

    Regards,

    Kirana H P

  • Can you please, mention, how to implement Torque control mode in build level 4 because as you mentioned above build level 3 is not a real torque control mode.

    As you mentioned above to disable the speed loop that has been described in the lab user's guide as well. Please take a look at the lab user's guide as below.

    Universal Project and Lab User’s Guide: https://www.ti.com/lit/spruj26

  • Hello Yanming Luo,

    Thank you for your support.

    I have read the above document but here I am unable to find out the exact information related to how to disable the speed control mode or how to enable the torque control mode. 

    Please specify, which module I need to refer here regarding above issue.

    Here, it mentioned about the Flying start feature for enable or disable the speed closed loop, you are mentioning the same thing or apart from this anything we need to check?

    As I mentioned above, if I assign angleENC_rad to FOC_rad motor is not running and it is only running if I assign angleGen_rad. As I know this angleGen_rad is generated based on the back emf of the motor.

    I need to run my motor with encoder feedback in build level 4 in Torque control mode.

    Please suggest me the way to resolve this issue.

    Thank you,

    Regards,

    Kirana H P

  • You can refer to the lab that can support encoder and you can enable torque control loop by disabling the speed close loop.

  • Hello Yanming Luo,

    Please, specify how to enable torque control loop.

    As I mentioned above we are disabling speed close loop but unable to run the motor with actual encoder feedback.

    We are unable to find out the exact issue here, so, please support for this activity. 

    We want detailed information regarding this, because in above document we are not able to find out the exact information.

    Thank you,

    Regards,

    Kirana H P

  • Hello Yanming Luo,

    We can currently reach the necessary torque at all motor RPMs.

    However, the only problem is that, as I indicated previously, we are unable to operate the motor with real encoder feedback. The motor will continue to operate even if I remove the encoder feedback while it is operating.

    Could you help explain the process for turning off the speed closed loop? Speed closed loop, as I understand it, refers to operating our motor by providing a speed instruction based on sensor feedback.

    Above, you instructed me to turn off the speed close loop. How can I operate my motor with feedback in torque control mode if I turn off this closed loop?

    My specifications are that my motor must be operated in torque control mode and have encoder feedback.

    Please advise how to carry out the requirements mentioned above. Please explain in detail how to activate torque control mode.

    Thank you,

    Regards,

    Kirana H P

  • However, the only problem is that, as I indicated previously, we are unable to operate the motor with real encoder feedback. The motor will continue to operate even if I remove the encoder feedback while it is operating.

    Make sure that the project build configuration is for encoder based sensoed-FOC. Please take a look the lab user's guide and follow the operation instruction to select the right definition symbols.

    Above, you instructed me to turn off the speed close loop. How can I operate my motor with feedback in torque control mode if I turn off this closed loop?

    What do you mean this feedback?

  • Hello Yanming Luo,

    1. Currently, motor is running in encoder based-FOC but here, once the motor crossed CTRL_RUN again, we are assigning below obj->angleGen_rad value to obj->angleFOC_rad in torque control mode. Is this proper?

    2. Whether you are asking me to disable speed closed loop by disabling encoder sensor feedback?

    Can you please elaborate this one.

    3. You mentioned that BUILD_LEVEL_3 is not a proper torque control mode, and it is only current closed loop, so please mention according to you what is meant by torque control mode.

    4. Here, I commented this PI_run_series function in order to disable speed control loop, whether it is a proper way, or I need to enable this one.

    If it is not a proper method, then please specify how to disable speed closed loop?

    Thank you,

    Regards,

    Kirana H P

  • 1. Currently, motor is running in encoder based-FOC but here, once the motor crossed CTRL_RUN again, we are assigning below obj->angleGen_rad value to obj->angleFOC_rad in torque control mode. Is this proper?

    Not correct. Please refer to the Universal Motor Control Lab that can support encoder as well.

    2. Whether you are asking me to disable speed closed loop by disabling encoder sensor feedback?

    Not right. You need to use the position feedback from encoder always. As mentioned above, the Universal Motor Control Lab includes all the functions you want, you can refer to it directly.

    3. You mentioned that BUILD_LEVEL_3 is not a proper torque control mode, and it is only current closed loop, so please mention according to you what is meant by torque control mode.

    No. It's not real torque control mode. It's position open loop control with current closed-loop that is only for hardware validation

    4. Here, I commented this PI_run_series function in order to disable speed control loop, whether it is a proper way, or I need to enable this one.

    If it is not a proper method, then please specify how to disable speed closed loop?

    Just need to set the "flagEnableSpeedCtrl" to "0" in the Universal Motor Control Lab.

  • Hello Yanming Luo,

    Thank you for your support and sorry for the late reply.

    I will check above things you suggested and I will come back.

    Thank you,

    Regards,

    Kirana H P 

  • 1. With encoder feedback we are facing one major issue and this issue we are not facing in hall sensor based motor.

    As we know that hall sensor and encoder sensor feedback patterns are different.

    For this activity we are using the same rated 2 motors with hall and encoder sensors.

    Issue : When the motor going more than 100Hz and if I make run and identify flag 0, motor is stopping but Speed_Hz is not coming to zero at that instant and it is taking too much time to settle to zero.

    This delay time will increase as we increase the Speed_ref value.

    Why this Speed_Hz is not coming to zero suddenly based on the run and identify flag and during this time if I set run and identify flag, motor is going to uncontrolled speed and then it is stopping with over voltage fault.

    Please suggest me the way to resolve this issue.

    Thank you,

    Regards,

    Kirana H P 

  • As replied to you in the other threads and mentioned above, you have to check and make sure that the angle and speed from the encoder you used are correct. You may refer to the Universal Motor Control Lab in MCSDK to use the sensorless-FOC to check this.

  • Hello Yanming Luo,

    1. As you mentioned above, I have checked the motor with sensorless-FOC or FAST estimator, here we are assigning estimated angle to FOC_rad as mentioned below.

    obj->angleFOC_rad = obj->angleEST_rad 

    Below I have attached the video related to this. Here Speed_Hz is updating properly, and it is not taking any delay to settle to zero. Here after making run and identity falg as zero, obj->angleEST_rad is updating with some values but there is no issue with Speed_Hz.

    2. Below I have attached the video related to Speed_Hz updating in ENCODER estimator and here, as I mentioned earlier Speed_Hz is taking too much time to come to zero and if we enable run and identity flag before that, motor is running at uncontrolled speed (Maximum speed).

    To resolve this issue, I am increasing USER_M1_CTRL_PERIOD_sec value, but I am not getting expected result.

    3. I connected encoder index pulse to oscilloscope and calculated frequency, based on time period of the index pulse with different speed. Here, I am getting proper speed values based on index pulse time period.

    4. Can you please mention in detail; how to confirm angle and speed values. I have checked Motor control SDK document regarding this, but I have not found any information regarding this.

    I confirmed speed values based on index pulse time period as mentioned above. Is this enough or I need to check anything else.

    5. We are assigning speed_Hz like below.

    6. In Hall sensor-based motor, we are not facing this issue but in encoder sensor-based motor only we are facing this issue.

    Any parameters we need to tune for this issue? Please support for this activity.

    Thank you,

    Regards,

    Kirana H P

  • 4. Can you please mention in detail; how to confirm angle and speed values. I have checked Motor control SDK document regarding this, but I have not found any information regarding this.

    Refer to the lab03 or lab04 to use the datalog or DAC to monitor the speed and  angle from FAST observer and encoder.

    You can try to increase the alignment current, not change the USER_M1_CTRL_PERIOD_sec that can't be changed.

    6. In Hall sensor-based motor, we are not facing this issue but in encoder sensor-based motor only we are facing this issue.

    As mentioned above, check the encoder parameters is set correctly. The speed and angle from encoder is right.

  • 1. As I mentioned earlier, we are using MotorControlSDK_5_00 version for our development activity.

    2. I am not sure about lab03 and lab04. Can you please mention how do the above activity in MotorControlSDK_5_00 by using DRV8353 with F2800157 launchpad (I am using 24V encoder motor for this activity).

    3. Currently, I am maintaining USER_MOTOR1_ALIGN_CURRENT_A   (32.0). Can you please mention, by increasing alignment current, how it will impact on above issue?

    4. Based on the encoder sensor and motor, I am maintaining all the encoder parameters properly. Apart from USER_MOTOR1_NUM_ENC_SLOTS, any parameters I need to check?

    5. In UMC, we are reading obj->angleENC_rad and obj->speed_Hz as below. As you see in the above videos under encoder estimator if I disable RunAndIdentity flag obj->angleENC_rad angle is settling with some value based on rotor position, but obj->speed_Hz is oscillating with junk values and after so much delay only it is coming to zero.

    We are getting obj->speed_Hz value form this below function as a return variable and here, I am not able to find, why it is not coming to zero, when RunAndIdentity flag is zero because logic is not given for this part.

    6. In FAST estimator, we are getting rotor angle by estimated angle and feeding it to FOC_rad and then we are running the motor but in ENOCDER estimator we are getting the rotor angle based on angleENC_rad and then we are running the motor.

    Please mention the logic behind this FAST and ENCODER estimator rotor angle calculation.

    7. If you share source code related to the angle and speed estimation, it will be helpful for our activity.

    8. Please mention the variables we need to tune, if there is any difference between encoder angle and speed.

    9. This issue is not occurring in FAST and HALL estimator but only getting in ENCODER estimator.

    Thank you,

    Regards,

    Kirana H P 

  • If you are using the universal motor control lab, please take a look at the lab user's guide below that has the detailed steps and parameters. You have to tune the encoder by yourself since we don't have the motor you are using to validate the issue. If possible, you may try to the motor supported in the lab to verify it.

     Universal Project and Lab User’s Guide: https://www.ti.com/lit/spruj26 

  • Thank you for your support Yanming Luo,

    Now, we are able to run encoder motor in Torque mode with feedback.

    Regards,

    Kirana H P 

  • Great. Please let's know if you have any further questions. Thanks.