A couple of things:
Unless you want the motor to have dynamic braking, you don't need the "bottom" transistor.
You could reduce your dissiplation (heat generation) somewhat by putting the PNP transistor in the "top" position, and connecting the emitter directly to the +5V source, and the collector to the motor. If you build the circuit this way, you should also connect a 1K (or so) from the base to the emitter to guarantee that the transistor completely shuts off. Pulling the base LOW will turn the motor on. Make certain that you leave the 1K resistor (that you already show in your schematic) in place.
The darlington transistors you use will certainly dissipate more heat than FETs in this application because the transistors will have a saturation voltage of at least 1V. If the motor draws 2A, then you will dissipate 2A X 1V = 2W.
The motor will also get a maximum of 4V (or so) in this circuit as well.
FETs will improve the circuit. Choose "logic level" FETS with a low ON resistance. If you use an N-channel FET (recommended), put it in series with the GROUND side of the motor. You won't need a resistor between the PIC output pin and the FET gate, although a 1-10K resistor between the gate and 5V will improve the circuit because it will insure a full 5V on the gate when the PIC pin is high. The ON resistance of the FET can be as low as 20 milli-ohms. That means that if your motor draws 2A, then the voltage drop across the FET will be 40mV and the dissipation will be .040 * 2 = 80mW. It will barely get warm - even without a heatsink.
Regardless of the transistors used, you should always put a diode across the motor in the "reverse" direction. This is just good practice and prevents turn-off transients from destroying the transistors.
And as to whether or not your chip supports PWM - any PIC can do PWM in software. You could have looked in the manual and found if supports hardware PWM in less time than it took you to make your post.
Bookmarks