BLDC motor - initial rotor position
Sensorless BLDC motor controller are becoming more and more popular, especially with rising of the drone industry.
Being able to detect where the rotor is at 0rpm or no load seems intuitive if we have hall sensors or resolver.
However, what I am having difficulties understanding is how do you know which phase switching combination you should start with if you don’t know where the rotor is? Do you just loop through 6 combinations and check which one would get you enough BEMF?
Is there a clever way how to do it and/or is the approach above how it’s usually done?
2 answers
In the case of a permanent magnet motor, as found in many smaller drone motors, I have seen controllers merely activate the drive at some phase angle that has maximum theoretical torque (two high, one low or one high, one low and one floating, dunno) and pause for a brief moment for the motor to settle into that position and then they have a predetermined ramp up profile from a dead stop at a known position. This allows you to 'prime' the motor position to some pole position as the motor controller is switched on and can proceed to turn in the commanded direction as soon as servo signals appear.
A permanent magnet motor behaves the same as a stepper motor with fewer poles and will find the closest pole position for any given phase input if there is minimal resistance, a small propeller or fan is an ideal low resistance load at low speeds.
As Olin writes you then ramp up at conservative acceleration in open loop until you expect to have enough back EMF to measure.
This last process is repeated EVERY time the motor comes to a stop. The wakeup position seek only needs to be done after the power is applied or an enable signal returns as the motor knows the exact rotor 'phase' position if it brought it to a stop and did not freewheel the prop.
This is usually done by driving the motor very slowly open loop at startup. The idea is that the rotor will follow the magnetic field. Once you think the rotor is in sync with the drive, you speed up the drive and look for the back EMF. Since the magnitude of the back EMF is proportional to speed, you need to get the motor going at least somewhat before sensing the rotor position is possible.
It may not be obvious this is happening when watching a motor start up. The initial slow open-loop part may be only a fraction of a rotation. Sometimes you can see these types of motors go a little bit in the opposite direction when starting up. There is a 50% chance of that happening with a random unknown starting position.
So you start with setting up the stator field to one of the six possible combinations and trust that the stall torque would be lower than the one you are creating with the field?
You don't just start with a single magnetic orientation. That could result in low torque for the position the rotor happens to be in. Instead, you slowly rotate the field, knowing that the rotor will lock to the rotation in less than 180°. From there, you increase the rotation speed to high enough to be able to sense the back EMF, and off you go with position feedback.
If the rotor won't lock at slow speed (when there is essentially no back EMF cancelling out the drive, and hence maximum torque), then you've got no chance of running the motor anyway.
0 comment threads