Electronic – High Voltage PWM Motor Controller – Mosfets Explode

dc motorhigh-currenthigh-powermosfetpwm

I've searched every post for an answer to this problem. I've built a motor controller circuit as shown in this diagram.Circuit Link
I made the diagram as accurate as possible. The diodes on the mosfets were added so that the mosfet symbol would look just like the symbol in the data sheet.
As you can see, it is a very simple PWM circuit using an Arduino UNO board. A potentiometer foot pedal is attached to one of the analog inputs and that is used to determine the duty cycle of the pwm output on digital output pin 6.

The motor is the smallest 48v motor of this type that motenergy makes, but this is a very big motor compared to other circuits I've seen like this. It can easily pull about 200 Amps on start up.

The circuit sort of works – when the vehicle is lifted so the wheels don't touch the ground. In that state, it is very easy for the motor to spin and it doesn't draw as much current. When the wheels are on the ground, the mosfets explode the moment you start to push on the pedal. I've built this circuit about 4 times now. I even used 18 mosfets in parallel in one version, and all 18 exploded instantly. (200/18 = about 7 Amps/mosfet) Each mosfet should handle 32 Amps.

We finally just bought a motor controller from alltrax, and the vehicle works fine, but I am determined to find out why my own motor controller did not work. I love electronics, and have built many difficult circuits over the years. I will not be able to sleep well till I find out what I'm doing wrong.

I talked to a technician from Alltrax, and he said their controllers are nothing but a bunch of mosfets and capacitors. He said the capacitors kept the mosfets from exploding, but he had no idea how they are wired into the circuit. I think he has a piece of my missing information.

So, can anyone tell me what I'm doing wrong? How should I add capacitors to fix this? Could it be the frequency? We modified the timer on the Arduino so our PWM frequency was around 8000 Hertz, but the Alltrax controller works at a mind-blowing 18,000 Hertz. I know 18k is small as motor controllers go, but I thought a giant motor would like a smaller frequency.

Also, before you say the mosfets can't be wired in parallel because of slight differences between them, I used exactly 7 inches of 18 gauge wire to connect each one in parallel. The small wire would act as a tiny resistor and ensure that each one shared the current load.

Thanks a bunch for your replies.

Best Answer

Here's the datasheet that should be linked from your question. I shouldn't have to look for it.

Each mosfet should handle 32 Amps

That's with \$V_{GS}=10\$V


You set \$V_{GS}\$ to \$5V×\frac{R_2}{R_1+R_2}=4.54V\$, you really want as much voltage here as you can (5V seems to be your maximum). If I were you I would change \$R_1\$ to 10~50Ω and \$R_2\$ to 100k~1MΩ. Because if you're not opening the MOSFET completely, then it will have too much resistance and.... explode.

With \$V_{GS}=10V\$, the \$R_{DS(on)}\$ is maximum 35mΩ

\$P=I^2×R=(32A)^2×0.035Ω=35.84W\$, this means that ~36W is the expected power dissipation when \$V_{GS}=10V\$

With \$V_{GS}=5V\$, the \$R_{DS(on)}\$ is maximum 45mΩ according to the datasheet.

\$35.84W=I^2×0.045Ω\$, and if we move the I around we get: \$I=\sqrt{\frac{35.84}{0.045}}=28.2A\$, so you can expect to safely let 28A through the MOSFET IF you fix the resistor values. You should definitely get a heat sink for the MOSFETS. Maybe even active cooling with a fan.

We modified the timer on the Arduino so our PWM frequency was around 8000 Hertz

You don't need that high, 800Hz would be acceptable, that's what common BLDC drivers (ESC) switch at. (If I'm not mistaken).


What you're trying to do is charging up a gate with a resistor in series, it looks just like the image below and we can use that model for further equations.

The capacitance of the gate(\$C_{iss}\$) has a max value of \$1040pF\$

The resistors and the MOSFET are forming this circuit:

RC circuit

\$C=C_{iss}×3=3120pF\$ because you got 3 in parallel.

\$R=R_1||R_2=909Ω\$

\$Vs=4.54V\$

The voltage over the capacitor follows this equation: $$V_c=V_e×(1-e^{\frac{-t}{RC}})$$ where \$V_c\$ is the voltage across the capacitor and \$V_e\$ is what you're feeding it with, in our case it's \$Vs=4.54V\$.

You're sending PWM's and I'll make an absolute worst case scenario for you, It's when you're trying to do analogWrite(1), that's a duty cycle of \$\frac{1}{256}\$. So the time your signal starts going high till it ends with that duty cycle and 8kHz is \$\frac{1}{256}×\frac{1}{8000}=\$ 488.3 nanoseconds.

Let's plug the numbers into the equation above to see what the voltage will be at the gate. $$V_c=4.54V×(1-e^{\frac{-488.3×10^-9}{(909)×(3120×10^-12)}})=0.71V$$

The MOSFET starts opening at 1V minimum, and 2.5V maxmimum. So in this worst case scenario you can't even open the gate. So it's been closed the entire time.


Another thing that I really need to point out that is the most likely reason for why your MOSFETS are breaking is because when you switch you do it so slowly because of the gigantic resistors and with so many gate capacitances. That means that when the MOSFET's are just about to switch they pass a lot of current through while having a lot of voltage over them. And \$P=I×V\$ => really really really much heat.

See this image:

switching losses

As you can understand, you don't want to be where the blue line and red line cross. And the width of that transition is the same regardless of switching frequency, so the more often you switch, the more time is spent in that painful transition. It's called switching losses. And it scales linearly with switching frequency. And your high resistors, high capacitance, high frequency switching, most likely makes you stay in that transition phase all the time. And that equals explosions or breaking MOSFETS.


I don't really have the time to do more calculations, but I believe you get the gist of it. Here's a link to a schematic if you want to play around. Which you should!.


My final advice to you is to get a MOSFET driver so you can pump several AMPS into the gate, right now you're pumping milliamps.


Btw Doctor Circuit, regarding your last paragraph, that's only a problem with BJT transistors, they deliver more current the warmer they are, MOSFET's however deliver less current the warmer they are, so they don't need any special kind of balancing, they will balance automatically.


CONTINUATION, Rise time and Fall time.

I was pretty mean in the example above, 8kHz switching and 1/256 duty cycle. I'll be more kind and look at 50% duty cycle = 128/256. I want to know and tell you how much of the time you're in your painful transition.

So we got the following parameters relevant to the painful transition:

\$t_{d(on)}\$ = Turn-On Delay Time
\$t_r\$ = Turn-On Rise Time
\$t_{d(off)}\$ = Turn-Off Delay Time
\$t_f\$ = Turn-Off Fall Time

I'll make some nasty approximations, I'll assume that miller-plateau doesn't exist, I'll assume that the voltage across the MOSFET decreases linearly when switching on and increases linearly when switching off. I'll assume that the current flowing through the MOSFET increases linearly when switching on and decreases linearly when switching off. I'll assume that your motor draws 200A during steady state of a duty cycle of 50% with some load, say your body. So 200A while you're on it and accelerating. (The more torque your motor puts out, proportionally the more current will be drawn).

Now to the numbers. From the datasheet we know the following max values:

\$t_{d(on)}\$ = 40ns
\$t_r\$ = 430ns
\$t_{d(off)}\$ = 130ns
\$t_f\$ = 230ns

So okay, first I want to know how much of a 8kHz period the above transition takes. The transition happens once every period. The delays doesn't really affect the transition (unless we're switching at really really high frequencies, like 1MHz).

time in transition with 50% duty cycle and fs at 8kHz = \$\frac{t_r+t_f}{\frac{1}{8000}} = 0.00528 = 0.528\%\$ I thought I would see a much larger value, this is ignoring the miller-plateau and parasitic stuff, and ignoring the slow gate charging. Also this is ignoring the fact that rise time and fall time is actually from 10% to 90% of the signal, not 0% to 100% which I'm assuming in my calculations. So I'd multiply the 0.528 by 2 to make my approximation more close to reality. So 1%.

Now we know how often we're spending time in that painful transition. Let's see how painful it really is.

\$P = \frac{1}{T}\intop_0^T P(t)dt\$

\$V_r(t)=48V(1-\frac{t}{430ns})\$
\$I_r(t)=\frac{200A}{430ns}t\$

\$V_f(t)=\frac{48V}{230ns}t\$
\$I_f(t)=200A(1-\frac{t}{230ns})\$

\$P = P_r+P_f\$
\$P_r = \frac{1}{t_r}\intop_0^{t_r} V_r(t)×I_r(t) dt\$
\$P_f = \frac{1}{t_f}\intop_0^{t_f} V_f(t)×I_f(t) dt\$

\$P_r = 1600W\$ LOL!
\$P_f = 1600W\$ Same answer, weird
\$P = P_r + P_f = 3200W\$

Now let's go back to how often you spent in this 3200W transition. It was about 1% when reality kicks in. (and I thought it would be much more often).

\$P_{avg}=3200W×1\%=32W\$ Hmm, again I thought I would see something much... bigger.


And... let's calculate the other 99% of the time! Which I totally forgot about. Here's the major explosion! I knew there was something I forgot.

\$P=I^2×R=(200A)^2×(0.045Ω)=1800W\$ And you spend 49.5% of the time in this conducting mode. So your total \$P_{50\%@8kHz}=32W+1800W×49.5\%=923W\$

With 3 MOSFET's in parallel it's \$32W+\frac{1800W×49.5\%}{3}=329W\$ per MOSFET. That's still... EX-PU-LOSIVE!

There we go. There's the bomb you're looking for. EX-PU-LOSION

This is my last edit.