I'm setting up a small personal project, in which I need to control several motors (1-12), being able to set independently the speed (rpm), and direction of each motor (even changing direction following a schedule for example).

I'm more of a software guy than hardware guy, that's why I'm turning to you.

From what I understood, the best kind of motors would be stepper motors so I can control the speed more precisely. Is that right or would DC motors be OK ?

My question is about the interface between the Pi and the motors. Is there an interface that can control up to 12 motors, including control of the speed and direction ?

I found this on adafruit but it can only control 2 stepper motors and stacking 6 of those would be a mess.

I also found this and this, but I'm not sure I could use 12 simultaneously.

My question is : is any of these solutions suitable for my project ? If not, what would be a good solution ? And if yes, is there a more suitable solution ?

I know it can sound opinion based, but my goal here is to know what solution would be practically the easier to set up, so it's not really opinion based, more "performance and ease based".


Yes you are right for controlled and more precise speed you need to use stepper motor only. In DC motor you won't be able to give precise motion, whereas this gif will explain you how precise the stepper motor can be, the angle with which it is rotating can be your choice.

Stepper Motor

As far as understanding of DC motor you can look at any fan, which even after turning off takes lots of rotations.

Interfacing Devices: As far as interfacing 12 Stepper motors are concerned, for interfacing limited number of device through Raspberry Pi we can directly do pin interfacing but here devices are more so you need to use some communication protocol(i2c).

This device is perfect for connecting at least 64 devices and being controlled individually. You have done a good research on this topic, buy this HAT and implement i2c and send the data accordingly and you are good to go.


  • 2
    Hi Your GIF has died? Could you upload it again please? – Piotr Kula Jan 9 '17 at 12:38
  • Its not dead. You need to open it in a new tab. Seems like stackoverflow doesn't support .gif file. i copied the link from Wikipedia. – Vishwajeet Vishu Jan 12 '17 at 8:26

My simplistic summary.

  • Stepper motor

    • can rotate continuously
    • precise in-built position control
    • needs motor driver board
    • 2-4 GPIO for control (usually 4)
  • DC motor

    • can rotate continuously
    • no in-built position control
    • needs motor driver board
    • 2-3 GPIO for control
  • Normal servo motor

    • can only rotate half a revolution
    • in-built reasonably precise position control
    • in-built motor driver board
    • 1 GPIO for control
  • Continuous servo motor

    • can rotate continuously
    • no in-built position control
    • in-built motor driver board
    • 1 GPIO for control.
  • So I would definitely need to stack up some control boards ? It's not possible to control 12 motors with only 1 control board ? – Florian.C Jan 9 '17 at 9:50
  • A typical general purpose motor driver board (full H bridge) lets you drive two DC motors or one stepper motor. You might find boards with several drivers built into one board. I think you need to firm up on the sort of motor and power you need. That will quickly limit the choices you need to make. – joan Jan 9 '17 at 9:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.