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 vs FOC


Regarding brushless dc motor control,

What is the difference between InstaSpin and FOC ?

Which method is more efficient ?

Which method allows better speed resolution ?

20 Replies

  • What is the difference between InstaSpin and FOC ?

    InstaSPIN-BLDC uses a "sensorless/self-sensored" back-emf integration technique to attempt to align commutation correctly at every 60 electrical degrees.  It uses a standard 6-step, 2 legs active 1 leg off switching technique (which makes it simple because you always have a leg off for 60-120 degrees to measure voltage from) which has the benefit of utilizing the the full bus voltage (helps efficiency) but has drawbacks of nasty current ripple during switching, and start-ups are not very well controlled (hurts efficiency).  BLDC techniques can (and usually should) be combined with current/torque and/or speed loops to provide a true control loop based system.

    FOC is at its heart a closed loop current/torque control technique to maximize the torque production by controlling independently the torque producing and magnetizing components of the three phase currents so that the a rotating stator field is produced that allows for most efficient induced field on the rotor. This is done by Controlling the Orientation of these two components (Fields). To control the orientation you need to know the relative locations of the magnetic fields. This can be done through the use of a precise rotor sensor (encoder or resolver) or through sensorless/self-sensing techniques (sensed or reconstructed currents can be used to determine rotor flux magnitude and relative position/angle).  The flux positions of the rotor and stator can be viewed as three dimensional vectors (hence the other term vector control).  The torque control loop for maximum efficiency is based on the concept of aligning the two field vectors to a 90 degree relationship.  This can be very difficult in three dimensions (four when you count the movement), so transforms are used (Clarke and Park) to convert these rotating vectors into easy to control DC components called Iq (Torque) and Id (Magnetizing).  For maximum torque production we control Id to 0 and Iq to our needed torque (which could be fed by an outer speed loop).  Id can also be manipulated for cases like field weakening where you trade off torque (and spend current) to produce much higher speeds.  FOC techniques need to control all three legs of the 3PHI simultaneously, allowing the motor to pull three sine waves phase shifted120 degrees. The biggest challenge with FOC comes from needing to sample current/voltage while continuously switching each leg (this is assuming you are reading legs through a shunt and don't have access to in-line magnetic based measurements).  Well, it's not really continuous because we are using PWM techniques at much faster rates (10-30KHz) to create an average voltage to represent where you are on each Sine Wave, so typically you do have "off-time" where you get the chance to sample the leg....But at very high (+/-) places on the sine wave that window gets very small or non-existent.  And this is if you are measuring all three currents....go to 2 current measurements and you have to play some tricks and limit your duty cycle (really hurts efficiency) to get your samples....go to 1 current measurement and you REALLY have to play some tricks and limit duty cycle (really hurts efficiency.  And yes, you also do things like modified sine waves (space vector) to actually shape the wave pseudo-sinusoidal / trapezoidal to get more bus voltage utilization.

    Which method is more efficient ?

    As you can probably guess, the answer is "depends". In general, all other things being equal the BLDC is going to give you a good baseline efficiency when you talk about efficiency at the operating point of the motor (90%+ of rated speed/torque).  But there are all sorts of caveats here: bi-polar, uni-polar switching techniques, PWM/inverter switching losses, motor construction (some will have more iron losses, current ripple losses), and of course use conditions / profile, and even tuning of current loops.

    Especially compared to a lot of sensorless FOC implementations...which to save "cost" on current sensing end up restricting their duty cycles so that you get less torque/speed.  So you end up spending WAY more on an oversized motor and more electricity costs than paying upfront for current sensing that doesn't limit you.

    But an FOC implementation that is using 3 x current sense with full modulation capabilities is going to be able to match (if not exceed in many cases) the OVERALL system efficiency.

    Plus FOC brings many other benefits: better current control (Start-up and active can reduce ratings on power components), sine wave for less acoustic noise, faster response, tighter control, ability to choose a motor size that will utilize maximum torque during bulk of operation while having the capability to to use field weakening techniques when higher speed operation is needed (which is a smaller % of their lifetime).  As an example, take the case of a washing machine that typically tumbles/spins at 50 RPM (drum rotation) for most of it's cycle, and then up to 500 RPM for initial spin cycle, then a short time at 750 RPM, then 1000 RPM, then 1200 RPM, then 1500 RPM briefly.  What is the best option here? 

    With BLDC control you need to use a motor that can spin at 1500 RPM (15,000 RPM if you use a gear) at full modulation / voltage.  What efficiency will you get when you need to run at 3% of rated (50 RPM, 500 RPM Geared) for most of it's lifetime?  Why not use FOC and choose a motor rated for 500 RPM (5,000 geared). Get better efficiency (smaller motor) at 50 RPM 10% rated and then use field weakening for the brief amount of time to hit the higher speeds.


    Which method allows better speed resolution ?

    FOC because you have direct control of the torque.  The output of a speed loop is a torque reference. Typically the speed loop runs at a 10x slower rate, so the torque loop has 10 cycles to control to the same set-point.  FOC allows faster torque response to system changes and hence better speed control (you still need to tune speed loops in either case).  Sensorless FOC can be challenging because the speed of the motor is completely estimate and most estimators introduce phase delay.  So low speed and highest speed operation are very dependent on the quality of the sensing and the observer.  If either are poor the speed loop tuning won't matter much, in which case BLDC would have been more robust.

  • In reply to ChrisClearman:

    Thanks for the great explanation.

    If I understand you correctly, InstaSpin is a close relative to trapezoidal commutation?

    What I'm looking for is a VERY efficient SENSORLESS commutation method.

    My motors spin at around 3000 (+/- 500) rpm. I do need fine resolution for the +/- 500rpm around the nominal 3000.

    What is the best method for my application?

  • In reply to Tomer Eliash:

    Yes, InstaSPIN-BLDC is completely trapezoidal control.

    It is a sensorless Bemf technique, but based on integration rather than the typical zero cross detection.

    How dynamic is your system (speeds, loads)?

    What is lowest speed / highest speed you need to support?

    Is acoustic noise an issue?

    Cost of the MCU?

    In general I'd suggest starting with InstaSPIN-BLDC for first evaluation since it's so easy.

  • In reply to ChrisClearman:

    It's very dynamic.

    The lowest speed is 2500 and the highest is 3500 rpm.

    Acoustics aren't an issue, neither is the cost of the controller.

  • In reply to Tomer Eliash:

    I don't consider that range of speed too dynamic, so are you saying that your load is dynamic?

    What voltage / current range?


  • In reply to ChrisClearman:

    Yes the load is dynamic - it's hard for me to say how much...the shaft is attached to a 3D tilting propeller.

    Voltage ~ 12V

    Current ~ 5 to 8 amps 


  • In reply to Tomer Eliash:

    Start with InstaSPIN-BLDC and the DRV8301-HC-C2-KIT

    Most of these applications use sensorless BLDC control just fine.

  • In reply to ChrisClearman:

    Why do you advice against FOC ?

  • In reply to shai kon:

    I don't advise against it, I advise to start with InstaSPIN-BLDC. Simpler to implement and likely will meet the performance needs.

  • In reply to ChrisClearman:

    If I understand correctly, InstaSPIN provides, means for tuning performance and the outputs C code to "flash" the MCU/DSP for permanent use.

    This way, I won't have to do any control firmware development myself.

    Is this correct? 

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.