High Side Driver Curcuit

The circuit above is used to drive a 48 Volt 1000 Watt motor "MY1020" using high side driver configuration. 48 Volts are achieved using 4 sealed lead acid batteries in series and the 12V battery is from one of the 4 batteries.

The data sheets for the used components are:

Power MOSFET: IRF3205


High and Low Side Driver: IR2110


Pin 10 (HIN) in the IR2110 is connected to Arduino's PWM pin 9. Pin 9 produces a PWM signal with frequency set to: 22 kHz and a code is written to test the circuit. The code begins with duty cycle=30%, equivalent to 4 Volts which is the threshold of the MOSFET, and gradually increases the duty cycle=90%, equivalent to 10.8 Volts.

The code:

/* The code changes the PWM frequency of the Arduino
* and increases the gate voltage of the transistor
* from 4 Volts(30% Duty cycle) to 10.8 volts (90% Duty cycle)
* with a step of 0.5 Volts every 2 seconds. The process is repeated.

#include <PWM.h>

int32_t freq= 22000; //PWM frequency = 22KHz
int x=85; // Initial Duty Cycle=30% at x=85

void setup() {
SetPinFrequencySafe(9, freq);


void loop() {
while(x<230)  // Duty cycle =90% at x=230
analogWrite(9,x); // pin 9 is connected to pin : HIN
delay(2000); // delay for 2 seconds
x+=10; // step by 0.5 Volts

x=85; // x is reset to 85 to repeat the process again


I tried the circuit with this code and here is the problem. The motor begins at a low speed as expected and its speed increases gradually. The motor should witness 14 increments in speed, since (230-85)/10 =14.5 =~ 14 steps. In about the 4th step, the speed increased immediately to its maximum like if one shorted the motor to a battery. I ran a continuity test on the IRF3205 using the multi-meter and found that the Drain and Source terminals shorted out.

I tested the same circuit earlier on a small 12v motor and it ran perfectly fine on different duty cycle ranges and PWM frequencies.

What could possibly be the problem? The MOSFET's Vds rating is 55 Volts and the batteries are 48 Volts. Can this be too much for the MOSFET assuming low quality components are sold where I live? Is there a problem in the driver? Are the increments in gate voltage per Arduino's execution time dV/dT too high?

For the sake of a real life picture; here is the test bench:

Test Bench

  • 2
    \$\begingroup\$ When the MOSFET turns off, where does the voltage spike from the motor's inductance go? \$\endgroup\$
    – user16324
    Commented Jan 13, 2017 at 17:28
  • 2
    \$\begingroup\$ Put your scope across the mosfet and set the trigger for 1 or 2 v above the +48V and watch for overvoltage conditions. \$\endgroup\$
    – Voltage Spike
    Commented Jan 13, 2017 at 17:36
  • 1
    \$\begingroup\$ Wiring layout does not need to look like the logic diagram but it does need a controlled impedance. Long wires are very inductive. Twisted pairs distribute L,C and R so that for fast impulses looks more like a fixed impedance like 120 Ohm transmission line. Examine every path of high current pulses and avoid single long wire leads. Add a reverse power diode across the motor with unipolar driving. Bipolar driving shunts the off voltage with a steady low RdsOn rather than a decaying diode current to improve accelerating and braking power losses from Back EMF. \$\endgroup\$ Commented Jan 13, 2017 at 19:23
  • 1
    \$\begingroup\$ There is a certain amount of theory you need to learn to comprehend these. One thing is your motor current will be limited on accelerating by the DCR value and peak voltage applied, which tends to be 8~10x the rated motor cuirrent at full load. So learn this and use the appropriate RdsOn/DCR ratio <5% pref <1% and stay away from SOA damage curve \$\endgroup\$ Commented Jan 13, 2017 at 19:26
  • 1
    \$\begingroup\$ 1000W/48V^2=R= 434 mOhm thus DCR is probably around 45 mOhm so your RdsOn is around 8mΩ or ~17% of load which implies I^2R percentage of losses when power is up to 10x rated 1000W load during maximum rate of change in speed. or 48V/0.5Ω ~ 100Ap and I^2RdsOn = ?? for x us , check SOA \$\endgroup\$ Commented Jan 13, 2017 at 19:43

1 Answer 1


55V is a dangerously low Vds rating with a 48V supply.
If possible choose Vdsmax at double Vsupply and at least try for 25% + and more is better. Probably NOT main problem, but marginal.

Lack of anti spike diode would be easily enough to cause FET death if needed for inductive spike absorption purposes alone.

BUT in this application it has another more major role. When driving a DC motor the motor current must have a means of circulating when the FET switch is turned off.

In more usual cases, when used for spike suppression the Diode can be rated below Iload as the diode conducts current only for a small % of cycle. Look at diode data sheet for derating with non-100% duty cycle.

While it would be "pushing your luck" it is possible that

The FET is a good one BUT note that at 20A + data sheet Fig1 show that when FET is cold Vds = say 0.15A = 3W dissipation at 20A,
but when hot (175C junction) Vds ~= close to 0.3V and these are TYPICAL and not worst case curves, AND note graphs are for 20 uS pulses. In real world situations Rdson is sometimes 2 x Rdson at 25C amd usually 10-20% more.
So say 0.4V Vds x 20 A = 8W.

Your test heatsink appears to be in 10-20 C/W range so FET temperature may rise by say 8W x 10-20 = 80-160 C over ambient.
Did it get hot in practice?

Rthjc is 0.75 C/W so that's not a problem if well heatsunk.

Your comment on driving the FET seems to reflect a misunderstanding of how the circuit will work. You say:

"The code begins with duty cycle=30%, equivalent to 4 Volts which is the threshold of the MOSFET, and gradually increases the duty cycle=90%, equivalent to 10.8 Volts."

If you were referring to what the MOTOR "sees" this is about correct BUT the phrase "which is the threshold of the MOSFET" suggests that you are thinking of Vgate being an analog level. It's not. If it was then the FET would not be fully enhanced at low PWM % duty cycles, and Rdson would be high and dissipation would be enormous 0 for a small period.

This is NOT what happens.

Every PWM +ve output pulse applies full gate drive to the MOSFET - here nominally 12V but probably in the 19-12 V range. The FET turns fully on at any PWM duty cycle % where Ton is >> FET turn on time.
The motor "sees" an average voltage of about V+_motor x PWM% but the FET gate always sees Vdrive max or 0.

This would be more true for the gate voltage if there was a gs capacitor and the PWM was smoothed to DC. The FET would then operate in linear mode and experience very high dissipation at low PWM% as Vgsdc is low and Rdson is high and ...!


  • \$\begingroup\$ The FET body won't conduct because the inductive back-emf at switch-off is negative (below ground). This increases Vds and charges the boost capacitors to a higher voltage. After a few cycles the boost voltage will become large enough to blow up the FET (if the driver doesn't blow up first!). \$\endgroup\$ Commented Feb 24, 2017 at 6:33
  • \$\begingroup\$ @BruceAbbott Yes - you are, of course, correct. I mentally extended the case for a motor current recirculating diode without thinking. Never a good idea not to think :-). \$\endgroup\$
    – Russell McMahon
    Commented Feb 24, 2017 at 13:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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