8
$\begingroup$

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?

$\endgroup$
1
  • $\begingroup$ What sort of motors do you want to drive? stepper? brushed DC? brushless DC? The control strategy will be very different depending on which you are using. $\endgroup$
    – Mark Booth
    Commented Jan 30, 2013 at 1:24

5 Answers 5

7
$\begingroup$

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.

$\endgroup$
2
$\begingroup$

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.

$\endgroup$
1
$\begingroup$

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.

$\endgroup$
1
$\begingroup$

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.

$\endgroup$
2
  • $\begingroup$ How do you select the chip to target in a daisy chain? I see a "chip select" pin on some boards, which seems to imply 1 selector pin per motor. I suspect this is not the case, though. $\endgroup$
    – crishoj
    Commented Apr 11, 2016 at 16:31
  • $\begingroup$ @crishoj: Would it answer your question (and improve this answer) if I added a link to "Albert's ice cream parlor" and "Getting Started with the AutoDriver"? $\endgroup$
    – David Cary
    Commented Apr 11, 2016 at 17:55
1
$\begingroup$

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).

If you make the same connections between the Arduino and the servo with simple wire connections, it works just as well. (a), (b), (c), etc.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.