Hi everyone,
I am currently designing my own H bridge and have decided to start of with a very basic circuit consisting of 4 NPN transistors (2N2222A) which I have attached a circuit of:
It seems to work OK, with control signals A and D used to turn on the "forward" direction, and B and C to turn on the backward direction (all control signals via base current limiting resistors from the Arduino digital out pins).
Testing the motor independently, it speeds up when the voltage across its terminals is increased from 5V to 12V.
However, with my H brdige, the motor does not speed up when VCC is increased from 5V to 12V. It stays the same speed!
What is wrong with this circuit, and does any one have any tips for H bridge design?
Do I need PNP high side transistors? Will this solve the problem?
PNPs to source current from 12V will certainly help.
Use pullup resistor from base to 12V to turn them off, and NPN driven by Arduino to pull the base low to turn them on.
P-channel and logic-level N-channel MOSFETs will help also. Find parts with low Rds to minimize power dissipated in the MOSFETs so more power is available for the motor.
P-channel will need same NPN buffer to pull the gate low to turn it on, and pullup to 12v to turn it off.
You need to switch with a common-emitter or common-source configuration. Your low-side
switches are common emitter but your high side switches are emitter-follower, which is
a recipe for burnt out devices and general fail when switching power. Thus PNP for
high side switches.
If you have a high-side switch running from other than 5V you need to level-shift your
logic signal to be able to drive it.
A circuit I've used before for small current H-bridge: