PWM and voltage for motors

Chris,

Not exactly sure how your circuit works or the motor specs. Typically PWM-ing a DC motor (assuming that's what you're using) works well for adjusting motor speed. Yes, the Arduino board will only supply enough power to drive really small motors without much load. And the board will only output 5V, or 3.3V with even much less current.

Without knowing what you're trying to do, I'd suggest looking into using a Darlington Array (ULN2003). They're cheap, easy to use, and can supply half an amp with a large supply voltage (up to 50V). There should be many circuit examples on the web. BTW, your strategy of using an NPN is beginning to look like a Darlington circuit.

Look at Arduino Forum. for an example of how to wire a stepper motor. Note that you'll only be using 1 circuit of the 2003 to drive your motor. The unipolar stepper requires 4 - it's essentially 4 DC motors. The key is that the motor power doesn't come from the Arduino board. Rather the board is just switching the power on and off (PWM).

Good luck.