I have a project where I need an Arduino Uno and 4 DC motors to run on batteries. My first thought was that I'll just hook up 3 or 4 AAs to the Arduino and a 9V to the motor drivers.

I googled to be safe and the internet consensus seemed like that method would be very inefficient. Voltage wasn't the problem, but apparently 9V have very low current and I'd be wasting money, and the Arduino wastes current like a madman. Most solutions involved buying additional hardware.

Is there a way I can efficiently power my project without buying more chips?


Our beloved admin Nick Gammon has made a very neat articile on this subject, I suggest you read it and apply as many of the methods he described.

Also, it can be worth to check the requirements of your project, how long should it work on battery to be acceptable? Set some realistic boundarys to avoid getting lost in (trying to) optimizing beyond all practical purposes.

There are two places where you can save power:

In software

The Atmega328P has a few tricks to save power. Most notably is powering down peripheral devices and/or using sleep modes. I believe the P version of the Atmega328 also has more power saving modes/ is more efficient overall.

Also take a look at this.

In hardware

An Arduino board has a lot of chips that may not even be neccesary on your battery project. Most notably the USB interface chip, if you're going to run off battery, you most likely won't need this chip. But also, the voltage regulator on the Arduino is, I believe, a linear regulator and is likely to be inefficient. Also power/status LED's will some current.

You can choose to put a ATMega328P on a breadboard, and power it directly with a source that will be between the min/max voltage of the ATMega328P. This way you don't get the losses that a regulator will have. If you want to use a regulator (for a higher voltage source) you should use a switching regulator, they're typically more efficient.

Mind that on low voltages, the ATMega328P can't do a 16Mhz, but it's actually a pretty interesting point, since it will consume less power on 8Mhz, or even less on 1Mhz.

  • 1
    But wait, you're using motors? In a project like this, the motors are likely to consume a lot more power as the Arduino. It may not really be worth it to decrease the power useage of the Arduino.
    – Paul
    Nov 26 '16 at 14:57
  • If you can't run the motors for long enough. You will need a more efficient motor driver and/or probably a bigger battery.
    – Paul
    Nov 26 '16 at 15:02

Agreed, the DC motors would drain the 9V in no time.

Consider the other way around. The 9V powers the Arduino and the 4 AA batteries power the motor.

Then again, you probably don't need the 9V at all, just power everything off of the 4 AA batteries.

I suggest using a large capacitor (something in the 470-1000uF region) to hold up the supply to the Arduino. Adding a diode before the capacitor will prevent the capacitor discharging to the motors when the motors are drawing a lot of current.

Using 4x 1.5V batteries will result in a voltage of just over 6V. The diode will have a voltage drop of around 0.6V, so the resulting voltage would be 5.4V.

This voltage is to low for the onboard voltage regulator on the Adruino. It is within limits for the raw 5V input (ie. 5.5V).

Optionally you can add a 5V zener diode across the Arduino's power input to protect ti from overvoltage. A 6.8 ohm resistor is added to limit the current flowing through the zener diode. As the voltage drops below 5V, the zener diode will turn off, allowing the micro to operate down to 4.5V. If you change to a lower frequency crystal/resonator you can operate the microcontroller down to 2.7V (1.8V is possible is the clock frequency is 4MHz or less but I doubt the motors will run).


simulate this circuit – Schematic created using CircuitLab

  • What if you put the resistor on the same line as the zener diode? And not between the capacitor and 5V?
    – Paul
    Nov 26 '16 at 15:07
  • @Paul, The resistor would have a voltage potential across it, meaning that the voltage across both the resistor and zener would be greater than 5V (ie. 5V + Vresistor). In short, it wouldn't limit the voltage into the Adruino to 5V. I hope this makes sense.
    – sa_leinad
    Nov 27 '16 at 4:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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