I have designed this H-Bridge Circuit using two NPN transistors and two PNP transistors. My plan is to use an Arduino to control the base current in all of the transistors. My supply voltage is 12V, and that is where the problem arises.

With 12V at the emitter of a PNP transistor, the 3.3V from the Arduino is simply not enough to prevent the PNP from conducting when the arduino GPIO goes high (3.3V). What is the solution to this problem? Am I supposed to use another set of transistors to connect the base pin of the PNP transistor either to 12V or to GND?

I have attached a simulation of my circuit, and here is a screenshot as well:

Falstad Link

enter image description here


1 Answer 1


Yes, you need an additional set of transistors.

Basically, for each PNP, connect a R (2 k ?) from base to emitter. Then connect an NPN: collector -> PNP base; base -> GPIO, and emitter to GND via 2 kΩ. This NPN will then turn on the PNP.

You can't use the same GPIO for the upper PNPs and lower NPNs -- as you toggle the H-bridge, small delays will cause brief intervals where both devices are fully on and the large shoot-through current will damage them. Use a small non-overlap (basically break-before-make) for all switches.

  • \$\begingroup\$ but I can use the same GPIO for the left transistors and the right transistors, right? \$\endgroup\$ Jan 11, 2022 at 1:23
  • \$\begingroup\$ If you add more transistors to invert logic, sure. Your best bet is to buy a dedicated H-bridge IC though. Unless this is a homework problem, then you're doing way more work than you have to. \$\endgroup\$
    – Kyle B
    Jan 11, 2022 at 2:04

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.