I am trying to get working my first Mosfet H bridge. My H bridge characteristics are:

  • 12v power supply
  • 3.5A max current
  • I need to control the bridge from a microcontroller 5V output
  • About 30KHz PWM

I am driving it from a 4N35 opto-isolator which is controlled by a 5V signal from a microcontroller with a frequency of about 25-30KHz.

enter image description here

As you can see on the left, I use the opto-isolator to drive two BJTs in push-pull configuration that controls H bridge's left side. The problem I can't get a clean signal from the opto-isolator even when my input is a perfect square wave. Also, it never reaches 0V and I think this will heat up the Mosfte am I right?

I have read here about Mosfet H bridges and designed it according to what I read. Am I missing something else?

enter image description here

  • 1
    \$\begingroup\$ why are you opto-isolating this control circuit? It all seems pretty safe to me, just make sure there is series resistors and clamp diodes on the control signal lines, or use a simple op-amp voltage buffer to isolate your microcontroller from possible feedback spikes generated by switching/reversing direction of your motors. \$\endgroup\$
    – KyranF
    Apr 18, 2014 at 2:22

2 Answers 2


It's not getting to zero because the Current Transfer Ratio of your optoisolator is not high enough. You need to have about 3-5x better to be safe. The lowest grade of 4N35 has a CTR of 40%, meaning you might be able to drive a 4-5K pullup safely. So your pullup is too low.

The reason your rise time is so sluggish is that the pullup is too high for clean square waves at 30kHz. Here (from a datasheet) is the rise time vs. load resistance:

enter image description here

Phototransistors are just not very good for this sort of application. Fortunately, there's a very similar (in ease of application) part that should work for you- the "Logic Output" optocoupler with Schmitt trigger action, for example the H11L1M.

enter image description here

This part is okay with a 12V supply (operating range to 15V), and will sink 16mA with less than 400mV drop, so your 12mA from the 1K pullup will be fine. Turn on and off times are 4usec maximum (1.0/1.2 usec typical) and the rise and fall times are 100nsec typical.

  • \$\begingroup\$ Hooo I see. Never found timing charts in the datasheet I was looking at. Thank you! Anything else I should consider in the Mosfet Bridge? \$\endgroup\$
    – Andres
    Apr 18, 2014 at 2:36
  • \$\begingroup\$ @Andres Nothing stands out. \$\endgroup\$ Apr 18, 2014 at 2:39
  • \$\begingroup\$ FWIW, this behaves similarly to a 4N25, which is 70% typical CTR (20% min). \$\endgroup\$ Apr 18, 2014 at 5:24

In part, I have to disagree with Spehro. He is dead on about the response time of the 4N35.

I think he's wrong about the CTR. The data sheet says 100% CTR at your current levels, and this should give an adequate margin. But it's easy to check - look at the actual 4N35 levels rather than your current buffer output. I suspect that you'll find the voltage does go to zero.

I think your problem is the topology of your current buffer (Q5/Q6). This doesn't behave well near its limits. this configuration is usually used for boosting linear currents, such as +/- 10v with +/- 15 volt power supplies. At zero base drive Q5 will be turned off, but for low output levels there is no base current being pulled from Q6, either. You wouldn't expect to pull down to more than about .7 volts. For what you're trying to do, if you must use this topology, you should be driving the Q5/Q6 and Q7/Q8 bases to Vcc + .7v and Gnd - .7v in order to turn on the appropriate transistors. At any rate, check the buffer input levels rather than the outputs. In this case, you may not be in real trouble, since a ZN44 won't turn on hard with only 2 volts Vgs.

And I don't know how you're connecting them, but you're showing separate input and output grounds (GND and 0V), but you're referencing XSC1 to the input ground while measuring an output voltage - and if they're not properly tied together they may be drifting, giving you an apparent offset.

Finally, your H-bridge gates are connected wrong. You want do drive Q1/Q4 together, not Q3/Q4, and Q2/Q3, not Q1/Q2.

  • \$\begingroup\$ There's at least one 4N35 that has 40% CTR digikey.com/product-detail/en/4N35%28SHORT,F%29/4N35SHORTF-ND/… and 40% is the limit over temperature for the standard 4N35. I dunno what the model uses. \$\endgroup\$ Apr 18, 2014 at 3:51
  • \$\begingroup\$ Yes with push-pull I can't go below 0.7V. I am using it only to provide more current to Mosfet gates for switching, will a simple resistor be enough? The gates are connected correctly because they are P and N channel, when one turns on the other turns off. \$\endgroup\$
    – Andres
    Apr 18, 2014 at 4:51
  • \$\begingroup\$ Spehro - Yes, that's possible, although since this is Spice, not wireworld, I'd guess probably not. At any rate, actually putting the probe on the 4N35 would remove all doubt. \$\endgroup\$ Apr 18, 2014 at 15:11
  • \$\begingroup\$ Andres - Oops, sorry about the gates. My bad. Although you don't want to do what you're doing, any ways. Consider what will happen when the booster output is at 6 volts: both MOSFETs will be turned on quite hard, giving you a major current spike (this is what's referred to as "shoot-through"). At any rate, you need to change it. As for your driver circuit, you do need a current booster, and a resistor won't cut it. It's just that what you've got won't do the job, either, if you want to guarantee 0 volts drive to your MOSFETs, which was one of your original complaints. \$\endgroup\$ Apr 18, 2014 at 15:21

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.