Multi-Part Post regarding DC motor control. Any help appreciated!

Hello all,

As a complete novice, I would like to ask for help regarding my project setup. It seems the more I try to research and figure things out, the deeper in the woods I get. Here is my project description with an itemized list of questions. I apologize for the “wordiness” of the post but after reading several other posts, you guys really seem to prefer specificity. Any help would be very greatly appreciated.

Objective- I would like to run 4 identical DC vibration motors (simultaneously) via PWM signals using an Arduino Uno Rev 3 as a microcontroller. I would like to do so in the most reliable way possible (not the cheapest!). Lastly, for power supply considerations, I would like to use a plug in power supply (AC adapter or the like) rather than a battery to power the motors and/or other ancillaries. I need the Arduino to remain connected to and powered by the USB connection exclusively if possible.

Here are the full specs for the 4 vibration motors…(I know some may not be needed).

Model 325-100 from Precision Microdrives (Uni-Vibe range).

  1. Typical Operating Current: - 190 mA
  2. Typical Power Consumption: - 570 mW
  3. Typical Vibration Amplitude: - 1 G
  4. Typical Normalized Amplitude: - 10 G
  5. Rated Voltage: - 3 V
  6. Rated Speed: - 5000 rpm
  7. Inertial Test Load Mass of standard test sled - 1000 g
  8. Max. Start Current At rated voltage - 1500 mA
  9. Max. Operating Voltage - 3.6 V
  10. Certified Start Voltage With the inertial test load - 1 V
  11. Rated Speed At rated voltage using the inertial test load - 5000 rpm +/- 500 rpm
  12. Min. Vibration Amplitude Peak-to-peak value at rated voltage using the inertial test load - 0.7 G
  13. Max. Operating Current At rated voltage using the inertial test load - 400 mA
  14. Typical Operating Current At rated voltage using the inertial test load - 190 mA
  15. Typical Power Consumption At rated voltage and load - 570 mW
  16. Typical Vibration Amplitude Peak-to-peak value at rated voltage using the inertial test load - 1 G
  17. Typical Normalized Amplitude Peak-to-peak vibration amplitude normalized by the inertial test load at rated voltage - 10 G
  18. Typical Vibration Efficiency At rated voltage using the inertial test load - 1.8 G/W
  19. Typical Max. Terminal Resistance - 1.3 Ohm
  20. Typical Max. Terminal Inductance - 1500 uH
  21. Min. Insulation Resistance At 50V DC between motor terminal and case - 10 MOhm
  22. Typical Start Voltage With the inertial test load - 1 V
  23. Typical Start Current At rated voltage - 1500 mA

Questions. 1. Am I correct in assuming that, using 4 separate digital outputs, that I can simultaneously control the 4 DC motors? Also, can this be done WITHOUT interrupts?

  1. The Arduino obviously cannot power the motors directly so I have been pointed in the direction of either a MOSFET solution or an IC ( a DVR 8601 was recommended to me by the support person for the vibration motors.) Although there have been posts regarding which solution is better, I couldn’t find a definite answer and assumed it would be application specific. That being the case, which would you recommend?

  2. According to the precision microdrives website, a ceramic capacitor rated at 100 and a schottky diode are recommended (I believe this is only for the MOSFET based solution). I do have the correct capacitor and my question was whether or not there was a set of specification numbers or ratings on the diode that I needed to “match up” to my project requirements. After looking at transistor ratings, I only became more confused.

  3. Regarding power supply. This project is intended for frequent use so I would need to be able to “plug in” to a wall socket to power the motors with the Arduino hooked into the USB port of the computer to control the PWM signals only (unless the motor shield solution is picked). What type of power supply would work in this scenario?

  4. How would motor shields apply to this project? Could I run two of these and circumvent the need for any of the other issues? Would this be a better solution or just a more costly one?

  5. I’m assuming I need a breadboard for this project? I’m assuming that any MOSFET additions or IC additions are done via interaction between the breadboard and Arduino? This may be a very basic question but I have yet to find a true step by step guide to navigate these issues.

Thank you in advance for reading through the post. I hope that when I have all of this figured out, that I can craft an easily followed tutorial that would hopefully help out some fellow users.

  1. Am I correct in assuming that, using 4 separate digital outputs, that I can simultaneously control the 4 DC motors? Also, can this be done WITHOUT interrupts?

If you only need the motors to spin in 1 direction, then yes, 1 digital output can control 1 motor on and off. I don't see the need for interrupts (yet) in your specifications.

  1. The Arduino obviously cannot power the motors directly so I have been pointed in the direction of either a MOSFET solution or an IC ( a DVR 8601 was recommended to me by the support person for the vibration motors.) Although there have been posts regarding which solution is better, I couldn’t find a definite answer and assumed it would be application specific. That being the case, which would you recommend?

That depends! There is no "better" solution, as it depends upon how much money you're willing to spend, how proficient you are with wiring up your own circuits, how much space you have available, do you want an integrated solution or one with breadboards/modules, and so on. MOSFET's are fine for wiring on a breadboard, and require a minimum of components and spending of money. The next step up is to get a motor driver (like ours) that already have MOSFET-like circuits integrated.

  1. According to the precision microdrives website, a ceramic capacitor rated at 100 and a schottky diode are recommended (I believe this is only for the MOSFET based solution). I do have the correct capacitor and my question was whether or not there was a set of specification numbers or ratings on the diode that I needed to “match up” to my project requirements. After looking at transistor ratings, I only became more confused.

The diode you are referring to (doesn't really need to be a Schottky for this application) is a "catch diode" or "freewheeling diode" and should be rated for the same current as your motor. A common "1A 100V" diode like a 1N4001 (or 1N4002, 1N4004) would be just fine.

  1. Regarding power supply. This project is intended for frequent use so I would need to be able to “plug in” to a wall socket to power the motors with the Arduino hooked into the USB port of the computer to control the PWM signals only (unless the motor shield solution is picked). What type of power supply would work in this scenario?

Sounds like you want something called a "wall transformer" supply. There are so many choices for these it's almost a headache to pick one. Here's a 3.6V one that's close to your 3V target voltage (you can always run at a lower effective voltage than 3.6V by using PWM):

http://www.mpja.com/36V-22A-Desktop-Supply-KETI/productinfo/18357+PS/

  1. How would motor shields apply to this project? Could I run two of these and circumvent the need for any of the other issues? Would this be a better solution or just a more costly one?

Motor driver shields essentially package up the MOSFET's into a pre-packaged solution that just plugs in to the Arduino. They provide bidirectional control so you can spin the motor in both directions (this takes 4 MOSFET's in an "H-bridge" configuration). You can stack two of our Rugged Motor Drivers together (with small hardware mods on 1 of them to use different pins) and drive 4 DC motors bidirectionally at 1.5A continuous for each. Is this a "better" solution? It depends.... ;)

  1. I’m assuming I need a breadboard for this project? I’m assuming that any MOSFET additions or IC additions are done via interaction between the breadboard and Arduino? This may be a very basic question but I have yet to find a true step by step guide to navigate these issues.

You will need a breadboard if you want to use pure discrete MOSFET's. You can also use a half-way solution between breadboarding and a custom PCB by using "breakout modules", like this:

http://www.sparkfun.com/products/10256

With the pure-shield solution you will not need a breadboard.

-- The Ruggeduino: compatible with Arduino UNO, 24V operation, all I/O's fused and protected

You don't need a motor driver shield for that application because you don't need to reverse the motors. Here are a couple of suggestions:

  1. Run the Arduino and the motors from a 5v regulated wall wart. Use a ULN2803 to drive the motors from the Arduino. This device also includes the catch diodes. Each channel will drop around 1v at 190mA. This leaves 4V, which is still a little too much for the motors, so put a resistor of about 4.7 ohms in series with each motor to drop another 1v.

  2. Run the Arduino and the motors from a regulated 3.3 or 3.6v supply. Use mosfets to switch the motors, and connect a catch diode across each motor. The mosfets will need to be of a type that turns fully on with only 3.3v on the gate. The only such mosfets I know of are SMD devices, e.g. http://uk.farnell.com/nxp/pmv16un/mosfet-n-ch-20v-5-8a-sot23/dp/1894627RL.

Rugged Circuits and dc42,

Thank you both so much for your replies. I'm going to research your answers thoroughly and check out your products and suggestions. Once I get this figured out, I'll update this post with the solutions and how they work out.

Thanks again.

Also, would this power supply work?

http://www.amazon.com/Hosa-ACD477-100-240V-Voltage-Adaptor/dp/B000Z31G3M/ref=sr_1_2?s=electronics&ie=UTF8&qid=1336484701&sr=1-2

It's apparently capable of a 3v setting. I wasn't sure if that was the most important factor when choosing the power supply. I know that the motors are 3v and I suppose I incorrectly assumed that running 4 or them would require a power supply with greater voltage.

Yes, that power supply looks good for the job. Use it on the 3v setting if you are using mosfets to switch the motors, or the 4.5v setting if you are using the ULN2803A.

No, running 4 of them will require a supply of greater current. The voltage should remain the same.

The Hosa adjustable supply looks like it's worth a shot. I've never been a fan of adjustable-voltage wall transformers but for ~$13 it's worth trying.

-- The Rugged Audio Shield: Line In, Mic In, Headphone Out, microSD socket, potentiometer, play/record WAV files