I made a brushed dc motor driver. The motor speed is controlled with PWM (from an Arduino). The motor that I'm using draws 3 amps without load.

This is the schematic: enter image description here As you can see there are two N channel mosfet in a parallel configuration.

The first problem that I had was that when I tested the PCB for the first time R2 burned and Q2 was damaged (all three pin where internally connected). I though that Q2 was defective so I change it and the PCB worked perfectly. Then I tested the same circuit, different PCB, and happened the exact same thing, R3 burned and Q2 damaged, that can't be coincidence. Right?

Then I ran the motor at max speed for around 2 minutes, and the circuit worked fine, no overheating at all.

When I test the circuit with load (in a rc tank) the Heatsink heat a little bit (as expected), but then one of the drivers failed and the motor keep spinning. A mosfet failed.

Any suggestion on how to make the circuit work reliably, without the mosfet failing?

  • 2
    \$\begingroup\$ You need a diode across the motor. The back EMF when you turn the motor OFF is killing the FETs. C2 is providing some attenuation of the spike, but clearly not enough. \$\endgroup\$ – Jack Creasey Jul 11 at 0:18
  • 1
    \$\begingroup\$ What PWM frequency are you using? \$\endgroup\$ – cmm Jul 11 at 23:32
  • \$\begingroup\$ 31.25 kHz, @cmm \$\endgroup\$ – Lewis Mojica Jul 12 at 15:32

One huge issue I'm seeing is a lack of any flyback diode for the motor. You need to add a high current diode from the mosfet drains to battery positive. This will give that energy somewhere to go. You'll want to connect the diode physically close to the mosfets (the motor wires will produce their own small inductive kick). This is probably the reason your mosfets are dying.

You'll want to read up on how to pick this diode, but the key parameters are current (a good rule of thumb is to handle as much as your motor draws), and reverse recovery time (I'd go with a schottkey).

A second problem is that you're driving the mosfets at only 5v Vgs (slightly less actually due to the resistors). Looking at the current/Vgs curve in the datasheet. The Rds will be approximately 0.25 ohms. In parallel that will be 0.125, so at 10A you're looking at 12.5W of dissipation. That's quite a bit.

The third problem is that you're driving the mosfets from the arduino directly. Since the arduino can only supply 20ma or so to the gate, the switching times will be slow. This means more power dissipation, especially as the frequency increases.

You can solve problems 2 and 3, by using a gate driver IC. This will drastically improve the power handling of your motor driver circuit.

  • \$\begingroup\$ Thank you so much, that info is so useful. The datasheet says that Rds is 0.028 ohms. vishay.com/docs/91291/91291.pdf \$\endgroup\$ – Lewis Mojica Jul 12 at 15:19
  • \$\begingroup\$ I'm going to implement a gate driver and a flyback (schottky) diode in the circuit. I'll come back in a few days to show how it goes. \$\endgroup\$ – Lewis Mojica Jul 12 at 15:26
  • \$\begingroup\$ You will only see that Rds at the Vgs specified in the datasheet, which iirc is 10v. \$\endgroup\$ – Drew Jul 15 at 1:36

Freewheel diode is needed as Drew has stated +1 .Also check C2 ,if it is too large the charging currents will stress out the mosfets .Also check the stall current of the motor .The lithium battery can supply large currents .What if the current was 30 Amp? This 30 Amp will be drawn when the motor starts .Can your mosfets on the little heatsink handle this ?


The hexfets you are using look like they have Zener diodes inside the package, but there is no reverse voltage spec. Voltage pulses may be killing the fets.

When I looked at the schematic I expected a reversable driver as some kind of half-bridge, but I see it is one way only.

I wonder if current spikes in the ground side of the fets may cause an over-voltage condition on the insulated gates.

Since the driven current is one-way, the fly back voltage will also be one way. When the fets turn off, current will continue to flow into the fets.

The diodes in the fet package are not zeners. They will not conduct current at any reverse voltage. Diodes to the M+ rail are needed. Also, keep the grould lines short back to the bypass caps on M-/M+. That leakage inductance could fry the gate, and even if not, the voltage bump will work against your $V_{gs}$ and increase the turn on time, further heating the fets.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.