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.

instaSPIN Application

Other Parts Discussed in Thread: TMS320F28069, INSTASPIN-BLDC, CONTROLSUITE, DRV8312

Can instaSPIN be used for FOC of 3-phase induction motors?

Is instaSPIN available only on TMS320F28069?

Thanks.

  • 78Sys said:

    Can instaSPIN be used for FOC of 3-phase induction motors?

    You should find more info at www.ti.com/instaspin-foc.

    78Sys said:

    Is instaSPIN available only on TMS320F28069?

    Other devices support InstaSPIN, but I believe F2806x are the only to support FOC (click the "Overview" tab on the above referenced website).

    regards, Joe

  • InstaSPIN-FOC is ideal for 3-ph induction or synchronous machines.

    InstaSPIN-FOC is made available by use of a TI proprietary library, which is first available on the Piccolo F2806x series (69, 68, 62). Additional series support and other InstaSPIN flavors are coming soon.

  • How soon is soon?

    I'm currently developing on the Delfino F28335 and i would like to use InstaSpin-BLDC library in my project.

    Can you say when the library will be available for the device I'm using?

  • InstaSPIN-FOC will not be released for F28335.

    My understanding is that the InstaSPIN-BLDC.lib in controlSUITE will run on F28335 as-is, just note that it is all in fixed point.  I've never personally tried it but I believe others have.

     

  • Thank you for your quick response.

    I have another question; does TI provide any project exampled for controlling motors using the DMC library for Delfino F28335?

    I especially interested in a full control loop (Position -> Velocity -> Current), using trapezoid BLDC control.

  • All of the Delfino F28335 examples are on the TMDSHVMTRPFCKIT.

    there is sensorless Velocity + Current FOC for ACI and PM machines.  This is sinusoidal, not trapezoidal.

    For position (servo) there is a project on the same kit on Piccolo. It could be ported to Delfino.

    we keep getting requests for trapezoidal drive when doing position control so I've put this on the to do list. Is there a particular reason you are using trapezoidal?

    simplicity? think there is more torque?

  • Sorry for the long delay. (Holiday Vacation)

    Yes we interested in trapezoidal drive because of the simplicity.

    "For position (servo) there is a project on the same kit on Piccolo. It could be ported to Delfino."

    is this example include position + velocity + current control?

  • Shay,

    Yes, see the documentation in controlSUITE here

    C:\ti\controlSUITE\development_kits\HVMotorCtrl+PfcKit_v2.0\HVPM_Sensored_Servo\~Docs

    Position (QEP or Resolver)  --> Speed --> FOC Current/Torque

    Yes, BLDC is probably easier in most cases, but it is also electricly noisy and not as smooth. You will also lose efficiency (not that you probably care too much in a position application) if usign BLDC with a sinusoidally wound motor.

    And I guess to further clarify on the release of InstaSPIN solutions, the different flavors of InstaSPIN (-BLDC, -FOC, more coming this year) are released on Piccolo class devices primarily. Not ruling other families out for the future, but Piccolo only for now.

     

  • Thank you

    You have helped me a lot.

    In another matter, do you have FOC examples for the F28335 device on the DRV8312EVM or/and DRV3412EVM .

  • Sorry, no. The F28335 only has examples on the HVKit. They can be ported over.

    There is also F28069 examples on DRV8312 which could be ported to F28335.

     

  • Thank you very much.

    I will port the F28069 examples.

  • Hi Chris

    I have some question about the FOC examples you referred me to.

    1. What is pu (per unit). For example in the "speedref " variable. How can I calculate desired RPM to pu.

    2. In the project settings header file, the following are defined: BASE_VOLTAGE ,BASE_CURRENT, BASE_FREQ. how do I decide the right value for each of them?

    3. Does the examples use the CLA? If not how can I use it to reduce load from the main processor?

    4. I want to know the size of the entire program and how do I utilize the available memory. How do I do it in ccs5?

    5. How can I measure the processor load, for a specific program? (I want to take the example for one motor and duplicate it to control to motor simultaneously).

    Thanks

  • 1. Scaling for your system.

    http://processors.wiki.ti.com/index.php/TMS320C2000_Motor_Control_Primer#PU_System_Model_and_Base_Values

    2. Should use the voltage and current used with the HW you are scaling off of, and a frequency slightly higher than any you need to use in your system.

    3. No.  See the examples that do. Ex: C:\ti\controlSUITE\development_kits\HVMotorCtrl+PfcKit_v2.0\HVPM_Sensorless_CLA_F2803x

    4. look at your map file

    5. there are some tools in CCS, but the best way is to do a toggle at the entry and exit of your main ISR for the control loop and use a scope

     

  • Hi Chris

    I have another question....

    In every sensor less FOC example in the <project-name>-Settings.h file the following motor parameters are defined:

    #define RS          // Stator resistance (ohm)

    #define RR         // Rotor resistance (ohm)

    #define LS          // Stator inductance (H)

    #define LR          // Rotor inductance (H)

    #define LM           // Magnetizing inductance (H)

    #define POLES   // Number of poles

     

    My question is, firstly I don’t understand what is the meaning of the LM parameter (Magnetizing inductance), I didn’t find that parameter at any motor datasheet. Secondly I notice that in the code only the RS and LS parameter are used, so why the other ones are defined?

    Thanks in advance

  • They are certainly used in the ACI_FE and ACI_SE (flux and speed estimators). Read the description of these functions.

    C:\ti\controlSUITE\libs\app_libs\motor_control\math_blocks\v4.1\~Docs

    magnetizing inductance is the flux that crosses the air gap divided by the excitation current.  Yes, it is extremely difficult to know what this value is for a motor. One of the reasons the new FAST observer is so much better than these older induction estimators.

     

  • Thanks Chris

    I really appreciate your quick response.

    I have another question: how do I know the real rpm value for 1pu speed ref to… in another meaning how can I adjust the example to my own motor…

  • Shay,

    RPM = Hz * 120 / poles

    looking at the 8312 PM Sensorless example.

    the speed estimation math_block (SE_MACRO) is used for calculations based on the SMO estimated theta.

     speed3.EstimatedTheta = smo1.Theta;
     SE_MACRO(speed3)

    from the SE_MACRO documentation there are two outputs you could use.

    _iq EstimatedSpeed; // Output: Estimated speed in per-unit

    int32 EstimatedSpeedRpm; // Output : Estimated speed in rpm (Q0)

    note to get the RPM you need to feed in the correct

    Uint32 BaseRpm; // Parameter: Base speed in rpm (Q0)

    which in this example is defined here

    speed3.BaseRpm = 120*(BASE_FREQ/POLES);

    in -Settings.h these are defined

    #define POLES   8      // Number of poles
    #define BASE_FREQ       200            // Base electrical frequency (Hz)

    so speed3.BaseRpm = 3000

    so 1.0 pu = 3000 RPM