Controlling 20 vibration motors possible?

Hello :slight_smile:

We are using an Arduino Uno and already did some tutorials which worked. However, our goal is to write a script which controls 20 vibration motors being active at different times with varying intensities and frequencies. They could also be controlled in groups (e.g. 4 vibrators do the same pattern). The power supply should be external (e.g. 9V battery). And we didn’t find a tutorial yet which goes into detail about that.

We are confused with the current so how to distribute the vibrators onto the pins. Also how much power can the Arduino use from the external power supply? And can it even be enough for our 20 vibrator discs?

Vibration motor discs (according to seller): DC 3 V, 0.1adc 1,5 V, 50mA (70mA max).

Any help or suggestions would be nice :slight_smile:

Tobi, Tim and Colja

The power supply should be external (e.g. 9V battery).

Can’t supply the power needed. Just use a regulated 5V supply - also known as “the charger of my old phone”. That’s also good for your motors. Make sure it’s a somewhat beefy one, you’re going to need at least 2A, preferably 2.5A for this. A big decoupling capacitor (1,000-4,700 µF kind of big) may be a good addition. You may even have to separate the power supplies to give clean power to the Arduino (so look for “my previous old phone’s charger” as well, remember to connect the grounds at one and only one point to prevent motor noise messing with your Arduino).

You need 20 channels of PWM for your motors to control their speed. The Uno has 6 of them, so you need an extension board such as this one. That makes for 22 total.

Then you need to get more current for your motors, the board nor the Arduino pins can supply this. The good old ULN2003 (7 channels) will do great. Get three of them for 21 outputs. They’re ideal for driving such motors as they even have flyback diodes built in already. It’s a Darlington array so you do get about 1.2V drop. That’s good in your applications as the motors need only 3V, so your 5V supply has only 3.8V left. Add a diode (1N400x will do) in series for another 0.7V drop if you want.