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.

Driving a BLDC/ PMSM without encoder

Hello there,

I am planning a BLDC/ PMSM motor driver build from scratch. I was wondering, in case of BLDC motor is there any way to acquire actual motor position more accurately than 60* (from hall sensors)? I dont mean to use an external encoder. Phrases like back-emf comes up to my head but I havent found any clear info.

I have seen some applications where a BLDC was connected with only hall sensors without any encoder and the driving velocity was very accurate.

For PMSM I am guesing maybe the back emf can be interpolated somehow to get the position?

I would apreciate all help really, whats the technique?

  • Hi Lukasz,

    Please take a look at ( LINK )

    This described how to detect the initial position of the motor, although the accuracy is the same as hall sensors. Also, care must be taken when using low inertia motors as the position can change.

  • So there is no way to interpolate the back emf somehow?
  • Hello Lukasz,

    There are several techniques that are used to obtain accurate motor rotor position information. If you want to sense motor rotor position with an actual sensor, you can use either digital hall sensors or analog hall sensors. Digital hall sensors only indicate the polarity of the magnetic field. Analog hall sensors provide a sinusoidal signal that can be used to identify rotor position with higher accuracy.

    There are several sensorless schemes too. For trapezoidal commutation scheme, most common rotor position detection during run time is based on back emf zero cross detection. You will need a separate start-up algorithm as you do not have back emf at zero speed.

    Either a back EMF observer or high frequency injection can be used If you require better position resolution for a sinusoidal commutation scheme (with accurate position measurement). An observer is basically a mathematical model that you use to estimate the back emf with the use of the applied voltage and measured current. This technique is as accurate as your model of the motor is. Keep in mind that there are different types of back emf observers and you have to select the appropriate observer for your application. Additionally, high frequency injection scheme only works with certain types of motors and you will have an efficiency penalty based on the amount of current you inject.

    Having said all these, could you please help us understand your application? Are you wanting to do accurate speed control or accurate position control or both accurate speed and position? Because you can achieve accurate speed regulation with hall sensor based motor drives and sensorless trapezoidal schemes.

    Also, could you clarify what you mean by BLDC and PMSM? Are you referring trapezoidal commutated motors vs sinusoidally commutated motors?

    Sandun Kuruppu,
    Systems Engineering Team

    ------------------------------------------------------------------------------------------------------------------------------------------------
    Please Click the Verify Answer button on this post if your question has been answered. Thank you
    ------------------------------------------------------------------------------------------------------------------------------------------------
  • Hello thank you very much for this explanation. What I am trying to get is high precision and speed controll with the cheapest possible method (in hardware). Thats why i was wondering either i can drive encoderless.
    And as you said by pmsm i meant sin back emf and by bldc trapezoidal back emf.

    So if I understand correctly, i can measure the back emf by measuring current samples and using an alghoritm on that?
  • Hi Lukasz,

    You can only estimate back emf based on the applied voltage, measured currents and a motor model. It is not directly measuring back emf. This technique works well if you are operating at a steady state as the typical linear motor model is much more accurate at steady state. You will also have to have a separate start-up method. Generally this type of motor control algorithm is referred to as a Sliding Mode Observer based BLDC/PMSM motor control. Please refer to the following e2e discussions and let me know if you have additional questions.

    www.ti.com/.../sprc197 mode observer&tisearch=Search-EN-Everything

    e2e.ti.com/.../283105 mode observer&tisearch=Search-EN-Everything

    e2e.ti.com/.../1185176 mode observer&tisearch=Search-EN-Everything

    Best Regards,
    Sandun Kuruppu
    Systems Engineering Team
  • www.ti.com/InstaSPIN