The Pololu Simple Motor Controllers are versatile, general-purpose motor
controllers for brushed, DC motors. A wide operating range of up to 5.5–40V
and the ability to deliver up to several hundred Watts in a small form factor
make these controllers suitable for many motor control applications. With a
variety of supported interfaces—USB for direct connection to a computer,
TTL serial for use with embedded systems, RC hobby servo pulses for use as
an RC-controlled electronic speed control (ESC), and analog voltages for use
with a potentiometer or analog joystick—and a wide array of configurable
settings, these motor controllers make it easy to add basic control of brushed
DC motors to a variety of projects. Although this motor controller has many
more features than competing products, a free configuration utility (for
Windows 8, 7, Vista, Windows XP, and Linux) simplifies initial setup of the
device and allows for in-system testing and monitoring of the controller via
USB.
For 24 V applications, we recommend the 24v12 or 24v23 versions. We strongly recommend against using
the 18v7, 18v15, or 18v25 with 24 V batteries, which can significantly exceed 24 V when fully charged
and are dangerously close to the maximum voltage limits of these lower-voltage controllers. Using a 24 V
battery with an 18vX Simple Motor Controller makes the device much more susceptible to damage from
power supply noise or LC voltage spikes.
Simple Motor Controllers.
Key Features
• Simple bidirectional control of
one DC brush motor.
• 5.5 V to 30 V (18v7, 18v15, and
18v25) or 40 V (24v12 and 24v23)
operating supply range.
• 7 A to 25 A maximum continuous
current output without a heat sink,
depending on controller model
• Four communication or control
options:
1. USBinterfacefordirect
connection to a PC.
2. Logic-level(TTL)serial
interface for direct connection to
microcontrollersorother
embedded controllers.
3. Hobby radio control (RC) pulse width interface for direct connection to an RC receiver or RC servo
Note: A USB A to mini-B cable [http://www.pololu.com/product/130] (not included) is required to connect this
controller to a computer.
Additional Features
• Adjustable maximum acceleration and deceleration to limit electrical and mechanical stress on the system.
• Adjustable starting speed, maximum speed, and amount of braking when speed is zero.
• Optional safety controls to avoid unexpectedly powering the motor.
• Input calibration (learning) and adjustable scaling degree for analog and RC signals.
• Under-voltage shutoff with hysteresis for use with batteries vulnerable to over-discharging (e.g. LiPo cells).
• Adjustable over-temperature threshold and response.
• Adjustable PWM frequency from 1 kHz to 22 kHz (maximum frequency is ultrasonic, eliminating switchinginduced audible motor shaft vibration).
• Error LED linked to a digital ERR output, and connecting the error outputs of multiple controllers together
optionally causes all connected controllers to shut down when any one of them experiences an error.
• Field-upgradeable firmware.
• USB/Serial features:
◦ Controllable from a computer with native USB, via serial commands sent to the device’s virtual serial
(COM) port, or via TTL serial through the device’s RX/TX pins.
◦ Example code in C#, Visual Basic .NET, and Visual C++ is available in the Pololu USB Software
Development Kit [http://www.pololu.com/docs/0J41]
◦ Optional CRC error detection to eliminate communication errors caused by noise or software faults.
◦ Optional command timeout (shut off motors if communication ceases).
◦ Supports automatic baud rate detection from 1200 bps to 500 kbps, or can be configured to run at a fixed
baud rate.
◦ Supports standard compact and Pololu protocols as well as the Scott Edwards Mini SSC protocol and an
ASCII protocol for simple serial control from a terminal program.
◦ Optional serial response delay for communicating with half-duplex controllers such as the Basic Stamp.
◦ Controllers can be easily chained together and to other Pololu serial motor and servo controllers to
control hundreds of motors using a single serial line.
◦ Works with RC pulse frequencies from 10 to 333 Hz.
◦ Configurable parameters for determining what constitutes
an acceptable RC signal.
◦ Two RC channels allow for single-stick (mixed) motor
control, making it easy to use two simple motor controllers in
tandem on an RC-controlled differential-drive robot.
◦ RC channels can be used in any mode as limit or kill
switches (e.g. use an RC receiver to trigger a kill switch on
your autonomous robot).
◦ Battery elimination circuit (BEC) jumper can power the RC
receiver with 5 V or 3.3 V.
Two Pololu Simple Motor Controllers
enable mixed RC-control of Dagu Wild
Thumper 4WD all-terrain chassis.
• Analog features:
◦ 0.8 mV (12-bit) measurement resolution.
◦ Two analog channels allow for single-stick (mixed) motor control, making it easy to use two simple
motor controllers in tandem on a joystick-controlled differential-drive robot.
◦ Analog channels can be used in any mode as limit or kill switches.
Simple Motor Controller Comparison Table
The Simple Motor Controllers are available in several input voltage ranges and output current ranges:
We do not recommend using the 18v7, 18v15, or 18v25 versions with 24 V batteries, which can significantly
exceed 24 V when fully charged. The 24v12 and 24v23 are the much more appropriate controller for 24 V
applications.
This is the weight of the board without header pins, terminal blocks, or through-hole power capacitor.
Warning: Take proper safety precautions when using high-power electronics. Make sure you know what
you are doing when using high voltages or currents! During normal operation, this product can get hot
enough to burn you. Take care when handling this product or other components connected to it.
1.1. 18v7 Included Hardware
Simple Motor Controller 18v7, partial
kit with included hardware.
Simple Motor Controller 18v7, fully
assembled.
The lowest-power controller version (18v7) is available with the power capacitor and connectors included but not
soldered in (as shown in the left picture above) or with the power capacitor and connectors pre-installed (as shown in
the right picture above).
The power capacitor has a significant effect on performance; the included capacitor is the minimum size
recommended, and bigger ones can be added if there is space. A bigger capacitor might be required if the power
supply is poor or far (more than about a foot) from the controller.
Simple Motor Controller 18v7 bottom view with dimensions.
The medium-power controller versions (18v15 and 24v12) are available with the power capacitor and connectors
included but not soldered in (as shown in the left picture above) or with the power capacitor and connectors preinstalled (as shown in the middle picture above).
The terminal blocks are only rated for 15 A. For higher-current applications we recommend soldering thick wires
directly to the connector-free version of the board and using higher-current connectors [http://www.pololu.com/product/
925] (as shown in the right picture above). Another benefit of the connector-free version is flexibility in placement of
the power capacitor (e.g. on the other side of the board) to accommodate compact installations or to make room for a
heat sink.
The power capacitor has a significant effect on performance; the included capacitor is the minimum size
recommended, and bigger ones can be added if there is space. A bigger capacitor might be required if the power
supply is poor or far (more than about a foot) from the controller.
Simple High-Power Motor Controller 18v15 or 24v12 bottom view with
The highest-power controller versions (18v25 and 24v23) are sold without the power capacitor and connectors
installed (no fully assembled version is available). They ship with a 40×1 straight 0.1" male header strip
[http://www.pololu.com/product/965], a 5mm-pitch, 4-pin terminal block [http://www.pololu.com/product/2440], and a power
capacitor as shown in the left picture above. For applications under 15 A, these pieces can be soldered to the board as
shown in the middle picture above; higher current applications should use thick wires soldered directly to the board
or higher-current connectors [http://www.pololu.com/product/925], such as those shown in the right picture above.
Simple High-Power Motor Controller 18v25 or 24v23 bottom view with
dimensions.
1.4. Supported Operating Systems
The Simple Motor Controller USB drivers and configuration software work under Microsoft Windows XP, Windows
Vista, Windows 7, Windows 8, and Linux.
We do not provide any software for Mac OS X, but the controller’s USB virtual COM port is compatible with Mac
OS X 10.7 (Lion) and later. As a result, the Simple Motor Controller can be controlled from a Mac, but a Windows or
Linux computer is required if you need to change any of the configuration parameters.
information. The “Resources” tab on each product page contains links to this
users guide as well as other valuable resources, such as drivers and the Simple
Motor Control Center software.
We would be delighted to hear from you about any of your projects and about
your experience with the Simple Motor Controller. You can contact us
[http://www.pololu.com/contact]directlyorpostonourforum
[http://forum.pololu.com/]. Tell us what we did well, what we could improve,
what you would like to see in the future, or anything else you would like to
say!
If you are using Windows XP, you will need to have Service Pack 3 [http://www.microsoft.com/downloads/
details.aspx?FamilyId=68C48DAD-BC34-40BE-8D85-6BB4F56F5110] installed before installing the drivers for the
Simple Motor Controller. See below for details.
Before you connect a Simple Motor Controller to a computer running Microsoft Windows, you should install the
drivers:
1. Download the Simple Motor Controller Windows Drivers and Software [http://www.pololu.com/file/download/
smc-windows-121204.zip?file_id=0J408] (5MB zip)
2. Open the ZIP archive and run setup.exe. The installer will guide you through the steps required to install
the Simple Motor Control Center, the Simple Motor Controller command-line utility (SmcCmd), and the Simple
Motor Controller drivers on your computer. If the installer fails, you may have to extract all the files to a
temporary directory, right click setup.exe, and select “Run as administrator”.
3. During the installation, Windows will ask you if you want to install the drivers. Click “Install” (Windows 7,
8, and Vista) or “Continue Anyway” (Windows XP).
4. After the installation is finished, your start menu should have a shortcut to the Simple Motor Control Center
(in the Pololu folder). This is a Windows application that allows you to configure, control, and get real-time
feedback from the Simple Motor Controller. There will also be a command-line utility called SmcCmd which
you can run at a Command Prompt.
Windows 8, Windows 7, and Windows Vista users: Your computer should now automatically install the necessary
drivers when you connect a Simple Motor Controller. No further action from you is required.
Windows XP users: Follow steps 5–9 for each new Simple Motor Controller you connect to your computer.
5. Connect the device to your computer’s USB port. The Simple Motor Controller shows up as two devices
in one so your XP computer will detect both of those new devices and display the “Found New Hardware
Wizard” two times. Each time the “Found New Hardware Wizard” pops up, follow steps 6-9.
6. When the “Found New Hardware Wizard” is displayed, select “No, not this time” and click “Next”.
8. Windows XP will warn you again that the driver has not been tested by Microsoft and recommend that you
stop the installation. Click “Continue Anyway”.
9. When you have finished the “Found New Hardware Wizard”, click “Finish”. After that, another wizard will
pop up. You will see a total of two wizards when plugging in a Simple Motor Controller. Follow steps 6–9 for
each wizard.
If you use Windows XP and experience problems installing or using the serial port drivers, the cause of
your problems might be a bug in older versions of Microsoft’s usb-to-serial driver usbser.sys. Versions
of this driver prior to version 5.1.2600.2930 will not work with the Simple Motor Controller. You
can check what version of this driver you have by looking in the “Details” tab of the “Properties”
window for usbser.sys in C:\Windows\System32\drivers. To get the fixed version of the driver, you
will need to install Service Pack 3 [http://www.microsoft.com/downloads/details.aspx?FamilyId=68C48DAD-
BC34-40BE-8D85-6BB4F56F5110]. If you do not want Service Pack 3, you can try installing Hotfix
KB918365 instead, but some users have had problems with the hotfix that were resolved by upgrading
to Service Pack 3. The Simple Motor Control Center and SmcCmd will work even if the serial port
drivers are not installed properly.
After installing the drivers, if you go to your computer’s Device Manager and expand the “Ports (COM & LPT)” list,
you should see the Command Port for the Simple Motor Controller. In parentheses, you will see the name of the port
(e.g. “COM5” or “COM6”). If you expand the “Pololu USB Devices” list you should see another entry for the Simple
Motor Controller.
Windows Vista or Windows 7 device manager showing a Simple Motor Controller.
Windows XP device manager showing a Simple Motor Controller.
Some software will not allow connection to higher COM port numbers. If you need to change the COM port number
assigned to your USB device, you can do so using the Device Manager. Bring up the properties dialog for the COM
port and click the “Advanced…” button in the “Port Settings” tab. From this dialog you can change the COM port
assigned to your device.
Unzip the tar/gzip archive by running “tar -xzvf” followed
by the name of the file. After following the instructions in
README.txt, you can run the programs by executing
SmcCenter and SmcCmd.
The Simple Motor Controller’s virtual serial port can be
used in Linux without any special driver installation. The
virtual serial port is managed by the cdc-acm kernel
module, whose source code you can find in your kernel’s
source code drivers/usb/class/cdc-acm.c. When you
connect the Simple Motor Controller to the PC, the virtual
serial port should appear as a device with a name like
/dev/ttyACM0 (the number depends on how many other
ACM devices you have plugged in). You can use any
terminal program (such as kermit) to send commands and receive responses on those ports.
The Pololu Simple Motor Control Center running
under Linux.
3.3. Understanding the Control Center Status Tab
After installing the software and drivers for the Simple Motor Controller, it is a good idea to run the Pololu Simple
Motor Control Center and look at the Status tab. The Status tab lets you monitor the status of your motor controller
in real time and control the speed of the motor. The Status tab also shows what errors and limits are affecting your
motor controller so it can help you quickly troubleshoot any issues you are having.
To use the Status tab, you should connect your Simple Motor Controller to your PC using a USB cable (not included)
and run the Pololu Simple Motor Control Center. This is what the Status tab should look like initially, before you have
modified any settings or connected anything to the Simple Motor Controller (besides USB):
The Status tab in the Simple Motor Control Center should look like this when you first connect
the controller to the PC.
Target Speed and Current Speed
The Target Speed is the speed that the motor controller is trying to achieve. The Target Speed source is determined
by the settings in the Input Settings tab, and can come from serial/USB commands, analog voltages, or RC signals.
The Current Speed is the speed at which the controller is currently your driving your motor. There are several reasons
why the Current Speed might be different from the Target Speed: errors, acceleration limits, deceleration limits, brake
duration, maximum speed limits, starting speed limits, and gradual temperature-based speed limiting. If any of these
things are affecting the Current Speed, the appropriate part of the Status tab will be highlighted to let you know.
Anything that is stopping the motor completely will be highlighted in red. Anything that is limiting the speed of the
motor will be highlighted in yellow.
The Simple Motor Controller represents speeds internally as a number from -3200 (full reverse) to 3200 (full
forward). However, by default the speeds in the Status Tab are displayed as percentages so -3200 (full reverse) is
shown as -100.00% and 3200 (full forward) is shown as 100.00%.
Below the Target Speed label is a two-dimensional diagram that represents the values of the inputs that are used to set
the Target Speed. This diagram is especially useful in RC or Analog mode with Mixing enabled because it graphically
shows you the value of both input channels and makes it easier to tell how well the Simple Motor Controller is
calibrated for your controller is.
The Motor Limits box in the Status tab shows the current limits on the movement of the motor. These limits will be
equal to the hard motor limits specified in the Motor Settings tab, unless you have temporarily changed the motor
limits using the command-line utility (SmcCmd) or a serial command. For more information on these limits, see the
section that documents the Motor Settings tab.
Input Channels
The Input Channels box in the Status tab shows the current status of the RC or Analog input channels of the device.
The Raw Value is the raw, unscaled value of the input channel. For RC channels, the Raw Value is the width of pulses
received on the input line (RC1 or RC2). It is typically between 1000 μs and 2000 μs, and it is stored internally as
an integer in units of quarter-microseconds (6000 corresponds to 1500 μs). For Analog channels, the Raw Value is
the average voltage measured on the input line (A1 or A2). It is always between 0 mV and 3300 mV, and it is stored
internally as a 12-bit integer (0 corresponds to 0 mV while 4095 corresponds to 3300 mV).
The Scaled Value is a number between -3200 and 3200 that is determined entirely by the Raw Value and the scaling
parameters in the Input Settings tab. If the scaling parameters are set up correctly, then the Scaled Value should be 0
when the input is in its neutral position (if it has a neutral position), and they should be ±100 % (±3200 internally)
when the input is moved to either extreme.
The Status column summarizes the state of each channel. Here are the different things you might see in the Status
column:
• Valid: There is an RC or Analog input connected to this channel and it is working.
• Invalid (disconnected): This message is shown for Analog channels when the controller detects that they are
disconnected. If you do not intend to use this channel, you do not need to worry about this message. Otherwise,
to correct this situation, make sure that all three pins of your potentiometer or analog joystick are connected
correctly to the three analog interface pins (see Section 4.4). The controller toggles the power supply on the
Analog + pins in order to detect when your potentiometer is disconnected. This feature can be turned off in the
Advanced tab, in which case you will not see the “Invalid (disconnected)” message.
• Invalid signal: This message is shown for RC channels when the controller detects no signal or a bad signal
on the RC input. If you do not intend to use this channel, you do not need to worry about this message. Otherwise,
to correct this situation, make sure that your RC receiver is powered and connected correctly (see Section 4.3),
and check your RC pulse detection settings in the Advanced tab.
• Invalid (too high) and Invalid (too low): These messages are shown for Analog channels when the voltage
read on the A1 or A2 pin is outside of the normal range, as specified by the Error min and Error max parameters
for that channel in the Input Settings tab. To correct this error, you can re-configure the range of your analog
input by clicking the “Learn…” button for that channel, or you can manually adjust the scaling parameters.
• Invalid (high signal) and Invalid (low signal): These messages are shown for RC channels when the pulse
width measured on the RC1 or RC2 pin is outside of the normal range as specified by the Error min and Error
max parameters for that channel in the Input Settings tab. To correct this error, you can re-configure the range
of your RC input by clicking the “Learn…” button for that channel, or you can manually adjust the scaling
parameters.
Conditions
The Conditions box in the Status tab shows miscellaneous information about the current state of the controller:
• VIN: This is the voltage of your power supply, measured on the VIN line. When your power supply
is disconnected, this should read 0.0 V. This reading is continually compared to the VIN thresholds in the
Advanced Settings tab and will generate an error and shut down the motor if it passes these thresholds. This
allows a properly configured controller to avoid over-discharging your batteries.
• Temperature: This is a measurement of the temperature of the device. This reading is used prevent damage
to the device by shutting down the motor when the board gets too hot (the over-temperature threshold is can
be adjusted in the Advanced Settings tab). Please note that this product can get hot enough to burn you during
normal operation. Take care when handling this product or other components connected to it. Parts of the board
be significantly hotter than this reading, so you should not rely on this temperature reading when deciding
whether it is safe to touch the board.
• Up Time: This is the total amount of time that the controller has been running since its last reset or power-up.
The Up Time reading can be used to help identify if the controller has reset unexpectedly. You can determine
the cause of a reset by looking at the pattern of the yellow LED (see Section 3.5), or you can look in the Device
Information window, available from the Device menu. The Up Time reading will overflow back to zero after
49.7 days.
• Baud Rate: This is the current baud rate that the device is using on the TTL serial interface (RX and TX
lines) in units of bits per second (bps). By default, the device is in Auto-detect baud rate mode, so this value will
be “N/A” until the baud rate is detected. After a 0xAA byte is received on the RX line, the device will detect the
baud rate and you can see it here. Please note that the Baud Rate display in the Status tab has nothing to do withthe USB virtual COM port (it doesn’t matter what baud rate you use when connecting to the virtual COM port).
• RC Period: This is the period of the RC signal on the RC1 input channel. You can use this reading to help
you make the RC period settings in the Advanced Settings tab more strict so that the controller can better identify
bad RC signals. If the signal on RC1 is invalid, this reading is reported as “N/A”.
Manually set speed (Serial/USB
mode only)
The Manually Set Speed box in Status
tab allows you to control the speed of
your motor over USB by using a
scrollbar or by typing in a speed. To
use this feature, the Input Mode
(configured in the Input Settings tab)
must be USB/Serial, and there must be
no errors currently stopping the motor.
You will need to press the Resume
button if you have not disabled Safe Start or if you previously pressed the Stop Motor button.
The Simple Motor Controller has several features
that stop the motor when something is going
wrong. These are called errors, and they can help
protect your project from damaging itself.
Whenever you are having an issue with the
controller, you should first check to see what (if
any) errors are occurring. You can get information
about the errors by:
• Checking the Errors box in the Status tab of
the Simple Motor Control Center. This is
recommended because it gives you the most
information, including a running count of how
many times the error has been reported.
• Running the command-line utility (just type
SmcCmd -s at the command line).
• Looking at the red LED on the device. It will
be lit if there are any errors stopping your
motor.
• WritingPCsoftwareorusinga
microcontroller to send the Get Errors serial
command.
• Using a microcontroller to measure the
voltage on ERR pin. This pin is linked to the
red LED so it should go high (3.3 V) when
there is an error stopping your motor and low
(0 V) otherwise.
The Errors box in the Status tab of the Pololu Simple
Motor Control Center reveals problems that are stopping
your motor.
All the errors are explained below:
• Safe start violation: Safe Start is a feature that helps prevent the motor from starting up unexpectedly. This
feature is enabled by default, but can be disabled in the Advanced Settings tab. The behavior of Safe Start
depends on what Input Mode you are using.
In Serial/USB input mode, the Safe start violation error occurs whenever any other error is stopping the motor.
After all the other errors have been fixed, you can clear the Safe start violation error by pressing the Resume
button (which issues a native USB command) or using a serial command.
In Analog or RC input mode, the Safe start violation error occurs whenever the motor is stopped because of an
error AND the inputs that control the speed of the motor are not near their neutral positions. This helps prevent
the situation where there might be an error stopping your motor (such as a disconnected battery), and the motor
starts running at a high speed when you fix the error. To clear the Safe start violation error, move all the inputs
that control the speed of the motor to their neutral positions (the sum of the absolute values of their scaled values
must be less than 8 %).
• Required channel invalid: This error occurs whenever any required RC or Analog channel is invalid. This
error helps ensure that your motor will stop if you accidentally disconnect your joystick, potentiometer or RC
receiver. A channel is invalid if it is disconnected, or has a value that is out of range. A channel is required if it
controls the speed of the motor or it is configured as a limit switch or kill switch. By default, there are no required
channels because the input mode is serial and no limit or kill switches have been configured. You can check the
Input Settings tab to see which channels are required. Channels that are required and invalid are highlighted in
red in the Input Channels box of the Status tab so you can quickly see which channel is causing this error.
• Command timeout: This error occurs if you are controlling your motor using a microcontroller or a
PC (Input Mode is Serial/USB) and the (configurable) time period has elapsed with no valid serial or USB
commands being received by the controller. The purpose of this error is to ensure that your motor will stop if
the software talking to the controller crashes or if the communications link is broken. All valid serial commands
clear this error. The native USB commands for setting the speed and exiting safe start also clear this error.
By default, this error is disabled, but it can be enabled from the Advanced Settings tab by setting a non-zero
Command Timeout value.
• Limit/kill switch: This error occurs when a limit or kill switch channel stops the motor. More specifically, it
occurs in three cases: when a kill switch is active, when a Forward Limit switch is active AND the Target Speed
is positive, or when a Reverse Limit switch is active AND the Target Speed is negative. A limit/kill switch is
considered active if its scaled value is above 50 %. If you are using a limit switch and your input mode is Serial/
USB, you will need to check the Count column in the Status tab to see this error because in Serial/USB mode
the Target Speed gets set to 0 whenever there is an error.
• Low VIN: This error occurs whenever your power supply’s voltage is too low or it is disconnected. If you
set the correct thresholds in the Advanced Settings tab, this error will prevent you from over-discharging your
battery.
• High VIN: This error occurs whenever your power supply’s voltage is too high. You can set the threshold
voltage in the Advanced Settings tab.
• Motor driver error: This error occurs whenever the motor driver chip reports an under-voltage or overtemperature error (by driving its fault line low).
• Over temperature: This error occurs whenever the reading from the temperature sensor is too high. You can
see the temperature reading in the Conditions box of the Status tab. The behavior of this error and the threshold
temperatures can be configured in the Advanced tab.
• ERR line high: This error occurs whenever there are no other errors but the voltage on the ERR line is high
(2.3–5 V). This error allows you to connect the error lines of two Simple Motor Controllers together and have
both of them stop when either one experiences an error. This error can be disabled in the Advanced Settings tab.
• Serial errors: Serial errors are recorded whenever something goes wrong with the serial communication,
either on the RX/TX lines or on the USB virtual COM port. If the input mode is Serial/USB, then a serial error
will stop the motor from running until a valid serial command is received, or the Resume button is pressed, or the
native USB Set Speed or Exit Safe Start commands are sent. If you are using serial and have not disabled Safe
Start mode, you will need to send the Exit Safe-Start command, followed by a Set Speed command to recover
from an error and get the motor running again. If you are using serial and have disabled Safe Start, the motor
will start driving as soon when a valid Set Speed command is received. These are the types of serial errors that
are recorded:
◦ Frame: This is error occurs when a de-synchronization or excessive noise on the RX line is detected.
◦ Noise: This error occurs when noise is detected on the RX line.
◦ RX overrun: This error occurs when the buffer for storing bytes received on the RX line is full and data
was lost as a result. This should not occur during normal operation.
◦ Format: This error occurs if the serial bytes received on RX or the virtual COM port do not obey the
protocol specified in this guide. If you get this error, check the bytes you are sending carefully, and compare
them to the examples provided.
◦ CRC: This error occurs if you have enabled cyclic redundancy check (CRC) for serial commands, but
the CRC byte received was invalid. CRC helps prevent the motor controller from accidentally performing
unwanted actions when it is receiving commands over a noisy serial link. If you get this error, check your
algorithm for calculating CRCs and check the quality of your serial signal at the RX pin.
The Simple Motor Controllers have three indicator LEDs that provide feedback about the current state of the
controller. The LEDs can tell you whether an error is occurring, whether the USB connection is active, what direction
the motor is driving, and much more.
Simple Motor Controller 18v7 LEDs.
Simple High-Power Motor Controller 18v15 or 24v12
Simple High-Power Motor Controller 18v25 or 24v23
LEDs.
LEDs.
The Simple Motor Controllers have three indicator LEDs:
This LED indicates the USB status of the device. When the Simple Motor Controller is not connected to a
computer via the USB cable, the green LED will always be off. When you connect the controller to USB, the
green LED starts blinking slowly. The blinking continues until the controller receives a particular message from the
computer indicating that the Simple Motor Controller’s USB drivers are installed correctly (see Section 3.1 for driver
installation instructions). After the controller gets this message, the green LED turns solidly on, except for brief
flickers whenever there is USB activity. The Simple Motor Control Center software constantly streams data from the
controller, so when the control center is running and connected to the Simple Motor Controller, the green LED will
flicker constantly.
Red Error LED
This LED turns on whenever there is an error stopping the motor (see Section 3.4 for information on errors that
can stop the motor). The red LED is tied directly to the active-high output ERR, which allows the error status to be
monitored by an external device such as a microcontroller. When no errors are stopping the motor, the error LED is
off and the ERR pin is pulled low. See Section 4.2 for more information about the ERR pin and the error LED.
Yellow Status LED
This LED helps you visually identify the state of the device, which can be useful when the controller is not connected
to the Control Center. On start-up, the status LED briefly flashes a pattern indicating the source of the last reset (see
the Reset Flags variable in Section 6.4 for more information):
• 8 blinks over the first two seconds after start-up indicates that the external RST pin was driven low to reset
the controller.
• 3 blinks over the first two seconds after start-up indicates that the controller last reset because logic power got
too low (power was disconnected or the controller browned out).
• Rapid flickering for the first two seconds after start-up indicates that the controller was reset by a software
fault or by a firmware upgrade.
This startup behavior can help you detect if your Simple Motor Controller is browning out and resetting unexpectedly
(as can happen if your input voltage drops due to high power demands or electrical noise).
After the start-up phase ends, the status LED primarily gives feedback about the motor driver outputs:
• An even blinking pattern of on for 2/3 s and off for 2/3 s indicates that the controller is not driving the motor
and has not yet detected the baud rate. This pattern only occurs when the controller is in USB/serial mode with
automatic baud detection enabled and helps you determine when you have established communication between
a TTL serial source and the Simple Motor Controller.
• A brief flash once per second indicates that the controller is not driving the motor. If the controller is in Serial/
USB mode with automatic baud detection enabled, this pattern additionally indicates that the Simple Motor
Controller has successfully learned the TTL serial baud rate.
• A repeating, gradual increase in brightness every second indicates that the controller is driving the motor
forward.
• A repeating, gradual decrease in brightness every second indicates that the controller is driving the motor in
reverse.
This chapter explains all the electrical connections you might need to make to get your motor controller working the
way you want it to.
The diagrams below label the key components and pins on the Simple Motor Controllers. Most of these pins are also
labeled on the bottom side of the board.
• Simple Motor Controller 18v7 Pin-Out
• Simple High-Power Motor Controller 18v15 and 24v12 Pin-Out
Warning: Take proper safety precautions when using high-power electronics. Make sure you know what
you are doing when using high voltages or currents! During normal operation, this product can get hot
enough to burn you. Take care when handling this product or other components connected to it.
The first step in using your Simple Motor Controller is connecting power and a motor. With those connections in
place, you can immediately start testing with the Simple Motor Control Center. The following section explains the
power system in detail.
The Pololu Simple Motor Controllers can be powered either from USB using a USB A to mini-B cable
[http://www.pololu.com/product/130] or from a power supply, such as a battery pack, connected to the large VIN and GND
pads. When the VIN supply is not present, the controller can use USB power to perform all of its functions except for
driving the motor. The controller automatically selects VIN as the power source when it is present, even when USB
is connected. It is OK to have both USB and VIN power simultaneously connected.
Power for the motor must be supplied to the controller through the large VIN and GND pads. The smaller
VIN and GND pads on the left side of the board in the diagrams above are not suitable for high currents
and should not be used to power the motor controller. These smaller power pins provide a convenient way
to pass the input voltage on to other parts in your system, but they should not be used to power anything
that will draw more than 500 mA.
All Simple Motor Controller versions can operate from VIN supplies as low as 5.5 V, but the maximum continuous
output current will be lower for voltages under 7 V. The maximum power ratings for the Simple Motor Controllers
are shown below:
Simple Motor Controller18v718v1524v1218v2524v23
Absolute max voltage30 V30 V40 V30 V40 V
Recommended max voltage24 V24 V34 V24 V34 V
Max continuous current w/o heat sink7 A15 A12 A25 A23 A
It is very important that you select a power source that does not exceed the absolute maximum voltage rating for
your Simple Motor Controller. Ripple voltage on the supply line can raise the maximum voltage to more than the
average or intended voltage, so we recommend you to select a voltage that leaves at least a 6 V margin for noise. It
is also important to note that batteries can be much higher than their nominal voltage when fully charged, so we do
not recommend using the 18v7, 18v15, or 18v25 versions with 24 V batteries unless appropriate measures are taken
to limit the peak voltage.
For 24 V applications, we recommend the 24v12 or 24v23 versions. We strongly recommend against using
the 18v7, 18v15, or 18v25 with 24 V batteries, which can significantly exceed 24 V when fully charged
and are dangerously close to the maximum voltage limits of these lower-voltage controllers. Using a 24 V
battery with an 18vX Simple Motor Controller makes the device much more susceptible to damage from
power supply noise or LC voltage spikes.
Finally, make sure you select a power source that is capable of delivering the current your motor will require (e.g.
alkaline cells are typically poor choices for high-current applications), and place a large capacitor across power and
ground near the motor controller to limit electrical noise (such a capacitor is pre-installed on fully-assembled 18v7,
18v15, and 24v12 controller versions).
The Simple Motor Controllers feature a configurable low-voltage shutoff that can help you avoid
damaging batteries that are sensitive to over-discharging, such as Li-Po packs. See Section 5 for more
information.
The two terminals of your brushed, DC motor connect to the OUTA and OUTB pins. When selecting a motor for
your controller (or a controller version for your motor), it is important to consider how the motor will be used in your
system. If the motor is likely to be stalled for prolonged periods of time or under heavy load, or if the motor will be
rapidly changing direction without acceleration limiting enabled, you should be taking into account the stall current of
the motor at the voltage it will be running and selecting a controller that can deliver a continuous current that exceeds
the stall current.
It is not unusual for the stall current of a motor to be an order of magnitude (10×) higher than its freerun current. When a motor is supplied with full power from rest, it briefly draws the full stall current,
and it draws nearly twice the stall current if abruptly switched from full speed in one direction to full
speed in the other direction.
Occasionally, electrical noise from a motor can interfere with the rest of the system. This can depend on a number of
factors, including the power supply, system wiring, and the quality of the motor. If you notice parts of your system
behaving strangely when the motor is active (e.g. corrupted serial data, bad RC pulses, noisy analog voltage readings,
or the motor controller randomly resetting), consider taking the following steps to decrease the impact of motorinduced electrical noise on the rest of your system:
1. Solder a 0.1 µF ceramic capacitor [http://www.pololu.com/product/1166] across the terminals of your motor, or
solder one capacitor from each terminal to the motor case. For the greatest noise suppression, you can use three
capacitors (one across the terminals and one from each terminal to the case).
2. Make your motor leads as thick and as short as possible, and twist them around each other. It is also
beneficial to do this with your power supply leads.
3. Route your motor and power leads away from your logic connections if possible.
4. Place decoupling capacitors (also known as “bypass capacitors”) across power and ground near any
electronics you want to isolate from noise.
The fully-assembled 18v7, 18v15, and 24v12 Simple Motor Controller versions ship with terminal blocks soldered
into the large VIN, OUTA, OUTB, and GND pads and a power capacitor pre-installed, as shown in the pictures above.
These terminal blocks make it easy to connect and disconnect power supplies, but they are only rated for 15 A.
Simple High-Power Motor Controller
18v15 or 24v12, partial kit with
included hardware.
Simple High-Power Motor Controller
18v25 or 24v23 with included
hardware.
Simple High-Power Motor Controller
18v15 or 24v12, partial kit with custom
power and motor connectors (NOT
included).
Simple High-Power Motor Controller
18v25 or 24v23 with custom power and
motor connectors (NOT included).
All other versions ship with terminal blocks and a power capacitor included but not installed, which provides
flexibility in making connections. These versions offer two options for connecting to the high-power signals (VIN,
OUTA, OUTB, GND): large holes on 0.2" centers, which are compatible with the included terminal blocks
4. Connecting Your Motor ControllerPage 30 of 101
Loading...
+ 71 hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.