I'm working on a rather low budget project, and need some way to control four or more motors using one Arduino. I've looked at motor shields a little, but I have a shield on top of it already, It does have female input on the top though, so a motor shield may work. Any suggestions?
You'll have to determine yourself whether a motor controller shield is compatible and can be stacked on your existing shield.
In some cases, you can use Arduino's SPI. In other cases, you'll need to check whether the pins that your shield uses would conflict with the pins needed by a motor controller.
For a good budget solution used 2 L298D Motor Controller IC chips. Each chip can control 2 motors. They implement an H-Bridge and so can drive motors in forward or reverse and incorperate diodes for current protection and so are safer than implementing a DIY H-Bridge with transistors.
They are simple to use and you could make your own motor board for a fraction of the cost of the motor shields.
I've had luck using these motor driver units. They can be speed-controlled with the PWM outputs, and motor direction can be provided with digital inputs.
Are you worried that the Arduino may not have enough pins to control 4 different motors plus the stuff on that other shield?
It is possible to control any number of motors using 4 digital pins from the Arduino.
The STMicroelectronics L6470 stepper motor driver chip is designed to be daisy-chained so 4 digital pins from the Arduino can control any number of motors. (If you know of any other motor driver that can be daisy-chained to control any number of motors using less than 10 pins from the Arduino, please comment and mention its name). I built a prototype using the Sparkfun L6470 breakout board. Apparently several people have made other open-source hardware boards for the L6470.
Is the problem that the off-the-shelf motor shields all look like they mechanically interfere with the other shield you want to use? Perhap you're seeing the "both shields want to be the top shield, so they can't stack" problem? It's pretty simple to control servo motors with simple wire connections.
Standard off-the-shelf servo motors have a 3-wire cable for servo control.
Many shields -- in addition to their "main" circuit -- throw in a "power connection" and a few servo connections.(a), (b), (c), etc. They connect the 3 servo wires connected -- the GND (G) and Power (+) wires connected to the appropriate power supply, and the Arduino GND and the power supply GND connected. Typically the signal wire (S) is connected to one of the six special Arduino PWM pins. (This method can drive a maximum of 6 motors -- or less if that other shield needs some of these pins).