You are on page 1of 2

An Open Source Motor Controller for everyone

It is open source and based upon the ATmega32U4 microcontroller, and provided with drivers for
two DC brush motors and a stepper motor. It receives commands via USB or serial ports, or via the
I²C bus.
For those dealing with robotics, one of the problems to solve is the management of the motors used
for the traction, that is to say: how to correctly power the motors needed in order to make your robot
advance. If you work with Arduino, the first and immediate solution is to use a shield. Several of
them can be found available for sale, from the simplest ones that allow to control separately the two
small DC motors, to the most advanced ones that are able to measure the current drawn as well.
Regardless of the manufacturer, the shields are all based on the usage of a power driver (usually the
L298), that is directly interfaced to Arduino’s PWM outputs, and encircled by a few other
components. Surely the usage of a shield is a valid solution, but then we need to use at least four
Arduino outputs: usually two to adjust the speed and two for the direction. If, on the other hand, you
use a generic microcontroller, or a stand-alone Atmel chip, or a board that is different from Arduino,
things get a bit more complicated, since on the market it is difficult to find drivers with a more flexible
interface, and the price starts to rise quickly. If you then have the need to command two motors,
things get very complicated, even for those using an Arduino board, because problems arise both on
the hardware and on the device programming point of view.
To meet the needs of those who want to manage small DC motors and having programmable logics,
we thought to design our own driver, to allow for a high operating flexibility and above all, that it
would be open source, in order to let anyone adapt it to his own needs.
The name we gave it is meaningful of the project philosophy: OpenMotorControl, that we shortened
in OMC21, with 21 indicating the number of channels (two in this case) and the current being
managed for each channel (1A).
As we will see, it is a stand-alone circuit that can be driven by various logics, provided with a
communication interface that takes different communication protocols into account and that is
suitable for the most different needs.

Circuit diagram
Typically, to create a controller for direct current motors, people rely on the so-called H bridge, that is
to say, a circuit formed by four transistors in a bridge connection, and capable of commanding the
motor’s speed and direction by means of the PWM pulses being supplied, and of the polarity being
inverted at the output.
Such a driver can be found in a monolithic form in various integrated circuits; only in particular
cases, as it was on the Openwheels control board (a self-balancing vehicle project, published
starting from the installment n° 172) it makes sense to design a similar driver with discrete
components.

You might also like