Let's Make Robots!

Providing 5v to Arduino and 3v to motors : battery and circuit options?

I have a couple of Dagu geared motors, which have this as a basic spec:

Suggested voltage: 3V DC
No Load Current: 125mA (max.170mA)

I want to control them from an Arduino. Can anyone provide some basic options for doing this? I have some parts that might help me assemble a circuit to do this, specifically:

  • 4xAA battery holder and 2500mAh NiMH batteries
  • 6xAA battery holder and 2500mAh NiMH batteries
  • Old R/C car racing pack (so 7.2v, 1700mAh)
  • LM7805C voltage regulator and heatsink
  • SN754410 Quad Half H-Bridge IC
  • Breadboard and jumpers

I've read an article about basic H-bridge use, which is really helpful but doesn't really cover motors that need less than 5v.

If you can give me some hints, it would be much appreciated!

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Although the suggested voltage is 3V the motors will run fine at 5V. Your motor driver circuit usually drops a few volts anyway. I designed a suitable low voltage motor controller some time ago. Here's the schematic:

This has now been made into a dual motor controller with prototype area suitable for Mr. Basic kits.

Oddbot, that's awesome! Thanks very much. I think I'll build one myself from scratch on stripboard - it'll be good practice (and I badly need some).

If you used the BD681 as I did then you do not need the 1N4004 diode shown in parallel with it as I discovered later that the transistor has a protection diode built in. You will still need the protection diode for the BC548.

Makes sense running the 7.2v to Vin, but it doesn't give me a lower voltage feed to the motors. I of course don't want to feed them from the Arduino direct.

Some guesswork follows. Please forgive my lame electrical engineering knowledge - it's been a while:

I doubt the motors will care much about getting 7.2v instead of 3v so long as I stay under their power limit. Using the maximum stats as written above, P=EI says that these motors handle about half a watt, as  3 x 0.17 = 0.51 watts. If I run them at 7.2v then so long as I stay below 70mA I should be OK. I guess. So, if I measure the resistance of the motors, then put a similar resistance in place of a motor place on the H-Bridge, I should be able to put a meter across that load and then play with the Arduino and analogWrite() to find a maximum output setting to use, without risk to the motors. Will this work?

If I don't use the LM7805C to feed the Arduino a regulated 5v and instead use 7.2v to Vin, do I somehow need to "decouple" the feed to Vin from the feed to the H-Bridge?

I actually was suggesting powering from VCC since the specs you gave are so low (170ma max) and I was suggesting using a voltage divider and diode which offers some isolation. But you could just adjust the resistor values to get the 7.2 down to 3. There is a calculator here:


Just fill in the volts and try some different resistor values for R1 (ones you have or know are common) until R2 is near a value that is common (or better yet, that you have) and then use the resistors to get your 3v (or so). 

Best practice says not to power motors from VCC, but if they draw very little current you get away with it. If this is a production build, then ignore that advice.

That's great - thanks a lot! I have some 33k and 47k resistors to hand, so that's an option that I can definitely use.

Just to be sure, have you wired a resistor series or looked at a circuit? Order matters and the Vout is in the middle. As always, your meter is your friend. :)


Yup, this worked fine. When checked with my uber precise but vaguely hydrocarbon scented DealExtreme meter, I got 3 volts and 4 and a bit volts...

Which gives you 7.2v. Run that to VIN or a barrel jack (if you are using that type of Arduino) and let it do VR on board. I will let someone else weigh in on motors and drivers. I burned one up (maybe; I have had more trouble with parts from the particular vendor I got it from than any other) and use ESCs or MOSFETs now. I can tell you that I use a resistor series voltage divider of 100/180 to get 3.2v from 5v. Add a diode to provide protection from back EMF and you are right in the range you are looking for. 

EDIT - do you need forward and reverse? That is the only reason I would use a driver instead of a MOSFET.