3
\$\begingroup\$

I'm making a Sumo Bot from scratch and I had purchased two 1.5-3v DC motors from Radio Shack to run with my Arduino Uno v3. I'm using a 9v battery to power my Arduino alongside an RF receiver, Quad Half-H driver, and the two motors. However, 9v is probably too much to directly power two 3v motors.

How could I reduce 9v to a safer voltage to power my two motors?

Thanks!

\$\endgroup\$
3
  • \$\begingroup\$ Does it give you a current rating (mA) anywhere? \$\endgroup\$
    – jippie
    May 13, 2013 at 20:13
  • \$\begingroup\$ You wont be able power the motors directly with an Arduino. You will need to build a switching circuit, perhaps using some transistors or mosfets. For getting the voltage down to 3V you could build a resistive voltage divider. \$\endgroup\$
    – Reid
    May 13, 2013 at 20:34
  • \$\begingroup\$ As EEToronto & Danny point out, a 9v battery is not a good choice for motor power. Additionally, these motors may not be a great match for common H-bridge drivers, which often have a minimum voltage and limited current capability. Motors which can tolerate around 4.5v (and draw lower current for the same power) tend to be a better match for such projects, though PWM control might help. \$\endgroup\$ May 13, 2013 at 21:24

3 Answers 3

4
\$\begingroup\$

Do you specifically need (or want) to use a 9V battery? They are not good choices for anything under a lot of load, such as motors. They do not store that much charge, and thus will die very quickly. Regardless of what you do, ensure that you have decoupling capacitors at the power pin of every IC in use, and you have a couple of bulk caps at the power feed for the motors to help with the immediate draw. Sometimes, a motor turning on can drop the line voltage enough that the other circuitry will reset. This is, of course, undesirable!

Option 1 - Dual Battery Banks

You could use two battery banks: 9V for your circuitry, and 3V (2 x 1.5V alkaline or 3 x 1.2V rechargeable batteries). If using the rechargeable batteries, note that 3 of them in series will produce at least 3.6V, so you should use a maximum duty of 80% in a PWM speed controller, so the maximum average voltage is around 3V.

Using two battery banks is rather common in robotics, but not ideal since you have two different charge levels to worry about. For things to work smoothly, the ground terminals of the two batteries (and any power components) should be shared.

Option 2 - Regulating the Voltage for the Motors

The most common thing to do in this situation would be to regulate the 9V down to 3V for use with the motors. This can be done with a linear regulator, but it would be very inefficient since most of the power would be wasted:

Wasted Power = (V_Source - V_Motor) * (I_Motor(s) + I_Regulator)

Using a switching regulator is a better choice, but it is still going to waste at least 10% of the battery power.

Option 3 - Boost the Voltage for the circuitry

I would recommend using a smaller power source suitable for the motors (around 3V DC) and then boosting that voltage level up with a switching regulator to power the Arduino and any other circuitry. A lot less power will be wasted because the circuitry will be drawing a lot less current than the motors.

On top of that, the circuitry itself may be able to run from a lower voltage source, such as 3V DC. The Arduino has an on board voltage regulator to create a stable 5V level for the microcontroller and other parts, but the AVR chip will work fine at 3V DC if you bypass the on board regulator. I don't know what other components are on the Arduino board or what other circuitry / sensors you plan to use that might actually need that 5V to work.

Edit: I neglected the fact that this AVR based Arduino board is using an external 16MHz crystal which does require the higher voltage (5V) to operate. The AVR chip will only operate up to 10MHz with less than 4.5V.

Option 4 - Use 5V Motors

If you were to get different motors that operated at a higher voltage, you could use a 5V (or 4.8V) battery pack. With this, you could bypass the voltage regulator on the Arduino board, as I mentioned at the end of Option 3. In all actuality, the 3V motors might be OK at this voltage anyway, just so long as you do not exceed a PWM duty of 60% when driving them.

\$\endgroup\$
3
  • \$\begingroup\$ Thank you for your extended response! I will take a look at these options. \$\endgroup\$
    – slippery
    May 13, 2013 at 22:48
  • \$\begingroup\$ A typical 5 Volt AVR-based (the current ARM ones are 3.3 Volts) Arduino or clone board is clocked at 16/20 MHz, whereas the 3.3 Volt versions are clocked lower. The AVR will not be stable at 20 MHz with a 3.x Volt supply, it will need to have its crystal replaced for a lower frequency one, and will need changes to the bootloader to represent this lower clock speed - else several built-in functions depending on clock timing will fail. \$\endgroup\$ May 15, 2013 at 3:54
  • \$\begingroup\$ @AnindoGhosh, True. I thought about that after I posted this. I'll put an edit in... \$\endgroup\$ May 15, 2013 at 3:56
2
\$\begingroup\$

You need a voltage regulator to give you 3V (or slightly more as DC motors are forgiving) from the your 9V source. Your regulator should be able to put enough current to handle the maximum current needs of the two motors + 20%.

\$\endgroup\$
2
  • 2
    \$\begingroup\$ A switching regulator perhaps. A linear regulator is just a voltage divider with the pass resistance controlled to achieve the specified output voltage - it has the same inefficiency which in this case will have substantial consequences. \$\endgroup\$ May 15, 2013 at 14:33
  • \$\begingroup\$ Yes. I didn't mean linear. \$\endgroup\$
    – EEToronto
    May 15, 2013 at 15:43
-5
\$\begingroup\$

I don't know if you have a weight or size limit with your sumo, but I would look at powering the Arduino from the 9 volt and the motors from a different source- couple of AA's maybe.

To directly answer your question I would think a voltage divider would be a quick and easy step down if that is what you want to do.

http://www.raltron.com/cust/tools/voltage_divider.asp

Values of 300 and 150 for R1 and R2 might get it done.

Edit: Not sure why this is being down-voted. Would appreciate any information in that regard.

Edit2: Well I did suggest using something other than the 9v first off and I did try to answer the original question. Screw it.

\$\endgroup\$
5
  • 1
    \$\begingroup\$ No, do not use a voltage divider. That's absurd in a battery powered application. \$\endgroup\$ May 13, 2013 at 20:48
  • \$\begingroup\$ @ChrisStratton - Could explain briefly why a voltage divider is inappropriate in a battery powered application? If you have a better solution, I think that zeldarulez would appreciate knowing how he/she could solve his/her problem. \$\endgroup\$
    – Mark Booth
    May 13, 2013 at 21:10
  • 1
    \$\begingroup\$ If designed as intended, it would waste 2/3 of the power, which quickly adds up to real money with 9v batteries. A power resistor capable of dissipating all that waste heat without reaching hazardous temperature would be required. The fundamental problem is that the 9v battery is the wrong choice. Theoretically a switching regulator could be used, but it would be better to use higher capacity cells at the motor's needed voltage, and a switching boost converter to run the logic (or switch the logic to run at 3.3v from a low-dropout regulator and get a 4.5v or so motor). \$\endgroup\$ May 13, 2013 at 21:34
  • \$\begingroup\$ @MarkBooth The "output" of of a voltage divider will change with load. It is not suitable for use as a voltage regulator to power a load, only to change the level of a signal for other purposes. \$\endgroup\$ May 13, 2013 at 21:35
  • \$\begingroup\$ Thanks @ChrisStratton - If you'd have added that as an answer, I would certainly have voted it up. \$\endgroup\$
    – Mark Booth
    May 13, 2013 at 21:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.