H bridge design

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?

Thanks for any advice!

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:

The cross-connected approach means only two control signals are needed, and R5 and R6
are adjusted to match the voltage and current requirements.

Note you need freewheel diodes in an H-bridge constructed from bipolar transistors or
risk burning them out.

The schematic is laid out a bit oddly due to the use of a full-bridge rectifier for the
freewheel diodes - this was an all surface mount design.