BLDC ESC not working well

Discussion in 'General Electronics Chat' started by assassin1452, Jul 21, 2014.

  1. assassin1452

    Thread Starter New Member

    Jul 21, 2014
    8
    0
    Hi,
    I have a project of building a sensorless Electronic Speed Controller for Brushless DC Motor. I first made a research to understand how does the electronic components work , how does the motor work and to know some methods that allow controlling these motors. Then, I made a circuit on a solderless breadboard, and wrote the code and after testing on an HDD brushless motor and finding problems on the circuit or on the code, and after solving these problems, I was able to make an HDD brushless motor turn with a variable speed, and the ESC worked. The problem is that the motor doesn't start turning untill I raise PWM duty cycle to 60%, can someone explain me why?
    Thank you
     
  2. Alec_t

    AAC Fanatic!

    Sep 17, 2013
    5,804
    1,105
    Welcome to the forum!
    We know nothing of your HDD motor specification, so explanation is difficult. Can you be sure the motor is sensorless? What driver circuit are you using? A schematic would be helpful.
     
  3. kubeek

    AAC Fanatic!

    Sep 20, 2005
    4,670
    804
    I guess you will have to post your schematic and code.
    Do you ramp up the speed when you start the motor? Also realize the motor will need a lot of current to overcome the initial forces from the magnetic poles. After it has sufficient speed the inertia of the rotor will be enough to overcome it.
    Also I am not sure you need pwm at all, the motor should be turning at whatever commutation speed you have set and lowering the power by pwm will only reduce its available power.
     
  4. assassin1452

    Thread Starter New Member

    Jul 21, 2014
    8
    0
    The circuit for detecting the zero cross is this one: each phase is connected to a loww pass filter to filter the PWM signal, the filtered signals are connected using resistors to form a virtual neutral point, the virtual neutral point is connected to 3 comparators (-) inputs, each filtered signal is connected to one comparators (+) input, the signal on the output of the comparators is used to detect the zero-cross. I think this circuit is working well because I tested it on the oscilloscope and checked it and the motor spins well at high PWM duty cycle (or high voltage applied), but doesn't move or moves a little bit and stops at low PWM duty cycle (or low voltage applied)
    And in the circuit there is a charge pump, 6 MOSFETS mounted as an H-bridge, the microcontroller.
    You talked about current, I think the problem is maybe from the power supply, can you please give me some details about that
    Here is basicly what the code does:
    Open-loop:
    -The PWM duty cycle is set by default to 20%, and the PWM is activated
    -The motor is first moved to a certain default position and after 15ms the high MOSFETS are desactivated, and the low MOSFETS are activated
    -After 15 ms, the first two windings that were energised to position the motor are re-energised and this is the first commutation step.
    -The microcontroller executes 6 commutations with a interval of time between two commutation of 15 ms by default.
    -After 6 commutations, this interval is reduced by 1 ms.
    -The microcontroller does 6 commutations and reduces the interval by 1 ms after each 6 commutation steps, and continues doing that untill the interval between two commutations is 3 ms.
    -The microcontroller executes the closed loop.
    Closed loop:
    -The microcontroller, after the previous commutation, waites for the zero-cross and calculates the time between the commutation and the zero-cross.
    -The microcontroller, after detecting the zero-cross, waites for the amount of time previouslt calculated before commutating.
    -The microcontroller commutates and excecutes the closed loop again.
     
  5. Alec_t

    AAC Fanatic!

    Sep 17, 2013
    5,804
    1,105
    Perhaps 15mS is too short a period to get the motor started when the PWM duty cycle is low.
     
  6. assassin1452

    Thread Starter New Member

    Jul 21, 2014
    8
    0
    I tried to increase the interval between two commutations to approximately 52 ms as beginning, but it doesn't work, maybe, at low PWM duty cycle, the interraction between the rotor and the stator magnetic fields is not sufficient to make it move, am I right, or is there another explaination to that?
     
  7. MaxHeadRoom

    Expert

    Jul 18, 2013
    10,564
    2,379
    What DC voltage level are you using? The rotor inertia has to be overcome in order to get the motor turning, the customary value of the DC supply is at Least 110% of the motor rated voltage and can go to 150% for a PWM controller.
    Max.
     
  8. assassin1452

    Thread Starter New Member

    Jul 21, 2014
    8
    0
    I'm using a 12V DC voltage.
    And what does it mean to overcome the rotor inertia, can you please give me more details?
    The motor rated voltage? Where can I find this info?
    Thanks
     
  9. MaxHeadRoom

    Expert

    Jul 18, 2013
    10,564
    2,379
    The motor plate or the spec sheet for it should give all motor details.
    If it is actually a 12v, motor with PWM control you should be able to go up close to 18vdc supply.
    Max.
     
  10. kubeek

    AAC Fanatic!

    Sep 20, 2005
    4,670
    804
    The rotor has some weight and is stationary at the beginning. You cannot make it instantly run at certain RPM, you have to ramp the RPM slowly enough so that the motor doesnt slip and lose "traction" relative to the magnetic field that is trying to rotate it.
     
  11. assassin1452

    Thread Starter New Member

    Jul 21, 2014
    8
    0
    Actually, I'm using a 12V DC power supply, I don't know it's rated voltage, it's an HDD brushless motor.
    So there is a friction force that resist the motor movement, so should I use a high PWM duty cycle at the beginning to increase the magnetic force that should attract the rotor and be higher than the friction force, then decrease the duty cycle untill it reaches a low value, or use a low PWM duty cycle and just increase the time between two commutations, so that it has enough time to move to the next position?
    Thanks
     
    Last edited: Jul 21, 2014
  12. MaxHeadRoom

    Expert

    Jul 18, 2013
    10,564
    2,379
    The really effective way to control any motor is with some kind of feedback, and operate either in the velocity mode or torque mode for position control, using either tachometer method or encoder feedback..
    In the case of VFD's that control an AC induction motor, a method is used to sense several operating conditions such as current rpm etc, and the frequency is adjusted in order to maintain the RPM, called Sensorless Vector control.
    With using a higher voltage, more energy or higher mean current is sent to the motor for a given PWM ratio.
    Max.
     
  13. assassin1452

    Thread Starter New Member

    Jul 21, 2014
    8
    0
    I'm using the comparators signals to determine the zero-crossing points, but first I should start the motor from standstill, and that what open loop does, but as you said, the motor should overcome the inertia of the rotor (and also the load inertia), but how can I do the start-up correctly, should I start with a high PWM duty cycle or a low duty cycle, should I start with a high commutation frequency or a low commutation frequency?
    Thanks
     
  14. MaxHeadRoom

    Expert

    Jul 18, 2013
    10,564
    2,379
    This is where feedback of any kind comes in, you really need to know what the motor is doing and take some action based on that.
    Otherwise you are operating it blind.
    Max.
     
  15. assassin1452

    Thread Starter New Member

    Jul 21, 2014
    8
    0
    But when starting it from standstill, isn't it commutated blindly? I'm aiming to build a sensorless ESC
     
  16. djsfantasi

    AAC Fanatic!

    Apr 11, 2010
    2,812
    834
    Disclosure: I am not familiar with BLDC motors, but do know from model railroading about controlling permanent magnet brushed DC motors. Linn Westcott in 1962 developed a "True Action" speed controller or "throttle". The TAT would start with short pulses of DC at the motor's voltage rating (12vdc per National Model Railroading Association standards). Then, as the speed requested increased, the pulses would disappear. As Bruce Metcalf wrote, "Extensive research has shown that the best possible drive signal for control of modern DC per-mag model railroad motors is a fixed DC signal with short pulses added at low speeds to overcome starting friction and low-speed non-linearities."

    The article (which can be found here) also has diagrams of the waveform produced by the True Action Throttle.

    I apologize if this doesn't apply (please let me know if this is the case), but posted it for general information.
     
  17. kubeek

    AAC Fanatic!

    Sep 20, 2005
    4,670
    804
    Well obviously you cannot start at high commutation freqency and go to a lower frequency since the motor will not even start to move like that. The motor at standstill is at zero RPM, so you need to start drving it close to zero RPM to get it gradually moving. The slope of the ramp will depend on rotor inertia, but you could ramp it up very slowly without any trouble. Actually your driver should be able to rotate the motor veeeery slowly, like 1 revolution per second without damaging anything.

    Can you post the details of your motor? BLDC and stepper motors have various nummber of poles, so you get different angle of the shaft per full commutation, so say with 10hz commutation frequency some motor will do 300 RPM and some will do for example 150RPM, which influences your startup commutation frequency.

    Because there are ususally quite large static forces that hold the rotor in place you want the PWM to be as high as you can, but not too high so that you don´t exceed the motor´s recommended current. The motor doesn´t create any back EMF when running slow, so the stall current will be mostly limited by the resistance of windings, which usually means it is 10-20x higher than the full power full RPM running current.

    P.S please post the actual circuit, not just your wording of it. A picture is worth a thousand words. Also the actual code will be appreciated.
     
  18. MaxHeadRoom

    Expert

    Jul 18, 2013
    10,564
    2,379
    The only Popular motor that is capable of operating accurately in a blind fashion is the open loop stepper motor, and provided that the mechanics of the system has been designed accurately, the acell/decel/rpm rate is governed directly by the step rate of the control pulses.
    Is see this is for a ESC motor so It looks like it is in the realm of RC motors?
    I am more familiar with the BLDC motors used in motion control, I have never looked in to the requirements of the ESC motors, but there appears to be quite a bit out there on the web in the way of controllers.
    Max.
     
  19. assassin1452

    Thread Starter New Member

    Jul 21, 2014
    8
    0
    I would like to ask you a question: is it better to PWM the low side, the high side or the two sides?
     
Loading...