Author Options:

How to control 100 bidirectional DC motors? Answered


I'm trying to control 100 DC motors using a microcontroller (Arduino Mega)
The motors run on 1.5V and have a operational current of 40mA.

1) Each motor must be able to rotate clockwise and counter clockwise
2) The motors must be able to move independently
    (though direction of the motors at any one time will be the same)
     eg. at time = 0; motor 1,20, 30, 45 will rotate CW
           at time = 10; motor 20, 35, 80 will rotate CCW
3) Using minimum amount of pins from the Arduino (Shift Register ?)

How should i go about doing this ?

I have tried using L293D H-Bridge, but in order to control 100 motors, 
i will need 50 H-Bridges and 200 digital output pins

I'm thinking of a simpler circuitry (image attached) to control the motors.
Digital output pins from the Arduino will contol the relay switches,
and the DPDT relay will change the polarity of the the voltage supply.
Will this work ? 
Are there any smaller alternatives to the mechanical relay (transistor ?) 
Can a transistor allow current flow in both directions ?

I would really appreciate if you could provide some inputs and ideas as to how you would go about controlling a large amount of motors. Cheers!


Each motor have to be able to be controlled individually, so they cant be linked in series.

Well i'm doing some sort of display using motors, so each motor acts as a pixel, the more motors, the larger the display.

Btw, are there any solid ways to control the number of rotation of a DC motor, without a feedback system or sensors ?

Why do you need ONE HUNDRED motors?

Just guessing here could use a 5x5x5 led cube, as a starting point, 125 outputs...


4 years ago

Do some of the motors always run together ?

And therefore be placed in series.

use max7301 i/o expanders, to get spi on the arduino to drive the direction bits on h-bridges. The l293 is overkill. You can get some nice low cost parts in 8pin dil

That is going to get vary complicated. You'll need shift registers and h-bridges to get that working and it will be a nightmare to program it all to do anything.