BLDC; Motor Control Design:

Discussion in 'The Projects Forum' started by engstudent08, Mar 13, 2009.

  1. engstudent08

    Thread Starter New Member

    Oct 21, 2008
    I am having some difficulties when designing the controller and it would be great if anyone could clear up some theoretical principles...

    I have a Mars Pmac BLDC and i am trying to design a full bridge Inverter based on the Microcontroller PIC 18FXFXX31 MCU's.

    The motor was purchased from electric motor and i am completing this task with visions of intigrating regenerative breaking next semester..

    So... the Motor comes with three Hall effect sensors that will provide me rotor Flux position and hence the commutation sequence with respect to the 6 Mosfets on the bridge.

    Where i am having difficulty in understanding is the following...
    Given that we have the Sequence... binary code for each position and hence firing cycle how can i intigrate speed control. From my understanding torque is proportional to the current vector magnitude at the stator windings. but wont the Motor just draw the currents it needs ? Can i just use a potentiomiter as the reference and just modify the PWM duty cycles that will in turn correlate with the RMS volts seen at the motor and hence speed ?

    Can i just use a look up table.. for example have the pot chopped into 0-256 bits and then have ranges coprrelating to PWM duty cycles ?

    I have been told i need to monitor current by my supervisor.. But im of the impression that i would ahev to intigrate some sort of CT or extra analogue electronics to scale the current given its operating level at apprioximatly 70 apms..

    What would be the best and easiest way to have closed loop control ? I dont need the highest of resulutions, its not like it a CNC machine. i just want it to ramp up and down.. Its for a go kart application so i figue knowing rotor position i can just make the angle between rotor flux and stator current 90 to get max torque...

    .. the motor has 8 pole pairs. so i was thinking, if it takes one electrical cycle to get 1/8 of a mechanical cycle can i just use a timer or counter to determine the speed ? for the speed reference.. ?? ANd do i even need a speed reference. Given that RMP will be correlated to Voltage applied and hence PWM duty cycle ?

  2. thatoneguy

    AAC Fanatic!

    Feb 19, 2009
    In a multi phase BLDC Motor:
    Changing the frequency of the pulses will change the speed of the motor by "pulling" the poles around at a different rate. Reducing the duty cycle would only give a shorter duration of acceleration towards the next pole, which is effectively less torque.

    For a closed loop control, an opto-interrupter could be mounted near a spinning shaft that has a tab protruding to break the beam. The output could then trigger the counter on the controller. A Hall sensor + magnet affixed to shaft is slightly more durable and immune to dirt, but the same results would be had.
  3. engstudent08

    Thread Starter New Member

    Oct 21, 2008
    I was thinking along the lines of using the hall effect sequencing to provide the reference..
    For example. we know that the mechanical revolutions lags that of the electrical cycle.. by 1/8th .. i think ,given that its an eight pole machines. so can i count the amount of six step transitions to determine how many mechanical cycles have passed given that they will be proportional ??

    I want to have closed loop control of the system, so like you said i will need a reference. I;m just wondering if there is any other way of accomplishing this with out having to use a direct speed measuring component. maybe the maths can just be done in the micro ... or will the delays be too much. i guess the commutation wont be a problem given that we have three halls embedded in the stator. so position is always known.. to a point.

    But what is easiest to compare my reference potentiometer too .. to formulate that error for closed loop control.

    Has anyone done this before ? or have any good references.

    Engstudent :)