this is one of my first circuit "designs" (quotes on since it's simply switches). I need current to be able to flow in both directions through a certain load, and the direction of travel should be electronicaly commanded. This is what I thought of:


simulate this circuit – Schematic created using CircuitLab

Sorry if it's too messy. This way, making pins 1/2 high (but never both at the same time) makes current flow in each direction. Is this a good way or is there a simpler one?

  • 9
    \$\begingroup\$ Workable ...but what you show is simply a form of H bridge driver ...and you can buy an almost infinite variety of those. \$\endgroup\$ Oct 20, 2017 at 16:33
  • 3
    \$\begingroup\$ 'Workable' is about right. I suspect that this type of circuit is going to be sensitive to thresholds and be a bit finnicky. If you separate out your pins - one pin per major switch - you would be closer to 'conventional' diagrams. You would also simplify your circuit a bit. \$\endgroup\$ Oct 20, 2017 at 16:49
  • \$\begingroup\$ How much current? What's the nature of the load? What are you ultimately trying to accomplish? \$\endgroup\$ Oct 22, 2017 at 2:24
  • \$\begingroup\$ About 1 amp, its a solenoid. \$\endgroup\$
    – popeye
    Oct 23, 2017 at 0:31

2 Answers 2


That looks pretty close to a classic H-Bridge style design though individual component selections may be problematic. You also need a small resistor on the gate line to the bottom MOSFETs, switching current to charge/discharge the gate will be excessive for the ARDUINO.

The circuit you show uses the rather problematic single control method which can allow shoot through currents to occur. A fuse is warrented.

Obviously turning on both sides is a big no-no, so get the software right. However, even then, the 10K pull-up on the top gates means they will be quite slow to turn off. You need to take that into account in your controlware.

If that is an inductive load, flyback will be handled by the diodes in the MOSFETS however, you may have issues sending that current back at the power supply. Especially if the Arduino is hooked up to the same supply. See this question for more info. That link also shows you why it is better to drive with four lines instead of two, see recirculation fly-back.

Ultimately though, you would be better off choosing one of the many one piece full bridge drivers out there. But then again, that's not nearly so satisfying and you miss out on a great learning experience.


As @Trevor said your top transistors are turned off very slow with this 10k resistor only.

The second problem I see is with bottom transistors drivers. Driving a power MOSFET gate directly from MCU's pin is always a bad idea. The voltage may not be enough for a good saturation, the drive current may be small and turn on/off will be too slow, drive current would cause glitches on MCU's supply and may reset it, when some transistor blows due to a load fault the MCU will be fried too.

Below is a suggestion for these drivers.


simulate this circuit – Schematic created using CircuitLab

This only half of the circuit. You will multiply it by two.

I added a fast turn off group to the high-side driver. It will ensure strong and fast gate discharge.

The driver of the low-side transistor is made of emitter follower circuit (Q4,Q5), coupled with a level shifter made with a small signal mosfet M5. Note how it is connected - gate to MCU VCC and it's source is driven by the MCU pin. This produces a non-inverting level shift of your MCU outpit pin.

Adding some gate resistors with a value of 10 ohm is always a good idea to limit driving current and minimize radiated EMI.

  • 2
    \$\begingroup\$ +1 nice design. I would add another 10R in the gate of M5 though. \$\endgroup\$
    – Trevor_G
    Oct 20, 2017 at 19:08

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.