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.

New Enhanced Sliding Mode Observer (eSMO) and Rotor Initial Position Detection (IPD)

Part Number:

 Enhanced Sliding Mode Observer for sensorless field oriented control (FOC)
Texas Instruments
  Design sensorless synchronous three-phase motor controls with better dynamic performance and stability using new and updated modules in the controlSUITE Digital Motor Control (DMC) Library:  
  Enhanced Sliding Mode Observer (eSMO) Library gives better dynamic (variable speed/load) stability
  Lag compensation improves estimated rotor angle accuracy vs. existing SMO solution
  Supports forward or reverse operation
  Dead-band compensation improves current waveform for superior performance and efficiency
  Updated software modules and drivers include: pwm_dbc, angle_math, clarke, pi, pi_reg4, speed_est
controlSUITE Digital Motor Control (DMC)
Download controlSUITE™ software update now
  Ready to get started? An Example Project (HVPM_Sensorless) is included in the controlSUITE installer to run on the High Voltage Motor Control and PFC Developer’s Kit using Piccolo F2803x.
  • 5125.ZLSPD Macro.docx

    Forgot to share the attachment in previous mail.



  • Hi RK,

    Thanks for pointing out, the document is not up to date on the software snippet. But I guess you got the point.



  • Hi Chris,

    I try to work with HFI lib but I have no success.

    I use:

    High Voltage Motor Control and PFC Developers Kit (v2.1)
    CPU is F28035
    with motor:
    Permanent Magnet Synchronous Motor for TMDSHVMTRPFCKIT
    Part Number: HVPMSMMTR

    up to build Level 7 everything works fine.

    But build Level 8 and 9 I have no success.

    build Level 8:
    after activating
    after a short time hfi1.HFI_Status switch to HFI_RUN_STATE
    I can hear injection in motor
    but when I turn the shaft EstimatedTheta does not change.

    build Level 9:
    after activating
    short noise in motor and then over current protection.

    I did not change anything in transition.h or hfi.h or other things in code.

    please advise how to go on.



  • Hi,

    IPD and HFI will work well on PMSM with saliency, I mean, Ld and Lq are different. The motor you chose to test is not a salient PMSM.

    Best regards,


  • Hi,

    thx for info!
    I thought the software and experimental kit are written for this motor!
    Is there a possibility with HFI to find angle with out rotating on a non salient PMSM?

    Best regards
  • Steve,
    The motor was originally provided for smo/esmo control, and later on we added HFI/IPD. We will take a relook at this.

    To use HFI on non salient motor, I do not think it will work.

  • ramesh,I thought about the problem.
    If I have a non salient motor and make a short cut to the windings and turn the shaft I feel nothing.
    If I have a salient motor and make a short cut and turn the shaft I can feel the poles.
    Is this right?

    Sorry I am a practical developer.

    But if I use HFI on the non salient motor and turn the shaft I can hear where the poles are the sound is less on the poles but I can not see in the current.

    Do you contemplate on developing on rotor initial positon of non salient motor?


  • Hi,

    I cant understand your point on short cut. Am not looking to develop IPD for non salient motor right now.

  • We've been trying for some time to get our hands on the source code for the eSMO block. We've contacted TI support, they redirected us to our distributor. We contacted them, they redirected us back to TI. This has been going on for some time. Finally I found out that it's Chris Clearman who is responsible for this, and via our distributor we got the information (they got it from TI), to contact you on this link.

    Anyway, how do we proceed to get the source code for eSMO? If I understand correctly the source code is available on request?


    Peter Olsson
    i3tex AB
  • Peter,

    I replied to our local field who was helping you (asktexas) through email on 5/22 with the URL to request access to the code.

    leave your email directly and I will send to you.

  • Chris,

    Thanks for the reply. Yes, I got a link first, that didn't work. Then I got another link, which sent me here.. :)

    My email:

  • Hi Chris,

    On HFI/IPD Library.

    I have got a setup file.  C2000MCU_IPDLIBRARYCS_1_00_00_00_setup

    Can you please explain how can I use this file to examine IPD algorithm on HVPM Sensorless project.



  • follow the documentation at


    and in the main .c of that project

         * RELEASE NOTES :-                                                      *
         * ================                                                      *
         *    This release is an enhanced version of TI's earlier SMO based      *
         * HVPM_sensorless FOC solution offering, with enhancements to SMO       *
         * itself and to zero and low speed operation due to high frequency      *
         * injection (HFI).                                                      *
         *                                                                       *
         * The enhancements are listed below:                                    *
         * - FOC from zero speed                                                 *
         * - bidirectional speed control through zero speed                      *
         * - Lower speeds, not covered by SMO, are now possible due to HFI       *
         * - SMO filter lag compensation                                         *
         * - Inverter dead band compensation                                     *
         * - Smooth transition between HFI and SMO methods                       *
         *                                                                       *
         * BUILD LEVELs 1 through 6 from the earlier version are retained        *
         *                                                                       *
         * BUILD LEVEL 7                                                         *
         * =============                                                         *
         * The executable for enhanced SMO is in esmo.lib file, which is part of *
         * the control suite. The user is free to evaluate the function of esmo  *
         * using this executable. For access to its executable code, the user is *
         * advised to contact the nearest TI sales office or distributor.        *
         *                                                                       *
         * BUILD LEVEL 8/9                                                       *
         * ===============                                                       *
         * The executable for Initial Position Detection (IPD) and               *
         * High Frequency Injection (HFI) are in hfi.lib file, which are not     *
         * part of the downloadable version of control suite.                    *
         * Any attempt to build LEVEL8/9 code will result in error.              *
         * For access to the library and/or executable code, the user is advised *
         * to contact the nearest TI sales office or distributor.                *
         * ***********************************************************************

  • Hi Chris,

    Thanks for quick response.

    My question is  different and not answered in the 


    I have downloaded a set up file : C2000MCU_IPDLIBRARYCS_1_00_00_00_setup

    How I can generate a HFI.LIB file from this setup file.



  • where did you get the setup file from?

    try running it, it will install into controlSUITE so the project will build.
  • Hello Chris,

    I got this file downloaded from TI Registered software after I received the access from TI sales.

    Again I tried to install from Control Suite. But , I am not sure where I can find the HFI Library.

    Please see my attached document which shows the details.

    HFI Library.docx

  • Ravi,
    I'm having trouble downloading the setup file myself right now, but I'm pretty sure there is a readme file which explains where to extract the .lib to in controlSUITE
  • Hi Ramesh,
    I would like to know how can I get hfi.lib file from the set up file.-C2000MCU_IPDLIBRARYCS_1_00_00_00_setup
    (Which is supplied by TI under the Registered Software)Thanks for your helpRavi
  • It is a self extracting file, and should automatically load the files. Can you send me the setup file you received, so I can verify here.



  • Hi Ramesh,Can you Please share your e-mail address.ThanksRavi
  • after install make sure you read
    C:\ti\controlSUITE\libs\app_libs\motor_control\libs\HFI\v100\~Docs\HVPM_Sensroless_Level 8 and 9 supplement.pdf
  • Thanks Ramesh.

    Now it is working.

  • Hi Ramesh,

    Thanks for your help.

    I have two errors on Build level=9.

    I am able to run Build level=8 .successfully.

    Attached shows the Build level 9 errors. Can you please explain , what I am doing wrong at Build Level 9.



  • Try the FLASH config, the RAM space is not enough.

  • Hi Ramesh,

    Thank you very much

    It works now. I could build and debug Level 9 as well.

    I need  little more description on how to choose/tune  the following parameters.



  • Review the docs again, it is all given there. Spend some time digging in for familiarizing.



  • Hi Ramesh,

    Can you share if any  test results avaliable , which compare the estimated rotor position with encoder rotor position during  HFI and IPD phase.



  • hi Ravi,
    Could you send me the setup file. C2000MCU_IPDLIBRARYCS_1_00_00_00_setup?
  • Hi Chris,

    Can the HFI/IPD library be uesed on F2808 ,F2806 or F28335 ?
    In my experimentation,the eSMO library can be used on F2808 and F2806,it works well.
  • yes, certainly
  • The HFI / IPD library was not tested on these platforms. If eSMO lib could work, then the others should work too.
  • Hi,I see that you have the HFI.lib in your project , I cann't find it, Can you send the HFI.lib to me,this is my
    Thank you very much!
  • HFI.lib is not released in open domain. I will forward your request to the group that can help.
  • Jack,
    We only release the controlSUITE HFI library to customers who have FAE (TI or Distributor) support. If you have one please contact them and let them know to contact me for the request URL.
  • Hi Chris,  when I use eSMO.lib,there is a function"esmo1.Theta = angleFilter(&pi_smo, &esmo1)",

    1,"angleFiltera()" is a supplemental filter, but what's the kind of this filter? Low-pass filter or others?  Can you tell me the filter form?

    2,Can you explain the meaning of variable smoFreq and smoShift ?

     Best regards.

    thank you very much.

  • Yes , I have contacted my FAE.
  • Jack,
    Ramesh will respond to your questions
  • angleFilter is a low pass filter.
    smoFreq --> frequency of backemf estimate by the SMO
    smoShift -->phase shift due to SMO
  • Hi Chris,

    Now, I am developing PMSM sensorless drive using HVPM_Sencorless from ControlSuite. I use eSMO library (level 7) for speed control.

    In the beginning, I use 2kW PMSM and it seems the controller works very well even at full speed (2000rpm) and full load condition (9.55Nm).

    However, when I want to implement to compressor, It have huge vibration at low speed(900rpm/30Hz). Although, It runs well at high speed (3000rpm/100Hz).

    As shown in the picture above, speed ripple at low speed is very big compared to high speed. I know the compressor have high dynamic load. I try a torque compensation method which estimate the load based on torque equation,

    TL = Tem - J dw/dt

    And use this TL as a feedforward compensation to Iq controller. It seems this method doesn't show significant result to reduce speed ripple. Modify PI gain didn't really help as well.

    Do you have any idea to overcome high dynamic load of compressor?




  • Hello Luiz,

    You are posting to an older thread. If you hare still experiencing issues, please create a new thread. You can include a link to this thread if it contains pertinent information.

    Best Regards,
    Adam Dunhoft
  • Hi Luiz,

    The vibration is for the periodic load changing of comprassor as you said, especially with heavy load at low speed.
    The most effictive way is torque compensation, you need to know the load torque curve first, and add torque feedforward control for Iq controller based on load curve and rotor position angle. Tuning speed and Iq PI regulator Kp&Ki may has some improvement for low speed with light load.