Drive Multiple Variable Speed ERM Vibration Motors

Hey Everyone,

I am very new to the electronics world and have just started to use arduino uno. I started learning so I could complete this project that I have had in my mind.

I want to be able to drive 8-10 ERM vibration motors all being on at the same time.

https://www.precisionmicrodrives.com/product/307-103-002-9mm-vibration-motor-25mm-type

I would like the motors to vary speed, either using a potentiometer or using a push button to cycle through different speeds. The motors would ideally run for about 1 hour per use. I would like the system to be rechargeable for mobile use.

Research has showed that I would need to use a PWM signal, so I have been doing a lot of research on that. Is the arduino even ideal for the level of continuously variable current that I am looking for? What other components do I need to complete the project?

If there are any other posts that someone could point me to, reference designs that are useful, or personal advice, then it would be greatly appreciated.

Ian

An Arduino can't provide the current needed by a motor but it can provide the PWM signal needed to control a motor through a MOSFET (if you only need rotation in one direction) or though a h-bridge. For your low-voltage motors the Pololu DRV8833 h-bridge would be suitable.

An Arduino Uno can only drive 6 separate PWM signals. If you need more then an Arduino Mega would be more suitable.

I have read elsewhere that coreless motors don't like PWM signals, or may need them to be at a high frequency. You should check with the manufacturer. The standard Arduino PWM frequency is 490Hz but it can be changed.

...R

Hi there!

So the Arduino Uno is a great board to start out on. However, there are a few drawbacks. There are only six digital pins on the Uno that can feed a PWM signal (pins 3, 5, 6, 9, 10, 11). With this board, you could only use six motors at varying speed.

Another issue is that the motors take a maximum of 3.7V. Since the Uno runs on 5V, you cannot directly hook up the motor to one of these PWM pins.

There is a 3.3V regulator on the board, but it can only output a maximum of 130mA, which is enough to power only one of the motors you specified.

With that said, you will have to have some sort of interface circuitry that will take the signal from the Uno and use that to control how fast the motor will turn. Something like a MOSFET or a prebiased BJT would be great for controlling how much current the motor will take, and subsequently how fast it will turn.

If you want a board that can control the desired 8-10 motors, I would recommend the Arduino Due, as it has 14 PWM pins, and the 3.3V regulator can output 800mA of current, which is barely enough for 8 motors.

Overall, I would recommend using a external battery power the motors, and using the transistors I mentioned.

bos1714: Another issue is that the motors take a maximum of 3.7V. Since the Uno runs on 5V, you cannot directly hook up the motor to one of these PWM pins..

[.....]

If you want a board that can control the desired 8-10 motors, I would recommend the Arduino Due, as it has 14 PWM pins, and the 3.3V regulator can output 800mA of current, which is barely enough for 8 motors.

Sorry to be blunt, but this is nonsense on several different levels.

Even if the Uno was a 3.3v device neither it nor a Due can control a motor directly. Even if they could provide enough current the high transient voltages generated by motors can easily destroy an Arduino.

As I mentioned in Reply #1 all the Arduino can do is control the current passing through a MOSFET or h-bridge

...R

May I also point out your requirement to vary the speed, but your components give no way to measure the speed.

Paul

Robin2: An Arduino can't provide the current needed by a motor but it can provide the PWM signal needed to control a motor through a MOSFET (if you only need rotation in one direction) or though a h-bridge. For your low-voltage motors the Pololu DRV8833 h-bridge would be suitable.

An Arduino Uno can only drive 6 separate PWM signals. If you need more then an Arduino Mega would be more suitable.

I have read elsewhere that coreless motors don't like PWM signals, or may need them to be at a high frequency. You should check with the manufacturer. The standard Arduino PWM frequency is 490Hz but it can be changed.

...R

Thank you for the input! I will definitely look into the h-bridge and into buying the arduino mega.

Are there any other components that I should consider? I read about diodes and EMI suppression filters as possible nessecities? Again, I am new to all of this so I'm still learning!

Ian

Paul_KD7HB: May I also point out your requirement to vary the speed, but your components give no way to measure the speed.

Paul

What I was thinking of doing was varying the duty cycle of the PWM to increase or decrease the vibration amplitude. Not sure if that logic is correct or not.

Ian

Robin2: Sorry to be blunt, but this is nonsense on several different levels.

Even if the Uno was a 3.3v device neither it nor a Due can control a motor directly. Even if they could provide enough current the high transient voltages generated by motors can easily destroy an Arduino.

As I mentioned in Reply #1 all the Arduino can do is control the current passing through a MOSFET or h-bridge

...R

Sorry to be blunt, but you have not read my full post, so take the time to do so. You will see I referenced interfaces such as different transistors.

The main part of recommeding the Due is that its 3.3V regulator can output 800mADC, and that there are more than 6 PWM pins on the Due, not to mention the DAC pins.

bos1714: With that said, you will have to have some sort of interface circuitry that will take the signal from the Uno and use that to control how fast the motor will turn. Something like a MOSFET or a prebiased BJT would be great for controlling how much current the motor will take, and subsequently how fast it will turn.

Overall, I would recommend using a external battery power the motors, and using the transistors I mentioned.

Do you have any external battery power to recommend? Is this something lithium ion battery pack could be capable of?

bos1714: Sorry to be blunt, but you have not read my full post, so take the time to do so. You will see I referenced interfaces such as different transistors.

I did read it all and it conveys the impression that the "referenced interfaces" are optional. Why else would you say "Another issue is that the motors take a maximum of 3.7V. Since the Uno runs on 5V, you cannot directly hook up the motor to one of these PWM pins."

The reason you can't hook a motor to the pins has nothing to do with the voltage.

Then you went on to suggest the use of a DUE "If you want a board that can control the desired 8-10 motors, I would recommend the Arduino Due, as it has 14 PWM pins, and the 3.3V regulator can output 800mA of current" which, to my mind would clearly give the impression to a newbie that the motors can be directly connected to it. Perhaps you just meant to imply that the motor MOSFETs (or h-bridges) could be powered from the DUE's 3.3v pin - but that, also, is not appropriate.

...R

Those motors have a stall current of 650mA@3volt. That's 6.5Amp stall with 10 motors.

The best/easiest solution might be a PCA9685 PWM breakout board (connected to any Arduino). With 2N2222/BC337 transistors, and 1N5819 back-EMF diodes. Powered with a LiPo battery (motors only). Leo..