1
\$\begingroup\$

I've been reading into field orientation control a bit (specifically I want to design a position controller), and it seems that there are three ways to get to position feedback

  • Hall effect
  • Encoder
  • Sliding mode estimator using current measurements

The sensorless option is complex, and I'm still trying to wrap my head around that. It seems I'm missing something, however in understanding the sensored options. From my understanding, a hall effect sensor will give an absolute rotor position; an encoder on the other hand will only give a relative position. When using an encoder, is there some sort of calibration step to get the initial rotor position?

Are there any specific reasons to use one type of sensor over the other?

\$\endgroup\$
4
  • \$\begingroup\$ What are you trying to do? sensing position on a BLDC seems a bit that you are choosing the wrong motor to start with, usually, the position-sensitive application will use a stepper motor. BLDC is for high torque, high-speed applications (EV, Drones...). \$\endgroup\$ Commented Jan 20, 2021 at 4:27
  • \$\begingroup\$ There are different types of shaft encoders. It is not correct to say that they only give relative position. Sometimes some mechanism is employed to give continuous exact position to whatever resolution the encoder supports. Generally encoders are the easiest and most precise option. Hall sensor does NOT tell you shaft position. At the transition from one state to another, for that instant, the electrical phase is resolved precisely. But the electrical phase goes through more than one cycle per revolution of the shaft. \$\endgroup\$ Commented Jan 20, 2021 at 8:15
  • \$\begingroup\$ A key thing you need to figure out is whether you need smooth high torque at zero speed. Having precise shaft angle at startup would be an advantage if you need to do that. Otherwise you will be forced to make assumptions until the motor is running fast enough for sensorless position estimation, or accurate interpolation with of phase between hall transitions. \$\endgroup\$ Commented Jan 20, 2021 at 8:18
  • \$\begingroup\$ If you have 20 magnets in the rotor (10 magnetic pole pairs) you will have 20 magnets * 3 sensors = 60 hall sensor transitions per rotation. Each 360 degrees of electrical phase is divided up by the hall sensors into a 60 degree segment. This is not fine enough resolution to do vector control or FOC from startup. You would either use 6 step commutation or open-loop commutation until the motor is moving a little bit. An encoder, to be useful, should have much finer resolution than that. \$\endgroup\$ Commented Jan 20, 2021 at 8:25

2 Answers 2

2
\$\begingroup\$

Hall sensors are used for correct six step commutation used in BLDC control. BLDC is almost the same as PM DC motor with a difference that instead of commutating rotor with brush commutator, the commutation is done on stator windings by use of electronic switches. The correct timing of switching is determined by hall sensors.

Field orientation is different, so that there is no such thing as simple commutating similar to brushes like BLDC. Instead there is a constant alignment of stator flux regard to rotor flux, therefore a more precise rotor position is needed. As the rotor has to be determined with absolute position with regard to the stator frame, only absolute encoders are suitable - resolver, absolute encoder, selysn, synco ...

However due to their complexity and cost these absolute encoders may be replaced by incremental encoders with use of some complex algorithm that estimates the approximation rotor absolute position at start up. When the drive is turned on, the motor makes some wheezing sound and determines the position. This initial estimation procedure is subject to PMSM type, difference in longitudinal (d-axis) and transversal (q-axis) inductance, difference in reluctance, ... and it is not a general approach, rather for a very known motor with all its parameters. Once the approximative position is determined, the motor can start and the position will be corrected when the encoder will trigger the Z track, used to give the exact alignment.

The sensorless control is achieved by measuring BEMF voltage while the switching element is in OFF state during PWM control. The main problem is that at low speed the BEMF voltage is low and below noise threshold, so not very useful if you want to do positioning tasks. Another state of the art technology is to use a high frequency injection, then with special rotor shaping, like buried magnets PMSM it exhibits different inductance/reluctance in d/q axis. By measuring the phase voltages the algorithm is capable to determine the absolute rotor position. This might be a game changer for some simple machines that do not need a very accurate positioning.

\$\endgroup\$
1
  • \$\begingroup\$ FOC can be done with no encoder and no hall sensor in some applications. \$\endgroup\$ Commented Jan 20, 2021 at 23:51
0
\$\begingroup\$

Without Expanding into BLDC, different types of sensors are used for different applications.

For the optical wheel encoding, they exist in both relative (just counting steps) and absolute.

Absolute wheel:

enter image description here

Relative version:

enter image description here

The downside of those is that the environment needs to be fairly clean.

Hall effect sensors are used with BLDC for the controller to know when to switch the phases on the coils. In this implementation, they are relative, they only care about when to switch coils on a BLDC and the precision is not very high, if you need a precise position control it might not be the best choice (BLDC altogether), if you need precise speed control, it's a good choice.

Hall effect could also be used in any motor shaft with some magnets to measure its speed or position depending on how many magnets you put.

A sliding mode estimator using current measurements seems complex to implement.

For position into

If you need a precise position control, if you have a fairly clean environment, the optical encoder is the way to go. Ink Jet printers work this way for example using a linear encoding strip.

Otherwise, stepper motors are a better solution than BDLC, they are used in industrial robots and usually use encoders that are inside the motor.

enter image description here

Another common method of position sensing is with a potentiometer, usually used by those hobby servo actuators.

enter image description here

\$\endgroup\$
1
  • 2
    \$\begingroup\$ I bet those industrial robots aren't using stepper motors - more like dc servos. More recent models will probably use AC servos. \$\endgroup\$ Commented Jan 20, 2021 at 11:09

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.