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: Implementation of the torque control mode in ENCODER estimator method under build level 4

Part Number: TMS320F2800157
Other Parts Discussed in Thread: DRV8353

Tool/software:

Hello team,

I am working on implementation of the torque control mode in ENOCDER estimator method under build level 4.

For this activity I am using DRV8353 EVM with F2800157 launchpad and 24V encoder motor.

We can be able to run the motor in speed control mode in all build levels, and I can be able to achieve maximum speed in speed control mode.

First, I considered build level 3 as the torque control mode but in one of my E2E query, they mentioned it is just a current closed loop does not torque control mode. 

In speed control mode, we are demanding the speed and based on that Id and Iq currents are injected to the module in order to achieve that speed, as mentioned in below block diagram.

1. As I know, in torque control mode we should inject Id and Iq currents, based on this motor speed should increase accordingly. Is this proper torque control mode?

2. If any document is there regarding implementation of the torque control mode under ENCODER or HALL estimator methods, please provide the same or please mention how to implement this in build level 4.

3. Can we able to use speed control mode in vehicle level? If yes, please mention how to achieve maximum torque in speed control mode at lower RPM because in speed mode we are injecting Id and Iq currents based on speed. Our requirement is MCU should inject current instantly in order to achieve the torque demand at starting of the motor.

4. How to achieve sudden Id and Iq current demand in speed control mode in high torque region? Can we able to inject these currents in speed mode instead of taking it based on speed.

Thank you,

Regards,

Kirana H P

  • As replied to you in another thread you posted.

    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 Reply.

    I disabled speed control loop by disabling flagspeedctrl and enabled only current control in initial stage.

    Now, I am setting Is_ref values and based on this motor is running but with Is_ref = 8A motor is running with 130Hz and below this value motor is not running.

    By increasing Is_ref values motor speed also increasing and this is expected behaviour.

    But motor is suddenly jumping to 130f and I am not able to achieve below speed range.

    Please suggest the way to resolve this issue.

    Motor is running with encoder feedback.

    Regards,

    Kirana H P

  • Adding a ramp control to increase the Is_ref from zero to the traget value.

  • Hello Yanming Luo,

    1. Can you please specify, how to add this ramp control for Is_ref in UMC.

    Is this functionality already available in UMC or we need to add additionally.

    2. As I mentioned earlier, we are able to run the motor in Torque control mode (running with encoder feedback) but we are unable to control the maximum speed of the motor.

    I am limiting maximum motor frequency in user_mtr1.h (USER_MOTOR1_FREQ_MAX_Hz) but as I increased obj->IsSet_A current, motor speed is increasing more than mentioned speed limit.

    After setting obj->IsSet_A  values again we are entering speed loop as per the UMCL but here, in this PI_setUi function we are not using any speed related variables to control or limit the speed. Can I know, why we are not able to limit motor speed here.

    Can I know, why we are only using these speed related variables in speed control loop but not in torque (current) loop.

    3. When we are using throttle to control the motor in Torque mode, we are going to use different modes and based on modes we need to limit the maximum speed. 

    If we are giving full throttle also speed should not cross that speed limit, until we change the maximum speed limit by changing modes in Torque control mode.

    Thank you,

    Regards,

    Kirana H P

  • 1. Can you please specify, how to add this ramp control for Is_ref in UMC.

    Is this functionality already available in UMC or we need to add additionally.

    Please refer to the functions for speed ramp control like traj_xxx().

    I am limiting maximum motor frequency in user_mtr1.h (USER_MOTOR1_FREQ_MAX_Hz) but as I increased obj->IsSet_A current, motor speed is increasing more than mentioned speed limit.

    The maximum speed is limited to the motor and the adding load. You can't control or limit the maximum speed. If you want, you have to add a speed loop.

    Can I know, why we are only using these speed related variables in speed control loop but not in torque (current) loop.

    Yes, only for speed loop as shown in the codes. No any reason, just control flow with different varaibles.

    3. When we are using throttle to control the motor in Torque mode, we are going to use different modes and based on modes we need to limit the maximum speed. 

    As replied to you above to add speed-loop.

  • Thank you for your reply, Yanming Luo.

    I will try to implement the changes to suggested above.

    1. In bench level (without having any load), if I am increasing obj->IsSet_A value, speed_Hz is not updating linearly, it is oscillating with some junk values.

    Up to some minimum current injection, speed_Hz is updating properly (up to 50Hz). After that motor speed is increasing but speed_Hz is not updating properly based on current injection.

    2, I need to use throttle-based torque control mode in my MCU, and I need to limit the motor maximum speed because my MCU power rating is 3kW and motor power rating is 5kW (maximum speed is 600Hz), so I need to limit the maximum speed to 400 Hz, in my MCU. I don't want to use speed control mode for this application.

    How can I able to limit this maximum speed in torque control mode, instead of using speed control mode.

    3. You suggested me to add speed-loop, means you are telling me to use speed control loop for this issue.

    Or you are suggesting me to add this function in torque mode.

    Thank you,

    Regards,

    Kirana H P

  • 1. In bench level (without having any load), if I am increasing obj->IsSet_A value, speed_Hz is not updating linearly, it is oscillating with some junk values.

    That's normal. You should set the right torque current by tuning the ramp control. You may try to use the speed-close loop to find the right torque values. This should be an engineering question, you have to tune this accroding to your ssystem.

    2, I need to use throttle-based torque control mode in my MCU, and I need to limit the motor maximum speed because my MCU power rating is 3kW and motor power rating is 5kW (maximum speed is 600Hz), so I need to limit the maximum speed to 400 Hz, in my MCU. I don't want to use speed control mode for this application.

    As mention above. Try to implement the speed loop and limit the maximum speed and torque.

    3. You suggested me to add speed-loop, means you are telling me to use speed control loop for this issue.

    Or you are suggesting me to add this function in torque mode.

    Yes. As mentioned above.

  • Thank you for your reply,

    I am currently working on above points and I will try to implement the logic, as you suggested. If I face any issue regarding above logic then I will get back to you.

    Thank you,

    Regards,

    Kirana H P