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.

c2000 to drive 2 BLDC motors

Other Parts Discussed in Thread: MOTORWARE, C2000WARE, C2000WARE-MOTORCONTROL-SDK

I see in the datasheet that for some tms series mcu's based on c2000, it has 14 x pwm channels with 16 bit timer for each channel.

We are considering this processor family for mass production.

We want to drive 2 different bldc motors with the FOC (field oriented control) technique.

The processor offers 14 channels of pwm, in this case 12 (6 channels for each engine) is enough for us.

However, does Instaspin-FOC, which is a feature of these serial processors, supports driving 2 motors simultaneously in software?

Software support is required to drive 2 bldc motors at the same time.

Thank you in advance for your response.

  • Yes, some InstaSPIN-FOC enabled C2000 controller can drive two BLDC/PMSM simultaneously, like F2806xF/M, F2804xC.

    You might find lab10d for dual motor control with F28069F and InstaSPIN-FOC in motorWare.

    http://www.ti.com/tool/c2000ware

    Lab10d at the folder: C:\ti\motorware\motorware_1_01_00_18\sw\solutions\instaspin_foc\boards\boostxldrv8305_revA\f28x\f2806xF\projects\ccs\proj_lab10d

    And lab_is11 for dual motor control with F280049C and InstaSPIN-FOC in MotorControlSDK.

    http://www.ti.com/tool/c2000ware-motorcontrol-sdk

    is11_dual_motor_eabi at the folder: C:\ti\c2000\C2000Ware_MotorControl_SDK_3_03_00_00\solutions\boostxl_drv8320rs\f28004x\ccs\sensorless_foc

  • First of all, thank you for your response.

    Could F28052 be enough for this?

    14 PWM channels are displayed.

    Thank you again.

  • Yes, it's OK as well.

  • And I would like to give additional information;

    For a position-controlled FOC configuration using an encoder that provides digital angle via SPI; I wanted to consult.

    Thanks again.

  • We don't have reference code for encoder with SPI interface. But you might refer to the universal motor control lab in the latest MotorControlSDK, that can support running the PMSM/BLDC with FAST based Sensorless InstaSPIN-FOC and Incremental encoder based Sensored-FOC simultaneously. The detailed introduction about the lab can be found in the lab user’s guide as the link below.

    C2000WARE-MOTORCONTROL-SDK: https://www.ti.com/tool/C2000WARE-MOTORCONTROL-SDK

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

  • Thank you for your response.

    It may not be an example of a direct SPI absolute sensor. No problem. However, if we have the angle value in radians from the SPI sensor, for example, 180π, that is 57.2958 degrees, is there not an API to introduce it directly to the Motor SDK, as in the STM32 family?

    Sample code for STM32;
    // Rotor mechanical angle
    mecAngle = (int16_t) (57.2958 / 360) 65536)

    If there is, this is very good news for us.

    The problem is exactly this; When the system is first turned on, we already know the position angle value without moving the rotor at all. (In this example, 57.2958 degrees) So when the system is first energized, no alignment should be done. The rotor should not be moved for alignment purposes, on the contrary, it should be locked in the known angle position.

    The system should be given a value of 57.2958 degrees and it should be able to be moved to the desired position with a code such as motion(new_position, time).

    E.g; motion(65 degrees, 0.5 second);

    Without initial alignment, is it possible to save the current position and lock the current position by energizing the motor at that position?

    Thanks...

  • You might take a look at the example recommended above, the example has such functions to meet your requirement, and convert the signals from encoder to the rotor angle.

    The F28004x is a floating point controller, it's easy to implement the code you mentioned.

    Without initial alignment, is it possible to save the current position and lock the current position by energizing the motor at that position?

    That depends on the encoder or if the controller is power off. Yes, you can save the rotor position and hold it at the current position.