Electronic – Sensorless driving of 3 phase BLDC motor for gimbal applications

brushless-dc-motorcontrol theoryimumotor controllerpwm

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?

Best Answer

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.