Motor bidirectional Drive - Using a H bridge
DC motor forward/reverse control
This is for those willing to experiment.
Note: "Will need to update the program in the PIC controller to make full use of this modification"
For L293D chip solution see below (L293 gives voltage controllably of speed of each motor in both directions)
This external link is a good example for Robot builders
"Control your motors with L293D and Arduino"
Half H-bridge
This design gives each motor bi-directional on/off control
Note: If you wish to fully control the speed you will need to change the program in the chip for pulse code modulation (easy if you can program)
The output from the PIC pin connects to "OUT" while the "MOTOR" is connected to one of the connectors on the DC Motor.
The TIP122 contains both of transistors required to make the "Darlington pair", you will need six TIP122 plus the transistors you already have (the TIP122 are better)
This circuits is often referred to as half-H-bridge as two copies of this circuit are required to build a complete H-bridge driver,
One DC Motor with 2 drives
Each Connection to the DC Motor to have its own "Half H-Bridge"
Two PIC outputs pins are required to drive the complete H-bridge so as to reverse the rotation direction of the motor that needs to be connected to the two MOTOR outputs of each half.
L293 solution
The L293 Chip is very good, if you have understood the principles and you don't mind spending a bit more. Maplin sell them for around £3
L293D QUADRUPLE HALF-H DRIVERS by Texas Instruments
Be aware you need a 5 volt supply. (you can use the 5 Volts for both the motor battery and the chip. (do NOT exceed 7 Volts on the +5V input)
You can read the FULL PDF data sheet here
TB6612FNG
A good alternative is the TB6612FNG H-Bridge Motor Controller
It is an MOSFET-based H-Bridge Motor Controller that has many advantages over the popular L298N. normally requires no heatsink and can run low volge motors down to 2.5 Volts.
TB6612FNG H-Bridge Motor Controller