BLDC Uncontrolled Regen

Status
Not open for further replies.

Jepoy Baduria

Newbie level 4
Joined
Nov 8, 2013
Messages
7
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Visit site
Activity points
98
Hi guys,

I have a bldc motor driven with 6-step trapezoidal control. The motor is 48V, 2kW rated. The motor driver is the traditional inverter consisting of 3 half-bridges for the three phases of the motor. MOSFETs are used in the half bridges. The switching frequency is 16kHz. All the 6 PWM signals (isolated) that are inputs to the inverter are produced by a dspic33f microcontroller. There are 2 hall-effect current sensors installed to monitor the currents in 2 phases of the motor, which are used for peak current limiting and average current sampling. I probably skipped a lot of detail but as far as this problem is concerned, the power section can be regarded as properly working. If you need more info, please ask and I will reply ASAP.

The motor is tested unloaded first. Power is supplied by a laboratory dc supply with OVP and OCP protection. I gently increase the duty cycle input to the inverter by slowly turning a potentiometer. This of course results to the motor speed ramping up. Now, I suddenly turn off the duty cycle (by applying a sharp turn on the pot), expecting the motor to gradually slow down as it loses its momentum. But what happens is the motor suddenly freezes to a stop, and the power supply indicator displays OVP. Once in OVP, the dc supply voltage drops to zero, which is why the motor stops.

I have already identified the problem (correct me if i'm wrong). It is due to the bldc having high enough speed that the combination of its back emf (at the high speed) and the duty cycle of the PWM result to a voltage boost that is higher than the dc power supply input voltage. This results to current transfer from motor to power supply, but the power supply will not allow the reverse curent, so all the regen current from the motor goes into the bulk capacitors, forcing the voltage to go up until the OVP triggers.

Now my questions is, how do I prevent this uncontrolled regenerative action from happening? I'm not sure if this is a common problem, but I have searched everywhere and I have yet to find a similar problem
 

Hi,

I would like to clear up that the intention of the sudden step down of duty cycle is to rapidly transition from motoring mode (wherein power is supplied to the motor) to freewheeling mode(wherein all MOSFETs are turned off). This means that the motor should not experience any braking. The intended application for this is for electric vehicles with a separate throttle pedal and brake pedal. So similar to your traditional car that run on gasoline, a sudden release in the throttle pedal will result to freewheeling the car. This similar response is desired with my bldc motor set-up. So a sudden drop in the duty cycle to zero should result to the bldc to freewheel, not to brake.
 

Sounds like a trivial problem that you somehow don't manage to disable the pwm. I don't see what we could do about it without knowing the motor controller details.

Similarly it's also possible to brake without regeneration by simply shorting the motor.
 

Okay here's a brief description of the motor controller...

The controller is a dspic33fj128mc804. The three hall effect sensors from the bldc are received by the Input Capture module of the dspic. Each input capture has its interrupt enabled so that whenever a hall effect change occurs, an ISR is entered that reconfigures the PWM outputs so that the bldc continues spinning in the right direction. At any hall effect state (out of the six possible states), one low side MOSFET is fed with a 16 kHz PWM signal with a duty cycle and one high side MOSFET is turned on for the entire period. The duty cycle is derived from a potentiometer voltage read by the ADC module. Now this adc reading is triggered also at 16kHz, synchronous with the rising edge of the PWM signals. This means the PWM duty cycle for the low side MOSFETs are updated every 16kHz. This is the general flow the motor control algorithm. I hope it makes things a bit clearer.

Let me give an example of what happens. Suppose the battery voltage is Vbat = 48V and the motor is at a speed such that the back emf is Vemf = 36V and the duty cycle at d=75%. Now i suddenly apply a sharp turn on the potentiometer in the decreasing direction so that d=0%. Because the adc samples at 16kHz (very fast), there will surely be an intermediate value of duty cycle so that Vemf/(1-d) > Vbat, i.e. the motor will act as a boost converter, i.e. regeneration. Now my question is how do I prevent the motor from going into regen, despite sudden decreases in duty cycle coming from high speed motoring?
 

How are you defining "duty cycle" in this context? When you say duty cycle goes to zero, do you mean that every FET of every inverter should be turned off? Or that every leg lower leg is switched low? Or that every leg will be PWMed with 50% duty cycle?

The first case is the freewheeling case, which is what I think you want. But if you see a sudden stop in the motor, then it would seem you're actually braking it (either the second or third case above).

Also, in a real motor there will be some winding inductance, and if you switch suddenly to a freewheeling state the energy in that inductance will be commutated back to the DC bus via the FET diodes. However usually this energy is small, much less than the kinetic energy stored in the motor.
 

mtwieg, duty cycle is (on time)/period, so d=0% means every FET should be turned off. The first case is what I want, when I say that I suddenly turn the potentiometer so that d=0%. Problem is in the transition of duty cycle from non-zero(let's call this d_initial) to zero (see example in my previous post), because sampling of the pot voltage happens so fast (16kHz) relative to how fast I turn the potentiometer, the controller will surely feed the low side MOSFETs with some PWM with duty cycle 0<d<d_initial that WILL cause the motor to boost.

Here's some concrete numbers to illustrate what I mean, still using the previous example I mentioned. Suppose before applying the sharp turn in the pot, Vbat=48V, Vemf=36V and d=75%. THEN I apply the sharp turn that commands the controller to set d=0%. Because of the 16kHz sampling, the change in duty cycle will not be instant, and so along the transition, the duty cycle will have intermediate values such as 70%, 60%, 50%, 40%, ... 0%. The back emf does not change instantaneously, and so what happens is somewhere in those intermediate duty cycle values, the motor enters regen mode.

chuckey, I understand what you mean. But I do not want the motor to regen at all times.
 

I found a thread which discusses wheelchair motor braking. It may not be exactly the same problem, but it does touch on concepts which might stir ideas. Similar things such as freewheeling, back-emf, sudden throttle changes, which mosfets to have on-or-off in an idling H-bridge, etc.

https://www.edaboard.com/threads/262762/
 

If you open circuit the motor so it free wheels it will generate a very high voltage (cutting the current gives you a high Di/Dt hence a high induced voltage). So if you can get some FETs without their protection diodes, they need to have a very high voltage rating. A RC snubber would absorb you PWM, perhaps some form of varistor could take out the over voltage, limiting the over voltage to that of the Vce rating of the FET.
Frank
 

Status
Not open for further replies.

Similar threads

Cookies are required to use this site. You must accept them to continue using the site. Learn more…