1
\$\begingroup\$

I have started to work on a project of mines, which consists in implementing the stabilization of a single axis gimbal using a generic microcontroller (STM32 or Arduino Uno).

The gimbal axis is driven by a sensorless three phase brushless DC (BLDC) motor, while on it's shaft there is a generic payload provided with an IMU board (3 axes gyros + 3 axes accelometers), which can give feedback to the microcontroller about the angular rates and accelerations of the motor.

The microcontroller is feeding an inverter bridge (L6234) in order to drive the BLDC motor.

enter image description here

I have googled a bit about this topic and there are so many solutions out there for high speed applications, but not that much for low ones.

Moreover, the thing I really do not understand is about the control of the BLDC motor, so my questions are:

  1. Can I use a sensorless control of the motor, by sensing the back EMF even if the motor is spinning very low?
  2. How can I energize properly the phases of the BLDC motor, from standstill, if it is sensorless?
  3. Can I use the IMU for finding out how to spin the BLDC motor properly without counter rotations (meaning that I know when to commutate)?
  4. How can I hold the motor standstill when reaching the setpoint?
  5. Should I implemebt a speed controller or a torque (current) one for such an application (sensorless driving of BLDC motors at low speeds)?

Could you give me any help, please?

\$\endgroup\$
  • \$\begingroup\$ I'm pretty sure that brushless gimbal drivers don't perform back-EMF sensing at all; they just drive the motor open loop (like microstepping a stepper motor, but three phase) since the speed is zero most of the time. \$\endgroup\$ – jms Oct 15 '16 at 23:01
  • \$\begingroup\$ But what about the counter rotations because of wrong phases activation? \$\endgroup\$ – starScream Oct 15 '16 at 23:03
  • 1
    \$\begingroup\$ You output a 0 Hz sine wave, while slowly ramping up the amplitude. The rotor will then start to align itself with the magnetic field, causing the stabilized assembly to move. The gyro will sense that, and your control loop will immediately adjust the phase of that sine wave in response to keep the rotor still. The spurious rotation at startup is only a problem with normal (high speed) sensorless brushless driving schemes because in those cases you want the motor to accelerate as quickly as possible at startup. \$\endgroup\$ – jms Oct 15 '16 at 23:08
  • \$\begingroup\$ These things are all over the hobbyist drone world, and it would be surprising if at least some were not open source projects. So you'd be better off studying how they actually work than in asking people here to speculate from first principles how they might. \$\endgroup\$ – Chris Stratton Oct 15 '16 at 23:32
2
\$\begingroup\$

Can I use a sensorless control of the motor, by sensing the back EMF even if the motor is spinning very low?

Technically, yes you can. However, in practice, it is not possible/difficult. The reason is that because the back emf voltage is so low, you need to amplify it (extra circuits) or work with low resolution data. Since the resolution is lowered, you get cogging because it becomes difficult to identify exact point of zero crossing. Also, back emf can't be lower than the noise in your system, you won't detect it.

How can I energize properly the phases of the BLDC motor, from standstill, if it is sensorless?

You will do an open-loop start-up sequence and hope that the motor catches up. Continue open-loop operation until a critical back emf speed is achieved.

Can I use the IMU for finding out how to spin the BLDC motor properly without counter rotations (meaning that I know when to commutate)?

IMU generally gives information about accelerations. So, you will integrate that to find the rotor positions. This operation will take some time and there will be calculation errors (You'd get cogging in BLDC motors). I'd say, this method would be more difficult than the back-emf method. IMU method is better for stepper motors. (Stepper motors + IMU = nice gimbal system)

How can I hold the motor standstill when reaching the setpoint?

You will switch the mosfets at a constant frequency. The motor will move at a constant speed. Is that what you mean by this question?

Should I implemebt a speed controller or a torque (current) one for such an application (sensorless driving of BLDC motors at low speeds)?

BLDC motors are inefficient and hard to control at low speeds. Why not use a stepper motor? If you really have to use BLDC, though, use both current and back emf method combined. They have their benefits.

\$\endgroup\$
  • \$\begingroup\$ Most offered solutions are BLDC and an IMU type sensor - to understand why these are good choices it may be necessary to study how the existing designs work, rather than to guess from first principles. The IMU is not to indicate the rotor position, but rather to provide the control loop's error signal, since the desired pointing is relative to the surrounded world, not the aircraft (or whatever) to which the gimbal is mounted. \$\endgroup\$ – Chris Stratton Jun 5 '17 at 20:42
0
\$\begingroup\$

There are two viable methods with regards to sensorless control

  1. BackEMF sensing.

Relatively simple: measure the terminal voltage during periods where you are not switching. A very viable solution once you are above a minimum velocity

  1. Injection.

By injecting a higher frequency, low amplitude voltage component onto the stator, the current associated with this injection can be measure. From this the Ld and Lq can be derived & as long as the saliency of hte rotor is known, the angular position can be determined. This method however become less viable with increase rotor velocity

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.