How many motors can I use with this shield?
You can use 2 DC hobby servos that run on 5V and up to 4 DC motors or 2 stepper motors (or 1 stepper and up to 2 DC motors) that run on 5-12VDC
Can I connect more motors?
Yes, by stacking shields! Every shield you stack on will add 4 DC motors or 2 stepper motors (or 1 more stepper and 2 more DC motors).
You will not gain more servo connections as the servo contacts go to pin #9 and #10 on the Arduino.
What if I also need some more servos?
Check out our lovely servo shield, also stackable with this motor shield and adds 16 free-running servos per shield

What Arduinos is this shield compatible with?
It is tested to work with Duemilanove, Diecimila, Uno (all revisions), Leonardo and Mega/ADK R3 and higher.

It can work with Mega R2 and lower if you solder a jumper wire from the shield's SDA pin to Digital 20 and the SCL pin to Digital 21

For use with the Due or other 3.3v processors, you must configure the board for 3.3v logic levels. Find the set of 3 pads labeled "Logic". Cut the small trace between the center pad and 5v and add a jumper from 3.3v to the center.
As of Arduino 1.5.6-r2 BETA, there is a bug in the Due Wire library that prevents multiple Motor Shields from working properly!
I get the following error trying to run the example code: "error: Adafruit_MotorShield.h: No such file or directory...."
Make sure you have installed the Adafruit_MotorShield library
How do I install the library?
What stepper motors can I used with the shield?

The TB6612B driver chip are simple H-bridge drivers with a 1.2A continuous current limit.  There is no active current limiting, so you need to choose a stepper motor that will not try to pull more than that.  For a detailed explanation, see this guide

A simple rule of thumb is to use a motor with a phase resistance of 10 ohms or more.  This will be safe to use with supply voltages up to 12v.

The NEMA 17 motor we have in the shop has a phase resistance of about 35 ohms, so it is a good match for the shield.

Can I use this NEMA-17 motor?

NEMA-17 is just a motor frame-size designation.  It tells us that the motor body is 1.7" square.  It tells us nothing about the electrical characteristics.  You will need to know at least the motor's phase resistance in order to determine compatibility.

See this guide for details:  Matching the Driver to the Stepper

HELP! My motor doesnt work! - HELP! My motor doesnt work!...But the servos work FINE!
Is the power LED lit? The Stepper and DC motor connections will not work if the onboard green Power LED is not lit brightly!

You must connect 5-12VDC power to the shield through the POWER terminal blocks or through the DC barrel jack on the Arduino and VIN jumper.

What is the green Power LED for?
The LED indicates the DC/Stepper motor power supply is working. If it is not lit brightly, then the DC/Stepper motors will not run. The servo ports are 5V powered and does not use the DC motor supply
What pins are/are not used on the motor shield?

GND and either 5v (default) or 3.3v are required to power the logic on-board. (5v or 3v operation is selectable via jumper)

The shield uses the SDA and SCL i2c pins to control DC and stepper motors. On the Arduino UNO these are also known as A4 and A5. On the Mega these are also known as Digital 20 and 21. On the Leonardo these are also known as digital 2 and 3. Do not use those pins on those Arduinos with this shield with anything other than an i2c sensor/driver.

Since the shield uses I2C to communicate, you can connect any other i2c sensor or driver to the SDA/SCL pins as long as they do not use address 0x60 (the default address of the shield) or 0x70 (the 'all call' address that this chip uses for group-control)

If you want to use the servo connections, they are on pins #9 and #10. If you do not use the connector then those pins are simply not used.

You can use any other pins for any other use

Note that pins A4 and A5 are connected to SDA and SCL for compatibility with classic Arduinos. These pins are not available for use on other processors.
How can I connect to the unused pins?
All pins are broken out into 0.1" spaced header along the edges of the shield
My Arduino freaks out when the motors are running! Is the shield broken?
Motors take a lot of power, and can cause 'brownouts' that reset the Arduino. For that reason the shield is designed for seperate (split) supplies - one for the electronics and one for the motor. Doing this will prevent brownouts. Please read the user manual for information about appropriate power supplies.
I'm trying to build this robot and it doesn't seem to run on a 9V battery....
You cannot power motors from a 9V battery. You must use AA batteries or a lead acid battery for motors.
Can this shield control small 3V motors?
Not really, its meant for larger, 5V+ motors. It does not work for 3V motors unless you overdrive them at 5V and then they will burn out faster
I have good solid power supplies, but the DC motors seem to 'cut out' or 'skip'.
Try soldering a ceramic or disc 0.1uF capacitor between the motor tabs (on the motor itself!) this will reduce noise that could be feeding back into the circuit (thanks macegr!)
When the motors start running nothing else works.

Many small DC motor have a lot of "brush noise". This feeds back into the Arduino circuitry and causes unstable operation. This problem can be solved by soldering some 0.1uF ceramic noise suppression capacitors to the motor.

You will need 3 total.  1 between the motor terminals, and one from each terminal to the motor casing.

But my motor already has a capacitor on it and it still doesn't work.
These motors generate a lot of brush noise and usually need the full 3-capacitor treatment for adequate suppression.
Why don't you just design capacitors into the shield?
They would not be effective there. The noise must be suppressed at the source or the motor leads will act like antennae and broadcast it to the rest of the system!
Why won't my stepper motor go any faster?

Since the shield is controlled by i2c, the maximum step rate is limited by the i2c bus speed. The default bus speed is 100KHz and can be increased to 400KHz by editing the library file in your Arduino installation folder. The file can be found in hardware/libraries/wire/utility/twi.h.

Find the line with: "#define TWI_FREQ 100000L"
and change it to "#define TWI_FREQ 400000L"

Or, you can add the following code to your setup() function:  (Note: this line must be inserted after the call to begin())

TWBR = ((F_CPU /400000l) - 16) / 2; // Change the i2c clock to 400KHz
What I2C addresses are used by this shield?

The shield is addressable from 0x60-0x7F.  0x70 is an "all call" address that all boards will answer to.

My shield doesn't work with my LED backpack.

Some backpacks have a default address of 0x70.  This is the "all call" address of the controller chip on the motor shield.  If you re-address your backpack, it will work with the shield.

This guide was first published on Jul 09, 2013. It was last updated on Jul 18, 2024.

This page (FAQ) was last updated on Mar 08, 2024.

Text editor powered by tinymce.