We set out to create a motor control scheme to address the dynamic needs and demands of the research robots that are developed and used by the Personal Robots group at the Media Lab and other robotics developers around the globe. After years of iteration and experience, the result is the MCBMini v5, a full-featured, scalable, and open source motor control solution.

The MCBMini v5 is a single circuit board that provides two closed-loop motor control channels (which could be combined to control one larger motor) with analog or quadrature feedback options, five analog pins for switch/analog input, and both TTL level serial and USB communication interfaces. The boards can be connected together to share a single communications bus to control many motors independently in a streamlined fashion.

The Next Generation of Motor Control

MCBMini v5 is the next generation of the original MCBMini project. Improvements include:

The original MCBMini required a separate communications board in addition to the motor control boards themselves. Every MCBMini v5 board has built-in communication capabilities, so no other boards are needed.

The previous design had a significantly limited quadrature encoder tick frequency.

The v5 uses an ARM microcontroller (STM32F3) with a much faster clock frequency, more memory, and more peripheral capabilities than the previous design's microprocessor (ATMega168).

The v5 has more programmable extra pins (five instead of two).

The v5 has on-board flyback diodes which improve control performance.

The videos below are demonstrations of how the original MCBMini boards can be used. The MCBMini v5 boards are enhanced versions of the boards shown in these videos. vimeo: 76356553

The MCBMini v5 Difference

There are many motor controller boards out there. Here’s what sets the MCBMini v5 apart:

Two channels. Comparable controllers cost about the same, but only have one channel.

Comparable controllers cost about the same, but only have one channel. Open source everything. Suited for hackers, DIY people, students, and innovators who need customized motor control solutions but don't want to start from scratch.

Suited for hackers, DIY people, students, and innovators who need customized motor control solutions but don't want to start from scratch. Built-in support for quadrature encoder and analog feedback. No need for external circuitry to read the position of the motor.

No need for external circuitry to read the position of the motor. Five programmable I/Os. Each board includes five software-configurable auxiliary input/output pins that can used as analog or digital inputs or digital outputs.

Each board includes five software-configurable auxiliary input/output pins that can used as analog or digital inputs or digital outputs. Fast and scalable. Multiple units can be connected together and are still controllable over a single communications channel. Other controllers might require a dedicated serial or USB connection per controller.

Top of the MCBMini v5 board: {img-1846}

Bottom of the MCBMini v5 board: {img-1863}

Product Features & Specifications

Each board has two motor control channels, each spec is "per channel" but each board can also be run in "joint" mode where two channels can be used to control one (beefy) motor.

Bounding box dimensions: 2.82" x 2.34" x 0.56"

Weight: 25.4 grams

Enables separating logic and motor power sources (this can be provided from a single source if preferred).

Logic power voltage range: 6-24V

Motor power voltage range: 5.5-24V

Maximum channel output current: 30A (this is the absolute maximum current of the bridge, serious heat/connector considerations would need to be made)

PWM frequencies of 20kHz (inaudible)

Velocity and position PID closed-loop control Maximum velocity and acceleration can be specified

Position feedback: Quadrature encoder or potentiometer (or both)

Current sensing

Communication: TTL level serial (RX/TX) USB via USB-mini connector (software interface via an emulated VCP)

Electrical protection: Output short to GND or Power shutdown (with software notification) Thermal shutdown (with software notification) Reverse battery protection (for motor power)

Five extra pins per board which can each be configured as: Analog input Digital input Digital output



Software Control

The controllers are expected to be communicated with via Java API but a graphical application is provided as demonstration and for debugging and tuning purposes.

This is the main motor target window where a user can specify motor target positions or velocities and observe instantaneous feedback values.

In this window the user can specify various parameters for the boards and change them on the fly. These parameters are read from a configuration XML file.

In this window the user can observe target and actual values for all the controllers. This is often crucial to tune the controllers for different setups.

This is a screen capture of the software being used in the first video at the top of the page. vimeo: 76728052

Licenses

This project contains three different kinds of licenses:

MCBMiniServer (the Java host software): LGPLv2

Printed circuit board designs: CC with Attribution

Motor control firmware: GPLv2

Manufacturing Plan

All assembly will be performed by a professional fabrication company we’ve been closely working with. The printed circuit boards have already been tested and verified to work.

Risks and Challenges

Because this is a revision of a well-tested board, there is always some chance of some bugs creeping in. It should also be noted that this board is an open source development project so its design and firmware is an ongoing project. We have tested the hardware of the boards and feel comfortable with their performance and as we gain experience with the firmware we will release bug fixes as we come across them. New firmware can be conveniently flashed to the boards via USB.