SparkFun Serial Controlled Motor Driver

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

SparkFun Serial Controlled Motor Driver Product Help and Resources

Core Skill: Soldering

This skill defines how difficult the soldering is on a particular product. It might be a couple simple solder joints, or require special reflow tools.

1 Soldering

Skill Level: Noob - Some basic soldering is required, but it is limited to a just a few pins, basic through-hole soldering, and couple (if any) polarized components. A basic soldering iron is all you should need.
See all skill levels


Core Skill: Robotics

This skill concerns mechanical and robotics knowledge. You may need to know how mechanical parts interact, how motors work, or how to use motor drivers and controllers.

2 Robotics

Skill Level: Rookie - You will be required to know some basics about motors, basic motor drivers and how simple robotic motion can be accomplished.
See all skill levels


Core Skill: Programming

If a board needs code or communicates somehow, you're going to need to know how to program or interface with it. The programming skill is all about communication and code.

2 Programming

Skill Level: Rookie - You will need a better fundamental understand of what code is, and how it works. You will be using beginner-level software and development tools like Arduino. You will be dealing directly with code, but numerous examples and libraries are available. Sensors or shields will communicate with serial or TTL.
See all skill levels


Core Skill: Electrical Prototyping

If it requires power, you need to know how much, what all the pins do, and how to hook it up. You may need to reference datasheets, schematics, and know the ins and outs of electronics.

2 Electrical Prototyping

Skill Level: Rookie - You may be required to know a bit more about the component, such as orientation, or how to hook it up, in addition to power requirements. You will need to understand polarized components.
See all skill levels


Customer Comments

  • Just out of curiosity, what is the copper finish on the bare PWB? It looks as flat as ENIG, but it isn’t gold. How does that finish compare in a production environment (cost, solderability, resistance to tarnish/oxidation) to other finishes?

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