Creative Commons images are CC BY 2.0

Description: The SparkFun Serial Controlled Motor Driver (SCMD) is a DC motor driver that’s been designed to drive small DC motors with ease. The SCMD is designed to emulate a typical register-based device in operation. It can be commanded by UART, I2C or SPI communication, and it can drive a constant 1.2A load per motor (peak 1.5A) at 11V. Need more than two motors? Chain multiple SCMDs together and command them through the same serial interface. Need more current? Each board’s output can be bridged to allow double current.

This driver board was designed to be affordable, compact and have more features than previous versions of serial-controlled motor drivers. Its main advantage is the variability of drive levels, making fine control adjustments a possibility. The SCMD is a 3.3V logic device! If you need to interface to 5V, you’ll need to use a logic level converter – or modify the SCMDs from stock to operate at 5V and supply your own regulated 5V.

Get Started with the SCMD Guide


  • 1.5A peak drive per channel, 1.2A steady state
  • Operates from 3 to 11 volts with 12V absolute max
  • 3.3V default VCC and logic
  • Max VCC in of 5.5V
  • 127 levels of DC drive strength.
  • Controllable by I2C, SPI or TTL UART signals
  • Direction inversion on a per motor basis
  • Global Drive enable
  • Expansion port utilizing I2C, allows 16 additional drivers
  • Exposed TO-220 heat sink shape
  • Several I2C addresses, default UART bauds available
  • Bridgeable outputs
  • Optional fail-safe and diagnostics available.
  • Configurable expansion bus bit rate to 50, 100 or 400kHz.
  • Configurable expansion bus update rate from 1ms to 255ms, or by command only


Recommended Products

Customer Comments

  • Can the PSoC 4245 in the board be programmed?

    edit The answer is yes, I found the C firmware on github, how did you compile it and how did you program the board? Some pointers would be appreciated.

    • Hey, I wanted to put a few more thoughts in here. If you’re the type that ends up with random psoc dev kits, many of them can be used to flash and for debugging. For instance, I use a CY8CKIT-042-BLE kit because I didn’t have a miniprog3 handy.

      To recompile from the github repository, use cypress PSoC creator 3.3 and set the build to “release” (Code won’t fit with all the debug stuff), and you should be able to build the entire project.

    • I asked tech support, and got a very helpful answer from Chris F at SparkFun:

      You need a Cypress MiniProg3 and the Cypress PSoC Programmer 3.25.0 software to re-flash the PSoC on the SCMD. I don’t have a guide that shows how, but I have attached screen shots showing what options need checked in the programming software.

      Thanks Chris!

  • I am currently playing around (communicating with a raspberry pi over I2C) with two of those drivers (one master and one slave connected over the expansion port). I am able to control motorspeed, etc. just fine. However I was a bit surprised, when I realized that the failsave only centers the master motorspeed (when I loose connection between raspberry pi and master). The slave drives on. He only stops when he looses connection to the master. Is this wanted? What would be the best solution, if I wanted to disable all motors, when a failsave occured?

    • I’m going to have to play with this for a bit and get back to you. It involves doing a remote write to the slave’s FSAFE_CTRL register, and possibly using FORCE_UPDATE to issue motor speed updates rather than relying on the periodic updates. I thought no one would try to do this! (but I left provisions anyhow)

      It would help if I had the following info:

      • What is the rate your Pi updates the motor driver chain?
      • What library are you using to communicate over I2C?

      If you like, you can contact tech support via email and get a hold of me through them! Thanks for asking!

      • I found a simple solution that works (for me): I set the FSAFE_CTRL register that way, that if a failsave occurs, the master reboots. This way it resets the speed of all slaves, too.

  • Would this work with the old Tamiya dual motor gearbox you (used to?) sell?

    • We still sell a dual Tamiya kit.

      I tested driving it at 3V and it works great! With both sides driven at 100%, I can’t stop the shafts and the total load is about 1.5A, with no real temperature rise of the driver.

      alt text

      If I stall the motors each can draw over 2 amps, so if you’re in in the market for some heavy duty use, use two, bridge the outputs, and add a heat sink.

Customer Reviews

No reviews yet.

Related Tutorials