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.

TMS320F280039C: Microcontroller for Torque, Speed and Position control

Part Number: TMS320F280039C
Other Parts Discussed in Thread: DESIGNDRIVE, C2000WARE, BOOSTXL-DRV8323RH, , TMS320F28069M, BOOSTXL-DRV8301, BOOSTXL-DRV8305EVM, BOOSTXL-DRV8323RS, BOOSTXL-3PHGANINV, MOTORWARE, LAUNCHXL-F28069M, DRV8305, DRV8301, LAUNCHXL-F28P55X, SYSCONFIG

Tool/software:

I need a microcontroller that allows me to:

- implement torque, speed and position control (obviously not all at the same time, I want to be able to try all three).

- sensored control (I will have an encoder and probably also a backup Hall sensor)

Can you advise me which microcontroller meets these two conditions?

If I understand correctly, while with the older generation (e.g. F28069M) you had about 21 project labs .. with the newer generation (F280039C) I have a single project with 4 debug levels, but I don't think there is a DEBUG_LEVEL that allows for position control .. or do I?

(not related to the question, but I had also read of someone who had tried (and succeeded) in 'converting/passing' one of the old project labs into the new microcontrollers... but it is not an easy thing to do and I don't remember there being an official guide)

Thank you.

Best regards

  • The MotorControl SDK release notes has a Hardware Support section

    Release Notes

    Look for any of the solutions that say DesignDRIVE or Universal Servo Control.

    InstaSPIN-FOC is all sensorless, no encoder feedback.

     

    Any of our devices are capable of doing this type of control, so finding one with an example is a good place to start. 

    This one is using F28003x

    F28003x LAUNCHXL-F280039C BOOSTXL-DRV8323RS DesignDRIVE C28x CPU
    Incremental encoder
    Velocity Control
    Low-side shunts
    Synchronous Motors (PMSM)
    CAN communication
    C2000Ware_MotorControl_SDK_Install_Location/solutions/servo_drive_with_can
  • Thank you for your reply, very kind.

    Forgive my ignorance, but I am trying to understand.

    I've searched online for both DesignDRIVE and Universal Servo Control, but I don't understand what the difference is (and therefore which one is right for me).

    "Any of our devices are capable of doing this type of control, so finding one with an example is a good place to start" so even, for example, the F28069M can be used with CAN bus, encoder and position control ... right?

  • DesignDRIVE is the marketing term used for sensor based solutions

    "Universal" is a term used for keeping a common set of SW that is easily portable to different inverter or MCU family. 

    Sure, F28069M is a much older device, but has benefits for sensor based control because of the InstaSPIN-MOTION software which lets you easily tune a system and create full motion control profiles.  We don't have anything quite like this on newer devices.  (The company who provided the MOTION software was purchased by another company).

  • Since my motor is PMSM with 7A maximum and 48V .. I could start with LAUCNHXL-320F280039C connected to BOOSTXL-DRV8323RH, right?

    Once I understand the code and control, I will develop my own customised pcb with the TMS320F280039C microcontroller

    Is this the right direction?

  • We test with 

    BOOSTXL-DRV8323RS

    which has the SPI based interface, so probably best to use that one.

    Yes, this supports 54Vdc and 15A so you should be good.

  • thank you very much for all the information, very kind as always

    I just have one last doubt ... when should one choose not to use the SPI and use the DRV8323RH?

  • if the MCU you select does not have a SPI available for communication with DRV.

    The SPI lets you receive more status information from the DRV

  • So between TMS320F280039C and TMS320F28069M which one should I choose in my case?

    Apart from the technical specifications (RAM, cpu, FLASH, ADC channels etc.) which seem quite similar to me, at the algorithm/control/firmware level what changes?

    Does it change the fact that F28069M has 21 projects_labs (MotorControl SDK with InstaSPIN-MOTION support) while F280039C has the 4 debug_levels (C2000Ware SDK) as I mentioned in the main post?

    What else?

    It is important that I know these differences from the outset because I will implement the driver on several machines

    Thanks

  • 69M is much older device, but it supports both InstaSPIN-FOC (sensorless) and -MOTION (can do sensorless, but primarily for sensored servo position control).

    -MOTION is not supported on any newer devices and there is not a replacement for this motion control solution.  There are some general starting point examples for doing encoder based position control, but it is not a full solution like -MOTION.

    Depends on how much of the motion firmware/library you need.

  • So I think I'll opt for the 69M because it seems more complete in terms of code, since I'll certainly use the sensored system and I don't exclude position control.

    1) However, I am still left with the doubt (more a curiosity) as to what are the advantages of choosing the new microcontrollers (like 0039) if they are "less complete" due to the lack of MOTION?

    2) For the 69M I have read that these modules are compatible: ...have I forgotten any?

        - BOOSTXL-DRV8301 and BOOSTXL-DRV8305EVM: I exclude them because they have Vin<48V (48V is mine)

        - BOOSTXL-DRV8323RS: max 54V and 15A continuous .. so it seems OK for my application

        - BOOSTXL-3PHGANINV: is it compatible with 69M? ... it seems so to me. I need to know if the 21 project labs can work

        - DRV8312-69M-KIT: overbudget (maybe obsolete)?

    I think BOOSTXL-DRV8323RS is the best solution in my case, what do you think?

  • 1. newer devices have more performance, more features, at a lower price.  The majority of our customers are choosing based on device features and they have their own application software for things like servo motion control.  The -MOTION capability is certainly an enabler for customers who maybe today are buying off the shelf motion controllers and are trying to bring the design in house and need a start on the embedded software

    2. Download MotorWare.  I would recommend starting with BOOSTXL-DRV8305EVM and LAUNCHXL-F28069M if you want to go with F2806x and InstaSPIN-MOTION

  • I have motor with 48V and about 6-7A of current, BOOSTXL-DRV8305EVM does not reach this voltage.

    On the motorware I only see DRV8301 and DRV8305 .. but they do not fit my specifications

    Is the BOOSTXL-3PHGANINV compatible with 69x?

    From sluubp1a: the BOOSTXL-3PhGaNInv EVM board can either be connected to the C2000 InstaSPIN-MOTION LaunchPad headers J1 through J3 and J2 through J4 or to the extended headers J5 through J7 and J6 through J8

  • You can run lower voltage to do evaluation and once convinced you would build your own board.

    3PHGANINV does not have SW support with 69x.  If you want to use this inverter I would use LAUNCHXL-F28P55X as the latest device with best features

    F28P55x LAUNCHXL-F28P55X BOOSTXL-3PHGANINV DesignDRIVE C28x CPU + CLA
    Incremental Encoder
    Position/Velocity Control w/ FCL source and Observer
    In-line current sense (INA)
    Dual Synchronous Motors
    C2000Ware_MotorControl_SDK_Install_Location/solutions/boostxl_3phganinv

    Release Notes

  • Ah, I thought it was possible to adapt BOOSTXL-3PHGANINV with LAUNCHXL-F28069M: https://e2e.ti.com/support/amplifiers-group/amplifiers/f/amplifiers-forum/1326301/boostxl-3phganinv-launchxl-f28069m

    "run lower voltage to do evaluation" assuming that the motor I am using (with 48V nominal V) works correctly with 45V

  • your motor will run at lower voltage, just not to max RPM

    the 3PHGAN board can likely work with 69M LaunchPad from a pin out perspective, but you will need to make SW changes.  It seemed to me you were looking to avoid that and get the best out of box experience.   Normally I would suggest doing some eval with something that is tested and ready, and then decide if you invest time in taking the next steps to customize for your exact needs.

  • If I may kindly take advantage of this thread to get some more information obviously pertaining to the microcontrollers we are talking about, I was looking at the files in the directories ofC2000Ware_MotorControl_SDK_5_04_00_00, what is the difference between these two folders?

    C:\ti\c2000\C2000Ware_MotorControl_SDK_5_04_00_00\c2000ware\driverlib\f28p55x\examples

    C:\ti\c2000\C2000Ware_MotorControl_SDK_5_04_00_00\c2000ware\device_support\f28p55x\examples

    Also, when I try to import a CCS project from that directory, this error appears:

    I have both installed:

    Initially I had only installed C2000Ware_MotorControl_SDK_5_04 ... when I saw the error appear, I also installed C2000Ware (but I would say it is already included in the SDK)

  • And what about the F28P65x?

    What features/detailes (that I recquire) does it lack compared to the F28P55x that you recommended to me?

  • P65 is available as single core, but also has multi core options and integrates EtherCAT. 

    Was trying to give you lowest cost, simplest options for your request of encoder based servo control with a software example.

    For your questions about using the SDK someone else will reply

  • Hi,

    C:\ti\c2000\C2000Ware_MotorControl_SDK_5_04_00_00\c2000ware\driverlib\f28p55x\examples

    C:\ti\c2000\C2000Ware_MotorControl_SDK_5_04_00_00\c2000ware\device_support\f28p55x\examples

    It's just the SW structure used, specifically for accessing the device registers. The first one has examples that use driverLib API functions and the 2nd one uses bit-field register access.

    Initially I had only installed C2000Ware_MotorControl_SDK_5_04 ... when I saw the error appear, I also installed C2000Ware (but I would say it is already included in the SDK)

    Right, the MCSDK has C2000WARE integrated into it.

    Best,

    Kevin

  • Thank you, but the error remains.

    I also tried reinstalling, but it doesn't work.


    Product motor_control_c2000ware_sdk_software_package v5.4.0.00 is not currently installed and no compatible version is available. Please install this product or a compatible version. dual_axis_servo_drive_fcl_qep_f28p55x dual_axis_servo_drive_fcl_qep_f28p55x Problem

    I haven't connected the board, I still have to buy it ... I'm just looking at the code

  • Hi,

    Can you check in project properties that SDK product is found.

    Best,

    Kevin

  • I was looking the example universal_servo_drive_f28p65x in C:\ti\c2000\C2000Ware_MotorControl_SDK_5_04_00_00\solutions\universal_servo_drive .. and the project structure seems quite similar to C2000Ware_MotorControl_SDK_Install_Location/solutions/universal_motorcontrol_lab that I have used in the past for both a sensorless and sensored solution with 0039C.

    There are DMC_LEVELS:

    1) Is there a position control in universal_servo_drive_f28p65x ?? (..I know it can be done, but I don't see a DMC_LEVEL for it, maybe I have to write it by hand .. am I wrong?)

    2) Pardon my ignorance, but I read "Sensored" in the 0039C .. although it is "Universal Lab" and NOT "Universal Servo Control" as you suggested

    Can you clarify this difference for me?

    I have used 0039C in the past and I remember running it with an encoder .. what changes then compared to p65x or p55x??

    I care about this informations because there are so many products and so many documents and therefore it is not very intuitive which and how to choose

  • Hi,

    \ti\c2000\C2000Ware_MotorControl_SDK_5_04_00_00\solutions\universal_servo_drive .. and the project structure seems quite similar to C2000Ware_MotorControl_SDK_Install_Location/solutions/universal_motorcontrol_lab

    The universal_servo_drive project only supports sensored control. The univeral_motorcontrol_lab has support for sensorelss and sensored control.

    1) Is there a position control in universal_servo_drive_f28p65x ?? (..I know it can be done, but I don't see a DMC_LEVEL for it, maybe I have to write it by hand .. am I wrong?)

    You're correct the solution only goes up to speed control currently. Position control is something we could look into adding to the example in the future.

    2) Pardon my ignorance, but I read "Sensored" in the 0039C .. although it is "Universal Lab" and NOT "Universal Servo Control" as you suggested

    Can you clarify this difference for me?

    I have used 0039C in the past and I remember running it with an encoder .. what changes then compared to p65x or p55x??

    univeral_motorcontrol_lab has support for sensorelss and sensored algorithms, like incremental encoder. This newer universal_servo_drive project is a cut-down version of the univeral_motorcontrol_lab, removing all sensorless algos and conversion to using sysconfig.

    I suggest you reference the ppt in directory below. When we update the project this ppt will be updated as well to document changes and features.

    C:\ti\c2000\C2000Ware_MotorControl_SDK_5_04_00_00\solutions\universal_servo_drive\doc\universal_servo_drive_overview_MCSDK_v5_04.pptx

    Best,

    Kevin

  • Hi Kevin.

    In the DualAxisMotorControl document, the various connections with 3PhGaNInv using Both F28379D and F280049C LaunchPads are explained.

    I am using LAUNCHXL-F28P55X.

    I am interested in knowing two things:

    1) If I understand correctly, can signals be plotted via two GPIOs and displayed by connecting the probe of an external oscilloscope?

        If the answer is yes, is this the procedure? 

    "Both F28379D and F280049C LaunchPads have a couple of DACs available on jumper pins J3-30 and
    J7-70. To use these DACs that needs to remove the R20 resistor on the 3PhGaNInv board or disconnect
    theJ3-30 and J7-70 to Inverter BOOSTXL-3PhGanInv."

    2) Can I do the same thing even if I use LAUNCHXL-F28P55X? Does it have this functionality?

  • Hi,

    1) If I understand correctly, can signals be plotted via two GPIOs and displayed by connecting the probe of an external oscilloscope?

        If the answer is yes, is this the procedure? 

    It's using the internal DAC to plot internal c2000 variables, not just any GPIO.You have to scale and write the value to 12-bit DAC peripheral.

    2) Can I do the same thing even if I use LAUNCHXL-F28P55X? Does it have this functionality?

    Yes, LAUNCHXL-F28P55X has DACx_OUT signals on pins 30 and 70.

    Best,

    Kevin

  • "scale and write the value" .. i.e. simply write in here which variable to plot?

    Or is there something else?

    (I also added #define DACOUT_EN of course at the beginning of the .c file)

    I've disconnected J3-30 pin to BOOSTXL-3PhGaNInv.

  • Hi,

    I'll share with you DAC SW drivers I recently wrote and tested on F28P65x device. You should be able to adapt it for other C2000s as well.

    dacOut_C2000.zip

    Best,

    Kevin

  • Thank you.

    I imported your files into a new folder 'dacOut' inside 'libraries', added in build settings -> CCS build -> C2000 compiler -> include options both the include and source folders and wrote #define DAC_OUT_EN in dacOut_user.c

    I am left with this error:

    I solved it by defining #define SYSCONFIG_EN but then this error appears:


    #1965 cannot open source file "board.h" dacOut.c /dual_axis_servo_drive_fcl_qep_f28p55x/libraries/dacs/dacOut/source line 23 C/C++ Problem

    I searched inside the project directory and could not find 'board.h' .. then I tried #include 'f28p55x.h':

    (a curiosity ... is the dac1208s module not compatible with this project? because I remember that with the 069M you could buy it to avoid plotting using datalog)

  • Is the dac1208s module compatible with this project?

    Because in the predefined symbols of the project I see:

    Thanks

  • Hi,

    The dac1208s module SW libraries can be used with any C2000 with a SPI port. Some changes to SPI pins / peripheral instance may be required dependent on the device and hardware used.

    Best,

    Kevin